From 0335f5aa9336023d02085f5c58ded67f545d3c16 Mon Sep 17 00:00:00 2001 From: Andreas Baldeau Date: Mon, 12 May 2014 20:08:19 +0200 Subject: [PATCH] Initial commit. --- .bowerrc | 3 + .editorconfig | 21 + .gitattributes | 1 + .gitignore | 6 + .jshintrc | 24 + Gruntfile.js | 395 + .../angular-leaflet-directive/.bower.json | 54 + .../angular-leaflet-directive/LICENSE | 22 + .../angular-mocks/.bower.json | 18 + app/bower_components/angular-mocks/README.md | 42 + .../angular-mocks/angular-mocks.js | 2159 + app/bower_components/angular-mocks/bower.json | 8 + .../angular-route/.bower.json | 18 + app/bower_components/angular-route/README.md | 54 + .../angular-route/angular-route.js | 927 + .../angular-route/angular-route.min.js | 14 + .../angular-route/angular-route.min.js.map | 8 + app/bower_components/angular-route/bower.json | 8 + .../angular-sanitize/.bower.json | 18 + .../angular-sanitize/README.md | 54 + .../angular-sanitize/angular-sanitize.js | 624 + .../angular-sanitize/angular-sanitize.min.js | 14 + .../angular-sanitize.min.js.map | 8 + .../angular-sanitize/bower.json | 8 + .../angular-scenario/.bower.json | 18 + .../angular-scenario/README.md | 42 + .../angular-scenario/angular-scenario.js | 33168 ++++++++++++++++ .../angular-scenario/bower.json | 8 + .../jstd-scenario-adapter-config.js | 6 + .../angular-scenario/jstd-scenario-adapter.js | 185 + app/bower_components/angular/.bower.json | 16 + app/bower_components/angular/README.md | 48 + app/bower_components/angular/angular-csp.css | 18 + app/bower_components/angular/angular.js | 21168 ++++++++++ app/bower_components/angular/angular.min.js | 207 + .../angular/angular.min.js.gzip | Bin 0 -> 38065 bytes .../angular/angular.min.js.map | 8 + app/bower_components/angular/bower.json | 7 + .../bootstrap-sass-official/.bower.json | 56 + .../bootstrap-sass-official/CHANGELOG.md | 125 + .../bootstrap-sass-official/CONTRIBUTING.md | 79 + .../bootstrap-sass-official/LICENSE | 21 + .../bootstrap-sass-official/README.md | 264 + .../bootstrap-sass-official/bower.json | 47 + .../bootstrap-sass-official/composer.json | 35 + .../bootstrap-sass-official/package.json | 25 + .../glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../glyphicons-halflings-regular.svg | 229 + .../glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../vendor/assets/javascripts/bootstrap.js | 12 + .../assets/javascripts/bootstrap/affix.js | 135 + .../assets/javascripts/bootstrap/alert.js | 88 + .../assets/javascripts/bootstrap/button.js | 107 + .../assets/javascripts/bootstrap/carousel.js | 205 + .../assets/javascripts/bootstrap/collapse.js | 175 + .../assets/javascripts/bootstrap/dropdown.js | 148 + .../assets/javascripts/bootstrap/modal.js | 275 + .../assets/javascripts/bootstrap/popover.js | 110 + .../assets/javascripts/bootstrap/scrollspy.js | 154 + .../assets/javascripts/bootstrap/tab.js | 125 + .../assets/javascripts/bootstrap/tooltip.js | 422 + .../javascripts/bootstrap/transition.js | 48 + .../assets/stylesheets/_bootstrap-mincer.scss | 17 + .../vendor/assets/stylesheets/bootstrap.scss | 50 + .../assets/stylesheets/bootstrap/_alerts.scss | 67 + .../assets/stylesheets/bootstrap/_badges.scss | 57 + .../stylesheets/bootstrap/_breadcrumbs.scss | 26 + .../stylesheets/bootstrap/_button-groups.scss | 236 + .../stylesheets/bootstrap/_buttons.scss | 159 + .../stylesheets/bootstrap/_carousel.scss | 241 + .../assets/stylesheets/bootstrap/_close.scss | 35 + .../assets/stylesheets/bootstrap/_code.scss | 62 + .../bootstrap/_component-animations.scss | 35 + .../stylesheets/bootstrap/_dropdowns.scss | 214 + .../assets/stylesheets/bootstrap/_forms.scss | 478 + .../stylesheets/bootstrap/_glyphicons.scss | 237 + .../assets/stylesheets/bootstrap/_grid.scss | 84 + .../stylesheets/bootstrap/_input-groups.scss | 162 + .../stylesheets/bootstrap/_jumbotron.scss | 48 + .../assets/stylesheets/bootstrap/_labels.scss | 66 + .../stylesheets/bootstrap/_list-group.scss | 129 + .../assets/stylesheets/bootstrap/_media.scss | 56 + .../assets/stylesheets/bootstrap/_mixins.scss | 39 + .../assets/stylesheets/bootstrap/_modals.scss | 147 + .../assets/stylesheets/bootstrap/_navbar.scss | 658 + .../assets/stylesheets/bootstrap/_navs.scss | 242 + .../stylesheets/bootstrap/_normalize.scss | 425 + .../assets/stylesheets/bootstrap/_pager.scss | 55 + .../stylesheets/bootstrap/_pagination.scss | 88 + .../assets/stylesheets/bootstrap/_panels.scss | 240 + .../stylesheets/bootstrap/_popovers.scss | 133 + .../assets/stylesheets/bootstrap/_print.scss | 101 + .../stylesheets/bootstrap/_progress-bars.scss | 89 + .../bootstrap/_responsive-embed.scss | 34 + .../bootstrap/_responsive-utilities.scss | 173 + .../stylesheets/bootstrap/_scaffolding.scss | 150 + .../assets/stylesheets/bootstrap/_tables.scss | 233 + .../assets/stylesheets/bootstrap/_theme.scss | 247 + .../stylesheets/bootstrap/_thumbnails.scss | 38 + .../stylesheets/bootstrap/_tooltip.scss | 95 + .../assets/stylesheets/bootstrap/_type.scss | 294 + .../stylesheets/bootstrap/_utilities.scss | 56 + .../stylesheets/bootstrap/_variables.scss | 853 + .../assets/stylesheets/bootstrap/_wells.scss | 29 + .../stylesheets/bootstrap/bootstrap.scss | 50 + .../stylesheets/bootstrap/mixins/_alerts.scss | 14 + .../bootstrap/mixins/_background-variant.scss | 11 + .../bootstrap/mixins/_border-radius.scss | 18 + .../bootstrap/mixins/_buttons.scss | 50 + .../bootstrap/mixins/_center-block.scss | 7 + .../bootstrap/mixins/_clearfix.scss | 22 + .../stylesheets/bootstrap/mixins/_forms.scss | 84 + .../bootstrap/mixins/_gradients.scss | 58 + .../bootstrap/mixins/_grid-framework.scss | 87 + .../stylesheets/bootstrap/mixins/_grid.scss | 122 + .../bootstrap/mixins/_hide-text.scss | 21 + .../stylesheets/bootstrap/mixins/_image.scss | 33 + .../stylesheets/bootstrap/mixins/_labels.scss | 12 + .../bootstrap/mixins/_list-group.scss | 31 + .../bootstrap/mixins/_nav-divider.scss | 10 + .../bootstrap/mixins/_nav-vertical-align.scss | 9 + .../bootstrap/mixins/_opacity.scss | 8 + .../bootstrap/mixins/_pagination.scss | 23 + .../stylesheets/bootstrap/mixins/_panels.scss | 20 + .../bootstrap/mixins/_progress-bar.scss | 8 + .../bootstrap/mixins/_reset-filter.scss | 8 + .../stylesheets/bootstrap/mixins/_resize.scss | 6 + .../mixins/_responsive-visibility.scss | 21 + .../stylesheets/bootstrap/mixins/_size.scss | 10 + .../bootstrap/mixins/_tab-focus.scss | 9 + .../bootstrap/mixins/_table-row.scss | 28 + .../bootstrap/mixins/_text-emphasis.scss | 11 + .../bootstrap/mixins/_text-overflow.scss | 8 + .../bootstrap/mixins/_vendor-prefixes.scss | 224 + app/bower_components/es5-shim/.bower.json | 44 + app/bower_components/es5-shim/CHANGES | 124 + app/bower_components/es5-shim/CONTRIBUTORS.md | 27 + app/bower_components/es5-shim/LICENSE | 22 + app/bower_components/es5-shim/README.md | 168 + app/bower_components/es5-shim/bower.json | 35 + app/bower_components/es5-shim/component.json | 20 + app/bower_components/es5-shim/es5-sham.js | 466 + app/bower_components/es5-shim/es5-sham.map | 1 + app/bower_components/es5-shim/es5-sham.min.js | 7 + app/bower_components/es5-shim/es5-shim.js | 1434 + app/bower_components/es5-shim/es5-shim.map | 1 + app/bower_components/es5-shim/es5-shim.min.js | 7 + app/bower_components/es5-shim/package.json | 60 + app/bower_components/es5-shim/shims.json | 7 + app/bower_components/font-awesome/.bower.json | 14 + app/bower_components/font-awesome/.gitignore | 32 + .../font-awesome/CONTRIBUTING.md | 75 + app/bower_components/font-awesome/Gemfile | 4 + .../font-awesome/Gemfile.lock | 46 + app/bower_components/font-awesome/README.md | 77 + app/bower_components/font-awesome/_config.yml | 58 + .../font-awesome/component.json | 20 + .../font-awesome/composer.json | 27 + .../font-awesome/css/font-awesome.css | 1338 + .../font-awesome/css/font-awesome.min.css | 4 + .../font-awesome/fonts/FontAwesome.otf | Bin 0 -> 62856 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../fonts/fontawesome-webfont.svg | 414 + .../fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes .../font-awesome/less/bordered-pulled.less | 16 + .../font-awesome/less/core.less | 12 + .../font-awesome/less/extras.less | 2 + .../font-awesome/less/fixed-width.less | 6 + .../font-awesome/less/font-awesome.less | 17 + .../font-awesome/less/icons.less | 412 + .../font-awesome/less/larger.less | 13 + .../font-awesome/less/list.less | 19 + .../font-awesome/less/mixins.less | 20 + .../font-awesome/less/path.less | 14 + .../font-awesome/less/rotated-flipped.less | 9 + .../font-awesome/less/spinning.less | 30 + .../font-awesome/less/stacked.less | 20 + .../font-awesome/less/variables.less | 381 + .../font-awesome/package.json | 43 + .../font-awesome/scss/_bordered-pulled.scss | 16 + .../font-awesome/scss/_core.scss | 12 + .../font-awesome/scss/_extras.scss | 44 + .../font-awesome/scss/_fixed-width.scss | 6 + .../font-awesome/scss/_icons.scss | 412 + .../font-awesome/scss/_larger.scss | 13 + .../font-awesome/scss/_list.scss | 19 + .../font-awesome/scss/_mixins.scss | 20 + .../font-awesome/scss/_path.scss | 14 + .../font-awesome/scss/_rotated-flipped.scss | 9 + .../font-awesome/scss/_spinning.scss | 30 + .../font-awesome/scss/_stacked.scss | 20 + .../font-awesome/scss/_variables.scss | 381 + .../font-awesome/scss/font-awesome.scss | 17 + .../font-awesome/src/3.2.1/CNAME | 1 + .../font-awesome/src/3.2.1/Makefile | 36 + .../src/3.2.1/assets/css/prettify.css | 30 + .../src/3.2.1/assets/css/pygments.css | 71 + .../src/3.2.1/assets/css/site.css | 1154 + .../src/3.2.1/assets/font-awesome.zip | Bin 0 -> 276410 bytes .../font-awesome/css/font-awesome-ie7.css | 1203 + .../font-awesome/css/font-awesome-ie7.min.css | 384 + .../assets/font-awesome/css/font-awesome.css | 1479 + .../font-awesome/css/font-awesome.min.css | 403 + .../assets/font-awesome/font/FontAwesome.otf | Bin 0 -> 61896 bytes .../font-awesome/font/fontawesome-webfont.eot | Bin 0 -> 37405 bytes .../font-awesome/font/fontawesome-webfont.svg | 399 + .../font-awesome/font/fontawesome-webfont.ttf | Bin 0 -> 79076 bytes .../font/fontawesome-webfont.woff | Bin 0 -> 43572 bytes .../assets/font-awesome/less/bootstrap.less | 84 + .../3.2.1/assets/font-awesome/less/core.less | 129 + .../assets/font-awesome/less/extras.less | 93 + .../font-awesome/less/font-awesome-ie7.less | 1953 + .../font-awesome/less/font-awesome.less | 33 + .../3.2.1/assets/font-awesome/less/icons.less | 381 + .../assets/font-awesome/less/mixins.less | 48 + .../3.2.1/assets/font-awesome/less/path.less | 14 + .../assets/font-awesome/less/variables.less | 735 + .../assets/font-awesome/scss/_bootstrap.scss | 84 + .../3.2.1/assets/font-awesome/scss/_core.scss | 129 + .../assets/font-awesome/scss/_extras.scss | 93 + .../assets/font-awesome/scss/_icons.scss | 381 + .../assets/font-awesome/scss/_mixins.scss | 48 + .../3.2.1/assets/font-awesome/scss/_path.scss | 14 + .../assets/font-awesome/scss/_variables.scss | 734 + .../font-awesome/scss/font-awesome-ie7.scss | 1953 + .../font-awesome/scss/font-awesome.scss | 33 + .../src/3.2.1/assets/ico/favicon.ico | Bin 0 -> 1150 bytes .../3.2.1/assets/img/contribution-sample.png | Bin 0 -> 2441 bytes .../src/3.2.1/assets/img/fort_awesome.jpg | Bin 0 -> 114822 bytes .../assets/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../3.2.1/assets/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../src/3.2.1/assets/img/icon-flag.pdf | 1355 + .../assets/js/ZeroClipboard-1.1.7.min.js | 8 + .../3.2.1/assets/js/ZeroClipboard-1.1.7.swf | Bin 0 -> 1635 bytes .../src/3.2.1/assets/js/backbone.min.js | 37 + .../3.2.1/assets/js/bootstrap-2.3.1.min.js | 6 + .../src/3.2.1/assets/js/bootstrap-222.min.js | 6 + .../src/3.2.1/assets/js/jquery-1.7.1.min.js | 4 + .../src/3.2.1/assets/js/prettify.min.js | 28 + .../font-awesome/src/3.2.1/assets/js/site.js | 38 + .../src/3.2.1/assets/js/underscore.min.js | 31 + .../less/bootstrap-2.3.2/accordion.less | 34 + .../assets/less/bootstrap-2.3.2/alerts.less | 79 + .../less/bootstrap-2.3.2/bootstrap.less | 63 + .../less/bootstrap-2.3.2/breadcrumbs.less | 24 + .../less/bootstrap-2.3.2/button-groups.less | 229 + .../assets/less/bootstrap-2.3.2/buttons.less | 228 + .../assets/less/bootstrap-2.3.2/carousel.less | 158 + .../assets/less/bootstrap-2.3.2/close.less | 32 + .../assets/less/bootstrap-2.3.2/code.less | 61 + .../bootstrap-2.3.2/component-animations.less | 22 + .../less/bootstrap-2.3.2/dropdowns.less | 248 + .../assets/less/bootstrap-2.3.2/forms.less | 690 + .../assets/less/bootstrap-2.3.2/grid.less | 21 + .../less/bootstrap-2.3.2/hero-unit.less | 25 + .../less/bootstrap-2.3.2/labels-badges.less | 84 + .../assets/less/bootstrap-2.3.2/layouts.less | 16 + .../assets/less/bootstrap-2.3.2/media.less | 55 + .../assets/less/bootstrap-2.3.2/mixins.less | 702 + .../assets/less/bootstrap-2.3.2/modals.less | 95 + .../assets/less/bootstrap-2.3.2/navbar.less | 497 + .../assets/less/bootstrap-2.3.2/navs.less | 409 + .../assets/less/bootstrap-2.3.2/pager.less | 43 + .../less/bootstrap-2.3.2/pagination.less | 123 + .../assets/less/bootstrap-2.3.2/popovers.less | 133 + .../less/bootstrap-2.3.2/progress-bars.less | 122 + .../assets/less/bootstrap-2.3.2/reset.less | 216 + .../responsive-1200px-min.less | 28 + .../bootstrap-2.3.2/responsive-767px-max.less | 193 + .../responsive-768px-979px.less | 19 + .../bootstrap-2.3.2/responsive-navbar.less | 189 + .../bootstrap-2.3.2/responsive-utilities.less | 59 + .../less/bootstrap-2.3.2/responsive.less | 48 + .../less/bootstrap-2.3.2/scaffolding.less | 53 + .../assets/less/bootstrap-2.3.2/sprites.less | 197 + .../assets/less/bootstrap-2.3.2/tables.less | 244 + .../less/bootstrap-2.3.2/thumbnails.less | 53 + .../assets/less/bootstrap-2.3.2/tooltip.less | 70 + .../assets/less/bootstrap-2.3.2/type.less | 247 + .../less/bootstrap-2.3.2/utilities.less | 30 + .../less/bootstrap-2.3.2/variables.less | 301 + .../assets/less/bootstrap-2.3.2/wells.less | 29 + .../src/3.2.1/assets/less/lazy.less | 85 + .../src/3.2.1/assets/less/mixins.less | 58 + .../assets/less/responsive-1200px-min.less | 56 + .../assets/less/responsive-767px-max.less | 83 + .../assets/less/responsive-768px-979px.less | 67 + .../3.2.1/assets/less/responsive-navbar.less | 11 + .../src/3.2.1/assets/less/responsive.less | 53 + .../src/3.2.1/assets/less/site.less | 352 + .../src/3.2.1/assets/less/sticky-footer.less | 17 + .../src/3.2.1/assets/less/variables.less | 347 + .../src/3.2.1/cheatsheet/index.html | 2379 ++ .../src/3.2.1/community/index.html | 354 + .../font-awesome/src/3.2.1/design.html | 1 + .../src/3.2.1/examples/index.html | 671 + .../src/3.2.1/get-started/index.html | 299 + .../src/3.2.1/icon/adjust/index.html | 208 + .../src/3.2.1/icon/adn/index.html | 208 + .../src/3.2.1/icon/align-center/index.html | 208 + .../src/3.2.1/icon/align-justify/index.html | 208 + .../src/3.2.1/icon/align-left/index.html | 208 + .../src/3.2.1/icon/align-right/index.html | 208 + .../src/3.2.1/icon/ambulance/index.html | 208 + .../src/3.2.1/icon/anchor/index.html | 208 + .../src/3.2.1/icon/android/index.html | 208 + .../src/3.2.1/icon/angle-down/index.html | 208 + .../src/3.2.1/icon/angle-left/index.html | 208 + .../src/3.2.1/icon/angle-right/index.html | 208 + .../src/3.2.1/icon/angle-up/index.html | 208 + .../src/3.2.1/icon/apple/index.html | 208 + .../src/3.2.1/icon/archive/index.html | 208 + .../src/3.2.1/icon/arrow-down/index.html | 208 + .../src/3.2.1/icon/arrow-left/index.html | 208 + .../src/3.2.1/icon/arrow-right/index.html | 208 + .../src/3.2.1/icon/arrow-up/index.html | 208 + .../src/3.2.1/icon/asterisk/index.html | 208 + .../src/3.2.1/icon/backward/index.html | 208 + .../src/3.2.1/icon/ban-circle/index.html | 208 + .../src/3.2.1/icon/bar-chart/index.html | 208 + .../src/3.2.1/icon/barcode/index.html | 208 + .../src/3.2.1/icon/beaker/index.html | 208 + .../src/3.2.1/icon/beer/index.html | 208 + .../src/3.2.1/icon/bell-alt/index.html | 208 + .../src/3.2.1/icon/bell/index.html | 208 + .../src/3.2.1/icon/bitbucket-sign/index.html | 208 + .../src/3.2.1/icon/bitbucket/index.html | 208 + .../src/3.2.1/icon/bold/index.html | 208 + .../src/3.2.1/icon/bolt/index.html | 208 + .../src/3.2.1/icon/book/index.html | 208 + .../src/3.2.1/icon/bookmark-empty/index.html | 208 + .../src/3.2.1/icon/bookmark/index.html | 208 + .../src/3.2.1/icon/briefcase/index.html | 208 + .../src/3.2.1/icon/btc/index.html | 215 + .../src/3.2.1/icon/bug/index.html | 208 + .../src/3.2.1/icon/building/index.html | 208 + .../src/3.2.1/icon/bullhorn/index.html | 208 + .../src/3.2.1/icon/bullseye/index.html | 208 + .../src/3.2.1/icon/calendar-empty/index.html | 208 + .../src/3.2.1/icon/calendar/index.html | 208 + .../src/3.2.1/icon/camera-retro/index.html | 208 + .../src/3.2.1/icon/camera/index.html | 208 + .../src/3.2.1/icon/caret-down/index.html | 208 + .../src/3.2.1/icon/caret-left/index.html | 208 + .../src/3.2.1/icon/caret-right/index.html | 208 + .../src/3.2.1/icon/caret-up/index.html | 208 + .../src/3.2.1/icon/certificate/index.html | 208 + .../src/3.2.1/icon/check-empty/index.html | 213 + .../src/3.2.1/icon/check-minus/index.html | 208 + .../src/3.2.1/icon/check-sign/index.html | 208 + .../src/3.2.1/icon/check/index.html | 208 + .../src/3.2.1/icon/chevron-down/index.html | 208 + .../src/3.2.1/icon/chevron-left/index.html | 208 + .../src/3.2.1/icon/chevron-right/index.html | 208 + .../3.2.1/icon/chevron-sign-down/index.html | 208 + .../3.2.1/icon/chevron-sign-left/index.html | 208 + .../3.2.1/icon/chevron-sign-right/index.html | 208 + .../src/3.2.1/icon/chevron-sign-up/index.html | 208 + .../src/3.2.1/icon/chevron-up/index.html | 208 + .../3.2.1/icon/circle-arrow-down/index.html | 208 + .../3.2.1/icon/circle-arrow-left/index.html | 208 + .../3.2.1/icon/circle-arrow-right/index.html | 208 + .../src/3.2.1/icon/circle-arrow-up/index.html | 208 + .../src/3.2.1/icon/circle-blank/index.html | 208 + .../src/3.2.1/icon/circle/index.html | 208 + .../src/3.2.1/icon/cloud-download/index.html | 208 + .../src/3.2.1/icon/cloud-upload/index.html | 208 + .../src/3.2.1/icon/cloud/index.html | 208 + .../src/3.2.1/icon/cny/index.html | 213 + .../src/3.2.1/icon/code-fork/index.html | 208 + .../src/3.2.1/icon/code/index.html | 208 + .../src/3.2.1/icon/coffee/index.html | 208 + .../src/3.2.1/icon/cog/index.html | 213 + .../src/3.2.1/icon/cogs/index.html | 213 + .../src/3.2.1/icon/collapse-alt/index.html | 208 + .../src/3.2.1/icon/collapse-top/index.html | 208 + .../src/3.2.1/icon/collapse/index.html | 208 + .../src/3.2.1/icon/columns/index.html | 208 + .../src/3.2.1/icon/comment-alt/index.html | 208 + .../src/3.2.1/icon/comment/index.html | 208 + .../src/3.2.1/icon/comments-alt/index.html | 208 + .../src/3.2.1/icon/comments/index.html | 208 + .../src/3.2.1/icon/compass/index.html | 208 + .../src/3.2.1/icon/copy/index.html | 208 + .../src/3.2.1/icon/credit-card/index.html | 208 + .../src/3.2.1/icon/crop/index.html | 208 + .../src/3.2.1/icon/css3/index.html | 208 + .../src/3.2.1/icon/cut/index.html | 208 + .../src/3.2.1/icon/dashboard/index.html | 208 + .../src/3.2.1/icon/desktop/index.html | 208 + .../3.2.1/icon/double-angle-down/index.html | 208 + .../3.2.1/icon/double-angle-left/index.html | 208 + .../3.2.1/icon/double-angle-right/index.html | 208 + .../src/3.2.1/icon/double-angle-up/index.html | 208 + .../src/3.2.1/icon/download-alt/index.html | 208 + .../src/3.2.1/icon/download/index.html | 208 + .../src/3.2.1/icon/dribbble/index.html | 208 + .../src/3.2.1/icon/dropbox/index.html | 208 + .../src/3.2.1/icon/edit-sign/index.html | 208 + .../src/3.2.1/icon/edit/index.html | 208 + .../src/3.2.1/icon/eject/index.html | 208 + .../3.2.1/icon/ellipsis-horizontal/index.html | 208 + .../3.2.1/icon/ellipsis-vertical/index.html | 208 + .../src/3.2.1/icon/envelope-alt/index.html | 208 + .../src/3.2.1/icon/envelope/index.html | 208 + .../src/3.2.1/icon/eraser/index.html | 210 + .../src/3.2.1/icon/eur/index.html | 213 + .../src/3.2.1/icon/exchange/index.html | 208 + .../3.2.1/icon/exclamation-sign/index.html | 208 + .../src/3.2.1/icon/exclamation/index.html | 208 + .../src/3.2.1/icon/expand-alt/index.html | 208 + .../src/3.2.1/icon/expand/index.html | 208 + .../3.2.1/icon/external-link-sign/index.html | 208 + .../src/3.2.1/icon/external-link/index.html | 208 + .../src/3.2.1/icon/eye-close/index.html | 208 + .../src/3.2.1/icon/eye-open/index.html | 208 + .../src/3.2.1/icon/facebook-sign/index.html | 208 + .../src/3.2.1/icon/facebook/index.html | 208 + .../src/3.2.1/icon/facetime-video/index.html | 208 + .../src/3.2.1/icon/fast-backward/index.html | 208 + .../src/3.2.1/icon/fast-forward/index.html | 208 + .../src/3.2.1/icon/female/index.html | 208 + .../src/3.2.1/icon/fighter-jet/index.html | 208 + .../src/3.2.1/icon/file-alt/index.html | 208 + .../src/3.2.1/icon/file-text-alt/index.html | 208 + .../src/3.2.1/icon/file-text/index.html | 208 + .../src/3.2.1/icon/file/index.html | 208 + .../src/3.2.1/icon/film/index.html | 208 + .../src/3.2.1/icon/filter/index.html | 208 + .../3.2.1/icon/fire-extinguisher/index.html | 208 + .../src/3.2.1/icon/fire/index.html | 208 + .../src/3.2.1/icon/flag-alt/index.html | 208 + .../src/3.2.1/icon/flag-checkered/index.html | 208 + .../src/3.2.1/icon/flag/index.html | 208 + .../src/3.2.1/icon/flickr/index.html | 208 + .../3.2.1/icon/folder-close-alt/index.html | 208 + .../src/3.2.1/icon/folder-close/index.html | 208 + .../src/3.2.1/icon/folder-open-alt/index.html | 208 + .../src/3.2.1/icon/folder-open/index.html | 208 + .../src/3.2.1/icon/font/index.html | 208 + .../src/3.2.1/icon/food/index.html | 208 + .../src/3.2.1/icon/forward/index.html | 208 + .../src/3.2.1/icon/foursquare/index.html | 208 + .../src/3.2.1/icon/frown/index.html | 208 + .../src/3.2.1/icon/fullscreen/index.html | 208 + .../src/3.2.1/icon/gamepad/index.html | 208 + .../src/3.2.1/icon/gbp/index.html | 208 + .../src/3.2.1/icon/gift/index.html | 208 + .../src/3.2.1/icon/github-alt/index.html | 208 + .../src/3.2.1/icon/github-sign/index.html | 208 + .../src/3.2.1/icon/github/index.html | 208 + .../src/3.2.1/icon/gittip/index.html | 208 + .../src/3.2.1/icon/glass/index.html | 208 + .../src/3.2.1/icon/globe/index.html | 208 + .../3.2.1/icon/google-plus-sign/index.html | 208 + .../src/3.2.1/icon/google-plus/index.html | 208 + .../src/3.2.1/icon/group/index.html | 208 + .../src/3.2.1/icon/h-sign/index.html | 208 + .../src/3.2.1/icon/hand-down/index.html | 208 + .../src/3.2.1/icon/hand-left/index.html | 208 + .../src/3.2.1/icon/hand-right/index.html | 208 + .../src/3.2.1/icon/hand-up/index.html | 208 + .../src/3.2.1/icon/hdd/index.html | 208 + .../src/3.2.1/icon/headphones/index.html | 208 + .../src/3.2.1/icon/heart-empty/index.html | 208 + .../src/3.2.1/icon/heart/index.html | 208 + .../src/3.2.1/icon/home/index.html | 208 + .../src/3.2.1/icon/hospital/index.html | 208 + .../src/3.2.1/icon/html5/index.html | 208 + .../src/3.2.1/icon/inbox/index.html | 208 + .../src/3.2.1/icon/indent-left/index.html | 208 + .../src/3.2.1/icon/indent-right/index.html | 208 + .../src/3.2.1/icon/info-sign/index.html | 208 + .../src/3.2.1/icon/info/index.html | 208 + .../src/3.2.1/icon/inr/index.html | 213 + .../src/3.2.1/icon/instagram/index.html | 208 + .../src/3.2.1/icon/italic/index.html | 208 + .../src/3.2.1/icon/jpy/index.html | 213 + .../src/3.2.1/icon/key/index.html | 208 + .../src/3.2.1/icon/keyboard/index.html | 208 + .../src/3.2.1/icon/krw/index.html | 213 + .../src/3.2.1/icon/laptop/index.html | 208 + .../src/3.2.1/icon/leaf/index.html | 208 + .../src/3.2.1/icon/legal/index.html | 208 + .../src/3.2.1/icon/lemon/index.html | 208 + .../src/3.2.1/icon/level-down/index.html | 208 + .../src/3.2.1/icon/level-up/index.html | 208 + .../src/3.2.1/icon/lightbulb/index.html | 208 + .../src/3.2.1/icon/link/index.html | 208 + .../src/3.2.1/icon/linkedin-sign/index.html | 208 + .../src/3.2.1/icon/linkedin/index.html | 208 + .../src/3.2.1/icon/linux/index.html | 208 + .../src/3.2.1/icon/list-alt/index.html | 208 + .../src/3.2.1/icon/list-ol/index.html | 208 + .../src/3.2.1/icon/list-ul/index.html | 208 + .../src/3.2.1/icon/list/index.html | 208 + .../src/3.2.1/icon/location-arrow/index.html | 208 + .../src/3.2.1/icon/lock/index.html | 208 + .../src/3.2.1/icon/long-arrow-down/index.html | 208 + .../src/3.2.1/icon/long-arrow-left/index.html | 208 + .../3.2.1/icon/long-arrow-right/index.html | 208 + .../src/3.2.1/icon/long-arrow-up/index.html | 208 + .../src/3.2.1/icon/magic/index.html | 208 + .../src/3.2.1/icon/magnet/index.html | 208 + .../src/3.2.1/icon/mail-reply-all/index.html | 208 + .../src/3.2.1/icon/male/index.html | 208 + .../src/3.2.1/icon/map-marker/index.html | 208 + .../src/3.2.1/icon/maxcdn/index.html | 208 + .../src/3.2.1/icon/medkit/index.html | 208 + .../src/3.2.1/icon/meh/index.html | 208 + .../src/3.2.1/icon/microphone-off/index.html | 208 + .../src/3.2.1/icon/microphone/index.html | 208 + .../src/3.2.1/icon/minus-sign-alt/index.html | 208 + .../src/3.2.1/icon/minus-sign/index.html | 208 + .../src/3.2.1/icon/minus/index.html | 208 + .../src/3.2.1/icon/mobile-phone/index.html | 208 + .../src/3.2.1/icon/money/index.html | 208 + .../src/3.2.1/icon/moon/index.html | 208 + .../src/3.2.1/icon/move/index.html | 208 + .../src/3.2.1/icon/music/index.html | 208 + .../src/3.2.1/icon/off/index.html | 213 + .../src/3.2.1/icon/ok-circle/index.html | 208 + .../src/3.2.1/icon/ok-sign/index.html | 208 + .../font-awesome/src/3.2.1/icon/ok/index.html | 208 + .../src/3.2.1/icon/paper-clip/index.html | 213 + .../src/3.2.1/icon/paste/index.html | 208 + .../src/3.2.1/icon/pause/index.html | 208 + .../src/3.2.1/icon/pencil/index.html | 208 + .../src/3.2.1/icon/phone-sign/index.html | 208 + .../src/3.2.1/icon/phone/index.html | 208 + .../src/3.2.1/icon/picture/index.html | 208 + .../src/3.2.1/icon/pinterest-sign/index.html | 208 + .../src/3.2.1/icon/pinterest/index.html | 208 + .../src/3.2.1/icon/plane/index.html | 208 + .../src/3.2.1/icon/play-circle/index.html | 208 + .../src/3.2.1/icon/play-sign/index.html | 208 + .../src/3.2.1/icon/play/index.html | 208 + .../src/3.2.1/icon/plus-sign-alt/index.html | 210 + .../src/3.2.1/icon/plus-sign/index.html | 208 + .../src/3.2.1/icon/plus/index.html | 208 + .../src/3.2.1/icon/print/index.html | 208 + .../src/3.2.1/icon/pushpin/index.html | 208 + .../src/3.2.1/icon/puzzle-piece/index.html | 208 + .../src/3.2.1/icon/qrcode/index.html | 208 + .../src/3.2.1/icon/question-sign/index.html | 208 + .../src/3.2.1/icon/question/index.html | 208 + .../src/3.2.1/icon/quote-left/index.html | 208 + .../src/3.2.1/icon/quote-right/index.html | 208 + .../src/3.2.1/icon/random/index.html | 208 + .../src/3.2.1/icon/refresh/index.html | 208 + .../src/3.2.1/icon/remove-circle/index.html | 208 + .../src/3.2.1/icon/remove-sign/index.html | 208 + .../src/3.2.1/icon/remove/index.html | 208 + .../src/3.2.1/icon/renren/index.html | 208 + .../src/3.2.1/icon/reorder/index.html | 208 + .../src/3.2.1/icon/repeat/index.html | 213 + .../src/3.2.1/icon/reply-all/index.html | 208 + .../src/3.2.1/icon/reply/index.html | 213 + .../src/3.2.1/icon/resize-full/index.html | 208 + .../3.2.1/icon/resize-horizontal/index.html | 208 + .../src/3.2.1/icon/resize-small/index.html | 208 + .../src/3.2.1/icon/resize-vertical/index.html | 208 + .../src/3.2.1/icon/retweet/index.html | 208 + .../src/3.2.1/icon/road/index.html | 208 + .../src/3.2.1/icon/rocket/index.html | 208 + .../src/3.2.1/icon/rss-sign/index.html | 208 + .../src/3.2.1/icon/rss/index.html | 208 + .../src/3.2.1/icon/save/index.html | 208 + .../src/3.2.1/icon/screenshot/index.html | 208 + .../src/3.2.1/icon/search/index.html | 208 + .../src/3.2.1/icon/share-alt/index.html | 213 + .../src/3.2.1/icon/share-sign/index.html | 208 + .../src/3.2.1/icon/share/index.html | 208 + .../src/3.2.1/icon/shield/index.html | 208 + .../src/3.2.1/icon/shopping-cart/index.html | 208 + .../src/3.2.1/icon/sign-blank/index.html | 208 + .../src/3.2.1/icon/signal/index.html | 208 + .../src/3.2.1/icon/signin/index.html | 208 + .../src/3.2.1/icon/signout/index.html | 208 + .../src/3.2.1/icon/sitemap/index.html | 208 + .../src/3.2.1/icon/skype/index.html | 208 + .../src/3.2.1/icon/smile/index.html | 208 + .../icon/sort-by-alphabet-alt/index.html | 208 + .../3.2.1/icon/sort-by-alphabet/index.html | 208 + .../icon/sort-by-attributes-alt/index.html | 208 + .../3.2.1/icon/sort-by-attributes/index.html | 208 + .../3.2.1/icon/sort-by-order-alt/index.html | 208 + .../src/3.2.1/icon/sort-by-order/index.html | 208 + .../src/3.2.1/icon/sort-down/index.html | 208 + .../src/3.2.1/icon/sort-up/index.html | 208 + .../src/3.2.1/icon/sort/index.html | 208 + .../src/3.2.1/icon/spinner/index.html | 208 + .../src/3.2.1/icon/stackexchange/index.html | 208 + .../src/3.2.1/icon/star-empty/index.html | 208 + .../src/3.2.1/icon/star-half-empty/index.html | 213 + .../src/3.2.1/icon/star-half/index.html | 208 + .../src/3.2.1/icon/star/index.html | 208 + .../src/3.2.1/icon/step-backward/index.html | 208 + .../src/3.2.1/icon/step-forward/index.html | 208 + .../src/3.2.1/icon/stethoscope/index.html | 208 + .../src/3.2.1/icon/stop/index.html | 208 + .../src/3.2.1/icon/strikethrough/index.html | 208 + .../src/3.2.1/icon/subscript/index.html | 208 + .../src/3.2.1/icon/suitcase/index.html | 208 + .../src/3.2.1/icon/sun/index.html | 208 + .../src/3.2.1/icon/superscript/index.html | 208 + .../src/3.2.1/icon/table/index.html | 208 + .../src/3.2.1/icon/tablet/index.html | 208 + .../src/3.2.1/icon/tag/index.html | 208 + .../src/3.2.1/icon/tags/index.html | 208 + .../src/3.2.1/icon/tasks/index.html | 208 + .../src/3.2.1/icon/terminal/index.html | 208 + .../src/3.2.1/icon/text-height/index.html | 208 + .../src/3.2.1/icon/text-width/index.html | 208 + .../src/3.2.1/icon/th-large/index.html | 208 + .../src/3.2.1/icon/th-list/index.html | 208 + .../font-awesome/src/3.2.1/icon/th/index.html | 208 + .../src/3.2.1/icon/thumbs-down-alt/index.html | 208 + .../src/3.2.1/icon/thumbs-down/index.html | 208 + .../src/3.2.1/icon/thumbs-up-alt/index.html | 208 + .../src/3.2.1/icon/thumbs-up/index.html | 208 + .../src/3.2.1/icon/ticket/index.html | 208 + .../src/3.2.1/icon/time/index.html | 208 + .../src/3.2.1/icon/tint/index.html | 208 + .../src/3.2.1/icon/trash/index.html | 208 + .../src/3.2.1/icon/trello/index.html | 208 + .../src/3.2.1/icon/trophy/index.html | 208 + .../src/3.2.1/icon/truck/index.html | 208 + .../src/3.2.1/icon/tumblr-sign/index.html | 208 + .../src/3.2.1/icon/tumblr/index.html | 208 + .../src/3.2.1/icon/twitter-sign/index.html | 208 + .../src/3.2.1/icon/twitter/index.html | 208 + .../src/3.2.1/icon/umbrella/index.html | 208 + .../src/3.2.1/icon/underline/index.html | 208 + .../src/3.2.1/icon/undo/index.html | 213 + .../src/3.2.1/icon/unlink/index.html | 208 + .../src/3.2.1/icon/unlock-alt/index.html | 208 + .../src/3.2.1/icon/unlock/index.html | 208 + .../src/3.2.1/icon/upload-alt/index.html | 208 + .../src/3.2.1/icon/upload/index.html | 208 + .../src/3.2.1/icon/usd/index.html | 213 + .../src/3.2.1/icon/user-md/index.html | 208 + .../src/3.2.1/icon/user/index.html | 208 + .../font-awesome/src/3.2.1/icon/vk/index.html | 208 + .../src/3.2.1/icon/volume-down/index.html | 208 + .../src/3.2.1/icon/volume-off/index.html | 208 + .../src/3.2.1/icon/volume-up/index.html | 208 + .../src/3.2.1/icon/warning-sign/index.html | 208 + .../src/3.2.1/icon/weibo/index.html | 208 + .../src/3.2.1/icon/windows/index.html | 208 + .../src/3.2.1/icon/wrench/index.html | 208 + .../src/3.2.1/icon/xing-sign/index.html | 208 + .../src/3.2.1/icon/xing/index.html | 208 + .../src/3.2.1/icon/youtube-play/index.html | 210 + .../src/3.2.1/icon/youtube-sign/index.html | 208 + .../src/3.2.1/icon/youtube/index.html | 208 + .../src/3.2.1/icon/zoom-in/index.html | 208 + .../src/3.2.1/icon/zoom-out/index.html | 208 + .../font-awesome/src/3.2.1/icons.yml | 2590 ++ .../font-awesome/src/3.2.1/icons/index.html | 1202 + .../font-awesome/src/3.2.1/index.html | 320 + .../font-awesome/src/3.2.1/license/index.html | 261 + .../font-awesome/src/3.2.1/test/index.html | 1056 + .../src/3.2.1/whats-new/index.html | 433 + app/bower_components/font-awesome/src/CNAME | 1 + .../font-awesome/src/Makefile | 38 + .../_includes/ads/carbon-dark-vertical.html | 1 + .../ads/carbon-light-horizontal.html | 1 + .../_includes/ads/carbon-light-vertical.html | 1 + .../src/_includes/brand-license.html | 4 + .../_includes/community/getting-support.html | 22 + .../community/project-milestones.html | 7 + .../_includes/community/reporting-bugs.html | 18 + .../community/requesting-new-icons.html | 27 + .../community/submitting-pull-requests.html | 12 + .../src/_includes/examples/bootstrap.html | 93 + .../_includes/examples/bordered-pulled.html | 21 + .../src/_includes/examples/custom.html | 16 + .../src/_includes/examples/fixed-width.html | 27 + .../src/_includes/examples/inline.html | 17 + .../src/_includes/examples/larger.html | 29 + .../src/_includes/examples/list.html | 24 + .../_includes/examples/rotated-flipped.html | 28 + .../src/_includes/examples/spinning.html | 26 + .../src/_includes/examples/stacked.html | 59 + .../font-awesome/src/_includes/footer.html | 24 + .../src/_includes/icons/brand.html | 15 + .../src/_includes/icons/currency.html | 12 + .../src/_includes/icons/directional.html | 12 + .../src/_includes/icons/form-control.html | 11 + .../src/_includes/icons/medical.html | 12 + .../font-awesome/src/_includes/icons/new.html | 18 + .../src/_includes/icons/text-editor.html | 12 + .../src/_includes/icons/video-player.html | 12 + .../src/_includes/icons/web-application.html | 12 + .../src/_includes/jumbotron-carousel.html | 52 + .../font-awesome/src/_includes/jumbotron.html | 6 + .../src/_includes/license-code.less | 4 + .../font-awesome/src/_includes/navbar.html | 69 + .../src/_includes/new-features.html | 37 + .../src/_includes/new-naming.html | 157 + .../src/_includes/new-upgrading.html | 10 + .../font-awesome/src/_includes/stripe-ad.html | 6 + .../src/_includes/stripe-social.html | 18 + .../src/_includes/tell-me-thanks.html | 22 + .../tests/rotated-flipped-inside-anchor.html | 6 + .../tests/rotated-flipped-inside-btn.html | 6 + .../src/_includes/tests/rotated-flipped.html | 6 + .../tests/stacked-inside-anchor.html | 69 + .../src/_includes/tests/stacked.html | 58 + .../font-awesome/src/_includes/thanks-to.html | 26 + .../font-awesome/src/_includes/why.html | 41 + .../font-awesome/src/_layouts/base.html | 55 + .../font-awesome/src/_layouts/icon.html | 62 + .../src/_plugins/icon_page_generator.rb | 46 + .../font-awesome/src/_plugins/site.rb | 142 + .../font-awesome/src/assets/css/prettify.css | 30 + .../font-awesome/src/assets/css/pygments.css | 71 + .../assets/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 62856 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../fonts/fontawesome-webfont.svg | 414 + .../fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes .../font-awesome/less/bordered-pulled.less | 19 + .../src/assets/font-awesome/less/core.less | 15 + .../assets/font-awesome/less/fixed-width.less | 9 + .../font-awesome/less/font-awesome.less | 16 + .../src/assets/font-awesome/less/icons.less | 7 + .../src/assets/font-awesome/less/larger.less | 16 + .../src/assets/font-awesome/less/list.less | 22 + .../src/assets/font-awesome/less/mixins.less | 22 + .../src/assets/font-awesome/less/path.less | 14 + .../font-awesome/less/rotated-flipped.less | 12 + .../assets/font-awesome/less/spinning.less | 33 + .../src/assets/font-awesome/less/stacked.less | 23 + .../assets/font-awesome/less/variables.less | 15 + .../font-awesome/scss/_bordered-pulled.scss | 19 + .../src/assets/font-awesome/scss/_core.scss | 15 + .../font-awesome/scss/_fixed-width.scss | 9 + .../src/assets/font-awesome/scss/_icons.scss | 7 + .../src/assets/font-awesome/scss/_larger.scss | 16 + .../src/assets/font-awesome/scss/_list.scss | 22 + .../src/assets/font-awesome/scss/_mixins.scss | 22 + .../src/assets/font-awesome/scss/_path.scss | 14 + .../font-awesome/scss/_rotated-flipped.scss | 12 + .../assets/font-awesome/scss/_spinning.scss | 33 + .../assets/font-awesome/scss/_stacked.scss | 23 + .../assets/font-awesome/scss/_variables.scss | 15 + .../font-awesome/scss/font-awesome.scss | 16 + .../font-awesome/src/assets/ico/favicon.ico | Bin 0 -> 1150 bytes .../src/assets/js/ZeroClipboard-1.1.7.min.js | 8 + .../src/assets/js/ZeroClipboard-1.1.7.swf | Bin 0 -> 1635 bytes .../src/assets/js/backbone.min.js | 37 + .../src/assets/js/bootstrap-2.3.1.min.js | 6 + .../src/assets/js/bootstrap-222.min.js | 6 + .../src/assets/js/bootstrap-3.0.0.min.js | 6 + .../font-awesome/src/assets/js/html5shiv.js | 8 + .../src/assets/js/jquery-1.10.2.js | 9789 +++++ .../src/assets/js/jquery-1.10.2.min.js | 6 + .../src/assets/js/jquery-1.10.2.min.map | 1 + .../src/assets/js/jquery-1.7.1.min.js | 4 + .../src/assets/js/prettify.min.js | 28 + .../font-awesome/src/assets/js/respond.min.js | 6 + .../font-awesome/src/assets/js/site.js | 38 + .../src/assets/js/underscore.min.js | 31 + .../assets/less/bootstrap-3.0.0/alerts.less | 67 + .../assets/less/bootstrap-3.0.0/badges.less | 51 + .../less/bootstrap-3.0.0/bootstrap.less | 59 + .../less/bootstrap-3.0.0/breadcrumbs.less | 23 + .../less/bootstrap-3.0.0/button-groups.less | 248 + .../assets/less/bootstrap-3.0.0/buttons.less | 160 + .../assets/less/bootstrap-3.0.0/carousel.less | 209 + .../assets/less/bootstrap-3.0.0/close.less | 33 + .../src/assets/less/bootstrap-3.0.0/code.less | 56 + .../bootstrap-3.0.0/component-animations.less | 29 + .../less/bootstrap-3.0.0/dropdowns.less | 193 + .../assets/less/bootstrap-3.0.0/forms.less | 353 + .../less/bootstrap-3.0.0/glyphicons.less | 232 + .../src/assets/less/bootstrap-3.0.0/grid.less | 346 + .../less/bootstrap-3.0.0/input-groups.less | 127 + .../less/bootstrap-3.0.0/jumbotron.less | 40 + .../assets/less/bootstrap-3.0.0/labels.less | 58 + .../less/bootstrap-3.0.0/list-group.less | 88 + .../assets/less/bootstrap-3.0.0/media.less | 56 + .../assets/less/bootstrap-3.0.0/mixins.less | 723 + .../assets/less/bootstrap-3.0.0/modals.less | 141 + .../assets/less/bootstrap-3.0.0/navbar.less | 621 + .../src/assets/less/bootstrap-3.0.0/navs.less | 229 + .../less/bootstrap-3.0.0/normalize.less | 396 + .../assets/less/bootstrap-3.0.0/pager.less | 55 + .../less/bootstrap-3.0.0/pagination.less | 83 + .../assets/less/bootstrap-3.0.0/panels.less | 148 + .../assets/less/bootstrap-3.0.0/popovers.less | 133 + .../assets/less/bootstrap-3.0.0/print.less | 100 + .../less/bootstrap-3.0.0/progress-bars.less | 95 + .../bootstrap-3.0.0/responsive-utilities.less | 220 + .../less/bootstrap-3.0.0/scaffolding.less | 130 + .../assets/less/bootstrap-3.0.0/tables.less | 236 + .../assets/less/bootstrap-3.0.0/theme.less | 232 + .../less/bootstrap-3.0.0/thumbnails.less | 31 + .../assets/less/bootstrap-3.0.0/tooltip.less | 95 + .../src/assets/less/bootstrap-3.0.0/type.less | 238 + .../less/bootstrap-3.0.0/utilities.less | 42 + .../less/bootstrap-3.0.0/variables.less | 620 + .../assets/less/bootstrap-3.0.0/wells.less | 29 + .../font-awesome/src/assets/less/site.less | 27 + .../assets/less/site/bootstrap/buttons.less | 3 + .../assets/less/site/bootstrap/jumbotron.less | 68 + .../assets/less/site/bootstrap/navbar.less | 33 + .../src/assets/less/site/bootstrap/type.less | 3 + .../assets/less/site/bootstrap/variables.less | 119 + .../src/assets/less/site/bootstrap/wells.less | 1 + .../src/assets/less/site/carbonad.less | 12 + .../src/assets/less/site/example-rating.less | 25 + .../src/assets/less/site/feature-list.less | 19 + .../less/site/fontawesome-icon-list.less | 32 + .../src/assets/less/site/footer.less | 40 + .../assets/less/site/jumbotron-carousel.less | 61 + .../src/assets/less/site/layout.less | 1 + .../src/assets/less/site/lazy.less | 86 + .../less/site/responsive/screen-lg.less | 53 + .../less/site/responsive/screen-md.less | 3 + .../less/site/responsive/screen-sm.less | 47 + .../less/site/responsive/screen-xs.less | 70 + .../src/assets/less/site/social-buttons.less | 9 + .../src/assets/less/site/stripe-ad.less | 7 + .../src/assets/less/site/textured-bg.less | 20 + .../font-awesome/src/cheatsheet.html | 32 + .../font-awesome/src/community.html | 34 + .../font-awesome/src/design.html | 1 + .../font-awesome/src/examples.html | 33 + .../font-awesome/src/get-started.html | 149 + .../font-awesome/src/glyphicons-test.html | 795 + .../font-awesome/src/icons.html | 33 + .../font-awesome/src/icons.yml | 2713 ++ .../font-awesome/src/index.html | 22 + .../font-awesome/src/license.html | 72 + .../font-awesome/src/test-2.3.2.html | 824 + .../font-awesome/src/test.html | 761 + .../font-awesome/src/whats-new.html | 18 + app/bower_components/jquery/.bower.json | 37 + app/bower_components/jquery/MIT-LICENSE.txt | 21 + app/bower_components/jquery/bower.json | 27 + app/bower_components/jquery/src/ajax.js | 806 + app/bower_components/jquery/src/ajax/jsonp.js | 89 + app/bower_components/jquery/src/ajax/load.js | 75 + .../jquery/src/ajax/parseJSON.js | 13 + .../jquery/src/ajax/parseXML.js | 28 + .../jquery/src/ajax/script.js | 64 + .../jquery/src/ajax/var/nonce.js | 5 + .../jquery/src/ajax/var/rquery.js | 3 + app/bower_components/jquery/src/ajax/xhr.js | 135 + app/bower_components/jquery/src/attributes.js | 11 + .../jquery/src/attributes/attr.js | 143 + .../jquery/src/attributes/classes.js | 158 + .../jquery/src/attributes/prop.js | 96 + .../jquery/src/attributes/support.js | 35 + .../jquery/src/attributes/val.js | 163 + app/bower_components/jquery/src/callbacks.js | 205 + app/bower_components/jquery/src/core.js | 498 + .../jquery/src/core/access.js | 60 + app/bower_components/jquery/src/core/init.js | 123 + .../jquery/src/core/parseHTML.js | 39 + app/bower_components/jquery/src/core/ready.js | 97 + .../jquery/src/core/var/rsingleTag.js | 4 + app/bower_components/jquery/src/css.js | 451 + .../jquery/src/css/addGetHookIf.js | 24 + app/bower_components/jquery/src/css/curCSS.js | 57 + .../jquery/src/css/defaultDisplay.js | 70 + .../jquery/src/css/hiddenVisibleSelectors.js | 15 + .../jquery/src/css/support.js | 91 + app/bower_components/jquery/src/css/swap.js | 28 + .../jquery/src/css/var/cssExpand.js | 3 + .../jquery/src/css/var/getStyles.js | 5 + .../jquery/src/css/var/isHidden.js | 13 + .../jquery/src/css/var/rmargin.js | 3 + .../jquery/src/css/var/rnumnonpx.js | 5 + app/bower_components/jquery/src/data.js | 179 + app/bower_components/jquery/src/data/Data.js | 181 + .../jquery/src/data/accepts.js | 20 + .../jquery/src/data/var/data_priv.js | 5 + .../jquery/src/data/var/data_user.js | 5 + app/bower_components/jquery/src/deferred.js | 149 + app/bower_components/jquery/src/deprecated.js | 13 + app/bower_components/jquery/src/dimensions.js | 50 + app/bower_components/jquery/src/effects.js | 649 + .../jquery/src/effects/Tween.js | 114 + .../jquery/src/effects/animatedSelector.js | 13 + app/bower_components/jquery/src/event.js | 868 + .../jquery/src/event/alias.js | 39 + .../jquery/src/event/support.js | 9 + .../jquery/src/exports/amd.js | 24 + .../jquery/src/exports/global.js | 32 + app/bower_components/jquery/src/intro.js | 44 + app/bower_components/jquery/src/jquery.js | 36 + .../jquery/src/manipulation.js | 582 + .../jquery/src/manipulation/_evalUrl.js | 18 + .../jquery/src/manipulation/support.js | 31 + .../src/manipulation/var/rcheckableType.js | 3 + app/bower_components/jquery/src/offset.js | 204 + app/bower_components/jquery/src/outro.js | 1 + app/bower_components/jquery/src/queue.js | 142 + .../jquery/src/queue/delay.js | 22 + .../jquery/src/selector-native.js | 172 + .../jquery/src/selector-sizzle.js | 14 + app/bower_components/jquery/src/selector.js | 1 + app/bower_components/jquery/src/serialize.js | 111 + app/bower_components/jquery/src/traversing.js | 200 + .../jquery/src/traversing/findFilter.js | 100 + .../src/traversing/var/rneedsContext.js | 6 + app/bower_components/jquery/src/var/arr.js | 3 + .../jquery/src/var/class2type.js | 4 + app/bower_components/jquery/src/var/concat.js | 5 + app/bower_components/jquery/src/var/hasOwn.js | 5 + .../jquery/src/var/indexOf.js | 5 + app/bower_components/jquery/src/var/pnum.js | 3 + app/bower_components/jquery/src/var/push.js | 5 + .../jquery/src/var/rnotwhite.js | 3 + app/bower_components/jquery/src/var/slice.js | 5 + .../jquery/src/var/strundefined.js | 3 + .../jquery/src/var/support.js | 4 + .../jquery/src/var/toString.js | 5 + app/bower_components/jquery/src/wrap.js | 78 + app/bower_components/json3/.bower.json | 31 + app/bower_components/json3/LICENSE | 20 + app/bower_components/json3/README.md | 126 + app/bower_components/json3/bower.json | 21 + app/bower_components/json3/lib/json3.js | 861 + app/bower_components/json3/lib/json3.min.js | 18 + app/bower_components/leaflet-dist/.bower.json | 24 + app/bower_components/leaflet-dist/bower.json | 20 + .../leaflet-dist/images/layers-2x.png | Bin 0 -> 2898 bytes .../leaflet-dist/images/layers.png | Bin 0 -> 1502 bytes .../leaflet-dist/images/marker-icon-2x.png | Bin 0 -> 4033 bytes .../leaflet-dist/images/marker-icon.png | Bin 0 -> 1747 bytes .../leaflet-dist/images/marker-shadow.png | Bin 0 -> 797 bytes .../leaflet-dist/leaflet-src.js | 9169 +++++ app/bower_components/leaflet-dist/leaflet.css | 478 + app/bower_components/leaflet-dist/leaflet.js | 9 + .../sass-bootstrap/.bower.json | 25 + app/bower_components/sass-bootstrap/CNAME | 1 + .../sass-bootstrap/CONTRIBUTING.md | 61 + .../sass-bootstrap/DOCS-LICENSE | 319 + app/bower_components/sass-bootstrap/Gemfile | 5 + .../sass-bootstrap/Gemfile.lock | 14 + .../sass-bootstrap/Gruntfile.js | 244 + app/bower_components/sass-bootstrap/LICENSE | 176 + .../sass-bootstrap/LICENSE-MIT | 21 + app/bower_components/sass-bootstrap/README.md | 277 + app/bower_components/sass-bootstrap/Rakefile | 44 + .../sass-bootstrap/_config.yml | 25 + .../sass-bootstrap/_includes/ads.html | 1 + .../sass-bootstrap/_includes/footer.html | 34 + .../sass-bootstrap/_includes/header.html | 42 + .../sass-bootstrap/_includes/nav-about.html | 12 + .../_includes/nav-components.html | 137 + .../sass-bootstrap/_includes/nav-css.html | 99 + .../_includes/nav-customize.html | 40 + .../_includes/nav-getting-started.html | 44 + .../_includes/nav-javascript.html | 88 + .../sass-bootstrap/_includes/nav-main.html | 37 + .../sass-bootstrap/_includes/old-bs-docs.html | 8 + .../_includes/social-buttons.html | 16 + .../sass-bootstrap/_layouts/default.html | 79 + .../sass-bootstrap/_layouts/home.html | 47 + .../sass-bootstrap/about.html | 93 + .../sass-bootstrap/bower.json | 11 + .../sass-bootstrap/browserstack.json | 37 + .../sass-bootstrap/components.html | 3689 ++ .../sass-bootstrap/composer.json | 28 + app/bower_components/sass-bootstrap/css.html | 2674 ++ .../sass-bootstrap/customize.html | 1715 + .../sass-bootstrap/docs-assets/css/docs.css | 1195 + .../docs-assets/css/pygments-manni.css | 66 + .../ico/apple-touch-icon-144-precomposed.png | Bin 0 -> 3549 bytes .../docs-assets/ico/favicon.png | Bin 0 -> 887 bytes .../docs-assets/js/application.js | 103 + .../docs-assets/js/customizer.js | 332 + .../docs-assets/js/filesaver.js | 169 + .../sass-bootstrap/docs-assets/js/holder.js | 404 + .../js/ie8-responsive-file-warning.js | 12 + .../sass-bootstrap/docs-assets/js/jszip.js | 1467 + .../sass-bootstrap/docs-assets/js/less.js | 9 + .../docs-assets/js/raw-files.js | 3 + .../sass-bootstrap/docs-assets/js/uglify.js | 14 + .../examples/carousel/carousel.css | 148 + .../examples/carousel/index.html | 206 + .../sass-bootstrap/examples/grid/grid.css | 28 + .../sass-bootstrap/examples/grid/index.html | 148 + .../examples/jumbotron-narrow/index.html | 82 + .../jumbotron-narrow/jumbotron-narrow.css | 79 + .../examples/jumbotron/index.html | 99 + .../examples/jumbotron/jumbotron.css | 5 + .../examples/justified-nav/index.html | 83 + .../examples/justified-nav/justified-nav.css | 88 + .../examples/navbar-fixed-top/index.html | 91 + .../navbar-fixed-top/navbar-fixed-top.css | 4 + .../examples/navbar-static-top/index.html | 92 + .../navbar-static-top/navbar-static-top.css | 7 + .../sass-bootstrap/examples/navbar/index.html | 88 + .../sass-bootstrap/examples/navbar/navbar.css | 8 + .../examples/non-responsive/index.html | 101 + .../non-responsive/non-responsive.css | 116 + .../examples/offcanvas/index.html | 130 + .../examples/offcanvas/offcanvas.css | 50 + .../examples/offcanvas/offcanvas.js | 5 + .../examples/screenshots/carousel.jpg | Bin 0 -> 82379 bytes .../examples/screenshots/grid.jpg | Bin 0 -> 100105 bytes .../examples/screenshots/jumbotron-narrow.jpg | Bin 0 -> 68675 bytes .../examples/screenshots/jumbotron.jpg | Bin 0 -> 77911 bytes .../examples/screenshots/justified-nav.jpg | Bin 0 -> 79170 bytes .../examples/screenshots/navbar-fixed.jpg | Bin 0 -> 38093 bytes .../examples/screenshots/navbar-static.jpg | Bin 0 -> 39712 bytes .../examples/screenshots/navbar.jpg | Bin 0 -> 41029 bytes .../examples/screenshots/non-responsive.jpg | Bin 0 -> 61233 bytes .../examples/screenshots/offcanvas.jpg | Bin 0 -> 112583 bytes .../examples/screenshots/sign-in.jpg | Bin 0 -> 13648 bytes .../examples/screenshots/starter-template.jpg | Bin 0 -> 22620 bytes .../screenshots/sticky-footer-navbar.jpg | Bin 0 -> 39387 bytes .../examples/screenshots/sticky-footer.jpg | Bin 0 -> 25056 bytes .../examples/screenshots/theme.jpg | Bin 0 -> 95407 bytes .../sass-bootstrap/examples/signin/index.html | 50 + .../sass-bootstrap/examples/signin/signin.css | 40 + .../examples/starter-template/index.html | 68 + .../starter-template/starter-template.css | 7 + .../examples/sticky-footer-navbar/index.html | 91 + .../sticky-footer-navbar.css | 45 + .../examples/sticky-footer/index.html | 55 + .../examples/sticky-footer/sticky-footer.css | 38 + .../sass-bootstrap/examples/theme/index.html | 384 + .../sass-bootstrap/examples/theme/theme.css | 14 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20290 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41236 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23292 bytes .../sass-bootstrap/getting-started.html | 1021 + .../sass-bootstrap/index.html | 16 + .../sass-bootstrap/javascript.html | 1983 + .../sass-bootstrap/js/affix.js | 126 + .../sass-bootstrap/js/alert.js | 98 + .../sass-bootstrap/js/button.js | 109 + .../sass-bootstrap/js/carousel.js | 217 + .../sass-bootstrap/js/collapse.js | 179 + .../sass-bootstrap/js/dropdown.js | 154 + .../sass-bootstrap/js/modal.js | 246 + .../sass-bootstrap/js/popover.js | 117 + .../sass-bootstrap/js/scrollspy.js | 158 + app/bower_components/sass-bootstrap/js/tab.js | 135 + .../sass-bootstrap/js/tests/index.html | 52 + .../sass-bootstrap/js/tests/unit/affix.js | 25 + .../sass-bootstrap/js/tests/unit/alert.js | 62 + .../sass-bootstrap/js/tests/unit/button.js | 116 + .../sass-bootstrap/js/tests/unit/carousel.js | 87 + .../sass-bootstrap/js/tests/unit/collapse.js | 164 + .../sass-bootstrap/js/tests/unit/dropdown.js | 219 + .../sass-bootstrap/js/tests/unit/modal.js | 196 + .../sass-bootstrap/js/tests/unit/phantom.js | 69 + .../sass-bootstrap/js/tests/unit/popover.js | 133 + .../sass-bootstrap/js/tests/unit/scrollspy.js | 37 + .../sass-bootstrap/js/tests/unit/tab.js | 86 + .../sass-bootstrap/js/tests/unit/tooltip.js | 437 + .../js/tests/unit/transition.js | 13 + .../sass-bootstrap/js/tests/vendor/jquery.js | 6 + .../sass-bootstrap/js/tests/vendor/qunit.css | 232 + .../sass-bootstrap/js/tests/vendor/qunit.js | 1510 + .../sass-bootstrap/js/tooltip.js | 386 + .../sass-bootstrap/js/transition.js | 56 + .../sass-bootstrap/lib/_alerts.scss | 67 + .../sass-bootstrap/lib/_badges.scss | 51 + .../sass-bootstrap/lib/_breadcrumbs.scss | 23 + .../sass-bootstrap/lib/_button-groups.scss | 253 + .../sass-bootstrap/lib/_buttons.scss | 158 + .../sass-bootstrap/lib/_carousel.scss | 231 + .../sass-bootstrap/lib/_close.scss | 35 + .../sass-bootstrap/lib/_code.scss | 53 + .../lib/_component-animations.scss | 29 + .../sass-bootstrap/lib/_dropdowns.scss | 193 + .../sass-bootstrap/lib/_forms.scss | 363 + .../sass-bootstrap/lib/_glyphicons.scss | 237 + .../sass-bootstrap/lib/_grid.scss | 93 + .../sass-bootstrap/lib/_input-groups.scss | 136 + .../sass-bootstrap/lib/_jumbotron.scss | 40 + .../sass-bootstrap/lib/_labels.scss | 58 + .../sass-bootstrap/lib/_list-group.scss | 88 + .../sass-bootstrap/lib/_media.scss | 56 + .../sass-bootstrap/lib/_mixins.scss | 861 + .../sass-bootstrap/lib/_modals.scss | 132 + .../sass-bootstrap/lib/_navbar.scss | 628 + .../sass-bootstrap/lib/_navs.scss | 262 + .../sass-bootstrap/lib/_normalize.scss | 406 + .../sass-bootstrap/lib/_pager.scss | 55 + .../sass-bootstrap/lib/_pagination.scss | 85 + .../sass-bootstrap/lib/_panels.scss | 172 + .../sass-bootstrap/lib/_popovers.scss | 133 + .../sass-bootstrap/lib/_print.scss | 105 + .../sass-bootstrap/lib/_progress-bars.scss | 92 + .../lib/_responsive-utilities.scss | 198 + .../sass-bootstrap/lib/_scaffolding.scss | 119 + .../sass-bootstrap/lib/_tables.scss | 244 + .../sass-bootstrap/lib/_theme.scss | 247 + .../sass-bootstrap/lib/_thumbnails.scss | 32 + .../sass-bootstrap/lib/_tooltip.scss | 95 + .../sass-bootstrap/lib/_type.scss | 279 + .../sass-bootstrap/lib/_utilities.scss | 56 + .../sass-bootstrap/lib/_variables.scss | 637 + .../sass-bootstrap/lib/_wells.scss | 29 + .../sass-bootstrap/lib/bootstrap.scss | 49 + .../sass-bootstrap/package.json | 40 + app/bower_components/underscore/.bower.json | 33 + app/bower_components/underscore/.editorconfig | 14 + app/bower_components/underscore/.gitignore | 2 + app/bower_components/underscore/LICENSE | 23 + app/bower_components/underscore/README.md | 22 + app/bower_components/underscore/bower.json | 8 + .../underscore/component.json | 10 + app/bower_components/underscore/package.json | 27 + app/bower_components/underscore/underscore.js | 1343 + app/fonts/FontAwesome.otf | 1 + app/fonts/fontawesome-webfont.eot | 1 + app/fonts/fontawesome-webfont.svg | 1 + app/fonts/fontawesome-webfont.ttf | 1 + app/fonts/fontawesome-webfont.woff | 1 + app/index.html | 64 + app/scripts/app.js | 47 + app/scripts/controllers/main.js | 12 + app/scripts/controllers/newNodeCtrl.js | 27 + app/scripts/controllers/updateNodeCtrl.js | 33 + app/scripts/directives/help.js | 21 + app/scripts/directives/navbar.js | 16 + app/scripts/directives/nodeForm.js | 117 + app/scripts/directives/nodeSaved.js | 20 + app/scripts/directives/tokenForm.js | 39 + app/scripts/libs.js | 6 + app/scripts/services/nodeService.js | 18 + app/scripts/validation/constraints.js | 1 + app/scripts/validation/validator.js | 1 + app/styles/_variables.scss | 225 + app/styles/main.scss | 42 + app/styles/views/_main.scss | 35 + app/styles/views/_newNodeForm.scss | 7 + app/styles/views/_updateNodeForm.scss | 7 + app/styles/views/directives/_help.scss | 14 + app/styles/views/directives/_nodeForm.scss | 77 + app/styles/views/directives/_nodeSaved.scss | 24 + app/styles/views/directives/_tokenForm.scss | 28 + app/views/directives/help.html | 2 + app/views/directives/navbar.html | 7 + app/views/directives/nodeForm.html | 96 + app/views/directives/nodeSaved.html | 13 + app/views/directives/tokenForm.html | 20 + app/views/main.html | 16 + app/views/newNodeForm.html | 25 + app/views/updateNodeForm.html | 38 + bower.json | 22 + package.json | 38 + server/app.js | 26 + server/config.js | 8 + server/libs.js | 20 + server/main.js | 30 + server/resources/nodeResource.js | 97 + server/router.js | 11 + server/services/nodeService.js | 154 + server/utils/errorTypes.js | 10 + server/utils/strings.js | 22 + shared/validation/constraints.js | 36 + shared/validation/validator.js | 32 + 1168 files changed, 261999 insertions(+) create mode 100644 .bowerrc create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .jshintrc create mode 100644 Gruntfile.js create mode 100644 app/bower_components/angular-leaflet-directive/.bower.json create mode 100644 app/bower_components/angular-leaflet-directive/LICENSE create mode 100644 app/bower_components/angular-mocks/.bower.json create mode 100644 app/bower_components/angular-mocks/README.md create mode 100644 app/bower_components/angular-mocks/angular-mocks.js create mode 100644 app/bower_components/angular-mocks/bower.json create mode 100644 app/bower_components/angular-route/.bower.json create mode 100644 app/bower_components/angular-route/README.md create mode 100644 app/bower_components/angular-route/angular-route.js create mode 100644 app/bower_components/angular-route/angular-route.min.js create mode 100644 app/bower_components/angular-route/angular-route.min.js.map create mode 100644 app/bower_components/angular-route/bower.json create mode 100644 app/bower_components/angular-sanitize/.bower.json create mode 100644 app/bower_components/angular-sanitize/README.md create mode 100644 app/bower_components/angular-sanitize/angular-sanitize.js create mode 100644 app/bower_components/angular-sanitize/angular-sanitize.min.js create mode 100644 app/bower_components/angular-sanitize/angular-sanitize.min.js.map create mode 100644 app/bower_components/angular-sanitize/bower.json create mode 100644 app/bower_components/angular-scenario/.bower.json create mode 100644 app/bower_components/angular-scenario/README.md create mode 100644 app/bower_components/angular-scenario/angular-scenario.js create mode 100644 app/bower_components/angular-scenario/bower.json create mode 100644 app/bower_components/angular-scenario/jstd-scenario-adapter-config.js create mode 100644 app/bower_components/angular-scenario/jstd-scenario-adapter.js create mode 100644 app/bower_components/angular/.bower.json create mode 100644 app/bower_components/angular/README.md create mode 100644 app/bower_components/angular/angular-csp.css create mode 100644 app/bower_components/angular/angular.js create mode 100644 app/bower_components/angular/angular.min.js create mode 100644 app/bower_components/angular/angular.min.js.gzip create mode 100644 app/bower_components/angular/angular.min.js.map create mode 100644 app/bower_components/angular/bower.json create mode 100644 app/bower_components/bootstrap-sass-official/.bower.json create mode 100644 app/bower_components/bootstrap-sass-official/CHANGELOG.md create mode 100644 app/bower_components/bootstrap-sass-official/CONTRIBUTING.md create mode 100644 app/bower_components/bootstrap-sass-official/LICENSE create mode 100644 app/bower_components/bootstrap-sass-official/README.md create mode 100644 app/bower_components/bootstrap-sass-official/bower.json create mode 100644 app/bower_components/bootstrap-sass-official/composer.json create mode 100644 app/bower_components/bootstrap-sass-official/package.json create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/affix.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/alert.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/button.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/carousel.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/collapse.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/dropdown.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/modal.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/popover.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/scrollspy.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/tab.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/tooltip.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/javascripts/bootstrap/transition.js create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/_bootstrap-mincer.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_alerts.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_badges.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_button-groups.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_buttons.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_carousel.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_close.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_code.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_component-animations.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_dropdowns.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_forms.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_glyphicons.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_grid.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_input-groups.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_jumbotron.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_labels.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_list-group.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_media.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_mixins.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_modals.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_navbar.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_navs.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_normalize.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_pager.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_pagination.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_panels.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_popovers.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_print.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_progress-bars.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_responsive-embed.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_scaffolding.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_tables.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_theme.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_thumbnails.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_tooltip.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_type.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_utilities.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_variables.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/_wells.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/bootstrap.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_alerts.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_background-variant.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_border-radius.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_buttons.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_center-block.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_clearfix.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_forms.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_gradients.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_grid-framework.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_grid.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_hide-text.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_image.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_labels.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_list-group.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_nav-divider.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_opacity.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_pagination.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_panels.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_progress-bar.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_reset-filter.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_resize.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_size.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_tab-focus.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_table-row.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_text-overflow.scss create mode 100644 app/bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss create mode 100644 app/bower_components/es5-shim/.bower.json create mode 100644 app/bower_components/es5-shim/CHANGES create mode 100644 app/bower_components/es5-shim/CONTRIBUTORS.md create mode 100644 app/bower_components/es5-shim/LICENSE create mode 100644 app/bower_components/es5-shim/README.md create mode 100644 app/bower_components/es5-shim/bower.json create mode 100644 app/bower_components/es5-shim/component.json create mode 100644 app/bower_components/es5-shim/es5-sham.js create mode 100644 app/bower_components/es5-shim/es5-sham.map create mode 100644 app/bower_components/es5-shim/es5-sham.min.js create mode 100644 app/bower_components/es5-shim/es5-shim.js create mode 100644 app/bower_components/es5-shim/es5-shim.map create mode 100644 app/bower_components/es5-shim/es5-shim.min.js create mode 100644 app/bower_components/es5-shim/package.json create mode 100644 app/bower_components/es5-shim/shims.json create mode 100644 app/bower_components/font-awesome/.bower.json create mode 100644 app/bower_components/font-awesome/.gitignore create mode 100644 app/bower_components/font-awesome/CONTRIBUTING.md create mode 100644 app/bower_components/font-awesome/Gemfile create mode 100644 app/bower_components/font-awesome/Gemfile.lock create mode 100644 app/bower_components/font-awesome/README.md create mode 100644 app/bower_components/font-awesome/_config.yml create mode 100644 app/bower_components/font-awesome/component.json create mode 100644 app/bower_components/font-awesome/composer.json create mode 100644 app/bower_components/font-awesome/css/font-awesome.css create mode 100644 app/bower_components/font-awesome/css/font-awesome.min.css create mode 100644 app/bower_components/font-awesome/fonts/FontAwesome.otf create mode 100755 app/bower_components/font-awesome/fonts/fontawesome-webfont.eot create mode 100755 app/bower_components/font-awesome/fonts/fontawesome-webfont.svg create mode 100755 app/bower_components/font-awesome/fonts/fontawesome-webfont.ttf create mode 100755 app/bower_components/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 app/bower_components/font-awesome/less/bordered-pulled.less create mode 100644 app/bower_components/font-awesome/less/core.less create mode 100644 app/bower_components/font-awesome/less/extras.less create mode 100644 app/bower_components/font-awesome/less/fixed-width.less create mode 100644 app/bower_components/font-awesome/less/font-awesome.less create mode 100644 app/bower_components/font-awesome/less/icons.less create mode 100644 app/bower_components/font-awesome/less/larger.less create mode 100644 app/bower_components/font-awesome/less/list.less create mode 100644 app/bower_components/font-awesome/less/mixins.less create mode 100644 app/bower_components/font-awesome/less/path.less create mode 100644 app/bower_components/font-awesome/less/rotated-flipped.less create mode 100644 app/bower_components/font-awesome/less/spinning.less create mode 100644 app/bower_components/font-awesome/less/stacked.less create mode 100644 app/bower_components/font-awesome/less/variables.less create mode 100644 app/bower_components/font-awesome/package.json create mode 100644 app/bower_components/font-awesome/scss/_bordered-pulled.scss create mode 100644 app/bower_components/font-awesome/scss/_core.scss create mode 100644 app/bower_components/font-awesome/scss/_extras.scss create mode 100644 app/bower_components/font-awesome/scss/_fixed-width.scss create mode 100644 app/bower_components/font-awesome/scss/_icons.scss create mode 100644 app/bower_components/font-awesome/scss/_larger.scss create mode 100644 app/bower_components/font-awesome/scss/_list.scss create mode 100644 app/bower_components/font-awesome/scss/_mixins.scss create mode 100644 app/bower_components/font-awesome/scss/_path.scss create mode 100644 app/bower_components/font-awesome/scss/_rotated-flipped.scss create mode 100644 app/bower_components/font-awesome/scss/_spinning.scss create mode 100644 app/bower_components/font-awesome/scss/_stacked.scss create mode 100644 app/bower_components/font-awesome/scss/_variables.scss create mode 100644 app/bower_components/font-awesome/scss/font-awesome.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/CNAME create mode 100644 app/bower_components/font-awesome/src/3.2.1/Makefile create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/css/prettify.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/css/pygments.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/css/site.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome.zip create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.min.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/css/font-awesome.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/css/font-awesome.min.css create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/font/FontAwesome.otf create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.eot create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.svg create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.ttf create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.woff create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/bootstrap.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/core.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/extras.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/font-awesome-ie7.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/font-awesome.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/icons.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/mixins.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/path.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/less/variables.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_bootstrap.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_core.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_extras.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_icons.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_mixins.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_path.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/_variables.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/font-awesome-ie7.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/font-awesome/scss/font-awesome.scss create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/ico/favicon.ico create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/img/contribution-sample.png create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/img/fort_awesome.jpg create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/img/glyphicons-halflings-white.png create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/img/glyphicons-halflings.png create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/img/icon-flag.pdf create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.min.js create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.swf create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/backbone.min.js create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/bootstrap-2.3.1.min.js create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/bootstrap-222.min.js create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/jquery-1.7.1.min.js create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/prettify.min.js create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/site.js create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/js/underscore.min.js create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/accordion.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/alerts.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/bootstrap.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/breadcrumbs.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/button-groups.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/buttons.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/carousel.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/close.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/code.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/component-animations.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/dropdowns.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/forms.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/grid.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/hero-unit.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/labels-badges.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/layouts.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/media.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/mixins.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/modals.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navbar.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/navs.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pager.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/pagination.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/popovers.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/progress-bars.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/reset.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-1200px-min.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-767px-max.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-768px-979px.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-navbar.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-utilities.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/scaffolding.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/sprites.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tables.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/thumbnails.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/tooltip.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/type.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/utilities.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/variables.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/bootstrap-2.3.2/wells.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/less/lazy.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/less/mixins.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/responsive-1200px-min.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/responsive-767px-max.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/responsive-768px-979px.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/responsive-navbar.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/less/responsive.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/assets/less/site.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/sticky-footer.less create mode 100755 app/bower_components/font-awesome/src/3.2.1/assets/less/variables.less create mode 100644 app/bower_components/font-awesome/src/3.2.1/cheatsheet/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/community/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/design.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/examples/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/get-started/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/adjust/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/adn/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/align-center/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/align-justify/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/align-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/align-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ambulance/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/anchor/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/android/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/angle-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/angle-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/angle-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/angle-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/apple/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/archive/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/arrow-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/arrow-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/arrow-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/arrow-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/asterisk/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/backward/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ban-circle/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bar-chart/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/barcode/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/beaker/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/beer/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bell-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bell/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bitbucket-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bitbucket/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bold/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bolt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/book/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bookmark-empty/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bookmark/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/briefcase/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/btc/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bug/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/building/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bullhorn/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/bullseye/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/calendar-empty/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/calendar/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/camera-retro/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/camera/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/caret-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/caret-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/caret-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/caret-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/certificate/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/check-empty/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/check-minus/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/check-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/check/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/chevron-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/circle-blank/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/circle/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cloud-download/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cloud-upload/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cloud/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cny/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/code-fork/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/code/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/coffee/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cog/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cogs/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/collapse-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/collapse-top/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/collapse/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/columns/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/comment-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/comment/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/comments-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/comments/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/compass/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/copy/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/credit-card/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/crop/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/css3/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/cut/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/dashboard/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/desktop/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/double-angle-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/double-angle-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/double-angle-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/double-angle-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/download-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/download/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/dribbble/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/dropbox/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/edit-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/edit/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/eject/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-horizontal/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-vertical/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/envelope-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/envelope/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/eraser/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/eur/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/exchange/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/exclamation-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/exclamation/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/expand-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/expand/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/external-link-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/external-link/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/eye-close/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/eye-open/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/facebook-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/facebook/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/facetime-video/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/fast-backward/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/fast-forward/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/female/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/fighter-jet/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/file-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/file-text-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/file-text/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/file/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/film/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/filter/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/fire-extinguisher/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/fire/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/flag-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/flag-checkered/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/flag/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/flickr/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/folder-close-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/folder-close/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/folder-open-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/folder-open/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/font/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/food/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/forward/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/foursquare/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/frown/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/fullscreen/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/gamepad/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/gbp/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/gift/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/github-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/github-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/github/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/gittip/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/glass/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/globe/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/google-plus-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/google-plus/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/group/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/h-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/hand-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/hand-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/hand-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/hand-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/hdd/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/headphones/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/heart-empty/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/heart/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/home/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/hospital/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/html5/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/inbox/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/indent-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/indent-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/info-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/info/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/inr/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/instagram/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/italic/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/jpy/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/key/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/keyboard/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/krw/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/laptop/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/leaf/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/legal/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/lemon/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/level-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/level-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/lightbulb/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/link/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/linkedin-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/linkedin/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/linux/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/list-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/list-ol/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/list-ul/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/list/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/location-arrow/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/lock/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/magic/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/magnet/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/mail-reply-all/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/male/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/map-marker/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/maxcdn/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/medkit/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/meh/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/microphone-off/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/microphone/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/minus-sign-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/minus-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/minus/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/mobile-phone/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/money/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/moon/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/move/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/music/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/off/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ok-circle/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ok-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ok/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/paper-clip/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/paste/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/pause/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/pencil/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/phone-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/phone/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/picture/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/pinterest-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/pinterest/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/plane/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/play-circle/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/play-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/play/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/plus-sign-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/plus-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/plus/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/print/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/pushpin/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/puzzle-piece/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/qrcode/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/question-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/question/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/quote-left/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/quote-right/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/random/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/refresh/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/remove-circle/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/remove-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/remove/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/renren/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/reorder/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/repeat/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/reply-all/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/reply/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/resize-full/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/resize-horizontal/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/resize-small/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/resize-vertical/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/retweet/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/road/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/rocket/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/rss-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/rss/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/save/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/screenshot/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/search/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/share-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/share-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/share/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/shield/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/shopping-cart/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sign-blank/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/signal/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/signin/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/signout/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sitemap/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/skype/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/smile/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sort/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/spinner/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/stackexchange/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/star-empty/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/star-half-empty/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/star-half/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/star/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/step-backward/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/step-forward/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/stethoscope/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/stop/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/strikethrough/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/subscript/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/suitcase/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/sun/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/superscript/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/table/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tablet/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tag/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tags/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tasks/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/terminal/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/text-height/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/text-width/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/th-large/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/th-list/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/th/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/ticket/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/time/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tint/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/trash/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/trello/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/trophy/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/truck/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tumblr-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/tumblr/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/twitter-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/twitter/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/umbrella/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/underline/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/undo/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/unlink/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/unlock-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/unlock/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/upload-alt/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/upload/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/usd/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/user-md/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/user/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/vk/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/volume-down/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/volume-off/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/volume-up/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/warning-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/weibo/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/windows/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/wrench/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/xing-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/xing/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/youtube-play/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/youtube-sign/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/youtube/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/zoom-in/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/icon/zoom-out/index.html create mode 100755 app/bower_components/font-awesome/src/3.2.1/icons.yml create mode 100644 app/bower_components/font-awesome/src/3.2.1/icons/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/license/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/test/index.html create mode 100644 app/bower_components/font-awesome/src/3.2.1/whats-new/index.html create mode 100644 app/bower_components/font-awesome/src/CNAME create mode 100644 app/bower_components/font-awesome/src/Makefile create mode 100644 app/bower_components/font-awesome/src/_includes/ads/carbon-dark-vertical.html create mode 100644 app/bower_components/font-awesome/src/_includes/ads/carbon-light-horizontal.html create mode 100644 app/bower_components/font-awesome/src/_includes/ads/carbon-light-vertical.html create mode 100644 app/bower_components/font-awesome/src/_includes/brand-license.html create mode 100644 app/bower_components/font-awesome/src/_includes/community/getting-support.html create mode 100644 app/bower_components/font-awesome/src/_includes/community/project-milestones.html create mode 100644 app/bower_components/font-awesome/src/_includes/community/reporting-bugs.html create mode 100644 app/bower_components/font-awesome/src/_includes/community/requesting-new-icons.html create mode 100644 app/bower_components/font-awesome/src/_includes/community/submitting-pull-requests.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/bootstrap.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/bordered-pulled.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/custom.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/fixed-width.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/inline.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/larger.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/list.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/rotated-flipped.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/spinning.html create mode 100644 app/bower_components/font-awesome/src/_includes/examples/stacked.html create mode 100644 app/bower_components/font-awesome/src/_includes/footer.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/brand.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/currency.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/directional.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/form-control.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/medical.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/new.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/text-editor.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/video-player.html create mode 100644 app/bower_components/font-awesome/src/_includes/icons/web-application.html create mode 100644 app/bower_components/font-awesome/src/_includes/jumbotron-carousel.html create mode 100644 app/bower_components/font-awesome/src/_includes/jumbotron.html create mode 100644 app/bower_components/font-awesome/src/_includes/license-code.less create mode 100644 app/bower_components/font-awesome/src/_includes/navbar.html create mode 100644 app/bower_components/font-awesome/src/_includes/new-features.html create mode 100644 app/bower_components/font-awesome/src/_includes/new-naming.html create mode 100644 app/bower_components/font-awesome/src/_includes/new-upgrading.html create mode 100644 app/bower_components/font-awesome/src/_includes/stripe-ad.html create mode 100644 app/bower_components/font-awesome/src/_includes/stripe-social.html create mode 100644 app/bower_components/font-awesome/src/_includes/tell-me-thanks.html create mode 100644 app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-anchor.html create mode 100644 app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-btn.html create mode 100644 app/bower_components/font-awesome/src/_includes/tests/rotated-flipped.html create mode 100644 app/bower_components/font-awesome/src/_includes/tests/stacked-inside-anchor.html create mode 100644 app/bower_components/font-awesome/src/_includes/tests/stacked.html create mode 100644 app/bower_components/font-awesome/src/_includes/thanks-to.html create mode 100644 app/bower_components/font-awesome/src/_includes/why.html create mode 100644 app/bower_components/font-awesome/src/_layouts/base.html create mode 100644 app/bower_components/font-awesome/src/_layouts/icon.html create mode 100644 app/bower_components/font-awesome/src/_plugins/icon_page_generator.rb create mode 100644 app/bower_components/font-awesome/src/_plugins/site.rb create mode 100755 app/bower_components/font-awesome/src/assets/css/prettify.css create mode 100644 app/bower_components/font-awesome/src/assets/css/pygments.css create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf create mode 100755 app/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot create mode 100755 app/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg create mode 100755 app/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf create mode 100755 app/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/bordered-pulled.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/core.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/fixed-width.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/icons.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/larger.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/list.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/mixins.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/path.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/rotated-flipped.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/spinning.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/stacked.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/less/variables.less create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_bordered-pulled.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_core.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_fixed-width.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_icons.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_larger.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_list.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_mixins.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_path.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_rotated-flipped.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_spinning.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_stacked.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/_variables.scss create mode 100644 app/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome.scss create mode 100644 app/bower_components/font-awesome/src/assets/ico/favicon.ico create mode 100755 app/bower_components/font-awesome/src/assets/js/ZeroClipboard-1.1.7.min.js create mode 100755 app/bower_components/font-awesome/src/assets/js/ZeroClipboard-1.1.7.swf create mode 100644 app/bower_components/font-awesome/src/assets/js/backbone.min.js create mode 100644 app/bower_components/font-awesome/src/assets/js/bootstrap-2.3.1.min.js create mode 100644 app/bower_components/font-awesome/src/assets/js/bootstrap-222.min.js create mode 100755 app/bower_components/font-awesome/src/assets/js/bootstrap-3.0.0.min.js create mode 100755 app/bower_components/font-awesome/src/assets/js/html5shiv.js create mode 100644 app/bower_components/font-awesome/src/assets/js/jquery-1.10.2.js create mode 100755 app/bower_components/font-awesome/src/assets/js/jquery-1.10.2.min.js create mode 100644 app/bower_components/font-awesome/src/assets/js/jquery-1.10.2.min.map create mode 100644 app/bower_components/font-awesome/src/assets/js/jquery-1.7.1.min.js create mode 100644 app/bower_components/font-awesome/src/assets/js/prettify.min.js create mode 100755 app/bower_components/font-awesome/src/assets/js/respond.min.js create mode 100644 app/bower_components/font-awesome/src/assets/js/site.js create mode 100644 app/bower_components/font-awesome/src/assets/js/underscore.min.js create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/alerts.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/badges.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/bootstrap.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/breadcrumbs.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/button-groups.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/buttons.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/carousel.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/close.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/code.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/component-animations.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/dropdowns.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/forms.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/glyphicons.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/grid.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/input-groups.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/jumbotron.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/labels.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/list-group.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/media.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/mixins.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/modals.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/navbar.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/navs.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/normalize.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/pager.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/pagination.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/panels.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/popovers.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/print.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/progress-bars.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/responsive-utilities.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/scaffolding.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/tables.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/theme.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/thumbnails.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/tooltip.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/type.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/utilities.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/variables.less create mode 100755 app/bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/wells.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/bootstrap/buttons.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/bootstrap/jumbotron.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/bootstrap/navbar.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/bootstrap/type.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/bootstrap/variables.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/bootstrap/wells.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/carbonad.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/example-rating.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/feature-list.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/fontawesome-icon-list.less create mode 100755 app/bower_components/font-awesome/src/assets/less/site/footer.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/jumbotron-carousel.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/layout.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/lazy.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/responsive/screen-lg.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/responsive/screen-md.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/responsive/screen-sm.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/responsive/screen-xs.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/social-buttons.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/stripe-ad.less create mode 100644 app/bower_components/font-awesome/src/assets/less/site/textured-bg.less create mode 100644 app/bower_components/font-awesome/src/cheatsheet.html create mode 100644 app/bower_components/font-awesome/src/community.html create mode 100644 app/bower_components/font-awesome/src/design.html create mode 100644 app/bower_components/font-awesome/src/examples.html create mode 100644 app/bower_components/font-awesome/src/get-started.html create mode 100644 app/bower_components/font-awesome/src/glyphicons-test.html create mode 100644 app/bower_components/font-awesome/src/icons.html create mode 100644 app/bower_components/font-awesome/src/icons.yml create mode 100644 app/bower_components/font-awesome/src/index.html create mode 100644 app/bower_components/font-awesome/src/license.html create mode 100644 app/bower_components/font-awesome/src/test-2.3.2.html create mode 100644 app/bower_components/font-awesome/src/test.html create mode 100644 app/bower_components/font-awesome/src/whats-new.html create mode 100644 app/bower_components/jquery/.bower.json create mode 100644 app/bower_components/jquery/MIT-LICENSE.txt create mode 100644 app/bower_components/jquery/bower.json create mode 100644 app/bower_components/jquery/src/ajax.js create mode 100644 app/bower_components/jquery/src/ajax/jsonp.js create mode 100644 app/bower_components/jquery/src/ajax/load.js create mode 100644 app/bower_components/jquery/src/ajax/parseJSON.js create mode 100644 app/bower_components/jquery/src/ajax/parseXML.js create mode 100644 app/bower_components/jquery/src/ajax/script.js create mode 100644 app/bower_components/jquery/src/ajax/var/nonce.js create mode 100644 app/bower_components/jquery/src/ajax/var/rquery.js create mode 100644 app/bower_components/jquery/src/ajax/xhr.js create mode 100644 app/bower_components/jquery/src/attributes.js create mode 100644 app/bower_components/jquery/src/attributes/attr.js create mode 100644 app/bower_components/jquery/src/attributes/classes.js create mode 100644 app/bower_components/jquery/src/attributes/prop.js create mode 100644 app/bower_components/jquery/src/attributes/support.js create mode 100644 app/bower_components/jquery/src/attributes/val.js create mode 100644 app/bower_components/jquery/src/callbacks.js create mode 100644 app/bower_components/jquery/src/core.js create mode 100644 app/bower_components/jquery/src/core/access.js create mode 100644 app/bower_components/jquery/src/core/init.js create mode 100644 app/bower_components/jquery/src/core/parseHTML.js create mode 100644 app/bower_components/jquery/src/core/ready.js create mode 100644 app/bower_components/jquery/src/core/var/rsingleTag.js create mode 100644 app/bower_components/jquery/src/css.js create mode 100644 app/bower_components/jquery/src/css/addGetHookIf.js create mode 100644 app/bower_components/jquery/src/css/curCSS.js create mode 100644 app/bower_components/jquery/src/css/defaultDisplay.js create mode 100644 app/bower_components/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 app/bower_components/jquery/src/css/support.js create mode 100644 app/bower_components/jquery/src/css/swap.js create mode 100644 app/bower_components/jquery/src/css/var/cssExpand.js create mode 100644 app/bower_components/jquery/src/css/var/getStyles.js create mode 100644 app/bower_components/jquery/src/css/var/isHidden.js create mode 100644 app/bower_components/jquery/src/css/var/rmargin.js create mode 100644 app/bower_components/jquery/src/css/var/rnumnonpx.js create mode 100644 app/bower_components/jquery/src/data.js create mode 100644 app/bower_components/jquery/src/data/Data.js create mode 100644 app/bower_components/jquery/src/data/accepts.js create mode 100644 app/bower_components/jquery/src/data/var/data_priv.js create mode 100644 app/bower_components/jquery/src/data/var/data_user.js create mode 100644 app/bower_components/jquery/src/deferred.js create mode 100644 app/bower_components/jquery/src/deprecated.js create mode 100644 app/bower_components/jquery/src/dimensions.js create mode 100644 app/bower_components/jquery/src/effects.js create mode 100644 app/bower_components/jquery/src/effects/Tween.js create mode 100644 app/bower_components/jquery/src/effects/animatedSelector.js create mode 100644 app/bower_components/jquery/src/event.js create mode 100644 app/bower_components/jquery/src/event/alias.js create mode 100644 app/bower_components/jquery/src/event/support.js create mode 100644 app/bower_components/jquery/src/exports/amd.js create mode 100644 app/bower_components/jquery/src/exports/global.js create mode 100644 app/bower_components/jquery/src/intro.js create mode 100644 app/bower_components/jquery/src/jquery.js create mode 100644 app/bower_components/jquery/src/manipulation.js create mode 100644 app/bower_components/jquery/src/manipulation/_evalUrl.js create mode 100644 app/bower_components/jquery/src/manipulation/support.js create mode 100644 app/bower_components/jquery/src/manipulation/var/rcheckableType.js create mode 100644 app/bower_components/jquery/src/offset.js create mode 100644 app/bower_components/jquery/src/outro.js create mode 100644 app/bower_components/jquery/src/queue.js create mode 100644 app/bower_components/jquery/src/queue/delay.js create mode 100644 app/bower_components/jquery/src/selector-native.js create mode 100644 app/bower_components/jquery/src/selector-sizzle.js create mode 100644 app/bower_components/jquery/src/selector.js create mode 100644 app/bower_components/jquery/src/serialize.js create mode 100644 app/bower_components/jquery/src/traversing.js create mode 100644 app/bower_components/jquery/src/traversing/findFilter.js create mode 100644 app/bower_components/jquery/src/traversing/var/rneedsContext.js create mode 100644 app/bower_components/jquery/src/var/arr.js create mode 100644 app/bower_components/jquery/src/var/class2type.js create mode 100644 app/bower_components/jquery/src/var/concat.js create mode 100644 app/bower_components/jquery/src/var/hasOwn.js create mode 100644 app/bower_components/jquery/src/var/indexOf.js create mode 100644 app/bower_components/jquery/src/var/pnum.js create mode 100644 app/bower_components/jquery/src/var/push.js create mode 100644 app/bower_components/jquery/src/var/rnotwhite.js create mode 100644 app/bower_components/jquery/src/var/slice.js create mode 100644 app/bower_components/jquery/src/var/strundefined.js create mode 100644 app/bower_components/jquery/src/var/support.js create mode 100644 app/bower_components/jquery/src/var/toString.js create mode 100644 app/bower_components/jquery/src/wrap.js create mode 100644 app/bower_components/json3/.bower.json create mode 100644 app/bower_components/json3/LICENSE create mode 100644 app/bower_components/json3/README.md create mode 100644 app/bower_components/json3/bower.json create mode 100644 app/bower_components/json3/lib/json3.js create mode 100644 app/bower_components/json3/lib/json3.min.js create mode 100644 app/bower_components/leaflet-dist/.bower.json create mode 100644 app/bower_components/leaflet-dist/bower.json create mode 100644 app/bower_components/leaflet-dist/images/layers-2x.png create mode 100644 app/bower_components/leaflet-dist/images/layers.png create mode 100644 app/bower_components/leaflet-dist/images/marker-icon-2x.png create mode 100644 app/bower_components/leaflet-dist/images/marker-icon.png create mode 100644 app/bower_components/leaflet-dist/images/marker-shadow.png create mode 100644 app/bower_components/leaflet-dist/leaflet-src.js create mode 100644 app/bower_components/leaflet-dist/leaflet.css create mode 100644 app/bower_components/leaflet-dist/leaflet.js create mode 100644 app/bower_components/sass-bootstrap/.bower.json create mode 100644 app/bower_components/sass-bootstrap/CNAME create mode 100644 app/bower_components/sass-bootstrap/CONTRIBUTING.md create mode 100644 app/bower_components/sass-bootstrap/DOCS-LICENSE create mode 100644 app/bower_components/sass-bootstrap/Gemfile create mode 100644 app/bower_components/sass-bootstrap/Gemfile.lock create mode 100644 app/bower_components/sass-bootstrap/Gruntfile.js create mode 100644 app/bower_components/sass-bootstrap/LICENSE create mode 100644 app/bower_components/sass-bootstrap/LICENSE-MIT create mode 100644 app/bower_components/sass-bootstrap/README.md create mode 100644 app/bower_components/sass-bootstrap/Rakefile create mode 100644 app/bower_components/sass-bootstrap/_config.yml create mode 100644 app/bower_components/sass-bootstrap/_includes/ads.html create mode 100644 app/bower_components/sass-bootstrap/_includes/footer.html create mode 100644 app/bower_components/sass-bootstrap/_includes/header.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-about.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-components.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-css.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-customize.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-getting-started.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-javascript.html create mode 100644 app/bower_components/sass-bootstrap/_includes/nav-main.html create mode 100644 app/bower_components/sass-bootstrap/_includes/old-bs-docs.html create mode 100644 app/bower_components/sass-bootstrap/_includes/social-buttons.html create mode 100644 app/bower_components/sass-bootstrap/_layouts/default.html create mode 100644 app/bower_components/sass-bootstrap/_layouts/home.html create mode 100644 app/bower_components/sass-bootstrap/about.html create mode 100644 app/bower_components/sass-bootstrap/bower.json create mode 100644 app/bower_components/sass-bootstrap/browserstack.json create mode 100644 app/bower_components/sass-bootstrap/components.html create mode 100644 app/bower_components/sass-bootstrap/composer.json create mode 100644 app/bower_components/sass-bootstrap/css.html create mode 100644 app/bower_components/sass-bootstrap/customize.html create mode 100644 app/bower_components/sass-bootstrap/docs-assets/css/docs.css create mode 100644 app/bower_components/sass-bootstrap/docs-assets/css/pygments-manni.css create mode 100644 app/bower_components/sass-bootstrap/docs-assets/ico/apple-touch-icon-144-precomposed.png create mode 100644 app/bower_components/sass-bootstrap/docs-assets/ico/favicon.png create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/application.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/customizer.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/filesaver.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/holder.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/ie8-responsive-file-warning.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/jszip.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/less.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/raw-files.js create mode 100644 app/bower_components/sass-bootstrap/docs-assets/js/uglify.js create mode 100644 app/bower_components/sass-bootstrap/examples/carousel/carousel.css create mode 100644 app/bower_components/sass-bootstrap/examples/carousel/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/grid/grid.css create mode 100644 app/bower_components/sass-bootstrap/examples/grid/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/jumbotron-narrow/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/jumbotron-narrow/jumbotron-narrow.css create mode 100644 app/bower_components/sass-bootstrap/examples/jumbotron/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/jumbotron/jumbotron.css create mode 100644 app/bower_components/sass-bootstrap/examples/justified-nav/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/justified-nav/justified-nav.css create mode 100644 app/bower_components/sass-bootstrap/examples/navbar-fixed-top/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/navbar-fixed-top/navbar-fixed-top.css create mode 100644 app/bower_components/sass-bootstrap/examples/navbar-static-top/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/navbar-static-top/navbar-static-top.css create mode 100644 app/bower_components/sass-bootstrap/examples/navbar/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/navbar/navbar.css create mode 100644 app/bower_components/sass-bootstrap/examples/non-responsive/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/non-responsive/non-responsive.css create mode 100644 app/bower_components/sass-bootstrap/examples/offcanvas/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.css create mode 100644 app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.js create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/carousel.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/grid.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/jumbotron-narrow.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/jumbotron.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/justified-nav.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/navbar-fixed.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/navbar-static.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/navbar.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/non-responsive.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/offcanvas.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/sign-in.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/starter-template.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/sticky-footer-navbar.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/sticky-footer.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/screenshots/theme.jpg create mode 100644 app/bower_components/sass-bootstrap/examples/signin/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/signin/signin.css create mode 100644 app/bower_components/sass-bootstrap/examples/starter-template/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/starter-template/starter-template.css create mode 100644 app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/sticky-footer-navbar.css create mode 100644 app/bower_components/sass-bootstrap/examples/sticky-footer/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/sticky-footer/sticky-footer.css create mode 100644 app/bower_components/sass-bootstrap/examples/theme/index.html create mode 100644 app/bower_components/sass-bootstrap/examples/theme/theme.css create mode 100644 app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 app/bower_components/sass-bootstrap/getting-started.html create mode 100644 app/bower_components/sass-bootstrap/index.html create mode 100644 app/bower_components/sass-bootstrap/javascript.html create mode 100644 app/bower_components/sass-bootstrap/js/affix.js create mode 100644 app/bower_components/sass-bootstrap/js/alert.js create mode 100644 app/bower_components/sass-bootstrap/js/button.js create mode 100644 app/bower_components/sass-bootstrap/js/carousel.js create mode 100644 app/bower_components/sass-bootstrap/js/collapse.js create mode 100644 app/bower_components/sass-bootstrap/js/dropdown.js create mode 100644 app/bower_components/sass-bootstrap/js/modal.js create mode 100644 app/bower_components/sass-bootstrap/js/popover.js create mode 100644 app/bower_components/sass-bootstrap/js/scrollspy.js create mode 100644 app/bower_components/sass-bootstrap/js/tab.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/index.html create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/affix.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/alert.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/button.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/carousel.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/collapse.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/dropdown.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/modal.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/phantom.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/popover.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/scrollspy.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/tab.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/tooltip.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/unit/transition.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/vendor/jquery.js create mode 100644 app/bower_components/sass-bootstrap/js/tests/vendor/qunit.css create mode 100644 app/bower_components/sass-bootstrap/js/tests/vendor/qunit.js create mode 100644 app/bower_components/sass-bootstrap/js/tooltip.js create mode 100644 app/bower_components/sass-bootstrap/js/transition.js create mode 100644 app/bower_components/sass-bootstrap/lib/_alerts.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_badges.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_breadcrumbs.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_button-groups.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_buttons.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_carousel.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_close.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_code.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_component-animations.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_dropdowns.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_forms.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_glyphicons.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_grid.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_input-groups.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_jumbotron.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_labels.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_list-group.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_media.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_mixins.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_modals.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_navbar.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_navs.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_normalize.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_pager.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_pagination.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_panels.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_popovers.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_print.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_progress-bars.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_responsive-utilities.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_scaffolding.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_tables.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_theme.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_thumbnails.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_tooltip.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_type.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_utilities.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_variables.scss create mode 100644 app/bower_components/sass-bootstrap/lib/_wells.scss create mode 100644 app/bower_components/sass-bootstrap/lib/bootstrap.scss create mode 100644 app/bower_components/sass-bootstrap/package.json create mode 100644 app/bower_components/underscore/.bower.json create mode 100644 app/bower_components/underscore/.editorconfig create mode 100644 app/bower_components/underscore/.gitignore create mode 100644 app/bower_components/underscore/LICENSE create mode 100644 app/bower_components/underscore/README.md create mode 100644 app/bower_components/underscore/bower.json create mode 100644 app/bower_components/underscore/component.json create mode 100644 app/bower_components/underscore/package.json create mode 100644 app/bower_components/underscore/underscore.js create mode 120000 app/fonts/FontAwesome.otf create mode 120000 app/fonts/fontawesome-webfont.eot create mode 120000 app/fonts/fontawesome-webfont.svg create mode 120000 app/fonts/fontawesome-webfont.ttf create mode 120000 app/fonts/fontawesome-webfont.woff create mode 100644 app/index.html create mode 100644 app/scripts/app.js create mode 100644 app/scripts/controllers/main.js create mode 100644 app/scripts/controllers/newNodeCtrl.js create mode 100644 app/scripts/controllers/updateNodeCtrl.js create mode 100644 app/scripts/directives/help.js create mode 100644 app/scripts/directives/navbar.js create mode 100644 app/scripts/directives/nodeForm.js create mode 100644 app/scripts/directives/nodeSaved.js create mode 100644 app/scripts/directives/tokenForm.js create mode 100644 app/scripts/libs.js create mode 100644 app/scripts/services/nodeService.js create mode 120000 app/scripts/validation/constraints.js create mode 120000 app/scripts/validation/validator.js create mode 100644 app/styles/_variables.scss create mode 100644 app/styles/main.scss create mode 100644 app/styles/views/_main.scss create mode 100644 app/styles/views/_newNodeForm.scss create mode 100644 app/styles/views/_updateNodeForm.scss create mode 100644 app/styles/views/directives/_help.scss create mode 100644 app/styles/views/directives/_nodeForm.scss create mode 100644 app/styles/views/directives/_nodeSaved.scss create mode 100644 app/styles/views/directives/_tokenForm.scss create mode 100644 app/views/directives/help.html create mode 100644 app/views/directives/navbar.html create mode 100644 app/views/directives/nodeForm.html create mode 100644 app/views/directives/nodeSaved.html create mode 100644 app/views/directives/tokenForm.html create mode 100644 app/views/main.html create mode 100644 app/views/newNodeForm.html create mode 100644 app/views/updateNodeForm.html create mode 100644 bower.json create mode 100644 package.json create mode 100644 server/app.js create mode 100644 server/config.js create mode 100644 server/libs.js create mode 100755 server/main.js create mode 100644 server/resources/nodeResource.js create mode 100644 server/router.js create mode 100644 server/services/nodeService.js create mode 100644 server/utils/errorTypes.js create mode 100644 server/utils/strings.js create mode 100644 shared/validation/constraints.js create mode 100644 shared/validation/validator.js diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..ba0accc --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "app/bower_components" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c2cdfb8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2125666 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a526456 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules +dist +.tmp +.swp +.sass-cache +.idea/ diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..38af67f --- /dev/null +++ b/.jshintrc @@ -0,0 +1,24 @@ +{ + "node": true, + "browser": true, + "esnext": true, + "bitwise": true, + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "indent": 4, + "latedef": true, + "newcap": true, + "noarg": true, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": true, + "trailing": true, + "smarttabs": true, + "globals": { + "angular": false + } +} diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..d62e415 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,395 @@ +// Generated on 2014-05-12 using generator-angular 0.8.0 +'use strict'; + +module.exports = function (grunt) { + + // Load grunt tasks automatically + require('load-grunt-tasks')(grunt); + + // Time how long tasks take. Can help when optimizing build times + require('time-grunt')(grunt); + + // Define the configuration for all the tasks + grunt.initConfig({ + + // Project settings + yeoman: { + // configurable paths + app: require('./bower.json').appPath || 'app', + dist: 'dist' + }, + + // Watches files for changes and runs tasks based on the changed files + watch: { + bower: { + files: ['bower.json'], + tasks: ['bowerInstall'] + }, + js: { + files: ['<%= yeoman.app %>/scripts/{,**/}*.js', 'shared/{,**/}*.js'], + tasks: ['newer:jshint:all'], + options: { + livereload: true + } + }, + compass: { + files: ['<%= yeoman.app %>/styles/{,**/}*.{scss,sass}'], + tasks: ['compass:server', 'autoprefixer'] + }, + gruntfile: { + files: ['Gruntfile.js'] + }, + livereload: { + options: { + livereload: '<%= connect.options.livereload %>' + }, + files: [ + '<%= yeoman.app %>/{,**/}*.html', + '.tmp/styles/{,**/}*.css', + '<%= yeoman.app %>/images/{,**/}*.{png,jpg,jpeg,gif,webp,svg}' + ] + } + }, + + // The actual grunt server settings + connect: { + options: { + port: 9000, + // Change this to '0.0.0.0' to access the server from outside. + hostname: 'localhost', + livereload: 35729 + }, + livereload: { + options: { + open: true, + base: [ + '.tmp', + '<%= yeoman.app %>' + ] + } + }, + dist: { + options: { + base: '<%= yeoman.dist %>' + } + } + }, + + // The node-server settings + develop: { + server: { + file: 'server/main.js', + nodeArgs: ['--debug'] + } + }, + + // Make sure code styles are up to par and there are no obvious mistakes + jshint: { + options: { + jshintrc: '.jshintrc', + reporter: require('jshint-stylish') + }, + all: [ + 'Gruntfile.js', + '<%= yeoman.app %>/scripts/{,*/}*.js' + ] + }, + + // Empties folders to start fresh + clean: { + dist: { + files: [ + { + dot: true, + src: [ + '.tmp', + '<%= yeoman.dist %>/*', + '!<%= yeoman.dist %>/.git*' + ] + } + ] + }, + server: '.tmp' + }, + + // Add vendor prefixed styles + autoprefixer: { + options: { + browsers: ['last 1 version'] + }, + dist: { + files: [ + { + expand: true, + cwd: '.tmp/styles/', + src: '{,*/}*.css', + dest: '.tmp/styles/' + } + ] + } + }, + + // Automatically inject Bower components into the app + bowerInstall: { + app: { + src: ['<%= yeoman.app %>/index.html'], + ignorePath: '<%= yeoman.app %>/' + }, + sass: { + src: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'], + ignorePath: '<%= yeoman.app %>/bower_components/' + } + }, + + // Compiles Sass to CSS and generates necessary files if requested + compass: { + options: { + sassDir: '<%= yeoman.app %>/styles', + cssDir: '.tmp/styles', + generatedImagesDir: '.tmp/images/generated', + imagesDir: '<%= yeoman.app %>/images', + javascriptsDir: '<%= yeoman.app %>/scripts', + fontsDir: '<%= yeoman.app %>/fonts', + importPath: '<%= yeoman.app %>/bower_components', + httpImagesPath: '/images', + httpGeneratedImagesPath: '/images/generated', + httpFontsPath: '/fonts', + relativeAssets: false, + assetCacheBuster: false, + raw: 'Sass::Script::Number.precision = 10\n' + }, + dist: { + options: { + generatedImagesDir: '<%= yeoman.dist %>/client/images/generated' + } + }, + server: { + options: { + debugInfo: true + } + } + }, + + // Renames files for browser caching purposes + rev: { + dist: { + files: { + src: [ + '<%= yeoman.dist %>/client/scripts/{,*/}*.js', + '<%= yeoman.dist %>/client/styles/{,*/}*.css', + '<%= yeoman.dist %>/client/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}' + ] + } + } + }, + + // Reads HTML for usemin blocks to enable smart builds that automatically + // concat, minify and revision files. Creates configurations in memory so + // additional tasks can operate on them + useminPrepare: { + html: '<%= yeoman.app %>/index.html', + options: { + dest: '<%= yeoman.dist %>/client', + flow: { + html: { + steps: { + js: ['concat', 'uglifyjs'], + css: ['cssmin'] + }, + post: {} + } + } + } + }, + + // Performs rewrites based on rev and the useminPrepare configuration + usemin: { + html: ['<%= yeoman.dist %>/client/{,*/}*.html'], + css: ['<%= yeoman.dist %>/client/styles/{,*/}*.css'], + options: { + assetsDirs: ['<%= yeoman.dist %>/client'] + } + }, + + // The following *-min tasks produce minified files in the dist folder + cssmin: { + options: { + root: '<%= yeoman.app %>' + } + }, + + imagemin: { + dist: { + files: [ + { + expand: true, + cwd: '<%= yeoman.app %>/images', + src: '{,*/}*.{png,jpg,jpeg,gif}', + dest: '<%= yeoman.dist %>/client/images' + } + ] + } + }, + + svgmin: { + dist: { + files: [ + { + expand: true, + cwd: '<%= yeoman.app %>/images', + src: '{,*/}*.svg', + dest: '<%= yeoman.dist %>/client/images' + } + ] + } + }, + + htmlmin: { + dist: { + options: { + collapseWhitespace: true, + collapseBooleanAttributes: true, + removeCommentsFromCDATA: true, + removeOptionalTags: true + }, + files: [ + { + expand: true, + cwd: '<%= yeoman.dist %>/client', + src: ['*.html', 'views/{,*/}*.html'], + dest: '<%= yeoman.dist %>/client' + } + ] + } + }, + + // ngmin tries to make the code safe for minification automatically by + // using the Angular long form for dependency injection. It doesn't work on + // things like resolve or inject so those have to be done manually. + ngmin: { + dist: { + files: [ + { + expand: true, + cwd: '.tmp/concat/scripts', + src: '*.js', + dest: '.tmp/concat/scripts' + } + ] + } + }, + + uglify: { + options: { + mangle: false + } + }, + + // Copies remaining files to places other tasks can use + copy: { + dist: { + files: [ + { + expand: true, + dot: true, + cwd: '<%= yeoman.app %>', + dest: '<%= yeoman.dist %>/client', + src: [ + '*.{ico,png,txt}', + '.htaccess', + '*.html', + 'views/{,**/}*.html', + 'images/{,**/}*.{webp}', + 'fonts/*' + ] + }, + { + expand: true, + cwd: '.tmp/images', + dest: '<%= yeoman.dist %>/client/images', + src: ['generated/*'] + }, + { + expand: true, + cwd: 'server', + dest: '<%= yeoman.dist %>/server', + src: ['{,**/}*.js'] + }, + { + expand: true, + cwd: 'shared', + dest: '<%= yeoman.dist %>/shared', + src: ['{,**/}*.js'] + }, + { + expand: true, + cwd: '.', + dest: '<%= yeoman.dist %>/', + src: ['package.json'] + } + ] + }, + styles: { + expand: true, + cwd: '<%= yeoman.app %>/styles', + dest: '.tmp/styles/', + src: '{,**/}*.css' + } + }, + + // Run some tasks in parallel to speed up the build process + concurrent: { + server: [ + 'compass:server' + ], + dist: [ + 'compass:dist', + 'imagemin', + 'svgmin' + ] + } + }); + + + grunt.registerTask('serve', function (target) { + if (target === 'dist') { + return grunt.task.run(['build', 'develop', 'connect:dist:keepalive']); + } + + grunt.task.run([ + 'clean:server', + 'bowerInstall', + 'concurrent:server', + 'autoprefixer', + 'connect:livereload', + 'develop', + 'watch' + ]); + }); + + grunt.registerTask('server', function (target) { + grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.'); + grunt.task.run(['serve:' + target]); + }); + + grunt.registerTask('build', [ + 'clean:dist', + 'bowerInstall', + 'useminPrepare', + 'concurrent:dist', + 'autoprefixer', + 'concat', + 'ngmin', + 'copy:dist', + 'cssmin', + 'uglify', + 'rev', + 'usemin', + 'htmlmin' + ]); + + grunt.registerTask('default', [ + 'newer:jshint', + 'build' + ]); +}; diff --git a/app/bower_components/angular-leaflet-directive/.bower.json b/app/bower_components/angular-leaflet-directive/.bower.json new file mode 100644 index 0000000..f3ab23b --- /dev/null +++ b/app/bower_components/angular-leaflet-directive/.bower.json @@ -0,0 +1,54 @@ +{ + "name": "angular-leaflet-directive", + "description": "AngularJS directive to embed an interact with maps managed by Leaflet library", + "keywords": [ + "angularjs", + "javascript", + "directive", + "leaflet" + ], + "main": [ + "dist/angular-leaflet-directive.js" + ], + "dependencies": { + "angular": "1.2.x", + "leaflet-dist": "0.7.x" + }, + "devDependencies": { + "jquery": "2.1.x", + "bootstrap": "3.1.x", + "angular-route": "1.2.x", + "angular-animate": "1.2.x", + "angular-mocks": "1.2.x", + "leaflet.markerclusterer": "0.4", + "leaflet.draw": "0.2.2", + "Leaflet.label": "0.2.1", + "leaflet-tilelayer-geojson": "*", + "Leaflet.awesome-markers": "*", + "webgl-heatmap-leaflet": "*", + "leaflet-plugins": "1.0.1", + "esri-leaflet": "0.0.1-beta.4" + }, + "ignore": [ + "**/.*", + "src", + "doc", + "examples", + "test", + "*.md", + "Gruntfile.js", + "package.json", + "bower.json" + ], + "homepage": "https://github.com/tombatossals/angular-leaflet-directive", + "version": "0.7.7", + "_release": "0.7.7", + "_resolution": { + "type": "version", + "tag": "v0.7.7", + "commit": "f2b426b3daf3a3753bb76a3526956f14818f358c" + }, + "_source": "git://github.com/tombatossals/angular-leaflet-directive.git", + "_target": "~0.7.6", + "_originalSource": "angular-leaflet-directive" +} \ No newline at end of file diff --git a/app/bower_components/angular-leaflet-directive/LICENSE b/app/bower_components/angular-leaflet-directive/LICENSE new file mode 100644 index 0000000..6896b53 --- /dev/null +++ b/app/bower_components/angular-leaflet-directive/LICENSE @@ -0,0 +1,22 @@ +The MIT License + +Copyright (c) 2012-2013 https://github.com/tombatossals/angular-leaflet-directive + +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/bower_components/angular-mocks/.bower.json b/app/bower_components/angular-mocks/.bower.json new file mode 100644 index 0000000..1dca4a2 --- /dev/null +++ b/app/bower_components/angular-mocks/.bower.json @@ -0,0 +1,18 @@ +{ + "name": "angular-mocks", + "version": "1.2.15", + "main": "./angular-mocks.js", + "dependencies": { + "angular": "1.2.15" + }, + "homepage": "https://github.com/angular/bower-angular-mocks", + "_release": "1.2.15", + "_resolution": { + "type": "version", + "tag": "v1.2.15", + "commit": "6ea137cb6f72c6b1d424702345b6c077db722214" + }, + "_source": "git://github.com/angular/bower-angular-mocks.git", + "_target": "1.2.15", + "_originalSource": "angular-mocks" +} \ No newline at end of file diff --git a/app/bower_components/angular-mocks/README.md b/app/bower_components/angular-mocks/README.md new file mode 100644 index 0000000..3448d28 --- /dev/null +++ b/app/bower_components/angular-mocks/README.md @@ -0,0 +1,42 @@ +# bower-angular-mocks + +This repo is for distribution on `bower`. The source for this module is in the +[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngMock). +Please file issues and pull requests against that repo. + +## Install + +Install with `bower`: + +```shell +bower install angular-mocks +``` + +## Documentation + +Documentation is available on the +[AngularJS docs site](http://docs.angularjs.org/guide/dev_guide.unit-testing). + +## License + +The MIT License + +Copyright (c) 2010-2012 Google, Inc. http://angularjs.org + +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/bower_components/angular-mocks/angular-mocks.js b/app/bower_components/angular-mocks/angular-mocks.js new file mode 100644 index 0000000..62e5d08 --- /dev/null +++ b/app/bower_components/angular-mocks/angular-mocks.js @@ -0,0 +1,2159 @@ +/** + * @license AngularJS v1.2.15 + * (c) 2010-2014 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular, undefined) { + +'use strict'; + +/** + * @ngdoc object + * @name angular.mock + * @description + * + * Namespace from 'angular-mocks.js' which contains testing related code. + */ +angular.mock = {}; + +/** + * ! This is a private undocumented service ! + * + * @name $browser + * + * @description + * This service is a mock implementation of {@link ng.$browser}. It provides fake + * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr, + * cookies, etc... + * + * The api of this service is the same as that of the real {@link ng.$browser $browser}, except + * that there are several helper methods available which can be used in tests. + */ +angular.mock.$BrowserProvider = function() { + this.$get = function() { + return new angular.mock.$Browser(); + }; +}; + +angular.mock.$Browser = function() { + var self = this; + + this.isMock = true; + self.$$url = "http://server/"; + self.$$lastUrl = self.$$url; // used by url polling fn + self.pollFns = []; + + // TODO(vojta): remove this temporary api + self.$$completeOutstandingRequest = angular.noop; + self.$$incOutstandingRequestCount = angular.noop; + + + // register url polling fn + + self.onUrlChange = function(listener) { + self.pollFns.push( + function() { + if (self.$$lastUrl != self.$$url) { + self.$$lastUrl = self.$$url; + listener(self.$$url); + } + } + ); + + return listener; + }; + + self.cookieHash = {}; + self.lastCookieHash = {}; + self.deferredFns = []; + self.deferredNextId = 0; + + self.defer = function(fn, delay) { + delay = delay || 0; + self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId}); + self.deferredFns.sort(function(a,b){ return a.time - b.time;}); + return self.deferredNextId++; + }; + + + /** + * @name $browser#defer.now + * + * @description + * Current milliseconds mock time. + */ + self.defer.now = 0; + + + self.defer.cancel = function(deferId) { + var fnIndex; + + angular.forEach(self.deferredFns, function(fn, index) { + if (fn.id === deferId) fnIndex = index; + }); + + if (fnIndex !== undefined) { + self.deferredFns.splice(fnIndex, 1); + return true; + } + + return false; + }; + + + /** + * @name $browser#defer.flush + * + * @description + * Flushes all pending requests and executes the defer callbacks. + * + * @param {number=} number of milliseconds to flush. See {@link #defer.now} + */ + self.defer.flush = function(delay) { + if (angular.isDefined(delay)) { + self.defer.now += delay; + } else { + if (self.deferredFns.length) { + self.defer.now = self.deferredFns[self.deferredFns.length-1].time; + } else { + throw new Error('No deferred tasks to be flushed'); + } + } + + while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) { + self.deferredFns.shift().fn(); + } + }; + + self.$$baseHref = ''; + self.baseHref = function() { + return this.$$baseHref; + }; +}; +angular.mock.$Browser.prototype = { + +/** + * @name $browser#poll + * + * @description + * run all fns in pollFns + */ + poll: function poll() { + angular.forEach(this.pollFns, function(pollFn){ + pollFn(); + }); + }, + + addPollFn: function(pollFn) { + this.pollFns.push(pollFn); + return pollFn; + }, + + url: function(url, replace) { + if (url) { + this.$$url = url; + return this; + } + + return this.$$url; + }, + + cookies: function(name, value) { + if (name) { + if (angular.isUndefined(value)) { + delete this.cookieHash[name]; + } else { + if (angular.isString(value) && //strings only + value.length <= 4096) { //strict cookie storage limits + this.cookieHash[name] = value; + } + } + } else { + if (!angular.equals(this.cookieHash, this.lastCookieHash)) { + this.lastCookieHash = angular.copy(this.cookieHash); + this.cookieHash = angular.copy(this.cookieHash); + } + return this.cookieHash; + } + }, + + notifyWhenNoOutstandingRequests: function(fn) { + fn(); + } +}; + + +/** + * @ngdoc provider + * @name $exceptionHandlerProvider + * + * @description + * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors + * passed into the `$exceptionHandler`. + */ + +/** + * @ngdoc service + * @name $exceptionHandler + * + * @description + * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed + * into it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration + * information. + * + * + * ```js + * describe('$exceptionHandlerProvider', function() { + * + * it('should capture log messages and exceptions', function() { + * + * module(function($exceptionHandlerProvider) { + * $exceptionHandlerProvider.mode('log'); + * }); + * + * inject(function($log, $exceptionHandler, $timeout) { + * $timeout(function() { $log.log(1); }); + * $timeout(function() { $log.log(2); throw 'banana peel'; }); + * $timeout(function() { $log.log(3); }); + * expect($exceptionHandler.errors).toEqual([]); + * expect($log.assertEmpty()); + * $timeout.flush(); + * expect($exceptionHandler.errors).toEqual(['banana peel']); + * expect($log.log.logs).toEqual([[1], [2], [3]]); + * }); + * }); + * }); + * ``` + */ + +angular.mock.$ExceptionHandlerProvider = function() { + var handler; + + /** + * @ngdoc method + * @name $exceptionHandlerProvider#mode + * + * @description + * Sets the logging mode. + * + * @param {string} mode Mode of operation, defaults to `rethrow`. + * + * - `rethrow`: If any errors are passed into the handler in tests, it typically + * means that there is a bug in the application or test, so this mock will + * make these tests fail. + * - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log` + * mode stores an array of errors in `$exceptionHandler.errors`, to allow later + * assertion of them. See {@link ngMock.$log#assertEmpty assertEmpty()} and + * {@link ngMock.$log#reset reset()} + */ + this.mode = function(mode) { + switch(mode) { + case 'rethrow': + handler = function(e) { + throw e; + }; + break; + case 'log': + var errors = []; + + handler = function(e) { + if (arguments.length == 1) { + errors.push(e); + } else { + errors.push([].slice.call(arguments, 0)); + } + }; + + handler.errors = errors; + break; + default: + throw new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!"); + } + }; + + this.$get = function() { + return handler; + }; + + this.mode('rethrow'); +}; + + +/** + * @ngdoc service + * @name $log + * + * @description + * Mock implementation of {@link ng.$log} that gathers all logged messages in arrays + * (one array per logging level). These arrays are exposed as `logs` property of each of the + * level-specific log function, e.g. for level `error` the array is exposed as `$log.error.logs`. + * + */ +angular.mock.$LogProvider = function() { + var debug = true; + + function concat(array1, array2, index) { + return array1.concat(Array.prototype.slice.call(array2, index)); + } + + this.debugEnabled = function(flag) { + if (angular.isDefined(flag)) { + debug = flag; + return this; + } else { + return debug; + } + }; + + this.$get = function () { + var $log = { + log: function() { $log.log.logs.push(concat([], arguments, 0)); }, + warn: function() { $log.warn.logs.push(concat([], arguments, 0)); }, + info: function() { $log.info.logs.push(concat([], arguments, 0)); }, + error: function() { $log.error.logs.push(concat([], arguments, 0)); }, + debug: function() { + if (debug) { + $log.debug.logs.push(concat([], arguments, 0)); + } + } + }; + + /** + * @ngdoc method + * @name $log#reset + * + * @description + * Reset all of the logging arrays to empty. + */ + $log.reset = function () { + /** + * @ngdoc property + * @name $log#log.logs + * + * @description + * Array of messages logged using {@link ngMock.$log#log}. + * + * @example + * ```js + * $log.log('Some Log'); + * var first = $log.log.logs.unshift(); + * ``` + */ + $log.log.logs = []; + /** + * @ngdoc property + * @name $log#info.logs + * + * @description + * Array of messages logged using {@link ngMock.$log#info}. + * + * @example + * ```js + * $log.info('Some Info'); + * var first = $log.info.logs.unshift(); + * ``` + */ + $log.info.logs = []; + /** + * @ngdoc property + * @name $log#warn.logs + * + * @description + * Array of messages logged using {@link ngMock.$log#warn}. + * + * @example + * ```js + * $log.warn('Some Warning'); + * var first = $log.warn.logs.unshift(); + * ``` + */ + $log.warn.logs = []; + /** + * @ngdoc property + * @name $log#error.logs + * + * @description + * Array of messages logged using {@link ngMock.$log#error}. + * + * @example + * ```js + * $log.error('Some Error'); + * var first = $log.error.logs.unshift(); + * ``` + */ + $log.error.logs = []; + /** + * @ngdoc property + * @name $log#debug.logs + * + * @description + * Array of messages logged using {@link ngMock.$log#debug}. + * + * @example + * ```js + * $log.debug('Some Error'); + * var first = $log.debug.logs.unshift(); + * ``` + */ + $log.debug.logs = []; + }; + + /** + * @ngdoc method + * @name $log#assertEmpty + * + * @description + * Assert that the all of the logging methods have no logged messages. If messages present, an + * exception is thrown. + */ + $log.assertEmpty = function() { + var errors = []; + angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) { + angular.forEach($log[logLevel].logs, function(log) { + angular.forEach(log, function (logItem) { + errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' + + (logItem.stack || '')); + }); + }); + }); + if (errors.length) { + errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or "+ + "an expected log message was not checked and removed:"); + errors.push(''); + throw new Error(errors.join('\n---------\n')); + } + }; + + $log.reset(); + return $log; + }; +}; + + +/** + * @ngdoc service + * @name $interval + * + * @description + * Mock implementation of the $interval service. + * + * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to + * move forward by `millis` milliseconds and trigger any functions scheduled to run in that + * time. + * + * @param {function()} fn A function that should be called repeatedly. + * @param {number} delay Number of milliseconds between each function call. + * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat + * indefinitely. + * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise + * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @returns {promise} A promise which will be notified on each iteration. + */ +angular.mock.$IntervalProvider = function() { + this.$get = ['$rootScope', '$q', + function($rootScope, $q) { + var repeatFns = [], + nextRepeatId = 0, + now = 0; + + var $interval = function(fn, delay, count, invokeApply) { + var deferred = $q.defer(), + promise = deferred.promise, + iteration = 0, + skipApply = (angular.isDefined(invokeApply) && !invokeApply); + + count = (angular.isDefined(count)) ? count : 0, + promise.then(null, null, fn); + + promise.$$intervalId = nextRepeatId; + + function tick() { + deferred.notify(iteration++); + + if (count > 0 && iteration >= count) { + var fnIndex; + deferred.resolve(iteration); + + angular.forEach(repeatFns, function(fn, index) { + if (fn.id === promise.$$intervalId) fnIndex = index; + }); + + if (fnIndex !== undefined) { + repeatFns.splice(fnIndex, 1); + } + } + + if (!skipApply) $rootScope.$apply(); + } + + repeatFns.push({ + nextTime:(now + delay), + delay: delay, + fn: tick, + id: nextRepeatId, + deferred: deferred + }); + repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;}); + + nextRepeatId++; + return promise; + }; + /** + * @ngdoc method + * @name $interval#cancel + * + * @description + * Cancels a task associated with the `promise`. + * + * @param {promise} promise A promise from calling the `$interval` function. + * @returns {boolean} Returns `true` if the task was successfully cancelled. + */ + $interval.cancel = function(promise) { + if(!promise) return false; + var fnIndex; + + angular.forEach(repeatFns, function(fn, index) { + if (fn.id === promise.$$intervalId) fnIndex = index; + }); + + if (fnIndex !== undefined) { + repeatFns[fnIndex].deferred.reject('canceled'); + repeatFns.splice(fnIndex, 1); + return true; + } + + return false; + }; + + /** + * @ngdoc method + * @name $interval#flush + * @description + * + * Runs interval tasks scheduled to be run in the next `millis` milliseconds. + * + * @param {number=} millis maximum timeout amount to flush up until. + * + * @return {number} The amount of time moved forward. + */ + $interval.flush = function(millis) { + now += millis; + while (repeatFns.length && repeatFns[0].nextTime <= now) { + var task = repeatFns[0]; + task.fn(); + task.nextTime += task.delay; + repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;}); + } + return millis; + }; + + return $interval; + }]; +}; + + +/* jshint -W101 */ +/* The R_ISO8061_STR regex is never going to fit into the 100 char limit! + * This directive should go inside the anonymous function but a bug in JSHint means that it would + * not be enacted early enough to prevent the warning. + */ +var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/; + +function jsonStringToDate(string) { + var match; + if (match = string.match(R_ISO8061_STR)) { + var date = new Date(0), + tzHour = 0, + tzMin = 0; + if (match[9]) { + tzHour = int(match[9] + match[10]); + tzMin = int(match[9] + match[11]); + } + date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3])); + date.setUTCHours(int(match[4]||0) - tzHour, + int(match[5]||0) - tzMin, + int(match[6]||0), + int(match[7]||0)); + return date; + } + return string; +} + +function int(str) { + return parseInt(str, 10); +} + +function padNumber(num, digits, trim) { + var neg = ''; + if (num < 0) { + neg = '-'; + num = -num; + } + num = '' + num; + while(num.length < digits) num = '0' + num; + if (trim) + num = num.substr(num.length - digits); + return neg + num; +} + + +/** + * @ngdoc type + * @name angular.mock.TzDate + * @description + * + * *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`. + * + * Mock of the Date type which has its timezone specified via constructor arg. + * + * The main purpose is to create Date-like instances with timezone fixed to the specified timezone + * offset, so that we can test code that depends on local timezone settings without dependency on + * the time zone settings of the machine where the code is running. + * + * @param {number} offset Offset of the *desired* timezone in hours (fractions will be honored) + * @param {(number|string)} timestamp Timestamp representing the desired time in *UTC* + * + * @example + * !!!! WARNING !!!!! + * This is not a complete Date object so only methods that were implemented can be called safely. + * To make matters worse, TzDate instances inherit stuff from Date via a prototype. + * + * We do our best to intercept calls to "unimplemented" methods, but since the list of methods is + * incomplete we might be missing some non-standard methods. This can result in errors like: + * "Date.prototype.foo called on incompatible Object". + * + * ```js + * var newYearInBratislava = new TzDate(-1, '2009-12-31T23:00:00Z'); + * newYearInBratislava.getTimezoneOffset() => -60; + * newYearInBratislava.getFullYear() => 2010; + * newYearInBratislava.getMonth() => 0; + * newYearInBratislava.getDate() => 1; + * newYearInBratislava.getHours() => 0; + * newYearInBratislava.getMinutes() => 0; + * newYearInBratislava.getSeconds() => 0; + * ``` + * + */ +angular.mock.TzDate = function (offset, timestamp) { + var self = new Date(0); + if (angular.isString(timestamp)) { + var tsStr = timestamp; + + self.origDate = jsonStringToDate(timestamp); + + timestamp = self.origDate.getTime(); + if (isNaN(timestamp)) + throw { + name: "Illegal Argument", + message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string" + }; + } else { + self.origDate = new Date(timestamp); + } + + var localOffset = new Date(timestamp).getTimezoneOffset(); + self.offsetDiff = localOffset*60*1000 - offset*1000*60*60; + self.date = new Date(timestamp + self.offsetDiff); + + self.getTime = function() { + return self.date.getTime() - self.offsetDiff; + }; + + self.toLocaleDateString = function() { + return self.date.toLocaleDateString(); + }; + + self.getFullYear = function() { + return self.date.getFullYear(); + }; + + self.getMonth = function() { + return self.date.getMonth(); + }; + + self.getDate = function() { + return self.date.getDate(); + }; + + self.getHours = function() { + return self.date.getHours(); + }; + + self.getMinutes = function() { + return self.date.getMinutes(); + }; + + self.getSeconds = function() { + return self.date.getSeconds(); + }; + + self.getMilliseconds = function() { + return self.date.getMilliseconds(); + }; + + self.getTimezoneOffset = function() { + return offset * 60; + }; + + self.getUTCFullYear = function() { + return self.origDate.getUTCFullYear(); + }; + + self.getUTCMonth = function() { + return self.origDate.getUTCMonth(); + }; + + self.getUTCDate = function() { + return self.origDate.getUTCDate(); + }; + + self.getUTCHours = function() { + return self.origDate.getUTCHours(); + }; + + self.getUTCMinutes = function() { + return self.origDate.getUTCMinutes(); + }; + + self.getUTCSeconds = function() { + return self.origDate.getUTCSeconds(); + }; + + self.getUTCMilliseconds = function() { + return self.origDate.getUTCMilliseconds(); + }; + + self.getDay = function() { + return self.date.getDay(); + }; + + // provide this method only on browsers that already have it + if (self.toISOString) { + self.toISOString = function() { + return padNumber(self.origDate.getUTCFullYear(), 4) + '-' + + padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' + + padNumber(self.origDate.getUTCDate(), 2) + 'T' + + padNumber(self.origDate.getUTCHours(), 2) + ':' + + padNumber(self.origDate.getUTCMinutes(), 2) + ':' + + padNumber(self.origDate.getUTCSeconds(), 2) + '.' + + padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z'; + }; + } + + //hide all methods not implemented in this mock that the Date prototype exposes + var unimplementedMethods = ['getUTCDay', + 'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', + 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear', + 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', + 'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString', + 'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf']; + + angular.forEach(unimplementedMethods, function(methodName) { + self[methodName] = function() { + throw new Error("Method '" + methodName + "' is not implemented in the TzDate mock"); + }; + }); + + return self; +}; + +//make "tzDateInstance instanceof Date" return true +angular.mock.TzDate.prototype = Date.prototype; +/* jshint +W101 */ + +angular.mock.animate = angular.module('ngAnimateMock', ['ng']) + + .config(['$provide', function($provide) { + + var reflowQueue = []; + $provide.value('$$animateReflow', function(fn) { + var index = reflowQueue.length; + reflowQueue.push(fn); + return function cancel() { + reflowQueue.splice(index, 1); + }; + }); + + $provide.decorator('$animate', function($delegate, $$asyncCallback) { + var animate = { + queue : [], + enabled : $delegate.enabled, + triggerCallbacks : function() { + $$asyncCallback.flush(); + }, + triggerReflow : function() { + angular.forEach(reflowQueue, function(fn) { + fn(); + }); + reflowQueue = []; + } + }; + + angular.forEach( + ['enter','leave','move','addClass','removeClass','setClass'], function(method) { + animate[method] = function() { + animate.queue.push({ + event : method, + element : arguments[0], + args : arguments + }); + $delegate[method].apply($delegate, arguments); + }; + }); + + return animate; + }); + + }]); + + +/** + * @ngdoc function + * @name angular.mock.dump + * @description + * + * *NOTE*: this is not an injectable instance, just a globally available function. + * + * Method for serializing common angular objects (scope, elements, etc..) into strings, useful for + * debugging. + * + * This method is also available on window, where it can be used to display objects on debug + * console. + * + * @param {*} object - any object to turn into string. + * @return {string} a serialized string of the argument + */ +angular.mock.dump = function(object) { + return serialize(object); + + function serialize(object) { + var out; + + if (angular.isElement(object)) { + object = angular.element(object); + out = angular.element('
'); + angular.forEach(object, function(element) { + out.append(angular.element(element).clone()); + }); + out = out.html(); + } else if (angular.isArray(object)) { + out = []; + angular.forEach(object, function(o) { + out.push(serialize(o)); + }); + out = '[ ' + out.join(', ') + ' ]'; + } else if (angular.isObject(object)) { + if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) { + out = serializeScope(object); + } else if (object instanceof Error) { + out = object.stack || ('' + object.name + ': ' + object.message); + } else { + // TODO(i): this prevents methods being logged, + // we should have a better way to serialize objects + out = angular.toJson(object, true); + } + } else { + out = String(object); + } + + return out; + } + + function serializeScope(scope, offset) { + offset = offset || ' '; + var log = [offset + 'Scope(' + scope.$id + '): {']; + for ( var key in scope ) { + if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) { + log.push(' ' + key + ': ' + angular.toJson(scope[key])); + } + } + var child = scope.$$childHead; + while(child) { + log.push(serializeScope(child, offset + ' ')); + child = child.$$nextSibling; + } + log.push('}'); + return log.join('\n' + offset); + } +}; + +/** + * @ngdoc service + * @name $httpBackend + * @description + * Fake HTTP backend implementation suitable for unit testing applications that use the + * {@link ng.$http $http service}. + * + * *Note*: For fake HTTP backend implementation suitable for end-to-end testing or backend-less + * development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}. + * + * During unit testing, we want our unit tests to run quickly and have no external dependencies so + * we don’t want to send [XHR](https://developer.mozilla.org/en/xmlhttprequest) or + * [JSONP](http://en.wikipedia.org/wiki/JSONP) requests to a real server. All we really need is + * to verify whether a certain request has been sent or not, or alternatively just let the + * application make requests, respond with pre-trained responses and assert that the end result is + * what we expect it to be. + * + * This mock implementation can be used to respond with static or dynamic responses via the + * `expect` and `when` apis and their shortcuts (`expectGET`, `whenPOST`, etc). + * + * When an Angular application needs some data from a server, it calls the $http service, which + * sends the request to a real server using $httpBackend service. With dependency injection, it is + * easy to inject $httpBackend mock (which has the same API as $httpBackend) and use it to verify + * the requests and respond with some testing data without sending a request to real server. + * + * There are two ways to specify what test data should be returned as http responses by the mock + * backend when the code under test makes http requests: + * + * - `$httpBackend.expect` - specifies a request expectation + * - `$httpBackend.when` - specifies a backend definition + * + * + * # Request Expectations vs Backend Definitions + * + * Request expectations provide a way to make assertions about requests made by the application and + * to define responses for those requests. The test will fail if the expected requests are not made + * or they are made in the wrong order. + * + * Backend definitions allow you to define a fake backend for your application which doesn't assert + * if a particular request was made or not, it just returns a trained response if a request is made. + * The test will pass whether or not the request gets made during testing. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Request expectationsBackend definitions
Syntax.expect(...).respond(...).when(...).respond(...)
Typical usagestrict unit testsloose (black-box) unit testing
Fulfills multiple requestsNOYES
Order of requests mattersYESNO
Request requiredYESNO
Response requiredoptional (see below)YES
+ * + * In cases where both backend definitions and request expectations are specified during unit + * testing, the request expectations are evaluated first. + * + * If a request expectation has no response specified, the algorithm will search your backend + * definitions for an appropriate response. + * + * If a request didn't match any expectation or if the expectation doesn't have the response + * defined, the backend definitions are evaluated in sequential order to see if any of them match + * the request. The response from the first matched definition is returned. + * + * + * # Flushing HTTP requests + * + * The $httpBackend used in production always responds to requests asynchronously. If we preserved + * this behavior in unit testing, we'd have to create async unit tests, which are hard to write, + * to follow and to maintain. But neither can the testing mock respond synchronously; that would + * change the execution of the code under test. For this reason, the mock $httpBackend has a + * `flush()` method, which allows the test to explicitly flush pending requests. This preserves + * the async api of the backend, while allowing the test to execute synchronously. + * + * + * # Unit testing with mock $httpBackend + * The following code shows how to setup and use the mock backend when unit testing a controller. + * First we create the controller under test: + * + ```js + // The controller code + function MyController($scope, $http) { + var authToken; + + $http.get('/auth.py').success(function(data, status, headers) { + authToken = headers('A-Token'); + $scope.user = data; + }); + + $scope.saveMessage = function(message) { + var headers = { 'Authorization': authToken }; + $scope.status = 'Saving...'; + + $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) { + $scope.status = ''; + }).error(function() { + $scope.status = 'ERROR!'; + }); + }; + } + ``` + * + * Now we setup the mock backend and create the test specs: + * + ```js + // testing controller + describe('MyController', function() { + var $httpBackend, $rootScope, createController; + + beforeEach(inject(function($injector) { + // Set up the mock http service responses + $httpBackend = $injector.get('$httpBackend'); + // backend definition common for all tests + $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'}); + + // Get hold of a scope (i.e. the root scope) + $rootScope = $injector.get('$rootScope'); + // The $controller service is used to create instances of controllers + var $controller = $injector.get('$controller'); + + createController = function() { + return $controller('MyController', {'$scope' : $rootScope }); + }; + })); + + + afterEach(function() { + $httpBackend.verifyNoOutstandingExpectation(); + $httpBackend.verifyNoOutstandingRequest(); + }); + + + it('should fetch authentication token', function() { + $httpBackend.expectGET('/auth.py'); + var controller = createController(); + $httpBackend.flush(); + }); + + + it('should send msg to server', function() { + var controller = createController(); + $httpBackend.flush(); + + // now you don’t care about the authentication, but + // the controller will still send the request and + // $httpBackend will respond without you having to + // specify the expectation and response for this request + + $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, ''); + $rootScope.saveMessage('message content'); + expect($rootScope.status).toBe('Saving...'); + $httpBackend.flush(); + expect($rootScope.status).toBe(''); + }); + + + it('should send auth header', function() { + var controller = createController(); + $httpBackend.flush(); + + $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) { + // check if the header was send, if it wasn't the expectation won't + // match the request and the test will fail + return headers['Authorization'] == 'xxx'; + }).respond(201, ''); + + $rootScope.saveMessage('whatever'); + $httpBackend.flush(); + }); + }); + ``` + */ +angular.mock.$HttpBackendProvider = function() { + this.$get = ['$rootScope', createHttpBackendMock]; +}; + +/** + * General factory function for $httpBackend mock. + * Returns instance for unit testing (when no arguments specified): + * - passing through is disabled + * - auto flushing is disabled + * + * Returns instance for e2e testing (when `$delegate` and `$browser` specified): + * - passing through (delegating request to real backend) is enabled + * - auto flushing is enabled + * + * @param {Object=} $delegate Real $httpBackend instance (allow passing through if specified) + * @param {Object=} $browser Auto-flushing enabled if specified + * @return {Object} Instance of $httpBackend mock + */ +function createHttpBackendMock($rootScope, $delegate, $browser) { + var definitions = [], + expectations = [], + responses = [], + responsesPush = angular.bind(responses, responses.push), + copy = angular.copy; + + function createResponse(status, data, headers) { + if (angular.isFunction(status)) return status; + + return function() { + return angular.isNumber(status) + ? [status, data, headers] + : [200, status, data]; + }; + } + + // TODO(vojta): change params to: method, url, data, headers, callback + function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) { + var xhr = new MockXhr(), + expectation = expectations[0], + wasExpected = false; + + function prettyPrint(data) { + return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp) + ? data + : angular.toJson(data); + } + + function wrapResponse(wrapped) { + if (!$browser && timeout && timeout.then) timeout.then(handleTimeout); + + return handleResponse; + + function handleResponse() { + var response = wrapped.response(method, url, data, headers); + xhr.$$respHeaders = response[2]; + callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders()); + } + + function handleTimeout() { + for (var i = 0, ii = responses.length; i < ii; i++) { + if (responses[i] === handleResponse) { + responses.splice(i, 1); + callback(-1, undefined, ''); + break; + } + } + } + } + + if (expectation && expectation.match(method, url)) { + if (!expectation.matchData(data)) + throw new Error('Expected ' + expectation + ' with different data\n' + + 'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT: ' + data); + + if (!expectation.matchHeaders(headers)) + throw new Error('Expected ' + expectation + ' with different headers\n' + + 'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT: ' + + prettyPrint(headers)); + + expectations.shift(); + + if (expectation.response) { + responses.push(wrapResponse(expectation)); + return; + } + wasExpected = true; + } + + var i = -1, definition; + while ((definition = definitions[++i])) { + if (definition.match(method, url, data, headers || {})) { + if (definition.response) { + // if $browser specified, we do auto flush all requests + ($browser ? $browser.defer : responsesPush)(wrapResponse(definition)); + } else if (definition.passThrough) { + $delegate(method, url, data, callback, headers, timeout, withCredentials); + } else throw new Error('No response defined !'); + return; + } + } + throw wasExpected ? + new Error('No response defined !') : + new Error('Unexpected request: ' + method + ' ' + url + '\n' + + (expectation ? 'Expected ' + expectation : 'No more request expected')); + } + + /** + * @ngdoc method + * @name $httpBackend#when + * @description + * Creates a new backend definition. + * + * @param {string} method HTTP method. + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header + * object and returns true if the headers match the current definition. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. + * + * - respond – + * `{function([status,] data[, headers])|function(function(method, url, data, headers)}` + * – The respond method takes a set of static data to be returned or a function that can return + * an array containing response status (number), response data (string) and response headers + * (Object). + */ + $httpBackend.when = function(method, url, data, headers) { + var definition = new MockHttpExpectation(method, url, data, headers), + chain = { + respond: function(status, data, headers) { + definition.response = createResponse(status, data, headers); + } + }; + + if ($browser) { + chain.passThrough = function() { + definition.passThrough = true; + }; + } + + definitions.push(definition); + return chain; + }; + + /** + * @ngdoc method + * @name $httpBackend#whenGET + * @description + * Creates a new backend definition for GET requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenHEAD + * @description + * Creates a new backend definition for HEAD requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenDELETE + * @description + * Creates a new backend definition for DELETE requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenPOST + * @description + * Creates a new backend definition for POST requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenPUT + * @description + * Creates a new backend definition for PUT requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives + * data string and returns true if the data is as expected. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#whenJSONP + * @description + * Creates a new backend definition for JSONP requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + createShortMethods('when'); + + + /** + * @ngdoc method + * @name $httpBackend#expect + * @description + * Creates a new request expectation. + * + * @param {string} method HTTP method. + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header + * object and returns true if the headers match the current expectation. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + * + * - respond – + * `{function([status,] data[, headers])|function(function(method, url, data, headers)}` + * – The respond method takes a set of static data to be returned or a function that can return + * an array containing response status (number), response data (string) and response headers + * (Object). + */ + $httpBackend.expect = function(method, url, data, headers) { + var expectation = new MockHttpExpectation(method, url, data, headers); + expectations.push(expectation); + return { + respond: function(status, data, headers) { + expectation.response = createResponse(status, data, headers); + } + }; + }; + + + /** + * @ngdoc method + * @name $httpBackend#expectGET + * @description + * Creates a new request expectation for GET requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. See #expect for more info. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectHEAD + * @description + * Creates a new request expectation for HEAD requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectDELETE + * @description + * Creates a new request expectation for DELETE requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectPOST + * @description + * Creates a new request expectation for POST requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectPUT + * @description + * Creates a new request expectation for PUT requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectPATCH + * @description + * Creates a new request expectation for PATCH requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that + * receives data string and returns true if the data is as expected, or Object if request body + * is in JSON format. + * @param {Object=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + + /** + * @ngdoc method + * @name $httpBackend#expectJSONP + * @description + * Creates a new request expectation for JSONP requests. For more info see `expect()`. + * + * @param {string|RegExp} url HTTP url. + * @returns {requestHandler} Returns an object with `respond` method that control how a matched + * request is handled. + */ + createShortMethods('expect'); + + + /** + * @ngdoc method + * @name $httpBackend#flush + * @description + * Flushes all pending requests using the trained responses. + * + * @param {number=} count Number of responses to flush (in the order they arrived). If undefined, + * all pending requests will be flushed. If there are no pending requests when the flush method + * is called an exception is thrown (as this typically a sign of programming error). + */ + $httpBackend.flush = function(count) { + $rootScope.$digest(); + if (!responses.length) throw new Error('No pending request to flush !'); + + if (angular.isDefined(count)) { + while (count--) { + if (!responses.length) throw new Error('No more pending request to flush !'); + responses.shift()(); + } + } else { + while (responses.length) { + responses.shift()(); + } + } + $httpBackend.verifyNoOutstandingExpectation(); + }; + + + /** + * @ngdoc method + * @name $httpBackend#verifyNoOutstandingExpectation + * @description + * Verifies that all of the requests defined via the `expect` api were made. If any of the + * requests were not made, verifyNoOutstandingExpectation throws an exception. + * + * Typically, you would call this method following each test case that asserts requests using an + * "afterEach" clause. + * + * ```js + * afterEach($httpBackend.verifyNoOutstandingExpectation); + * ``` + */ + $httpBackend.verifyNoOutstandingExpectation = function() { + $rootScope.$digest(); + if (expectations.length) { + throw new Error('Unsatisfied requests: ' + expectations.join(', ')); + } + }; + + + /** + * @ngdoc method + * @name $httpBackend#verifyNoOutstandingRequest + * @description + * Verifies that there are no outstanding requests that need to be flushed. + * + * Typically, you would call this method following each test case that asserts requests using an + * "afterEach" clause. + * + * ```js + * afterEach($httpBackend.verifyNoOutstandingRequest); + * ``` + */ + $httpBackend.verifyNoOutstandingRequest = function() { + if (responses.length) { + throw new Error('Unflushed requests: ' + responses.length); + } + }; + + + /** + * @ngdoc method + * @name $httpBackend#resetExpectations + * @description + * Resets all request expectations, but preserves all backend definitions. Typically, you would + * call resetExpectations during a multiple-phase test when you want to reuse the same instance of + * $httpBackend mock. + */ + $httpBackend.resetExpectations = function() { + expectations.length = 0; + responses.length = 0; + }; + + return $httpBackend; + + + function createShortMethods(prefix) { + angular.forEach(['GET', 'DELETE', 'JSONP'], function(method) { + $httpBackend[prefix + method] = function(url, headers) { + return $httpBackend[prefix](method, url, undefined, headers); + }; + }); + + angular.forEach(['PUT', 'POST', 'PATCH'], function(method) { + $httpBackend[prefix + method] = function(url, data, headers) { + return $httpBackend[prefix](method, url, data, headers); + }; + }); + } +} + +function MockHttpExpectation(method, url, data, headers) { + + this.data = data; + this.headers = headers; + + this.match = function(m, u, d, h) { + if (method != m) return false; + if (!this.matchUrl(u)) return false; + if (angular.isDefined(d) && !this.matchData(d)) return false; + if (angular.isDefined(h) && !this.matchHeaders(h)) return false; + return true; + }; + + this.matchUrl = function(u) { + if (!url) return true; + if (angular.isFunction(url.test)) return url.test(u); + return url == u; + }; + + this.matchHeaders = function(h) { + if (angular.isUndefined(headers)) return true; + if (angular.isFunction(headers)) return headers(h); + return angular.equals(headers, h); + }; + + this.matchData = function(d) { + if (angular.isUndefined(data)) return true; + if (data && angular.isFunction(data.test)) return data.test(d); + if (data && angular.isFunction(data)) return data(d); + if (data && !angular.isString(data)) return angular.equals(data, angular.fromJson(d)); + return data == d; + }; + + this.toString = function() { + return method + ' ' + url; + }; +} + +function createMockXhr() { + return new MockXhr(); +} + +function MockXhr() { + + // hack for testing $http, $httpBackend + MockXhr.$$lastInstance = this; + + this.open = function(method, url, async) { + this.$$method = method; + this.$$url = url; + this.$$async = async; + this.$$reqHeaders = {}; + this.$$respHeaders = {}; + }; + + this.send = function(data) { + this.$$data = data; + }; + + this.setRequestHeader = function(key, value) { + this.$$reqHeaders[key] = value; + }; + + this.getResponseHeader = function(name) { + // the lookup must be case insensitive, + // that's why we try two quick lookups first and full scan last + var header = this.$$respHeaders[name]; + if (header) return header; + + name = angular.lowercase(name); + header = this.$$respHeaders[name]; + if (header) return header; + + header = undefined; + angular.forEach(this.$$respHeaders, function(headerVal, headerName) { + if (!header && angular.lowercase(headerName) == name) header = headerVal; + }); + return header; + }; + + this.getAllResponseHeaders = function() { + var lines = []; + + angular.forEach(this.$$respHeaders, function(value, key) { + lines.push(key + ': ' + value); + }); + return lines.join('\n'); + }; + + this.abort = angular.noop; +} + + +/** + * @ngdoc service + * @name $timeout + * @description + * + * This service is just a simple decorator for {@link ng.$timeout $timeout} service + * that adds a "flush" and "verifyNoPendingTasks" methods. + */ + +angular.mock.$TimeoutDecorator = function($delegate, $browser) { + + /** + * @ngdoc method + * @name $timeout#flush + * @description + * + * Flushes the queue of pending tasks. + * + * @param {number=} delay maximum timeout amount to flush up until + */ + $delegate.flush = function(delay) { + $browser.defer.flush(delay); + }; + + /** + * @ngdoc method + * @name $timeout#verifyNoPendingTasks + * @description + * + * Verifies that there are no pending tasks that need to be flushed. + */ + $delegate.verifyNoPendingTasks = function() { + if ($browser.deferredFns.length) { + throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' + + formatPendingTasksAsString($browser.deferredFns)); + } + }; + + function formatPendingTasksAsString(tasks) { + var result = []; + angular.forEach(tasks, function(task) { + result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}'); + }); + + return result.join(', '); + } + + return $delegate; +}; + +angular.mock.$RAFDecorator = function($delegate) { + var queue = []; + var rafFn = function(fn) { + var index = queue.length; + queue.push(fn); + return function() { + queue.splice(index, 1); + }; + }; + + rafFn.supported = $delegate.supported; + + rafFn.flush = function() { + if(queue.length === 0) { + throw new Error('No rAF callbacks present'); + } + + var length = queue.length; + for(var i=0;i'); + }; +}; + +/** + * @ngdoc module + * @name ngMock + * @description + * + * # ngMock + * + * The `ngMock` module providers support to inject and mock Angular services into unit tests. + * In addition, ngMock also extends various core ng services such that they can be + * inspected and controlled in a synchronous manner within test code. + * + * + *
+ * + */ +angular.module('ngMock', ['ng']).provider({ + $browser: angular.mock.$BrowserProvider, + $exceptionHandler: angular.mock.$ExceptionHandlerProvider, + $log: angular.mock.$LogProvider, + $interval: angular.mock.$IntervalProvider, + $httpBackend: angular.mock.$HttpBackendProvider, + $rootElement: angular.mock.$RootElementProvider +}).config(['$provide', function($provide) { + $provide.decorator('$timeout', angular.mock.$TimeoutDecorator); + $provide.decorator('$$rAF', angular.mock.$RAFDecorator); + $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator); +}]); + +/** + * @ngdoc module + * @name ngMockE2E + * @module ngMockE2E + * @description + * + * The `ngMockE2E` is an angular module which contains mocks suitable for end-to-end testing. + * Currently there is only one mock present in this module - + * the {@link ngMockE2E.$httpBackend e2e $httpBackend} mock. + */ +angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) { + $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator); +}]); + +/** + * @ngdoc service + * @name $httpBackend + * @module ngMockE2E + * @description + * Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of + * applications that use the {@link ng.$http $http service}. + * + * *Note*: For fake http backend implementation suitable for unit testing please see + * {@link ngMock.$httpBackend unit-testing $httpBackend mock}. + * + * This implementation can be used to respond with static or dynamic responses via the `when` api + * and its shortcuts (`whenGET`, `whenPOST`, etc) and optionally pass through requests to the + * real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch + * templates from a webserver). + * + * As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application + * is being developed with the real backend api replaced with a mock, it is often desirable for + * certain category of requests to bypass the mock and issue a real http request (e.g. to fetch + * templates or static files from the webserver). To configure the backend with this behavior + * use the `passThrough` request handler of `when` instead of `respond`. + * + * Additionally, we don't want to manually have to flush mocked out requests like we do during unit + * testing. For this reason the e2e $httpBackend automatically flushes mocked out requests + * automatically, closely simulating the behavior of the XMLHttpRequest object. + * + * To setup the application to run with this http backend, you have to create a module that depends + * on the `ngMockE2E` and your application modules and defines the fake backend: + * + * ```js + * myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']); + * myAppDev.run(function($httpBackend) { + * phones = [{name: 'phone1'}, {name: 'phone2'}]; + * + * // returns the current list of phones + * $httpBackend.whenGET('/phones').respond(phones); + * + * // adds a new phone to the phones array + * $httpBackend.whenPOST('/phones').respond(function(method, url, data) { + * phones.push(angular.fromJson(data)); + * }); + * $httpBackend.whenGET(/^\/templates\//).passThrough(); + * //... + * }); + * ``` + * + * Afterwards, bootstrap your app with this new module. + */ + +/** + * @ngdoc method + * @name $httpBackend#when + * @module ngMockE2E + * @description + * Creates a new backend definition. + * + * @param {string} method HTTP method. + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers or function that receives http header + * object and returns true if the headers match the current definition. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + * + * - respond – + * `{function([status,] data[, headers])|function(function(method, url, data, headers)}` + * – The respond method takes a set of static data to be returned or a function that can return + * an array containing response status (number), response data (string) and response headers + * (Object). + * - passThrough – `{function()}` – Any request matching a backend definition with `passThrough` + * handler will be passed through to the real backend (an XHR request will be made to the + * server.) + */ + +/** + * @ngdoc method + * @name $httpBackend#whenGET + * @module ngMockE2E + * @description + * Creates a new backend definition for GET requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenHEAD + * @module ngMockE2E + * @description + * Creates a new backend definition for HEAD requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenDELETE + * @module ngMockE2E + * @description + * Creates a new backend definition for DELETE requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenPOST + * @module ngMockE2E + * @description + * Creates a new backend definition for POST requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenPUT + * @module ngMockE2E + * @description + * Creates a new backend definition for PUT requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenPATCH + * @module ngMockE2E + * @description + * Creates a new backend definition for PATCH requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenJSONP + * @module ngMockE2E + * @description + * Creates a new backend definition for JSONP requests. For more info see `when()`. + * + * @param {string|RegExp} url HTTP url. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. + */ +angular.mock.e2e = {}; +angular.mock.e2e.$httpBackendDecorator = + ['$rootScope', '$delegate', '$browser', createHttpBackendMock]; + + +angular.mock.clearDataCache = function() { + var key, + cache = angular.element.cache; + + for(key in cache) { + if (Object.prototype.hasOwnProperty.call(cache,key)) { + var handle = cache[key].handle; + + handle && angular.element(handle.elem).off(); + delete cache[key]; + } + } +}; + + +if(window.jasmine || window.mocha) { + + var currentSpec = null, + isSpecRunning = function() { + return !!currentSpec; + }; + + + beforeEach(function() { + currentSpec = this; + }); + + afterEach(function() { + var injector = currentSpec.$injector; + + currentSpec.$injector = null; + currentSpec.$modules = null; + currentSpec = null; + + if (injector) { + injector.get('$rootElement').off(); + injector.get('$browser').pollFns.length = 0; + } + + angular.mock.clearDataCache(); + + // clean up jquery's fragment cache + angular.forEach(angular.element.fragments, function(val, key) { + delete angular.element.fragments[key]; + }); + + MockXhr.$$lastInstance = null; + + angular.forEach(angular.callbacks, function(val, key) { + delete angular.callbacks[key]; + }); + angular.callbacks.counter = 0; + }); + + /** + * @ngdoc function + * @name angular.mock.module + * @description + * + * *NOTE*: This function is also published on window for easy access.
+ * + * This function registers a module configuration code. It collects the configuration information + * which will be used when the injector is created by {@link angular.mock.inject inject}. + * + * See {@link angular.mock.inject inject} for usage example + * + * @param {...(string|Function|Object)} fns any number of modules which are represented as string + * aliases or as anonymous module initialization functions. The modules are used to + * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an + * object literal is passed they will be register as values in the module, the key being + * the module name and the value being what is returned. + */ + window.module = angular.mock.module = function() { + var moduleFns = Array.prototype.slice.call(arguments, 0); + return isSpecRunning() ? workFn() : workFn; + ///////////////////// + function workFn() { + if (currentSpec.$injector) { + throw new Error('Injector already created, can not register a module!'); + } else { + var modules = currentSpec.$modules || (currentSpec.$modules = []); + angular.forEach(moduleFns, function(module) { + if (angular.isObject(module) && !angular.isArray(module)) { + modules.push(function($provide) { + angular.forEach(module, function(value, key) { + $provide.value(key, value); + }); + }); + } else { + modules.push(module); + } + }); + } + } + }; + + /** + * @ngdoc function + * @name angular.mock.inject + * @description + * + * *NOTE*: This function is also published on window for easy access.
+ * + * The inject function wraps a function into an injectable function. The inject() creates new + * instance of {@link auto.$injector $injector} per test, which is then used for + * resolving references. + * + * + * ## Resolving References (Underscore Wrapping) + * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this + * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable + * that is declared in the scope of the `describe()` block. Since we would, most likely, want + * the variable to have the same name of the reference we have a problem, since the parameter + * to the `inject()` function would hide the outer variable. + * + * To help with this, the injected parameters can, optionally, be enclosed with underscores. + * These are ignored by the injector when the reference name is resolved. + * + * For example, the parameter `_myService_` would be resolved as the reference `myService`. + * Since it is available in the function body as _myService_, we can then assign it to a variable + * defined in an outer scope. + * + * ``` + * // Defined out reference variable outside + * var myService; + * + * // Wrap the parameter in underscores + * beforeEach( inject( function(_myService_){ + * myService = _myService_; + * })); + * + * // Use myService in a series of tests. + * it('makes use of myService', function() { + * myService.doStuff(); + * }); + * + * ``` + * + * See also {@link angular.mock.module angular.mock.module} + * + * ## Example + * Example of what a typical jasmine tests looks like with the inject method. + * ```js + * + * angular.module('myApplicationModule', []) + * .value('mode', 'app') + * .value('version', 'v1.0.1'); + * + * + * describe('MyApp', function() { + * + * // You need to load modules that you want to test, + * // it loads only the "ng" module by default. + * beforeEach(module('myApplicationModule')); + * + * + * // inject() is used to inject arguments of all given functions + * it('should provide a version', inject(function(mode, version) { + * expect(version).toEqual('v1.0.1'); + * expect(mode).toEqual('app'); + * })); + * + * + * // The inject and module method can also be used inside of the it or beforeEach + * it('should override a version and test the new version is injected', function() { + * // module() takes functions or strings (module aliases) + * module(function($provide) { + * $provide.value('version', 'overridden'); // override version here + * }); + * + * inject(function(version) { + * expect(version).toEqual('overridden'); + * }); + * }); + * }); + * + * ``` + * + * @param {...Function} fns any number of functions which will be injected using the injector. + */ + + + + var ErrorAddingDeclarationLocationStack = function(e, errorForStack) { + this.message = e.message; + this.name = e.name; + if (e.line) this.line = e.line; + if (e.sourceId) this.sourceId = e.sourceId; + if (e.stack && errorForStack) + this.stack = e.stack + '\n' + errorForStack.stack; + if (e.stackArray) this.stackArray = e.stackArray; + }; + ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString; + + window.inject = angular.mock.inject = function() { + var blockFns = Array.prototype.slice.call(arguments, 0); + var errorForStack = new Error('Declaration Location'); + return isSpecRunning() ? workFn.call(currentSpec) : workFn; + ///////////////////// + function workFn() { + var modules = currentSpec.$modules || []; + + modules.unshift('ngMock'); + modules.unshift('ng'); + var injector = currentSpec.$injector; + if (!injector) { + injector = currentSpec.$injector = angular.injector(modules); + } + for(var i = 0, ii = blockFns.length; i < ii; i++) { + try { + /* jshint -W040 *//* Jasmine explicitly provides a `this` object when calling functions */ + injector.invoke(blockFns[i] || angular.noop, this); + /* jshint +W040 */ + } catch (e) { + if (e.stack && errorForStack) { + throw new ErrorAddingDeclarationLocationStack(e, errorForStack); + } + throw e; + } finally { + errorForStack = null; + } + } + } + }; +} + + +})(window, window.angular); diff --git a/app/bower_components/angular-mocks/bower.json b/app/bower_components/angular-mocks/bower.json new file mode 100644 index 0000000..cf7b342 --- /dev/null +++ b/app/bower_components/angular-mocks/bower.json @@ -0,0 +1,8 @@ +{ + "name": "angular-mocks", + "version": "1.2.15", + "main": "./angular-mocks.js", + "dependencies": { + "angular": "1.2.15" + } +} diff --git a/app/bower_components/angular-route/.bower.json b/app/bower_components/angular-route/.bower.json new file mode 100644 index 0000000..d923df2 --- /dev/null +++ b/app/bower_components/angular-route/.bower.json @@ -0,0 +1,18 @@ +{ + "name": "angular-route", + "version": "1.2.15", + "main": "./angular-route.js", + "dependencies": { + "angular": "1.2.15" + }, + "homepage": "https://github.com/angular/bower-angular-route", + "_release": "1.2.15", + "_resolution": { + "type": "version", + "tag": "v1.2.15", + "commit": "a8368eb5c47746681feea7f73d712be47418865a" + }, + "_source": "git://github.com/angular/bower-angular-route.git", + "_target": "1.2.15", + "_originalSource": "angular-route" +} \ No newline at end of file diff --git a/app/bower_components/angular-route/README.md b/app/bower_components/angular-route/README.md new file mode 100644 index 0000000..49f55fc --- /dev/null +++ b/app/bower_components/angular-route/README.md @@ -0,0 +1,54 @@ +# bower-angular-route + +This repo is for distribution on `bower`. The source for this module is in the +[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngRoute). +Please file issues and pull requests against that repo. + +## Install + +Install with `bower`: + +```shell +bower install angular-route +``` + +Add a ` +``` + +And add `ngRoute` as a dependency for your app: + +```javascript +angular.module('myApp', ['ngRoute']); +``` + +## Documentation + +Documentation is available on the +[AngularJS docs site](http://docs.angularjs.org/api/ngRoute). + +## License + +The MIT License + +Copyright (c) 2010-2012 Google, Inc. http://angularjs.org + +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/bower_components/angular-route/angular-route.js b/app/bower_components/angular-route/angular-route.js new file mode 100644 index 0000000..b4779bf --- /dev/null +++ b/app/bower_components/angular-route/angular-route.js @@ -0,0 +1,927 @@ +/** + * @license AngularJS v1.2.15 + * (c) 2010-2014 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular, undefined) {'use strict'; + +/** + * @ngdoc module + * @name ngRoute + * @description + * + * # ngRoute + * + * The `ngRoute` module provides routing and deeplinking services and directives for angular apps. + * + * ## Example + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. + * + * + *
+ */ + /* global -ngRouteModule */ +var ngRouteModule = angular.module('ngRoute', ['ng']). + provider('$route', $RouteProvider); + +/** + * @ngdoc provider + * @name $routeProvider + * @function + * + * @description + * + * Used for configuring routes. + * + * ## Example + * See {@link ngRoute.$route#example $route} for an example of configuring and using `ngRoute`. + * + * ## Dependencies + * Requires the {@link ngRoute `ngRoute`} module to be installed. + */ +function $RouteProvider(){ + function inherit(parent, extra) { + return angular.extend(new (angular.extend(function() {}, {prototype:parent}))(), extra); + } + + var routes = {}; + + /** + * @ngdoc method + * @name $routeProvider#when + * + * @param {string} path Route path (matched against `$location.path`). If `$location.path` + * contains redundant trailing slash or is missing one, the route will still match and the + * `$location.path` will be updated to add or drop the trailing slash to exactly match the + * route definition. + * + * * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up + * to the next slash are matched and stored in `$routeParams` under the given `name` + * when the route matches. + * * `path` can contain named groups starting with a colon and ending with a star: + * e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name` + * when the route matches. + * * `path` can contain optional named groups with a question mark: e.g.`:name?`. + * + * For example, routes like `/color/:color/largecode/:largecode*\/edit` will match + * `/color/brown/largecode/code/with/slashes/edit` and extract: + * + * * `color: brown` + * * `largecode: code/with/slashes`. + * + * + * @param {Object} route Mapping information to be assigned to `$route.current` on route + * match. + * + * Object properties: + * + * - `controller` – `{(string|function()=}` – Controller fn that should be associated with + * newly created scope or the name of a {@link angular.Module#controller registered + * controller} if passed as a string. + * - `controllerAs` – `{string=}` – A controller alias name. If present the controller will be + * published to scope under the `controllerAs` name. + * - `template` – `{string=|function()=}` – html template as a string or a function that + * returns an html template as a string which should be used by {@link + * ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives. + * This property takes precedence over `templateUrl`. + * + * If `template` is a function, it will be called with the following parameters: + * + * - `{Array.}` - route parameters extracted from the current + * `$location.path()` by applying the current route + * + * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html + * template that should be used by {@link ngRoute.directive:ngView ngView}. + * + * If `templateUrl` is a function, it will be called with the following parameters: + * + * - `{Array.}` - route parameters extracted from the current + * `$location.path()` by applying the current route + * + * - `resolve` - `{Object.=}` - An optional map of dependencies which should + * be injected into the controller. If any of these dependencies are promises, the router + * will wait for them all to be resolved or one to be rejected before the controller is + * instantiated. + * If all the promises are resolved successfully, the values of the resolved promises are + * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is + * fired. If any of the promises are rejected the + * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired. The map object + * is: + * + * - `key` – `{string}`: a name of a dependency to be injected into the controller. + * - `factory` - `{string|function}`: If `string` then it is an alias for a service. + * Otherwise if function, then it is {@link auto.$injector#invoke injected} + * and the return value is treated as the dependency. If the result is a promise, it is + * resolved before its value is injected into the controller. Be aware that + * `ngRoute.$routeParams` will still refer to the previous route within these resolve + * functions. Use `$route.current.params` to access the new route parameters, instead. + * + * - `redirectTo` – {(string|function())=} – value to update + * {@link ng.$location $location} path with and trigger route redirection. + * + * If `redirectTo` is a function, it will be called with the following parameters: + * + * - `{Object.}` - route parameters extracted from the current + * `$location.path()` by applying the current route templateUrl. + * - `{string}` - current `$location.path()` + * - `{Object}` - current `$location.search()` + * + * The custom `redirectTo` function is expected to return a string which will be used + * to update `$location.path()` and `$location.search()`. + * + * - `[reloadOnSearch=true]` - {boolean=} - reload route when only `$location.search()` + * or `$location.hash()` changes. + * + * If the option is set to `false` and url in the browser changes, then + * `$routeUpdate` event is broadcasted on the root scope. + * + * - `[caseInsensitiveMatch=false]` - {boolean=} - match routes without being case sensitive + * + * If the option is set to `true`, then the particular route can be matched without being + * case sensitive + * + * @returns {Object} self + * + * @description + * Adds a new route definition to the `$route` service. + */ + this.when = function(path, route) { + routes[path] = angular.extend( + {reloadOnSearch: true}, + route, + path && pathRegExp(path, route) + ); + + // create redirection for trailing slashes + if (path) { + var redirectPath = (path[path.length-1] == '/') + ? path.substr(0, path.length-1) + : path +'/'; + + routes[redirectPath] = angular.extend( + {redirectTo: path}, + pathRegExp(redirectPath, route) + ); + } + + return this; + }; + + /** + * @param path {string} path + * @param opts {Object} options + * @return {?Object} + * + * @description + * Normalizes the given path, returning a regular expression + * and the original path. + * + * Inspired by pathRexp in visionmedia/express/lib/utils.js. + */ + function pathRegExp(path, opts) { + var insensitive = opts.caseInsensitiveMatch, + ret = { + originalPath: path, + regexp: path + }, + keys = ret.keys = []; + + path = path + .replace(/([().])/g, '\\$1') + .replace(/(\/)?:(\w+)([\?\*])?/g, function(_, slash, key, option){ + var optional = option === '?' ? option : null; + var star = option === '*' ? option : null; + keys.push({ name: key, optional: !!optional }); + slash = slash || ''; + return '' + + (optional ? '' : slash) + + '(?:' + + (optional ? slash : '') + + (star && '(.+?)' || '([^/]+)') + + (optional || '') + + ')' + + (optional || ''); + }) + .replace(/([\/$\*])/g, '\\$1'); + + ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : ''); + return ret; + } + + /** + * @ngdoc method + * @name $routeProvider#otherwise + * + * @description + * Sets route definition that will be used on route change when no other route definition + * is matched. + * + * @param {Object} params Mapping information to be assigned to `$route.current`. + * @returns {Object} self + */ + this.otherwise = function(params) { + this.when(null, params); + return this; + }; + + + this.$get = ['$rootScope', + '$location', + '$routeParams', + '$q', + '$injector', + '$http', + '$templateCache', + '$sce', + function($rootScope, $location, $routeParams, $q, $injector, $http, $templateCache, $sce) { + + /** + * @ngdoc service + * @name $route + * @requires $location + * @requires $routeParams + * + * @property {Object} current Reference to the current route definition. + * The route definition contains: + * + * - `controller`: The controller constructor as define in route definition. + * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for + * controller instantiation. The `locals` contain + * the resolved values of the `resolve` map. Additionally the `locals` also contain: + * + * - `$scope` - The current route scope. + * - `$template` - The current route template HTML. + * + * @property {Object} routes Object with all route configuration Objects as its properties. + * + * @description + * `$route` is used for deep-linking URLs to controllers and views (HTML partials). + * It watches `$location.url()` and tries to map the path to an existing route definition. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API. + * + * The `$route` service is typically used in conjunction with the + * {@link ngRoute.directive:ngView `ngView`} directive and the + * {@link ngRoute.$routeParams `$routeParams`} service. + * + * @example + * This example shows how changing the URL hash causes the `$route` to match a route against the + * URL, and the `ngView` pulls in the partial. + * + * Note that this example is using {@link ng.directive:script inlined templates} + * to get it working on jsfiddle as well. + * + * + * + *
+ * Choose: + * Moby | + * Moby: Ch1 | + * Gatsby | + * Gatsby: Ch4 | + * Scarlet Letter
+ * + *
+ * + *
+ * + *
$location.path() = {{$location.path()}}
+ *
$route.current.templateUrl = {{$route.current.templateUrl}}
+ *
$route.current.params = {{$route.current.params}}
+ *
$route.current.scope.name = {{$route.current.scope.name}}
+ *
$routeParams = {{$routeParams}}
+ *
+ *
+ * + * + * controller: {{name}}
+ * Book Id: {{params.bookId}}
+ *
+ * + * + * controller: {{name}}
+ * Book Id: {{params.bookId}}
+ * Chapter Id: {{params.chapterId}} + *
+ * + * + * angular.module('ngRouteExample', ['ngRoute']) + * + * .controller('MainController', function($scope, $route, $routeParams, $location) { + * $scope.$route = $route; + * $scope.$location = $location; + * $scope.$routeParams = $routeParams; + * }) + * + * .controller('BookController', function($scope, $routeParams) { + * $scope.name = "BookController"; + * $scope.params = $routeParams; + * }) + * + * .controller('ChapterController', function($scope, $routeParams) { + * $scope.name = "ChapterController"; + * $scope.params = $routeParams; + * }) + * + * .config(function($routeProvider, $locationProvider) { + * $routeProvider + * .when('/Book/:bookId', { + * templateUrl: 'book.html', + * controller: 'BookController', + * resolve: { + * // I will cause a 1 second delay + * delay: function($q, $timeout) { + * var delay = $q.defer(); + * $timeout(delay.resolve, 1000); + * return delay.promise; + * } + * } + * }) + * .when('/Book/:bookId/ch/:chapterId', { + * templateUrl: 'chapter.html', + * controller: 'ChapterController' + * }); + * + * // configure html5 to get links working on jsfiddle + * $locationProvider.html5Mode(true); + * }); + * + * + * + * + * it('should load and compile correct template', function() { + * element(by.linkText('Moby: Ch1')).click(); + * var content = element(by.css('[ng-view]')).getText(); + * expect(content).toMatch(/controller\: ChapterController/); + * expect(content).toMatch(/Book Id\: Moby/); + * expect(content).toMatch(/Chapter Id\: 1/); + * + * element(by.partialLinkText('Scarlet')).click(); + * + * content = element(by.css('[ng-view]')).getText(); + * expect(content).toMatch(/controller\: BookController/); + * expect(content).toMatch(/Book Id\: Scarlet/); + * }); + * + *
+ */ + + /** + * @ngdoc event + * @name $route#$routeChangeStart + * @eventType broadcast on root scope + * @description + * Broadcasted before a route change. At this point the route services starts + * resolving all of the dependencies needed for the route change to occur. + * Typically this involves fetching the view template as well as any dependencies + * defined in `resolve` route property. Once all of the dependencies are resolved + * `$routeChangeSuccess` is fired. + * + * @param {Object} angularEvent Synthetic event object. + * @param {Route} next Future route information. + * @param {Route} current Current route information. + */ + + /** + * @ngdoc event + * @name $route#$routeChangeSuccess + * @eventType broadcast on root scope + * @description + * Broadcasted after a route dependencies are resolved. + * {@link ngRoute.directive:ngView ngView} listens for the directive + * to instantiate the controller and render the view. + * + * @param {Object} angularEvent Synthetic event object. + * @param {Route} current Current route information. + * @param {Route|Undefined} previous Previous route information, or undefined if current is + * first route entered. + */ + + /** + * @ngdoc event + * @name $route#$routeChangeError + * @eventType broadcast on root scope + * @description + * Broadcasted if any of the resolve promises are rejected. + * + * @param {Object} angularEvent Synthetic event object + * @param {Route} current Current route information. + * @param {Route} previous Previous route information. + * @param {Route} rejection Rejection of the promise. Usually the error of the failed promise. + */ + + /** + * @ngdoc event + * @name $route#$routeUpdate + * @eventType broadcast on root scope + * @description + * + * The `reloadOnSearch` property has been set to false, and we are reusing the same + * instance of the Controller. + */ + + var forceReload = false, + $route = { + routes: routes, + + /** + * @ngdoc method + * @name $route#reload + * + * @description + * Causes `$route` service to reload the current route even if + * {@link ng.$location $location} hasn't changed. + * + * As a result of that, {@link ngRoute.directive:ngView ngView} + * creates new scope, reinstantiates the controller. + */ + reload: function() { + forceReload = true; + $rootScope.$evalAsync(updateRoute); + } + }; + + $rootScope.$on('$locationChangeSuccess', updateRoute); + + return $route; + + ///////////////////////////////////////////////////// + + /** + * @param on {string} current url + * @param route {Object} route regexp to match the url against + * @return {?Object} + * + * @description + * Check if the route matches the current url. + * + * Inspired by match in + * visionmedia/express/lib/router/router.js. + */ + function switchRouteMatcher(on, route) { + var keys = route.keys, + params = {}; + + if (!route.regexp) return null; + + var m = route.regexp.exec(on); + if (!m) return null; + + for (var i = 1, len = m.length; i < len; ++i) { + var key = keys[i - 1]; + + var val = 'string' == typeof m[i] + ? decodeURIComponent(m[i]) + : m[i]; + + if (key && val) { + params[key.name] = val; + } + } + return params; + } + + function updateRoute() { + var next = parseRoute(), + last = $route.current; + + if (next && last && next.$$route === last.$$route + && angular.equals(next.pathParams, last.pathParams) + && !next.reloadOnSearch && !forceReload) { + last.params = next.params; + angular.copy(last.params, $routeParams); + $rootScope.$broadcast('$routeUpdate', last); + } else if (next || last) { + forceReload = false; + $rootScope.$broadcast('$routeChangeStart', next, last); + $route.current = next; + if (next) { + if (next.redirectTo) { + if (angular.isString(next.redirectTo)) { + $location.path(interpolate(next.redirectTo, next.params)).search(next.params) + .replace(); + } else { + $location.url(next.redirectTo(next.pathParams, $location.path(), $location.search())) + .replace(); + } + } + } + + $q.when(next). + then(function() { + if (next) { + var locals = angular.extend({}, next.resolve), + template, templateUrl; + + angular.forEach(locals, function(value, key) { + locals[key] = angular.isString(value) ? + $injector.get(value) : $injector.invoke(value); + }); + + if (angular.isDefined(template = next.template)) { + if (angular.isFunction(template)) { + template = template(next.params); + } + } else if (angular.isDefined(templateUrl = next.templateUrl)) { + if (angular.isFunction(templateUrl)) { + templateUrl = templateUrl(next.params); + } + templateUrl = $sce.getTrustedResourceUrl(templateUrl); + if (angular.isDefined(templateUrl)) { + next.loadedTemplateUrl = templateUrl; + template = $http.get(templateUrl, {cache: $templateCache}). + then(function(response) { return response.data; }); + } + } + if (angular.isDefined(template)) { + locals['$template'] = template; + } + return $q.all(locals); + } + }). + // after route change + then(function(locals) { + if (next == $route.current) { + if (next) { + next.locals = locals; + angular.copy(next.params, $routeParams); + } + $rootScope.$broadcast('$routeChangeSuccess', next, last); + } + }, function(error) { + if (next == $route.current) { + $rootScope.$broadcast('$routeChangeError', next, last, error); + } + }); + } + } + + + /** + * @returns {Object} the current active route, by matching it against the URL + */ + function parseRoute() { + // Match a route + var params, match; + angular.forEach(routes, function(route, path) { + if (!match && (params = switchRouteMatcher($location.path(), route))) { + match = inherit(route, { + params: angular.extend({}, $location.search(), params), + pathParams: params}); + match.$$route = route; + } + }); + // No route matched; fallback to "otherwise" route + return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}}); + } + + /** + * @returns {string} interpolation of the redirect path with the parameters + */ + function interpolate(string, params) { + var result = []; + angular.forEach((string||'').split(':'), function(segment, i) { + if (i === 0) { + result.push(segment); + } else { + var segmentMatch = segment.match(/(\w+)(.*)/); + var key = segmentMatch[1]; + result.push(params[key]); + result.push(segmentMatch[2] || ''); + delete params[key]; + } + }); + return result.join(''); + } + }]; +} + +ngRouteModule.provider('$routeParams', $RouteParamsProvider); + + +/** + * @ngdoc service + * @name $routeParams + * @requires $route + * + * @description + * The `$routeParams` service allows you to retrieve the current set of route parameters. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * The route parameters are a combination of {@link ng.$location `$location`}'s + * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}. + * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched. + * + * In case of parameter name collision, `path` params take precedence over `search` params. + * + * The service guarantees that the identity of the `$routeParams` object will remain unchanged + * (but its properties will likely change) even when a route change occurs. + * + * Note that the `$routeParams` are only updated *after* a route change completes successfully. + * This means that you cannot rely on `$routeParams` being correct in route resolve functions. + * Instead you can use `$route.current.params` to access the new route's parameters. + * + * @example + * ```js + * // Given: + * // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby + * // Route: /Chapter/:chapterId/Section/:sectionId + * // + * // Then + * $routeParams ==> {chapterId:1, sectionId:2, search:'moby'} + * ``` + */ +function $RouteParamsProvider() { + this.$get = function() { return {}; }; +} + +ngRouteModule.directive('ngView', ngViewFactory); +ngRouteModule.directive('ngView', ngViewFillContentFactory); + + +/** + * @ngdoc directive + * @name ngView + * @restrict ECA + * + * @description + * # Overview + * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by + * including the rendered template of the current route into the main layout (`index.html`) file. + * Every time the current route changes, the included view changes with it according to the + * configuration of the `$route` service. + * + * Requires the {@link ngRoute `ngRoute`} module to be installed. + * + * @animations + * enter - animation is used to bring new content into the browser. + * leave - animation is used to animate existing content away. + * + * The enter and leave animation occur concurrently. + * + * @scope + * @priority 400 + * @param {string=} onload Expression to evaluate whenever the view updates. + * + * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll + * $anchorScroll} to scroll the viewport after the view is updated. + * + * - If the attribute is not set, disable scrolling. + * - If the attribute is set without value, enable scrolling. + * - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated + * as an expression yields a truthy value. + * @example + + +
+ Choose: + Moby | + Moby: Ch1 | + Gatsby | + Gatsby: Ch4 | + Scarlet Letter
+ +
+
+
+
+ +
$location.path() = {{main.$location.path()}}
+
$route.current.templateUrl = {{main.$route.current.templateUrl}}
+
$route.current.params = {{main.$route.current.params}}
+
$route.current.scope.name = {{main.$route.current.scope.name}}
+
$routeParams = {{main.$routeParams}}
+
+
+ + +
+ controller: {{book.name}}
+ Book Id: {{book.params.bookId}}
+
+
+ + +
+ controller: {{chapter.name}}
+ Book Id: {{chapter.params.bookId}}
+ Chapter Id: {{chapter.params.chapterId}} +
+
+ + + .view-animate-container { + position:relative; + height:100px!important; + position:relative; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; + } + + .view-animate { + padding:10px; + } + + .view-animate.ng-enter, .view-animate.ng-leave { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s; + + display:block; + width:100%; + border-left:1px solid black; + + position:absolute; + top:0; + left:0; + right:0; + bottom:0; + padding:10px; + } + + .view-animate.ng-enter { + left:100%; + } + .view-animate.ng-enter.ng-enter-active { + left:0; + } + .view-animate.ng-leave.ng-leave-active { + left:-100%; + } + + + + angular.module('ngViewExample', ['ngRoute', 'ngAnimate']) + .config(['$routeProvider', '$locationProvider', + function($routeProvider, $locationProvider) { + $routeProvider + .when('/Book/:bookId', { + templateUrl: 'book.html', + controller: 'BookCtrl', + controllerAs: 'book' + }) + .when('/Book/:bookId/ch/:chapterId', { + templateUrl: 'chapter.html', + controller: 'ChapterCtrl', + controllerAs: 'chapter' + }); + + // configure html5 to get links working on jsfiddle + $locationProvider.html5Mode(true); + }]) + .controller('MainCtrl', ['$route', '$routeParams', '$location', + function($route, $routeParams, $location) { + this.$route = $route; + this.$location = $location; + this.$routeParams = $routeParams; + }]) + .controller('BookCtrl', ['$routeParams', function($routeParams) { + this.name = "BookCtrl"; + this.params = $routeParams; + }]) + .controller('ChapterCtrl', ['$routeParams', function($routeParams) { + this.name = "ChapterCtrl"; + this.params = $routeParams; + }]); + + + + + it('should load and compile correct template', function() { + element(by.linkText('Moby: Ch1')).click(); + var content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: ChapterCtrl/); + expect(content).toMatch(/Book Id\: Moby/); + expect(content).toMatch(/Chapter Id\: 1/); + + element(by.partialLinkText('Scarlet')).click(); + + content = element(by.css('[ng-view]')).getText(); + expect(content).toMatch(/controller\: BookCtrl/); + expect(content).toMatch(/Book Id\: Scarlet/); + }); + +
+ */ + + +/** + * @ngdoc event + * @name ngView#$viewContentLoaded + * @eventType emit on the current ngView scope + * @description + * Emitted every time the ngView content is reloaded. + */ +ngViewFactory.$inject = ['$route', '$anchorScroll', '$animate']; +function ngViewFactory( $route, $anchorScroll, $animate) { + return { + restrict: 'ECA', + terminal: true, + priority: 400, + transclude: 'element', + link: function(scope, $element, attr, ctrl, $transclude) { + var currentScope, + currentElement, + previousElement, + autoScrollExp = attr.autoscroll, + onloadExp = attr.onload || ''; + + scope.$on('$routeChangeSuccess', update); + update(); + + function cleanupLastView() { + if(previousElement) { + previousElement.remove(); + previousElement = null; + } + if(currentScope) { + currentScope.$destroy(); + currentScope = null; + } + if(currentElement) { + $animate.leave(currentElement, function() { + previousElement = null; + }); + previousElement = currentElement; + currentElement = null; + } + } + + function update() { + var locals = $route.current && $route.current.locals, + template = locals && locals.$template; + + if (angular.isDefined(template)) { + var newScope = scope.$new(); + var current = $route.current; + + // Note: This will also link all children of ng-view that were contained in the original + // html. If that content contains controllers, ... they could pollute/change the scope. + // However, using ng-view on an element with additional content does not make sense... + // Note: We can't remove them in the cloneAttchFn of $transclude as that + // function is called before linking the content, which would apply child + // directives to non existing elements. + var clone = $transclude(newScope, function(clone) { + $animate.enter(clone, null, currentElement || $element, function onNgViewEnter () { + if (angular.isDefined(autoScrollExp) + && (!autoScrollExp || scope.$eval(autoScrollExp))) { + $anchorScroll(); + } + }); + cleanupLastView(); + }); + + currentElement = clone; + currentScope = current.scope = newScope; + currentScope.$emit('$viewContentLoaded'); + currentScope.$eval(onloadExp); + } else { + cleanupLastView(); + } + } + } + }; +} + +// This directive is called during the $transclude call of the first `ngView` directive. +// It will replace and compile the content of the element with the loaded template. +// We need this directive so that the element content is already filled when +// the link function of another directive on the same element as ngView +// is called. +ngViewFillContentFactory.$inject = ['$compile', '$controller', '$route']; +function ngViewFillContentFactory($compile, $controller, $route) { + return { + restrict: 'ECA', + priority: -400, + link: function(scope, $element) { + var current = $route.current, + locals = current.locals; + + $element.html(locals.$template); + + var link = $compile($element.contents()); + + if (current.controller) { + locals.$scope = scope; + var controller = $controller(current.controller, locals); + if (current.controllerAs) { + scope[current.controllerAs] = controller; + } + $element.data('$ngControllerController', controller); + $element.children().data('$ngControllerController', controller); + } + + link(scope); + } + }; +} + + +})(window, window.angular); diff --git a/app/bower_components/angular-route/angular-route.min.js b/app/bower_components/angular-route/angular-route.min.js new file mode 100644 index 0000000..c831a02 --- /dev/null +++ b/app/bower_components/angular-route/angular-route.min.js @@ -0,0 +1,14 @@ +/* + AngularJS v1.2.15 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(n,e,A){'use strict';function x(s,g,k){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,w){function y(){p&&(p.remove(),p=null);h&&(h.$destroy(),h=null);l&&(k.leave(l,function(){p=null}),p=l,l=null)}function v(){var b=s.current&&s.current.locals;if(e.isDefined(b&&b.$template)){var b=a.$new(),d=s.current;l=w(b,function(d){k.enter(d,null,l||c,function(){!e.isDefined(t)||t&&!a.$eval(t)||g()});y()});h=d.scope=b;h.$emit("$viewContentLoaded");h.$eval(u)}else y()} +var h,l,p,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",v);v()}}}function z(e,g,k){return{restrict:"ECA",priority:-400,link:function(a,c){var b=k.current,f=b.locals;c.html(f.$template);var w=e(c.contents());b.controller&&(f.$scope=a,f=g(b.controller,f),b.controllerAs&&(a[b.controllerAs]=f),c.data("$ngControllerController",f),c.children().data("$ngControllerController",f));w(a)}}}n=e.module("ngRoute",["ng"]).provider("$route",function(){function s(a,c){return e.extend(new (e.extend(function(){}, +{prototype:a})),c)}function g(a,e){var b=e.caseInsensitiveMatch,f={originalPath:a,regexp:a},k=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(a,e,b,c){a="?"===c?c:null;c="*"===c?c:null;k.push({name:b,optional:!!a});e=e||"";return""+(a?"":e)+"(?:"+(a?e:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=RegExp("^"+a+"$",b?"i":"");return f}var k={};this.when=function(a,c){k[a]=e.extend({reloadOnSearch:!0},c,a&&g(a,c));if(a){var b= +"/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";k[b]=e.extend({redirectTo:a},g(b,c))}return this};this.otherwise=function(a){this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$http","$templateCache","$sce",function(a,c,b,f,g,n,v,h){function l(){var d=p(),m=r.current;if(d&&m&&d.$$route===m.$$route&&e.equals(d.pathParams,m.pathParams)&&!d.reloadOnSearch&&!u)m.params=d.params,e.copy(m.params,b),a.$broadcast("$routeUpdate",m);else if(d||m)u=!1,a.$broadcast("$routeChangeStart", +d,m),(r.current=d)&&d.redirectTo&&(e.isString(d.redirectTo)?c.path(t(d.redirectTo,d.params)).search(d.params).replace():c.url(d.redirectTo(d.pathParams,c.path(),c.search())).replace()),f.when(d).then(function(){if(d){var a=e.extend({},d.resolve),c,b;e.forEach(a,function(d,c){a[c]=e.isString(d)?g.get(d):g.invoke(d)});e.isDefined(c=d.template)?e.isFunction(c)&&(c=c(d.params)):e.isDefined(b=d.templateUrl)&&(e.isFunction(b)&&(b=b(d.params)),b=h.getTrustedResourceUrl(b),e.isDefined(b)&&(d.loadedTemplateUrl= +b,c=n.get(b,{cache:v}).then(function(a){return a.data})));e.isDefined(c)&&(a.$template=c);return f.all(a)}}).then(function(c){d==r.current&&(d&&(d.locals=c,e.copy(d.params,b)),a.$broadcast("$routeChangeSuccess",d,m))},function(c){d==r.current&&a.$broadcast("$routeChangeError",d,m,c)})}function p(){var a,b;e.forEach(k,function(f,k){var q;if(q=!b){var g=c.path();q=f.keys;var l={};if(f.regexp)if(g=f.regexp.exec(g)){for(var h=1,p=g.length;h` to your `index.html`: + +```html + +``` + +And add `ngSanitize` as a dependency for your app: + +```javascript +angular.module('myApp', ['ngSanitize']); +``` + +## Documentation + +Documentation is available on the +[AngularJS docs site](http://docs.angularjs.org/api/ngSanitize). + +## License + +The MIT License + +Copyright (c) 2010-2012 Google, Inc. http://angularjs.org + +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/bower_components/angular-sanitize/angular-sanitize.js b/app/bower_components/angular-sanitize/angular-sanitize.js new file mode 100644 index 0000000..9d0c947 --- /dev/null +++ b/app/bower_components/angular-sanitize/angular-sanitize.js @@ -0,0 +1,624 @@ +/** + * @license AngularJS v1.2.15 + * (c) 2010-2014 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular, undefined) {'use strict'; + +var $sanitizeMinErr = angular.$$minErr('$sanitize'); + +/** + * @ngdoc module + * @name ngSanitize + * @description + * + * # ngSanitize + * + * The `ngSanitize` module provides functionality to sanitize HTML. + * + * + *
+ * + * See {@link ngSanitize.$sanitize `$sanitize`} for usage. + */ + +/* + * HTML Parser By Misko Hevery (misko@hevery.com) + * based on: HTML Parser By John Resig (ejohn.org) + * Original code by Erik Arvidsson, Mozilla Public License + * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js + * + * // Use like so: + * htmlParser(htmlString, { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + */ + + +/** + * @ngdoc service + * @name $sanitize + * @function + * + * @description + * The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are + * then serialized back to properly escaped html string. This means that no unsafe input can make + * it into the returned string, however, since our parser is more strict than a typical browser + * parser, it's possible that some obscure input, which would be recognized as valid HTML by a + * browser, won't make it through the sanitizer. + * The whitelist is configured using the functions `aHrefSanitizationWhitelist` and + * `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider `$compileProvider`}. + * + * @param {string} html Html input. + * @returns {string} Sanitized html. + * + * @example + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html="snippet">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
<div ng-bind-html="deliberatelyTrustDangerousSnippet()">
+</div>
+
ng-bindAutomatically escapes
<div ng-bind="snippet">
</div>
+
+
+ + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

an html\nclick here\nsnippet

'); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

an html\n" + + "click here\n" + + "snippet

"); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); +
+
+ */ +function $SanitizeProvider() { + this.$get = ['$$sanitizeUri', function($$sanitizeUri) { + return function(html) { + var buf = []; + htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) { + return !/^unsafe/.test($$sanitizeUri(uri, isImage)); + })); + return buf.join(''); + }; + }]; +} + +function sanitizeText(chars) { + var buf = []; + var writer = htmlSanitizeWriter(buf, angular.noop); + writer.chars(chars); + return buf.join(''); +} + + +// Regular Expressions for parsing tags and attributes +var START_TAG_REGEXP = + /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/, + END_TAG_REGEXP = /^<\s*\/\s*([\w:-]+)[^>]*>/, + ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g, + BEGIN_TAG_REGEXP = /^/g, + DOCTYPE_REGEXP = /]*?)>/i, + CDATA_REGEXP = //g, + // Match everything outside of normal chars and " (quote character) + NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g; + + +// Good source of info about elements and attributes +// http://dev.w3.org/html5/spec/Overview.html#semantics +// http://simon.html5.org/html-elements + +// Safe Void Elements - HTML5 +// http://dev.w3.org/html5/spec/Overview.html#void-elements +var voidElements = makeMap("area,br,col,hr,img,wbr"); + +// Elements that you can, intentionally, leave open (and which close themselves) +// http://dev.w3.org/html5/spec/Overview.html#optional-tags +var optionalEndTagBlockElements = makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), + optionalEndTagInlineElements = makeMap("rp,rt"), + optionalEndTagElements = angular.extend({}, + optionalEndTagInlineElements, + optionalEndTagBlockElements); + +// Safe Block Elements - HTML5 +var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("address,article," + + "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," + + "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")); + +// Inline Elements - HTML5 +var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("a,abbr,acronym,b," + + "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," + + "samp,small,span,strike,strong,sub,sup,time,tt,u,var")); + + +// Special Elements (can contain anything) +var specialElements = makeMap("script,style"); + +var validElements = angular.extend({}, + voidElements, + blockElements, + inlineElements, + optionalEndTagElements); + +//Attributes that have href and hence need to be sanitized +var uriAttrs = makeMap("background,cite,href,longdesc,src,usemap"); +var validAttrs = angular.extend({}, uriAttrs, makeMap( + 'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+ + 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+ + 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+ + 'scope,scrolling,shape,size,span,start,summary,target,title,type,'+ + 'valign,value,vspace,width')); + +function makeMap(str) { + var obj = {}, items = str.split(','), i; + for (i = 0; i < items.length; i++) obj[items[i]] = true; + return obj; +} + + +/** + * @example + * htmlParser(htmlString, { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + * @param {string} html string + * @param {object} handler + */ +function htmlParser( html, handler ) { + var index, chars, match, stack = [], last = html; + stack.last = function() { return stack[ stack.length - 1 ]; }; + + while ( html ) { + chars = true; + + // Make sure we're not in a script or style element + if ( !stack.last() || !specialElements[ stack.last() ] ) { + + // Comment + if ( html.indexOf("", index) === index) { + if (handler.comment) handler.comment( html.substring( 4, index ) ); + html = html.substring( index + 3 ); + chars = false; + } + // DOCTYPE + } else if ( DOCTYPE_REGEXP.test(html) ) { + match = html.match( DOCTYPE_REGEXP ); + + if ( match ) { + html = html.replace( match[0], ''); + chars = false; + } + // end tag + } else if ( BEGING_END_TAGE_REGEXP.test(html) ) { + match = html.match( END_TAG_REGEXP ); + + if ( match ) { + html = html.substring( match[0].length ); + match[0].replace( END_TAG_REGEXP, parseEndTag ); + chars = false; + } + + // start tag + } else if ( BEGIN_TAG_REGEXP.test(html) ) { + match = html.match( START_TAG_REGEXP ); + + if ( match ) { + html = html.substring( match[0].length ); + match[0].replace( START_TAG_REGEXP, parseStartTag ); + chars = false; + } + } + + if ( chars ) { + index = html.indexOf("<"); + + var text = index < 0 ? html : html.substring( 0, index ); + html = index < 0 ? "" : html.substring( index ); + + if (handler.chars) handler.chars( decodeEntities(text) ); + } + + } else { + html = html.replace(new RegExp("(.*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'), + function(all, text){ + text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1"); + + if (handler.chars) handler.chars( decodeEntities(text) ); + + return ""; + }); + + parseEndTag( "", stack.last() ); + } + + if ( html == last ) { + throw $sanitizeMinErr('badparse', "The sanitizer was unable to parse the following block " + + "of html: {0}", html); + } + last = html; + } + + // Clean up any remaining tags + parseEndTag(); + + function parseStartTag( tag, tagName, rest, unary ) { + tagName = angular.lowercase(tagName); + if ( blockElements[ tagName ] ) { + while ( stack.last() && inlineElements[ stack.last() ] ) { + parseEndTag( "", stack.last() ); + } + } + + if ( optionalEndTagElements[ tagName ] && stack.last() == tagName ) { + parseEndTag( "", tagName ); + } + + unary = voidElements[ tagName ] || !!unary; + + if ( !unary ) + stack.push( tagName ); + + var attrs = {}; + + rest.replace(ATTR_REGEXP, + function(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) { + var value = doubleQuotedValue + || singleQuotedValue + || unquotedValue + || ''; + + attrs[name] = decodeEntities(value); + }); + if (handler.start) handler.start( tagName, attrs, unary ); + } + + function parseEndTag( tag, tagName ) { + var pos = 0, i; + tagName = angular.lowercase(tagName); + if ( tagName ) + // Find the closest opened tag of the same type + for ( pos = stack.length - 1; pos >= 0; pos-- ) + if ( stack[ pos ] == tagName ) + break; + + if ( pos >= 0 ) { + // Close all the open elements, up the stack + for ( i = stack.length - 1; i >= pos; i-- ) + if (handler.end) handler.end( stack[ i ] ); + + // Remove the open elements from the stack + stack.length = pos; + } + } +} + +var hiddenPre=document.createElement("pre"); +var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/; +/** + * decodes all entities into regular string + * @param value + * @returns {string} A string with decoded entities. + */ +function decodeEntities(value) { + if (!value) { return ''; } + + // Note: IE8 does not preserve spaces at the start/end of innerHTML + // so we must capture them and reattach them afterward + var parts = spaceRe.exec(value); + var spaceBefore = parts[1]; + var spaceAfter = parts[3]; + var content = parts[2]; + if (content) { + hiddenPre.innerHTML=content.replace(//g, '>'); +} + +/** + * create an HTML/XML writer which writes to buffer + * @param {Array} buf use buf.jain('') to get out sanitized html string + * @returns {object} in the form of { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * } + */ +function htmlSanitizeWriter(buf, uriValidator){ + var ignore = false; + var out = angular.bind(buf, buf.push); + return { + start: function(tag, attrs, unary){ + tag = angular.lowercase(tag); + if (!ignore && specialElements[tag]) { + ignore = tag; + } + if (!ignore && validElements[tag] === true) { + out('<'); + out(tag); + angular.forEach(attrs, function(value, key){ + var lkey=angular.lowercase(key); + var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background'); + if (validAttrs[lkey] === true && + (uriAttrs[lkey] !== true || uriValidator(value, isImage))) { + out(' '); + out(key); + out('="'); + out(encodeEntities(value)); + out('"'); + } + }); + out(unary ? '/>' : '>'); + } + }, + end: function(tag){ + tag = angular.lowercase(tag); + if (!ignore && validElements[tag] === true) { + out(''); + } + if (tag == ignore) { + ignore = false; + } + }, + chars: function(chars){ + if (!ignore) { + out(encodeEntities(chars)); + } + } + }; +} + + +// define ngSanitize module and register $sanitize service +angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider); + +/* global sanitizeText: false */ + +/** + * @ngdoc filter + * @name linky + * @function + * + * @description + * Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and + * plain email address links. + * + * Requires the {@link ngSanitize `ngSanitize`} module to be installed. + * + * @param {string} text Input text. + * @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in. + * @returns {string} Html-linkified text. + * + * @usage + + * + * @example + + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithTarget | linky:'_blank'">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithTarget | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); + + + */ +angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) { + var LINKY_URL_REGEXP = + /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/, + MAILTO_REGEXP = /^mailto:/; + + return function(text, target) { + if (!text) return text; + var match; + var raw = text; + var html = []; + var url; + var i; + while ((match = raw.match(LINKY_URL_REGEXP))) { + // We can not end in these as they are sometimes found at the end of the sentence + url = match[0]; + // if we did not match ftp/http/mailto then assume mailto + if (match[2] == match[3]) url = 'mailto:' + url; + i = match.index; + addText(raw.substr(0, i)); + addLink(url, match[0].replace(MAILTO_REGEXP, '')); + raw = raw.substring(i + match[0].length); + } + addText(raw); + return $sanitize(html.join('')); + + function addText(text) { + if (!text) { + return; + } + html.push(sanitizeText(text)); + } + + function addLink(url, text) { + html.push(''); + addText(text); + html.push(''); + } + }; +}]); + + +})(window, window.angular); diff --git a/app/bower_components/angular-sanitize/angular-sanitize.min.js b/app/bower_components/angular-sanitize/angular-sanitize.min.js new file mode 100644 index 0000000..d69fe25 --- /dev/null +++ b/app/bower_components/angular-sanitize/angular-sanitize.min.js @@ -0,0 +1,14 @@ +/* + AngularJS v1.2.15 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(p,h,q){'use strict';function E(a){var e=[];s(e,h.noop).chars(a);return e.join("")}function k(a){var e={};a=a.split(",");var d;for(d=0;d=c;d--)e.end&&e.end(f[d]);f.length=c}}var b,g,f=[],l=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(f.last()&&x[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(b,a){a=a.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(r(a));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&e.comment(a.substring(4,b)),a=a.substring(b+3),g=!1);else if(y.test(a)){if(b=a.match(y))a= +a.replace(b[0],""),g=!1}else if(J.test(a)){if(b=a.match(z))a=a.substring(b[0].length),b[0].replace(z,c),g=!1}else K.test(a)&&(b=a.match(A))&&(a=a.substring(b[0].length),b[0].replace(A,d),g=!1);g&&(b=a.indexOf("<"),g=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(r(g)))}if(a==l)throw L("badparse",a);l=a}c()}function r(a){if(!a)return"";var e=M.exec(a);a=e[1];var d=e[3];if(e=e[2])n.innerHTML=e.replace(//g,">")}function s(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a);!d&&x[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(g,function(d,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==O[g]||!0===D[g]&&!e(d,k)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c(""));a==d&&(d=!1)},chars:function(a){d|| +c(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,z=/^<\s*\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^]*?)>/i,I=/]/,d=/^mailto:/;return function(c,b){function g(a){a&&m.push(E(a))}function f(a,c){m.push("');g(c);m.push("")}if(!c)return c;for(var l,k=c,m=[],n,p;l=k.match(e);)n=l[0],l[2]==l[3]&&(n="mailto:"+n),p=l.index,g(k.substr(0,p)),f(n,l[0].replace(d,"")),k=k.substring(p+l[0].length);g(k);return a(m.join(""))}}])})(window,window.angular); +//# sourceMappingURL=angular-sanitize.min.js.map diff --git a/app/bower_components/angular-sanitize/angular-sanitize.min.js.map b/app/bower_components/angular-sanitize/angular-sanitize.min.js.map new file mode 100644 index 0000000..dbf6b25 --- /dev/null +++ b/app/bower_components/angular-sanitize/angular-sanitize.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-sanitize.min.js", +"lineCount":13, +"mappings":"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", +"sources":["angular-sanitize.js"], +"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","makeMap","str","obj","items","split","i","length","htmlParser","html","handler","parseStartTag","tag","tagName","rest","unary","lowercase","blockElements","stack","last","inlineElements","parseEndTag","optionalEndTagElements","voidElements","push","attrs","replace","ATTR_REGEXP","match","name","doubleQuotedValue","singleQuotedValue","unquotedValue","decodeEntities","start","pos","end","index","stack.last","specialElements","RegExp","all","text","COMMENT_REGEXP","CDATA_REGEXP","indexOf","lastIndexOf","comment","substring","DOCTYPE_REGEXP","test","BEGING_END_TAGE_REGEXP","END_TAG_REGEXP","BEGIN_TAG_REGEXP","START_TAG_REGEXP","$sanitizeMinErr","value","parts","spaceRe","exec","spaceBefore","spaceAfter","content","hiddenPre","innerHTML","textContent","innerText","encodeEntities","NON_ALPHANUMERIC_REGEXP","charCodeAt","uriValidator","ignore","out","bind","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","extend","document","createElement","module","provider","$SanitizeProvider","$get","$$sanitizeUri","uri","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","target","addText","addLink","url","isDefined","raw","substr"] +} diff --git a/app/bower_components/angular-sanitize/bower.json b/app/bower_components/angular-sanitize/bower.json new file mode 100644 index 0000000..b18165a --- /dev/null +++ b/app/bower_components/angular-sanitize/bower.json @@ -0,0 +1,8 @@ +{ + "name": "angular-sanitize", + "version": "1.2.15", + "main": "./angular-sanitize.js", + "dependencies": { + "angular": "1.2.15" + } +} diff --git a/app/bower_components/angular-scenario/.bower.json b/app/bower_components/angular-scenario/.bower.json new file mode 100644 index 0000000..efe3999 --- /dev/null +++ b/app/bower_components/angular-scenario/.bower.json @@ -0,0 +1,18 @@ +{ + "name": "angular-scenario", + "version": "1.2.15", + "main": "./angular-scenario.js", + "dependencies": { + "angular": "1.2.15" + }, + "homepage": "https://github.com/angular/bower-angular-scenario", + "_release": "1.2.15", + "_resolution": { + "type": "version", + "tag": "v1.2.15", + "commit": "6aac81c1bfc9c78920e6e962a838f24ab85aa7cc" + }, + "_source": "git://github.com/angular/bower-angular-scenario.git", + "_target": "1.2.15", + "_originalSource": "angular-scenario" +} \ No newline at end of file diff --git a/app/bower_components/angular-scenario/README.md b/app/bower_components/angular-scenario/README.md new file mode 100644 index 0000000..7f80a8c --- /dev/null +++ b/app/bower_components/angular-scenario/README.md @@ -0,0 +1,42 @@ +# bower-angular-scenario + +This repo is for distribution on `bower`. The source for this module is in the +[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngScenario). +Please file issues and pull requests against that repo. + +## Install + +Install with `bower`: + +```shell +bower install angular-scenario +``` + +## Documentation + +Documentation is available on the +[AngularJS docs site](http://docs.angularjs.org/). + +## License + +The MIT License + +Copyright (c) 2010-2012 Google, Inc. http://angularjs.org + +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/bower_components/angular-scenario/angular-scenario.js b/app/bower_components/angular-scenario/angular-scenario.js new file mode 100644 index 0000000..a645dc7 --- /dev/null +++ b/app/bower_components/angular-scenario/angular-scenario.js @@ -0,0 +1,33168 @@ +/*! + * jQuery JavaScript Library v1.10.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03T13:48Z + */ +(function( window, undefined ) {'use strict'; + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +// + +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery(" + +
  • + +
  • + +
  • + +
  • + + + + + +
    + +
    +
    +
    + +

    + Print this page to PDF for the complete set of vectors. Or to use on the desktop, install FontAwesome.otf and copy + and paste the icons (not the unicode) directly into your designs. +

    + +
    +
    +
    + +
    +
    +
    + + + + +
    + +
    + + icon-glass + (&#xf000;) +
    + +
    + + icon-music + (&#xf001;) +
    + +
    + + icon-search + (&#xf002;) +
    + +
    + + icon-envelope-alt + (&#xf003;) +
    + +
    + + icon-heart + (&#xf004;) +
    + +
    + + icon-star + (&#xf005;) +
    + +
    + + icon-star-empty + (&#xf006;) +
    + +
    + + icon-user + (&#xf007;) +
    + +
    + + icon-film + (&#xf008;) +
    + +
    + + icon-th-large + (&#xf009;) +
    + +
    + + icon-th + (&#xf00a;) +
    + +
    + + icon-th-list + (&#xf00b;) +
    + +
    + + icon-ok + (&#xf00c;) +
    + +
    + + icon-remove + (&#xf00d;) +
    + +
    + + icon-zoom-in + (&#xf00e;) +
    + +
    + + icon-zoom-out + (&#xf010;) +
    + +
    + + icon-off + (&#xf011;) +
    + +
    + + icon-signal + (&#xf012;) +
    + +
    + + icon-cog + (&#xf013;) +
    + +
    + + icon-trash + (&#xf014;) +
    + +
    + + icon-home + (&#xf015;) +
    + +
    + + icon-file-alt + (&#xf016;) +
    + +
    + + icon-time + (&#xf017;) +
    + +
    + + icon-road + (&#xf018;) +
    + +
    + + icon-download-alt + (&#xf019;) +
    + +
    + + icon-download + (&#xf01a;) +
    + +
    + + icon-upload + (&#xf01b;) +
    + +
    + + icon-inbox + (&#xf01c;) +
    + +
    + + icon-play-circle + (&#xf01d;) +
    + +
    + + icon-repeat + (&#xf01e;) +
    + +
    + + icon-refresh + (&#xf021;) +
    + +
    + + icon-list-alt + (&#xf022;) +
    + +
    + + icon-lock + (&#xf023;) +
    + +
    + + icon-flag + (&#xf024;) +
    + +
    + + icon-headphones + (&#xf025;) +
    + +
    + + icon-volume-off + (&#xf026;) +
    + +
    + + icon-volume-down + (&#xf027;) +
    + +
    + + icon-volume-up + (&#xf028;) +
    + +
    + + icon-qrcode + (&#xf029;) +
    + +
    + + icon-barcode + (&#xf02a;) +
    + +
    + + icon-tag + (&#xf02b;) +
    + +
    + + icon-tags + (&#xf02c;) +
    + +
    + + icon-book + (&#xf02d;) +
    + +
    + + icon-bookmark + (&#xf02e;) +
    + +
    + + icon-print + (&#xf02f;) +
    + +
    + + icon-camera + (&#xf030;) +
    + +
    + + icon-font + (&#xf031;) +
    + +
    + + icon-bold + (&#xf032;) +
    + +
    + + icon-italic + (&#xf033;) +
    + +
    + + icon-text-height + (&#xf034;) +
    + +
    + + icon-text-width + (&#xf035;) +
    + +
    + + icon-align-left + (&#xf036;) +
    + +
    + + icon-align-center + (&#xf037;) +
    + +
    + + icon-align-right + (&#xf038;) +
    + +
    + + icon-align-justify + (&#xf039;) +
    + +
    + + icon-list + (&#xf03a;) +
    + +
    + + icon-indent-left + (&#xf03b;) +
    + +
    + + icon-indent-right + (&#xf03c;) +
    + +
    + + icon-facetime-video + (&#xf03d;) +
    + +
    + + icon-picture + (&#xf03e;) +
    + +
    + + icon-pencil + (&#xf040;) +
    + +
    + + icon-map-marker + (&#xf041;) +
    + +
    + + icon-adjust + (&#xf042;) +
    + +
    + + icon-tint + (&#xf043;) +
    + +
    + + icon-edit + (&#xf044;) +
    + +
    + + icon-share + (&#xf045;) +
    + +
    + + icon-check + (&#xf046;) +
    + +
    + + icon-move + (&#xf047;) +
    + +
    + + icon-step-backward + (&#xf048;) +
    + +
    + + icon-fast-backward + (&#xf049;) +
    + +
    + + icon-backward + (&#xf04a;) +
    + +
    + + icon-play + (&#xf04b;) +
    + +
    + + icon-pause + (&#xf04c;) +
    + +
    + + icon-stop + (&#xf04d;) +
    + +
    + + icon-forward + (&#xf04e;) +
    + +
    + + icon-fast-forward + (&#xf050;) +
    + +
    + + icon-step-forward + (&#xf051;) +
    + +
    + + icon-eject + (&#xf052;) +
    + +
    + + icon-chevron-left + (&#xf053;) +
    + +
    + + icon-chevron-right + (&#xf054;) +
    + +
    + + icon-plus-sign + (&#xf055;) +
    + +
    + + icon-minus-sign + (&#xf056;) +
    + +
    + + icon-remove-sign + (&#xf057;) +
    + +
    + + icon-ok-sign + (&#xf058;) +
    + +
    + + icon-question-sign + (&#xf059;) +
    + +
    + + icon-info-sign + (&#xf05a;) +
    + +
    + + icon-screenshot + (&#xf05b;) +
    + +
    + + icon-remove-circle + (&#xf05c;) +
    + +
    + + icon-ok-circle + (&#xf05d;) +
    + +
    + + icon-ban-circle + (&#xf05e;) +
    + +
    + + icon-arrow-left + (&#xf060;) +
    + +
    + + icon-arrow-right + (&#xf061;) +
    + +
    + + icon-arrow-up + (&#xf062;) +
    + +
    + + icon-arrow-down + (&#xf063;) +
    + +
    + + icon-share-alt + (&#xf064;) +
    + +
    + + icon-resize-full + (&#xf065;) +
    + +
    + + icon-resize-small + (&#xf066;) +
    + +
    + + icon-plus + (&#xf067;) +
    + +
    + + icon-minus + (&#xf068;) +
    + +
    + + icon-asterisk + (&#xf069;) +
    + +
    + + icon-exclamation-sign + (&#xf06a;) +
    + +
    + + icon-gift + (&#xf06b;) +
    + +
    + + icon-leaf + (&#xf06c;) +
    + +
    + + icon-fire + (&#xf06d;) +
    + +
    + + icon-eye-open + (&#xf06e;) +
    + +
    + + icon-eye-close + (&#xf070;) +
    + +
    + + icon-warning-sign + (&#xf071;) +
    + +
    + + icon-plane + (&#xf072;) +
    + +
    + + icon-calendar + (&#xf073;) +
    + +
    + + icon-random + (&#xf074;) +
    + +
    + + icon-comment + (&#xf075;) +
    + +
    + + icon-magnet + (&#xf076;) +
    + +
    + + icon-chevron-up + (&#xf077;) +
    + +
    + + icon-chevron-down + (&#xf078;) +
    + +
    + + icon-retweet + (&#xf079;) +
    + +
    + + icon-shopping-cart + (&#xf07a;) +
    + +
    + + icon-folder-close + (&#xf07b;) +
    + +
    + + icon-folder-open + (&#xf07c;) +
    + +
    + + icon-resize-vertical + (&#xf07d;) +
    + +
    + + icon-resize-horizontal + (&#xf07e;) +
    + +
    + + icon-bar-chart + (&#xf080;) +
    + +
    + + icon-twitter-sign + (&#xf081;) +
    + +
    + + icon-facebook-sign + (&#xf082;) +
    + +
    + + icon-camera-retro + (&#xf083;) +
    + +
    + + icon-key + (&#xf084;) +
    + +
    + + icon-cogs + (&#xf085;) +
    + +
    + + icon-comments + (&#xf086;) +
    + +
    + + icon-thumbs-up-alt + (&#xf087;) +
    + +
    + + icon-thumbs-down-alt + (&#xf088;) +
    + +
    + + icon-star-half + (&#xf089;) +
    + +
    + + icon-heart-empty + (&#xf08a;) +
    + +
    + + icon-signout + (&#xf08b;) +
    + +
    + + icon-linkedin-sign + (&#xf08c;) +
    + +
    + + icon-pushpin + (&#xf08d;) +
    + +
    + + icon-external-link + (&#xf08e;) +
    + +
    + + icon-signin + (&#xf090;) +
    + +
    + + icon-trophy + (&#xf091;) +
    + +
    + + icon-github-sign + (&#xf092;) +
    + +
    + + icon-upload-alt + (&#xf093;) +
    + +
    + + icon-lemon + (&#xf094;) +
    + +
    + + icon-phone + (&#xf095;) +
    + +
    + + icon-check-empty + (&#xf096;) +
    + +
    + + icon-bookmark-empty + (&#xf097;) +
    + +
    + + icon-phone-sign + (&#xf098;) +
    + +
    + + icon-twitter + (&#xf099;) +
    + +
    + + icon-facebook + (&#xf09a;) +
    + +
    + + icon-github + (&#xf09b;) +
    + +
    + + icon-unlock + (&#xf09c;) +
    + +
    + + icon-credit-card + (&#xf09d;) +
    + +
    + + icon-rss + (&#xf09e;) +
    + +
    + + icon-hdd + (&#xf0a0;) +
    + +
    + + icon-bullhorn + (&#xf0a1;) +
    + +
    + + icon-bell + (&#xf0a2;) +
    + +
    + + icon-certificate + (&#xf0a3;) +
    + +
    + + icon-hand-right + (&#xf0a4;) +
    + +
    + + icon-hand-left + (&#xf0a5;) +
    + +
    + + icon-hand-up + (&#xf0a6;) +
    + +
    + + icon-hand-down + (&#xf0a7;) +
    + +
    + + icon-circle-arrow-left + (&#xf0a8;) +
    + +
    + + icon-circle-arrow-right + (&#xf0a9;) +
    + +
    + + icon-circle-arrow-up + (&#xf0aa;) +
    + +
    + + icon-circle-arrow-down + (&#xf0ab;) +
    + +
    + + icon-globe + (&#xf0ac;) +
    + +
    + + icon-wrench + (&#xf0ad;) +
    + +
    + + icon-tasks + (&#xf0ae;) +
    + +
    + + icon-filter + (&#xf0b0;) +
    + +
    + + icon-briefcase + (&#xf0b1;) +
    + +
    + + icon-fullscreen + (&#xf0b2;) +
    + +
    + + icon-group + (&#xf0c0;) +
    + +
    + + icon-link + (&#xf0c1;) +
    + +
    + + icon-cloud + (&#xf0c2;) +
    + +
    + + icon-beaker + (&#xf0c3;) +
    + +
    + + icon-cut + (&#xf0c4;) +
    + +
    + + icon-copy + (&#xf0c5;) +
    + +
    + + icon-paper-clip + (&#xf0c6;) +
    + +
    + + icon-save + (&#xf0c7;) +
    + +
    + + icon-sign-blank + (&#xf0c8;) +
    + +
    + + icon-reorder + (&#xf0c9;) +
    + +
    + + icon-list-ul + (&#xf0ca;) +
    + +
    + + icon-list-ol + (&#xf0cb;) +
    + +
    + + icon-strikethrough + (&#xf0cc;) +
    + +
    + + icon-underline + (&#xf0cd;) +
    + +
    + + icon-table + (&#xf0ce;) +
    + +
    + + icon-magic + (&#xf0d0;) +
    + +
    + + icon-truck + (&#xf0d1;) +
    + +
    + + icon-pinterest + (&#xf0d2;) +
    + +
    + + icon-pinterest-sign + (&#xf0d3;) +
    + +
    + + icon-google-plus-sign + (&#xf0d4;) +
    + +
    + + icon-google-plus + (&#xf0d5;) +
    + +
    + + icon-money + (&#xf0d6;) +
    + +
    + + icon-caret-down + (&#xf0d7;) +
    + +
    + + icon-caret-up + (&#xf0d8;) +
    + +
    + + icon-caret-left + (&#xf0d9;) +
    + +
    + + icon-caret-right + (&#xf0da;) +
    + +
    + + icon-columns + (&#xf0db;) +
    + +
    + + icon-sort + (&#xf0dc;) +
    + +
    + + icon-sort-down + (&#xf0dd;) +
    + +
    + + icon-sort-up + (&#xf0de;) +
    + +
    + + icon-envelope + (&#xf0e0;) +
    + +
    + + icon-linkedin + (&#xf0e1;) +
    + +
    + + icon-undo + (&#xf0e2;) +
    + +
    + + icon-legal + (&#xf0e3;) +
    + +
    + + icon-dashboard + (&#xf0e4;) +
    + +
    + + icon-comment-alt + (&#xf0e5;) +
    + +
    + + icon-comments-alt + (&#xf0e6;) +
    + +
    + + icon-bolt + (&#xf0e7;) +
    + +
    + + icon-sitemap + (&#xf0e8;) +
    + +
    + + icon-umbrella + (&#xf0e9;) +
    + +
    + + icon-paste + (&#xf0ea;) +
    + +
    + + icon-lightbulb + (&#xf0eb;) +
    + +
    + + icon-exchange + (&#xf0ec;) +
    + +
    + + icon-cloud-download + (&#xf0ed;) +
    + +
    + + icon-cloud-upload + (&#xf0ee;) +
    + +
    + + icon-user-md + (&#xf0f0;) +
    + +
    + + icon-stethoscope + (&#xf0f1;) +
    + +
    + + icon-suitcase + (&#xf0f2;) +
    + +
    + + icon-bell-alt + (&#xf0f3;) +
    + +
    + + icon-coffee + (&#xf0f4;) +
    + +
    + + icon-food + (&#xf0f5;) +
    + +
    + + icon-file-text-alt + (&#xf0f6;) +
    + +
    + + icon-building + (&#xf0f7;) +
    + +
    + + icon-hospital + (&#xf0f8;) +
    + +
    + + icon-ambulance + (&#xf0f9;) +
    + +
    + + icon-medkit + (&#xf0fa;) +
    + +
    + + icon-fighter-jet + (&#xf0fb;) +
    + +
    + + icon-beer + (&#xf0fc;) +
    + +
    + + icon-h-sign + (&#xf0fd;) +
    + +
    + + icon-plus-sign-alt + (&#xf0fe;) +
    + +
    + + icon-double-angle-left + (&#xf100;) +
    + +
    + + icon-double-angle-right + (&#xf101;) +
    + +
    + + icon-double-angle-up + (&#xf102;) +
    + +
    + + icon-double-angle-down + (&#xf103;) +
    + +
    + + icon-angle-left + (&#xf104;) +
    + +
    + + icon-angle-right + (&#xf105;) +
    + +
    + + icon-angle-up + (&#xf106;) +
    + +
    + + icon-angle-down + (&#xf107;) +
    + +
    + + icon-desktop + (&#xf108;) +
    + +
    + + icon-laptop + (&#xf109;) +
    + +
    + + icon-tablet + (&#xf10a;) +
    + +
    + + icon-mobile-phone + (&#xf10b;) +
    + +
    + + icon-circle-blank + (&#xf10c;) +
    + +
    + + icon-quote-left + (&#xf10d;) +
    + +
    + + icon-quote-right + (&#xf10e;) +
    + +
    + + icon-spinner + (&#xf110;) +
    + +
    + + icon-circle + (&#xf111;) +
    + +
    + + icon-reply + (&#xf112;) +
    + +
    + + icon-github-alt + (&#xf113;) +
    + +
    + + icon-folder-close-alt + (&#xf114;) +
    + +
    + + icon-folder-open-alt + (&#xf115;) +
    + +
    + + icon-expand-alt + (&#xf116;) +
    + +
    + + icon-collapse-alt + (&#xf117;) +
    + +
    + + icon-smile + (&#xf118;) +
    + +
    + + icon-frown + (&#xf119;) +
    + +
    + + icon-meh + (&#xf11a;) +
    + +
    + + icon-gamepad + (&#xf11b;) +
    + +
    + + icon-keyboard + (&#xf11c;) +
    + +
    + + icon-flag-alt + (&#xf11d;) +
    + +
    + + icon-flag-checkered + (&#xf11e;) +
    + +
    + + icon-terminal + (&#xf120;) +
    + +
    + + icon-code + (&#xf121;) +
    + +
    + + icon-reply-all + (&#xf122;) +
    + +
    + + icon-mail-reply-all + (&#xf122;) +
    + +
    + + icon-star-half-empty + (&#xf123;) +
    + +
    + + icon-location-arrow + (&#xf124;) +
    + +
    + + icon-crop + (&#xf125;) +
    + +
    + + icon-code-fork + (&#xf126;) +
    + +
    + + icon-unlink + (&#xf127;) +
    + +
    + + icon-question + (&#xf128;) +
    + +
    + + icon-info + (&#xf129;) +
    + +
    + + icon-exclamation + (&#xf12a;) +
    + +
    + + icon-superscript + (&#xf12b;) +
    + +
    + + icon-subscript + (&#xf12c;) +
    + +
    + + icon-eraser + (&#xf12d;) +
    + +
    + + icon-puzzle-piece + (&#xf12e;) +
    + +
    + + icon-microphone + (&#xf130;) +
    + +
    + + icon-microphone-off + (&#xf131;) +
    + +
    + + icon-shield + (&#xf132;) +
    + +
    + + icon-calendar-empty + (&#xf133;) +
    + +
    + + icon-fire-extinguisher + (&#xf134;) +
    + +
    + + icon-rocket + (&#xf135;) +
    + +
    + + icon-maxcdn + (&#xf136;) +
    + +
    + + icon-chevron-sign-left + (&#xf137;) +
    + +
    + + icon-chevron-sign-right + (&#xf138;) +
    + +
    + + icon-chevron-sign-up + (&#xf139;) +
    + +
    + + icon-chevron-sign-down + (&#xf13a;) +
    + +
    + + icon-html5 + (&#xf13b;) +
    + +
    + + icon-css3 + (&#xf13c;) +
    + +
    + + icon-anchor + (&#xf13d;) +
    + +
    + + icon-unlock-alt + (&#xf13e;) +
    + +
    + + icon-bullseye + (&#xf140;) +
    + +
    + + icon-ellipsis-horizontal + (&#xf141;) +
    + +
    + + icon-ellipsis-vertical + (&#xf142;) +
    + +
    + + icon-rss-sign + (&#xf143;) +
    + +
    + + icon-play-sign + (&#xf144;) +
    + +
    + + icon-ticket + (&#xf145;) +
    + +
    + + icon-minus-sign-alt + (&#xf146;) +
    + +
    + + icon-check-minus + (&#xf147;) +
    + +
    + + icon-level-up + (&#xf148;) +
    + +
    + + icon-level-down + (&#xf149;) +
    + +
    + + icon-check-sign + (&#xf14a;) +
    + +
    + + icon-edit-sign + (&#xf14b;) +
    + +
    + + icon-external-link-sign + (&#xf14c;) +
    + +
    + + icon-share-sign + (&#xf14d;) +
    + +
    + + icon-compass + (&#xf14e;) +
    + +
    + + icon-collapse + (&#xf150;) +
    + +
    + + icon-collapse-top + (&#xf151;) +
    + +
    + + icon-expand + (&#xf152;) +
    + +
    + + icon-eur + (&#xf153;) +
    + +
    + + icon-gbp + (&#xf154;) +
    + +
    + + icon-usd + (&#xf155;) +
    + +
    + + icon-inr + (&#xf156;) +
    + +
    + + icon-jpy + (&#xf157;) +
    + +
    + + icon-cny + (&#xf158;) +
    + +
    + + icon-krw + (&#xf159;) +
    + +
    + + icon-btc + (&#xf15a;) +
    + +
    + + icon-file + (&#xf15b;) +
    + +
    + + icon-file-text + (&#xf15c;) +
    + +
    + + icon-sort-by-alphabet + (&#xf15d;) +
    + +
    + + icon-sort-by-alphabet-alt + (&#xf15e;) +
    + +
    + + icon-sort-by-attributes + (&#xf160;) +
    + +
    + + icon-sort-by-attributes-alt + (&#xf161;) +
    + +
    + + icon-sort-by-order + (&#xf162;) +
    + +
    + + icon-sort-by-order-alt + (&#xf163;) +
    + +
    + + icon-thumbs-up + (&#xf164;) +
    + +
    + + icon-thumbs-down + (&#xf165;) +
    + +
    + + icon-youtube-sign + (&#xf166;) +
    + +
    + + icon-youtube + (&#xf167;) +
    + +
    + + icon-xing + (&#xf168;) +
    + +
    + + icon-xing-sign + (&#xf169;) +
    + +
    + + icon-youtube-play + (&#xf16a;) +
    + +
    + + icon-dropbox + (&#xf16b;) +
    + +
    + + icon-stackexchange + (&#xf16c;) +
    + +
    + + icon-instagram + (&#xf16d;) +
    + +
    + + icon-flickr + (&#xf16e;) +
    + +
    + + icon-adn + (&#xf170;) +
    + +
    + + icon-bitbucket + (&#xf171;) +
    + +
    + + icon-bitbucket-sign + (&#xf172;) +
    + +
    + + icon-tumblr + (&#xf173;) +
    + +
    + + icon-tumblr-sign + (&#xf174;) +
    + +
    + + icon-long-arrow-down + (&#xf175;) +
    + +
    + + icon-long-arrow-up + (&#xf176;) +
    + +
    + + icon-long-arrow-left + (&#xf177;) +
    + +
    + + icon-long-arrow-right + (&#xf178;) +
    + +
    + + icon-apple + (&#xf179;) +
    + +
    + + icon-windows + (&#xf17a;) +
    + +
    + + icon-android + (&#xf17b;) +
    + +
    + + icon-linux + (&#xf17c;) +
    + +
    + + icon-dribbble + (&#xf17d;) +
    + +
    + + icon-skype + (&#xf17e;) +
    + +
    + + icon-foursquare + (&#xf180;) +
    + +
    + + icon-trello + (&#xf181;) +
    + +
    + + icon-female + (&#xf182;) +
    + +
    + + icon-male + (&#xf183;) +
    + +
    + + icon-gittip + (&#xf184;) +
    + +
    + + icon-sun + (&#xf185;) +
    + +
    + + icon-moon + (&#xf186;) +
    + +
    + + icon-archive + (&#xf187;) +
    + +
    + + icon-bug + (&#xf188;) +
    + +
    + + icon-vk + (&#xf189;) +
    + +
    + + icon-weibo + (&#xf18a;) +
    + +
    + + icon-renren + (&#xf18b;) +
    + +
    + +
    + +
    + + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/community/index.html b/app/bower_components/font-awesome/src/3.2.1/community/index.html new file mode 100644 index 0000000..264a015 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/community/index.html @@ -0,0 +1,354 @@ + + + + + + + + + + The Font Awesome Community + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +

      Community

    +

    Lots of ways to get involved with Font Awesome

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

    + Font Awesome has a vibrant community of folks helping each other out. You can + get support, + report bugs, + request new icons, + submit pull requests, and + check upcoming milestones. +

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

    + Having trouble getting Font Awesome up and running? Something not working the way you think it should? I hate that + I don't have time to answer Font Awesome support emails anymore. So here are some things you might wanna do: +

    +
      +
    1. + Make sure you've read the latest version of how to get started. + It's been updated recently to make Font Awesome even easier to use. +
    2. +
    3. + Check out the existing questions tagged as + Font Awesome over on Stack Overflow. Other folks might have had the same question you've had. +
    4. +
    5. + Can't find the answer to your question on Stack Overflow? + Ask a new question, then + send me an email and I might be able to take a look. +
    6. +
    +
    + +
    + +

    + Found a problem with Font Awesome? Feel free to submit an issue on the GitHub project. But please keep the following in mind: +

    +
      +
    1. Please be nice. Font Awesome is a happy place.
    2. +
    3. Please search to see if your icon request already exists.
    4. +
    5. + Before opening any issue, please read the generic issue + guidelines, by Nicolas Gallagher. +
    6. +
    7. + After doing everything above, feel free to + submit an issue. +
    8. +
    +
    + +
    + +

    + New icons mostly start as requests by the + Font Awesome community on GitHub. Want to request a new + icon? Here are some things to keep in mind: +

    +
      +
    1. Please be nice. Font Awesome is a happy place.
    2. +
    3. Please search to see if your icon request already exists.
    4. +
    5. + Please and thank you if you include the following: +
        +
      • + Title your new issue + Icon request: icon-name. +
      • +
      • Include a few use cases for your requested icon. How do you plan on using it?
      • +
      • Attach a single color image or two that represent the idea you're going for.
      • +
      +
    6. +
    7. + Concrete objects make good icons, since abstract concepts are, well, abstract. It's harder to make an icon + to represent happiness. It's easier to make a smiley face. +
    8. +
    +
    + +
    + + Found a way to solve a bug in Font Awesome? Want to contribute new features? Here are a few things to remember: +
      +
    1. Please submit all pull requests against *-wip branches.
    2. +
    3. All pull requests submitted against master will be sumarily closed and this guide referenced.
    4. +
    5. + After doing everything above, feel free to + submit a pull request. +
    6. +
    +
    + +
    + +

    + Want to keep up with what's planned for Font Awesome? Check out our + milestones on the GitHub project. +

    +
    + + +
    + +
    +
    +

    + Thanks to @robmadole and + @supercodepoet for icon design + review, advice, some Jekyll help, and being all around badass coders. +

    +
    +
    +

    + Thanks to @grantgordon and + @johnsmclay for developing and hosting + icnfnt, the best way to subset Font Awesome. +

    +
    +
    +

    + Thanks to MaxCDN for providing the excellent + BootstrapCDN, the fastest and easiest way to + get started with Font Awesome. +

    +
    +
    +
    + +
    + +

    + Hopefully you think Font Awesome is awesome. I've put hundreds of hours into the project to give back to the + open source community. If you'd like, here are a couple of ways you can tell me thanks for all my hard work. +

    +
    +
    +

    Tip me on Gittip

    +

    + Gittip is a great way to let developers know you appreciate their work. +

    +
    +
    +

    My Amazon Wish List

    +

    + Or pick something straight + from my wish list. Gift cards are great. +

    +
    +
    +
    + + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/design.html b/app/bower_components/font-awesome/src/3.2.1/design.html new file mode 100644 index 0000000..9c5830d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/design.html @@ -0,0 +1 @@ + diff --git a/app/bower_components/font-awesome/src/3.2.1/examples/index.html b/app/bower_components/font-awesome/src/3.2.1/examples/index.html new file mode 100644 index 0000000..c3d25ad --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/examples/index.html @@ -0,0 +1,671 @@ + + + + + + + + + + Font Awesome Examples + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +

      Examples

    +

    Lots of easy ways to use Font Awesome

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

    + After you get up and running, you can place Font Awesome icons just about + anywhere with the <i> tag. + Many examples appreciatively re-used from the Bootstrap documentation. +

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

    Rotated and Flipped Icons

    +
    +   normal
    +   icon-rotate-90
    +   icon-rotate-180
    +   icon-rotate-270
    +   icon-flip-horizontal
    +   icon-flip-vertical +
    +
    +
    +

    Stacked Icons

    +
    + + + + + icon-twitter on icon-check-empty
    + + + + + icon-flag on icon-circle
    + + + + + icon-terminal on icon-sign-blank +
    +
    +
    +

    Better Bulleted Lists

    +
    +
      +
    • New bulleted lists
    • +
    • Fix some old bugs
    • +
    • And deal with arbitrary
    • +
    • Font sizes better
    • +
    +
    +
    +
    +
    + + +
    + +
    +
    +

    Place Font Awesome icons just about anywhere with the <i> tag.

    +
    +
    +
    +
    + icon-camera-retro +
    +
    +
    <i class="icon-camera-retro"></i> icon-camera-retro
    +
    +
    Icon classes are echoed via CSS :before.
    +
    +
    +
    + +
    + +
    +
    +

    + To increase the size of icons relative to its container, use icon-large, icon-2x, + icon-3x, or icon-4x. +

    +
    +
    +

    + Increase the icon size by using the icon-large (33% increase), icon-2x, + icon-3x, or icon-4x classes. +

    +
    +
    +

    icon-camera-retro

    +

    icon-camera-retro

    +

    icon-camera-retro

    +

    icon-camera-retro

    +
    +
    +
    <p><i class="icon-camera-retro icon-large"></i> icon-camera-retro</p>
    +<p><i class="icon-camera-retro icon-2x"></i> icon-camera-retro</p>
    +<p><i class="icon-camera-retro icon-3x"></i> icon-camera-retro</p>
    +<p><i class="icon-camera-retro icon-4x"></i> icon-camera-retro</p>
    +
    +
    + If your icons are getting chopped off on top and bottom, make sure you have + sufficient line-height. +
    +
    +
    +
    + +
    + +
    +
    +

    + Use icon-border and pull-right or pull-left for easy pull quotes or + article graphics. +

    +
    +
    +
    + + Use a few of the new styles together, and you've got easy pull quotes or a great introductory article image. + Or spinning icons for loading and refreshing content. Or fun big icons in multi-line buttons. You can combine all + of them in any combination to get lots of new possibilities. +
    +
    <i class="icon-quote-left icon-4x pull-left icon-muted"></i>
    +Use a few of the new styles together ... lots of new possibilities.
    +
    +
    + + Use a few of the new styles together, and you've got easy pull quotes or a great introductory article image. + Or spinning icons for loading and refreshing content. Or fun big icons in multi-line buttons. You can combine all + of them in any combination to get lots of new possibilities. +
    +
    <i class="icon-flag icon-4x pull-left icon-border"></i>
    +Use a few of the new styles together ... lots of new possibilities.
    +
    +
    +
    +
    + +
    + +
    + +
    +

    + Font Awesome icons work great in buttons. You can even combine them with larger icon styles, + pull-right and pull-left, and icon-spin. +

    +
    <a class="btn" href="#">
    +  <i class="icon-repeat"></i> Reload</a>
    +<a class="btn btn-success" href="#">
    +  <i class="icon-shopping-cart icon-large"></i> Checkout</a>
    +<a class="btn btn-large btn-primary" href="#">
    +  <i class="icon-comment"></i> Comment</a>
    +<a class="btn btn-small btn-info" href="#">
    +  <i class="icon-info-sign"></i> Info</a>
    +<a class="btn btn-danger" href="#">
    +  <i class="icon-trash icon-large"></i> Delete</a>
    +<a class="btn btn-small" href="#">
    +  <i class="icon-cog"></i> Settings</a>
    +<a class="btn btn-large btn-danger" href="#">
    +  <i class="icon-flag icon-2x pull-left"></i> Font Awesome<br>Version 3.2.1</a>
    +<a class="btn btn-primary" href="#">
    +  <i class="icon-refresh icon-spin"></i> Synchronizing Content...</a>
    +
    +
    +
    +
    + +
    + +
    +
    +

    +

    + + + + +
    +

    +
    +
    +
    <div class="btn-group">
    +  <a class="btn" href="#"><i class="icon-align-left"></i></a>
    +  <a class="btn" href="#"><i class="icon-align-center"></i></a>
    +  <a class="btn" href="#"><i class="icon-align-right"></i></a>
    +  <a class="btn" href="#"><i class="icon-align-justify"></i></a>
    +</div>
    +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    <div class="btn-group open">
    +  <a class="btn btn-primary" href="#"><i class="icon-user"></i> User</a>
    +  <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
    +    <span class="icon-caret-down"></span></a>
    +  <ul class="dropdown-menu">
    +    <li><a href="#"><i class="icon-fixed-width icon-pencil"></i> Edit</a></li>
    +    <li><a href="#"><i class="icon-fixed-width icon-trash"></i> Delete</a></li>
    +    <li><a href="#"><i class="icon-fixed-width icon-ban-circle"></i> Ban</a></li>
    +    <li class="divider"></li>
    +    <li><a href="#"><i class="i"></i> Make admin</a></li>
    +  </ul>
    +</div>
    +
    +
    Don't forget to add the appropriate JavaScript to enable button dropdowns.
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
      +
    • Bulleted lists (like this one)
    • +
    • Buttons
    • +
    • Button groups
    • +
    • Navigation
    • +
    • Prepended form inputs
    • +
    • …and many more with custom CSS
    • +
    +
    +
    +

    Easily replace individual bullets.

    +
    <ul class="icons-ul">
    +  <li><i class="icon-li icon-ok"></i>Bulleted lists (like this one)</li>
    +  <li><i class="icon-li icon-ok"></i>Buttons</li>
    +  <li><i class="icon-li icon-ok"></i>Button groups</li>
    +  <li><i class="icon-li icon-ok"></i>Navigation</li>
    +  <li><i class="icon-li icon-ok"></i>Prepended form inputs</li>
    +  <li><i class="icon-li icon-ok"></i>&hellip;and many more with custom CSS</li>
    +</ul>
    +
    +
    Make sure to NOT include any whitespace after the icon declaration.
    +
    +
    +
    + + + +
    + +
    +
    +
    +
    + + +
    +
    + + +
    + +
    +
    +
    <form>
    +  <div class="input-prepend">
    +    <span class="add-on"><i class="icon-envelope"></i></span>
    +    <input class="span2" type="text" placeholder="Email address">
    +  </div>
    +  <div class="input-prepend">
    +    <span class="add-on"><i class="icon-key"></i></span>
    +    <input class="span2" type="password" placeholder="Password">
    +  </div>
    +</form>
    +
    +
    +
    +
    + +
    + +
    +
    + Use the icon-spin class to get any icon to rotate. Works well with icon-spinner and + icon-refresh. +
    +
    +
    + Spinner icon when loading content... +
    +
    <i class="icon-spinner icon-spin icon-large"></i> Spinner icon when loading content...
    +
    +

    + CSS3 animations aren't supported in IE7 - IE9. +

    +
    +
    +
    + +
    + +
    +
    + A set of classes that can be used to arbitrarily rotate and flip icons. +
    +
    +
    +   normal
    +   icon-rotate-90
    +   icon-rotate-180
    +   icon-rotate-270
    +   icon-flip-horizontal
    +   icon-flip-vertical +
    +
    <i class="icon-shield"></i>&nbsp; normal<br>
    +<i class="icon-shield icon-rotate-90"></i>&nbsp; icon-rotate-90<br>
    +<i class="icon-shield icon-rotate-180"></i>&nbsp; icon-rotate-180<br>
    +<i class="icon-shield icon-rotate-270"></i>&nbsp; icon-rotate-270<br>
    +<i class="icon-shield icon-flip-horizontal"></i>&nbsp; icon-flip-horizontal<br>
    +<i class="icon-shield icon-flip-vertical"></i>&nbsp; icon-flip-vertical
    +
    +

    + Rotating and flipping icons aren't yet supported in IE7. +

    +
    +
    +
    + +
    + +
    +
    + A method for easily stacking multiple icons. Use the icon-stack class on the parent and + icon-stack-base for the bottom icon. +
    +
    +
    + + + + + icon-twitter on icon-check-empty
    + + + + + icon-flag on icon-circle
    + + + + + icon-terminal on icon-sign-blank
    + + + + + icon-camera on icon-ban-circle +
    +
    <span class="icon-stack">
    +  <i class="icon-check-empty icon-stack-base"></i>
    +  <i class="icon-twitter"></i>
    +</span>
    +icon-twitter on icon-check-empty<br>
    +<span class="icon-stack">
    +  <i class="icon-circle icon-stack-base"></i>
    +  <i class="icon-flag icon-light"></i>
    +</span>
    +icon-flag on icon-circle<br>
    +<span class="icon-stack">
    +  <i class="icon-sign-blank icon-stack-base"></i>
    +  <i class="icon-terminal icon-light"></i>
    +</span>
    +icon-terminal on icon-sign-blank<br>
    +<span class="icon-stack">
    +  <i class="icon-camera"></i>
    +  <i class="icon-ban-circle icon-stack-base text-error"></i>
    +</span>
    +icon-camera on icon-ban-circle
    +
    +
    +
    +
    + +
    + +
    +
    +

    Anything you can do with CSS font styles, you can do with Font Awesome.

    +
    +
    +

    Star Ratings (inspired by CSS Tricks)

    +
    + + + +
    +
    +
    +
    + + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/get-started/index.html b/app/bower_components/font-awesome/src/3.2.1/get-started/index.html new file mode 100644 index 0000000..616f055 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/get-started/index.html @@ -0,0 +1,299 @@ + + + + + + + + + + Get Started with Font Awesome + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +

      Get Started

    +

    Easy ways to get Font Awesome 3.2.1 onto your website

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

    + Setting up Font Awesome can be as simple as adding two lines of code to your website, or you can be a pro and + customize the LESS yourself! Font Awesome even plays nicely with + Bootstrap! +

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

    Add Font Awesome + Bootstrap into your website with two lines of code. You don't even have to download or install anything!

    +
      +
    1. + Paste the following code into the <head> section of your site's HTML. +
      <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.no-icons.min.css" rel="stylesheet">
      +<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet">
      +
      +
      + Want to use Font Awesome by itself without Bootstrap? Just don't include the first line. +
      +
    2. +
    3. + Pat yourself on the back for your scalable-vector-icons-on-the-website + judo solution in two lines of code. +
    4. +
    5. + Check out the examples to start using Font Awesome! +
    6. +
    +
    + +
    + +

    Use this method to get the default Font Awesome CSS with the default Bootstrap CSS.

    +
      +
    1. Copy the font-awesome directory into your project.
    2. +
    3. + In the <head> of your html, reference the location to your font-awesome.min.css. +
      <link rel="stylesheet" href="path/to/bootstrap/css/bootstrap.min.css">
      +<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">
      +
      +
    4. +
    5. Check out the examples to start using Font Awesome!
    6. +
    +
    + +
    + +

    Use this method to customize Font Awesome and Bootstrap 2.3.2 using LESS.

    +
      +
    1. Copy the font-awesome directory into your project.
    2. +
    3. Open your project's bootstrap/bootstrap.less and replace +
      @import "sprites.less";
      +
      + with +
      @import "path/to/font-awesome/less/font-awesome.less";
      +
      +
    4. +
    5. + Open your project's font-awesome/variables.less and edit the @FontAwesomePath variable to point to your font directory. +
      @FontAwesomePath:   "../font";
      +
      +

      The font path is relative from your compiled CSS directory.

      +
    6. +
    7. Re-compile your LESS if using a static compiler. Otherwise, you should be good to go.
    8. +
    9. Check out the examples to start using Font Awesome!
    10. +
    +
    + +
    + +

    Font Awesome works just as well without Bootstrap.

    +
      +
    1. Copy the font-awesome directory into your project.
    2. +
    3. Follow the above directions and skip the Bootstrap parts.
    4. +
    5. Open your project's font-awesome.less or font-awesome.min.css and edit the font location to point it to your font directory (see above examples).
    6. +
    7. Check out the examples to start using Font Awesome!
    8. +
    +
    + +
    + +

    Font Awesome supports IE7. If you need it, you have my condolences.

    +
      +
    1. Get Font Awesome working properly in a modern browser.
    2. +
    3. Copy font-awesome-ie7.min.css into your project.
    4. +
    5. + In the <head> of your html, reference the location to your font-awesome-ie7.min.css. +
      <link rel="stylesheet" href="path/to/bootstrap/css/bootstrap.min.css">
      +<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">
      +<!--[if IE 7]>
      +  <link rel="stylesheet" href="path/to/font-awesome/css/font-awesome-ie7.min.css">
      +<![endif]-->
      +
      +
    6. +
    7. Go complain to whoever decided your project needs IE7 support.
    8. +
    +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/adjust/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/adjust/index.html new file mode 100644 index 0000000..54d203c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/adjust/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-adjust: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-adjust + + · + Unicode: f042 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-adjust +
    +
    +
    <i class="icon-adjust"></i> icon-adjust
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/adn/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/adn/index.html new file mode 100644 index 0000000..7b317e2 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/adn/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-adn: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-adn + + · + Unicode: f170 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-adn +
    +
    +
    <i class="icon-adn"></i> icon-adn
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/align-center/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/align-center/index.html new file mode 100644 index 0000000..6a3716b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/align-center/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-align-center: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-align-center + + · + Unicode: f037 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-align-center +
    +
    +
    <i class="icon-align-center"></i> icon-align-center
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/align-justify/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/align-justify/index.html new file mode 100644 index 0000000..9bdacbe --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/align-justify/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-align-justify: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-align-justify + + · + Unicode: f039 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-align-justify +
    +
    +
    <i class="icon-align-justify"></i> icon-align-justify
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/align-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/align-left/index.html new file mode 100644 index 0000000..651ea49 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/align-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-align-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-align-left + + · + Unicode: f036 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-align-left +
    +
    +
    <i class="icon-align-left"></i> icon-align-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/align-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/align-right/index.html new file mode 100644 index 0000000..a7ce0b3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/align-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-align-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-align-right + + · + Unicode: f038 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-align-right +
    +
    +
    <i class="icon-align-right"></i> icon-align-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ambulance/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ambulance/index.html new file mode 100644 index 0000000..128e161 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ambulance/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ambulance: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ambulance + + · + Unicode: f0f9 · + Created: v3.0 · + Categories: + + Medical Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ambulance +
    +
    +
    <i class="icon-ambulance"></i> icon-ambulance
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/anchor/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/anchor/index.html new file mode 100644 index 0000000..987d488 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/anchor/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-anchor: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-anchor + + · + Unicode: f13d · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-anchor +
    +
    +
    <i class="icon-anchor"></i> icon-anchor
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/android/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/android/index.html new file mode 100644 index 0000000..7e1abc6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/android/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-android: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-android + + · + Unicode: f17b · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-android +
    +
    +
    <i class="icon-android"></i> icon-android
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/angle-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/angle-down/index.html new file mode 100644 index 0000000..980e3f5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/angle-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-angle-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-angle-down + + · + Unicode: f107 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-angle-down +
    +
    +
    <i class="icon-angle-down"></i> icon-angle-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/angle-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/angle-left/index.html new file mode 100644 index 0000000..d8fd536 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/angle-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-angle-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-angle-left + + · + Unicode: f104 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-angle-left +
    +
    +
    <i class="icon-angle-left"></i> icon-angle-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/angle-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/angle-right/index.html new file mode 100644 index 0000000..53dbb4d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/angle-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-angle-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-angle-right + + · + Unicode: f105 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-angle-right +
    +
    +
    <i class="icon-angle-right"></i> icon-angle-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/angle-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/angle-up/index.html new file mode 100644 index 0000000..b7c4087 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/angle-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-angle-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-angle-up + + · + Unicode: f106 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-angle-up +
    +
    +
    <i class="icon-angle-up"></i> icon-angle-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/apple/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/apple/index.html new file mode 100644 index 0000000..0770f1d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/apple/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-apple: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-apple + + · + Unicode: f179 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-apple +
    +
    +
    <i class="icon-apple"></i> icon-apple
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/archive/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/archive/index.html new file mode 100644 index 0000000..5aebb33 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/archive/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-archive: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-archive + + · + Unicode: f187 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-archive +
    +
    +
    <i class="icon-archive"></i> icon-archive
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/arrow-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-down/index.html new file mode 100644 index 0000000..2e0c6ab --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-arrow-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-arrow-down + + · + Unicode: f063 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-arrow-down +
    +
    +
    <i class="icon-arrow-down"></i> icon-arrow-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/arrow-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-left/index.html new file mode 100644 index 0000000..50b8aa6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-arrow-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-arrow-left + + · + Unicode: f060 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-arrow-left +
    +
    +
    <i class="icon-arrow-left"></i> icon-arrow-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/arrow-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-right/index.html new file mode 100644 index 0000000..f1c899d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-arrow-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-arrow-right + + · + Unicode: f061 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-arrow-right +
    +
    +
    <i class="icon-arrow-right"></i> icon-arrow-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/arrow-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-up/index.html new file mode 100644 index 0000000..a242ca8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/arrow-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-arrow-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-arrow-up + + · + Unicode: f062 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-arrow-up +
    +
    +
    <i class="icon-arrow-up"></i> icon-arrow-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/asterisk/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/asterisk/index.html new file mode 100644 index 0000000..4ebfdea --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/asterisk/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-asterisk: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-asterisk + + · + Unicode: f069 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-asterisk +
    +
    +
    <i class="icon-asterisk"></i> icon-asterisk
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/backward/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/backward/index.html new file mode 100644 index 0000000..7859653 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/backward/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-backward: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-backward + + · + Unicode: f04a · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-backward +
    +
    +
    <i class="icon-backward"></i> icon-backward
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ban-circle/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ban-circle/index.html new file mode 100644 index 0000000..129111b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ban-circle/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ban-circle: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ban-circle + + · + Unicode: f05e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ban-circle +
    +
    +
    <i class="icon-ban-circle"></i> icon-ban-circle
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bar-chart/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bar-chart/index.html new file mode 100644 index 0000000..2c20d95 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bar-chart/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bar-chart: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bar-chart + + · + Unicode: f080 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bar-chart +
    +
    +
    <i class="icon-bar-chart"></i> icon-bar-chart
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/barcode/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/barcode/index.html new file mode 100644 index 0000000..2a5ca4e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/barcode/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-barcode: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-barcode + + · + Unicode: f02a · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-barcode +
    +
    +
    <i class="icon-barcode"></i> icon-barcode
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/beaker/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/beaker/index.html new file mode 100644 index 0000000..ba77123 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/beaker/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-beaker: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-beaker + + · + Unicode: f0c3 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-beaker +
    +
    +
    <i class="icon-beaker"></i> icon-beaker
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/beer/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/beer/index.html new file mode 100644 index 0000000..dcda703 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/beer/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-beer: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-beer + + · + Unicode: f0fc · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-beer +
    +
    +
    <i class="icon-beer"></i> icon-beer
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bell-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bell-alt/index.html new file mode 100644 index 0000000..0fbdd7d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bell-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bell-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bell-alt + + · + Unicode: f0f3 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bell-alt +
    +
    +
    <i class="icon-bell-alt"></i> icon-bell-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bell/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bell/index.html new file mode 100644 index 0000000..b8ffe83 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bell/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bell: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bell + + · + Unicode: f0a2 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bell +
    +
    +
    <i class="icon-bell"></i> icon-bell
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bitbucket-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bitbucket-sign/index.html new file mode 100644 index 0000000..e667aae --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bitbucket-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bitbucket-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bitbucket-sign + + · + Unicode: f172 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bitbucket-sign +
    +
    +
    <i class="icon-bitbucket-sign"></i> icon-bitbucket-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bitbucket/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bitbucket/index.html new file mode 100644 index 0000000..4ff1265 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bitbucket/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bitbucket: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bitbucket + + · + Unicode: f171 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bitbucket +
    +
    +
    <i class="icon-bitbucket"></i> icon-bitbucket
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bold/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bold/index.html new file mode 100644 index 0000000..69b1082 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bold/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bold: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bold + + · + Unicode: f032 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bold +
    +
    +
    <i class="icon-bold"></i> icon-bold
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bolt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bolt/index.html new file mode 100644 index 0000000..aa6e822 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bolt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bolt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bolt + + · + Unicode: f0e7 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bolt +
    +
    +
    <i class="icon-bolt"></i> icon-bolt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/book/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/book/index.html new file mode 100644 index 0000000..fb3298e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/book/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-book: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-book + + · + Unicode: f02d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-book +
    +
    +
    <i class="icon-book"></i> icon-book
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bookmark-empty/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bookmark-empty/index.html new file mode 100644 index 0000000..9fec923 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bookmark-empty/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bookmark-empty: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bookmark-empty + + · + Unicode: f097 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bookmark-empty +
    +
    +
    <i class="icon-bookmark-empty"></i> icon-bookmark-empty
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bookmark/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bookmark/index.html new file mode 100644 index 0000000..a490139 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bookmark/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bookmark: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bookmark + + · + Unicode: f02e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bookmark +
    +
    +
    <i class="icon-bookmark"></i> icon-bookmark
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/briefcase/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/briefcase/index.html new file mode 100644 index 0000000..65b5630 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/briefcase/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-briefcase: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-briefcase + + · + Unicode: f0b1 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-briefcase +
    +
    +
    <i class="icon-briefcase"></i> icon-briefcase
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/btc/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/btc/index.html new file mode 100644 index 0000000..09d5a47 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/btc/index.html @@ -0,0 +1,215 @@ + + + + + + + + + + icon-btc: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-btc + + · + Unicode: f15a · + Created: v3.2 · + Categories: + + Currency Icons, + + Brand Icons + + + + · Aliases: + + icon-bitcoin + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-btc +
    +
    +
    <i class="icon-btc"></i> icon-btc
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bug/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bug/index.html new file mode 100644 index 0000000..69dd499 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bug/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bug: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bug + + · + Unicode: f188 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bug +
    +
    +
    <i class="icon-bug"></i> icon-bug
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/building/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/building/index.html new file mode 100644 index 0000000..0d3ea79 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/building/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-building: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-building + + · + Unicode: f0f7 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-building +
    +
    +
    <i class="icon-building"></i> icon-building
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bullhorn/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bullhorn/index.html new file mode 100644 index 0000000..2a23949 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bullhorn/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bullhorn: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bullhorn + + · + Unicode: f0a1 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bullhorn +
    +
    +
    <i class="icon-bullhorn"></i> icon-bullhorn
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/bullseye/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/bullseye/index.html new file mode 100644 index 0000000..53411ef --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/bullseye/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-bullseye: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-bullseye + + · + Unicode: f140 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-bullseye +
    +
    +
    <i class="icon-bullseye"></i> icon-bullseye
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/calendar-empty/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/calendar-empty/index.html new file mode 100644 index 0000000..68c6e0b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/calendar-empty/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-calendar-empty: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-calendar-empty + + · + Unicode: f133 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-calendar-empty +
    +
    +
    <i class="icon-calendar-empty"></i> icon-calendar-empty
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/calendar/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/calendar/index.html new file mode 100644 index 0000000..dbc30d3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/calendar/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-calendar: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-calendar + + · + Unicode: f073 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-calendar +
    +
    +
    <i class="icon-calendar"></i> icon-calendar
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/camera-retro/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/camera-retro/index.html new file mode 100644 index 0000000..a193775 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/camera-retro/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-camera-retro: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-camera-retro + + · + Unicode: f083 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-camera-retro +
    +
    +
    <i class="icon-camera-retro"></i> icon-camera-retro
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/camera/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/camera/index.html new file mode 100644 index 0000000..3559519 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/camera/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-camera: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-camera + + · + Unicode: f030 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-camera +
    +
    +
    <i class="icon-camera"></i> icon-camera
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/caret-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/caret-down/index.html new file mode 100644 index 0000000..217b1c9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/caret-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-caret-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-caret-down + + · + Unicode: f0d7 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-caret-down +
    +
    +
    <i class="icon-caret-down"></i> icon-caret-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/caret-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/caret-left/index.html new file mode 100644 index 0000000..afdd042 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/caret-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-caret-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-caret-left + + · + Unicode: f0d9 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-caret-left +
    +
    +
    <i class="icon-caret-left"></i> icon-caret-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/caret-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/caret-right/index.html new file mode 100644 index 0000000..e73b7eb --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/caret-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-caret-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-caret-right + + · + Unicode: f0da · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-caret-right +
    +
    +
    <i class="icon-caret-right"></i> icon-caret-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/caret-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/caret-up/index.html new file mode 100644 index 0000000..6d1597a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/caret-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-caret-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-caret-up + + · + Unicode: f0d8 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-caret-up +
    +
    +
    <i class="icon-caret-up"></i> icon-caret-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/certificate/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/certificate/index.html new file mode 100644 index 0000000..3982634 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/certificate/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-certificate: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-certificate + + · + Unicode: f0a3 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-certificate +
    +
    +
    <i class="icon-certificate"></i> icon-certificate
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/check-empty/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/check-empty/index.html new file mode 100644 index 0000000..99c2238 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/check-empty/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-check-empty: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-check-empty + + · + Unicode: f096 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-unchecked + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-check-empty +
    +
    +
    <i class="icon-check-empty"></i> icon-check-empty
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/check-minus/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/check-minus/index.html new file mode 100644 index 0000000..f62ce73 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/check-minus/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-check-minus: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-check-minus + + · + Unicode: f147 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-check-minus +
    +
    +
    <i class="icon-check-minus"></i> icon-check-minus
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/check-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/check-sign/index.html new file mode 100644 index 0000000..6e9e4f0 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/check-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-check-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-check-sign + + · + Unicode: f14a · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-check-sign +
    +
    +
    <i class="icon-check-sign"></i> icon-check-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/check/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/check/index.html new file mode 100644 index 0000000..aaca7ea --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/check/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-check: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-check + + · + Unicode: f046 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-check +
    +
    +
    <i class="icon-check"></i> icon-check
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-down/index.html new file mode 100644 index 0000000..53f0c97 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-down + + · + Unicode: f078 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-down +
    +
    +
    <i class="icon-chevron-down"></i> icon-chevron-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-left/index.html new file mode 100644 index 0000000..90c5ed6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-left + + · + Unicode: f053 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-left +
    +
    +
    <i class="icon-chevron-left"></i> icon-chevron-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-right/index.html new file mode 100644 index 0000000..0be7da6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-right + + · + Unicode: f054 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-right +
    +
    +
    <i class="icon-chevron-right"></i> icon-chevron-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-down/index.html new file mode 100644 index 0000000..55928e6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-sign-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-sign-down + + · + Unicode: f13a · + Created: v3.1 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-sign-down +
    +
    +
    <i class="icon-chevron-sign-down"></i> icon-chevron-sign-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-left/index.html new file mode 100644 index 0000000..5ec15a4 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-sign-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-sign-left + + · + Unicode: f137 · + Created: v3.1 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-sign-left +
    +
    +
    <i class="icon-chevron-sign-left"></i> icon-chevron-sign-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-right/index.html new file mode 100644 index 0000000..9cf013b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-sign-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-sign-right + + · + Unicode: f138 · + Created: v3.1 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-sign-right +
    +
    +
    <i class="icon-chevron-sign-right"></i> icon-chevron-sign-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-up/index.html new file mode 100644 index 0000000..6a74ceb --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-sign-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-sign-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-sign-up + + · + Unicode: f139 · + Created: v3.1 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-sign-up +
    +
    +
    <i class="icon-chevron-sign-up"></i> icon-chevron-sign-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/chevron-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-up/index.html new file mode 100644 index 0000000..d457d9e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/chevron-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-chevron-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-chevron-up + + · + Unicode: f077 · + Created: v1.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-chevron-up +
    +
    +
    <i class="icon-chevron-up"></i> icon-chevron-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-down/index.html new file mode 100644 index 0000000..d4b5a45 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-circle-arrow-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-circle-arrow-down + + · + Unicode: f0ab · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-circle-arrow-down +
    +
    +
    <i class="icon-circle-arrow-down"></i> icon-circle-arrow-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-left/index.html new file mode 100644 index 0000000..bf2c12a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-circle-arrow-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-circle-arrow-left + + · + Unicode: f0a8 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-circle-arrow-left +
    +
    +
    <i class="icon-circle-arrow-left"></i> icon-circle-arrow-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-right/index.html new file mode 100644 index 0000000..0ed1369 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-circle-arrow-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-circle-arrow-right + + · + Unicode: f0a9 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-circle-arrow-right +
    +
    +
    <i class="icon-circle-arrow-right"></i> icon-circle-arrow-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-up/index.html new file mode 100644 index 0000000..7279554 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/circle-arrow-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-circle-arrow-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-circle-arrow-up + + · + Unicode: f0aa · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-circle-arrow-up +
    +
    +
    <i class="icon-circle-arrow-up"></i> icon-circle-arrow-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/circle-blank/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/circle-blank/index.html new file mode 100644 index 0000000..1e87eaa --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/circle-blank/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-circle-blank: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-circle-blank + + · + Unicode: f10c · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-circle-blank +
    +
    +
    <i class="icon-circle-blank"></i> icon-circle-blank
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/circle/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/circle/index.html new file mode 100644 index 0000000..3cb1a0c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/circle/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-circle: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-circle + + · + Unicode: f111 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-circle +
    +
    +
    <i class="icon-circle"></i> icon-circle
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cloud-download/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cloud-download/index.html new file mode 100644 index 0000000..8bc71dc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cloud-download/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-cloud-download: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cloud-download + + · + Unicode: f0ed · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cloud-download +
    +
    +
    <i class="icon-cloud-download"></i> icon-cloud-download
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cloud-upload/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cloud-upload/index.html new file mode 100644 index 0000000..3bfc450 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cloud-upload/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-cloud-upload: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cloud-upload + + · + Unicode: f0ee · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cloud-upload +
    +
    +
    <i class="icon-cloud-upload"></i> icon-cloud-upload
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cloud/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cloud/index.html new file mode 100644 index 0000000..d4e319e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cloud/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-cloud: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cloud + + · + Unicode: f0c2 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cloud +
    +
    +
    <i class="icon-cloud"></i> icon-cloud
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cny/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cny/index.html new file mode 100644 index 0000000..39ad423 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cny/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-cny: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cny + + · + Unicode: f158 · + Created: v3.2 · + Categories: + + Currency Icons + + + + · Aliases: + + icon-renminbi + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cny +
    +
    +
    <i class="icon-cny"></i> icon-cny
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/code-fork/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/code-fork/index.html new file mode 100644 index 0000000..e1f7a64 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/code-fork/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-code-fork: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-code-fork + + · + Unicode: f126 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-code-fork +
    +
    +
    <i class="icon-code-fork"></i> icon-code-fork
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/code/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/code/index.html new file mode 100644 index 0000000..d28713c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/code/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-code: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-code + + · + Unicode: f121 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-code +
    +
    +
    <i class="icon-code"></i> icon-code
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/coffee/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/coffee/index.html new file mode 100644 index 0000000..63e06e4 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/coffee/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-coffee: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-coffee + + · + Unicode: f0f4 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-coffee +
    +
    +
    <i class="icon-coffee"></i> icon-coffee
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cog/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cog/index.html new file mode 100644 index 0000000..8afd031 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cog/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-cog: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cog + + · + Unicode: f013 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-gear + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cog +
    +
    +
    <i class="icon-cog"></i> icon-cog
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cogs/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cogs/index.html new file mode 100644 index 0000000..2c4c56d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cogs/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-cogs: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cogs + + · + Unicode: f085 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-gears + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cogs +
    +
    +
    <i class="icon-cogs"></i> icon-cogs
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/collapse-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/collapse-alt/index.html new file mode 100644 index 0000000..c56b536 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/collapse-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-collapse-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-collapse-alt + + · + Unicode: f117 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-collapse-alt +
    +
    +
    <i class="icon-collapse-alt"></i> icon-collapse-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/collapse-top/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/collapse-top/index.html new file mode 100644 index 0000000..a2416a1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/collapse-top/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-collapse-top: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-collapse-top + + · + Unicode: f151 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-collapse-top +
    +
    +
    <i class="icon-collapse-top"></i> icon-collapse-top
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/collapse/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/collapse/index.html new file mode 100644 index 0000000..592d934 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/collapse/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-collapse: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-collapse + + · + Unicode: f150 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-collapse +
    +
    +
    <i class="icon-collapse"></i> icon-collapse
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/columns/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/columns/index.html new file mode 100644 index 0000000..2cac42b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/columns/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-columns: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-columns + + · + Unicode: f0db · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-columns +
    +
    +
    <i class="icon-columns"></i> icon-columns
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/comment-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/comment-alt/index.html new file mode 100644 index 0000000..dfe025d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/comment-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-comment-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-comment-alt + + · + Unicode: f0e5 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-comment-alt +
    +
    +
    <i class="icon-comment-alt"></i> icon-comment-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/comment/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/comment/index.html new file mode 100644 index 0000000..d3217e2 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/comment/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-comment: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-comment + + · + Unicode: f075 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-comment +
    +
    +
    <i class="icon-comment"></i> icon-comment
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/comments-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/comments-alt/index.html new file mode 100644 index 0000000..1b0d464 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/comments-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-comments-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-comments-alt + + · + Unicode: f0e6 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-comments-alt +
    +
    +
    <i class="icon-comments-alt"></i> icon-comments-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/comments/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/comments/index.html new file mode 100644 index 0000000..a9d57f5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/comments/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-comments: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-comments + + · + Unicode: f086 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-comments +
    +
    +
    <i class="icon-comments"></i> icon-comments
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/compass/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/compass/index.html new file mode 100644 index 0000000..b6bee48 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/compass/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-compass: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-compass + + · + Unicode: f14e · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-compass +
    +
    +
    <i class="icon-compass"></i> icon-compass
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/copy/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/copy/index.html new file mode 100644 index 0000000..3e6bf66 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/copy/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-copy: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-copy + + · + Unicode: f0c5 · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-copy +
    +
    +
    <i class="icon-copy"></i> icon-copy
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/credit-card/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/credit-card/index.html new file mode 100644 index 0000000..576fe24 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/credit-card/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-credit-card: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-credit-card + + · + Unicode: f09d · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-credit-card +
    +
    +
    <i class="icon-credit-card"></i> icon-credit-card
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/crop/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/crop/index.html new file mode 100644 index 0000000..226413b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/crop/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-crop: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-crop + + · + Unicode: f125 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-crop +
    +
    +
    <i class="icon-crop"></i> icon-crop
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/css3/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/css3/index.html new file mode 100644 index 0000000..3684786 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/css3/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-css3: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-css3 + + · + Unicode: f13c · + Created: v3.1 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-css3 +
    +
    +
    <i class="icon-css3"></i> icon-css3
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/cut/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/cut/index.html new file mode 100644 index 0000000..6c63fa3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/cut/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-cut: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-cut + + · + Unicode: f0c4 · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-cut +
    +
    +
    <i class="icon-cut"></i> icon-cut
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/dashboard/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/dashboard/index.html new file mode 100644 index 0000000..a509a08 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/dashboard/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-dashboard: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-dashboard + + · + Unicode: f0e4 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-dashboard +
    +
    +
    <i class="icon-dashboard"></i> icon-dashboard
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/desktop/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/desktop/index.html new file mode 100644 index 0000000..1ac39c8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/desktop/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-desktop: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-desktop + + · + Unicode: f108 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-desktop +
    +
    +
    <i class="icon-desktop"></i> icon-desktop
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-down/index.html new file mode 100644 index 0000000..6b4f803 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-double-angle-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-double-angle-down + + · + Unicode: f103 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-double-angle-down +
    +
    +
    <i class="icon-double-angle-down"></i> icon-double-angle-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-left/index.html new file mode 100644 index 0000000..cba1443 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-double-angle-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-double-angle-left + + · + Unicode: f100 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-double-angle-left +
    +
    +
    <i class="icon-double-angle-left"></i> icon-double-angle-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-right/index.html new file mode 100644 index 0000000..d62c787 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-double-angle-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-double-angle-right + + · + Unicode: f101 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-double-angle-right +
    +
    +
    <i class="icon-double-angle-right"></i> icon-double-angle-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-up/index.html new file mode 100644 index 0000000..1a9988c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/double-angle-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-double-angle-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-double-angle-up + + · + Unicode: f102 · + Created: v3.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-double-angle-up +
    +
    +
    <i class="icon-double-angle-up"></i> icon-double-angle-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/download-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/download-alt/index.html new file mode 100644 index 0000000..5763029 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/download-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-download-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-download-alt + + · + Unicode: f019 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-download-alt +
    +
    +
    <i class="icon-download-alt"></i> icon-download-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/download/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/download/index.html new file mode 100644 index 0000000..d95fc93 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/download/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-download: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-download + + · + Unicode: f01a · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-download +
    +
    +
    <i class="icon-download"></i> icon-download
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/dribbble/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/dribbble/index.html new file mode 100644 index 0000000..12808af --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/dribbble/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-dribbble: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-dribbble + + · + Unicode: f17d · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-dribbble +
    +
    +
    <i class="icon-dribbble"></i> icon-dribbble
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/dropbox/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/dropbox/index.html new file mode 100644 index 0000000..86a7515 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/dropbox/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-dropbox: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-dropbox + + · + Unicode: f16b · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-dropbox +
    +
    +
    <i class="icon-dropbox"></i> icon-dropbox
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/edit-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/edit-sign/index.html new file mode 100644 index 0000000..75402f7 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/edit-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-edit-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-edit-sign + + · + Unicode: f14b · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-edit-sign +
    +
    +
    <i class="icon-edit-sign"></i> icon-edit-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/edit/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/edit/index.html new file mode 100644 index 0000000..254a9cb --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/edit/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-edit: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-edit + + · + Unicode: f044 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-edit +
    +
    +
    <i class="icon-edit"></i> icon-edit
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/eject/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/eject/index.html new file mode 100644 index 0000000..a7712b3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/eject/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-eject: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-eject + + · + Unicode: f052 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-eject +
    +
    +
    <i class="icon-eject"></i> icon-eject
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-horizontal/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-horizontal/index.html new file mode 100644 index 0000000..55abf3e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-horizontal/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ellipsis-horizontal: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ellipsis-horizontal + + · + Unicode: f141 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ellipsis-horizontal +
    +
    +
    <i class="icon-ellipsis-horizontal"></i> icon-ellipsis-horizontal
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-vertical/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-vertical/index.html new file mode 100644 index 0000000..cccffe3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ellipsis-vertical/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ellipsis-vertical: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ellipsis-vertical + + · + Unicode: f142 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ellipsis-vertical +
    +
    +
    <i class="icon-ellipsis-vertical"></i> icon-ellipsis-vertical
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/envelope-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/envelope-alt/index.html new file mode 100644 index 0000000..3d99144 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/envelope-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-envelope-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-envelope-alt + + · + Unicode: f003 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-envelope-alt +
    +
    +
    <i class="icon-envelope-alt"></i> icon-envelope-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/envelope/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/envelope/index.html new file mode 100644 index 0000000..e4d771e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/envelope/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-envelope: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-envelope + + · + Unicode: f0e0 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-envelope +
    +
    +
    <i class="icon-envelope"></i> icon-envelope
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/eraser/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/eraser/index.html new file mode 100644 index 0000000..1f5f878 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/eraser/index.html @@ -0,0 +1,210 @@ + + + + + + + + + + icon-eraser: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-eraser + + · + Unicode: f12d · + Created: v3.1 · + Categories: + + Text Editor Icons, + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-eraser +
    +
    +
    <i class="icon-eraser"></i> icon-eraser
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/eur/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/eur/index.html new file mode 100644 index 0000000..d968986 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/eur/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-eur: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-eur + + · + Unicode: f153 · + Created: v3.2 · + Categories: + + Currency Icons + + + + · Aliases: + + icon-euro + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-eur +
    +
    +
    <i class="icon-eur"></i> icon-eur
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/exchange/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/exchange/index.html new file mode 100644 index 0000000..afdb303 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/exchange/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-exchange: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-exchange + + · + Unicode: f0ec · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-exchange +
    +
    +
    <i class="icon-exchange"></i> icon-exchange
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/exclamation-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/exclamation-sign/index.html new file mode 100644 index 0000000..ad8c95c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/exclamation-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-exclamation-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-exclamation-sign + + · + Unicode: f06a · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-exclamation-sign +
    +
    +
    <i class="icon-exclamation-sign"></i> icon-exclamation-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/exclamation/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/exclamation/index.html new file mode 100644 index 0000000..0492fa1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/exclamation/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-exclamation: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-exclamation + + · + Unicode: f12a · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-exclamation +
    +
    +
    <i class="icon-exclamation"></i> icon-exclamation
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/expand-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/expand-alt/index.html new file mode 100644 index 0000000..9e2bc68 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/expand-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-expand-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-expand-alt + + · + Unicode: f116 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-expand-alt +
    +
    +
    <i class="icon-expand-alt"></i> icon-expand-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/expand/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/expand/index.html new file mode 100644 index 0000000..4fddffa --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/expand/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-expand: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-expand + + · + Unicode: f152 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-expand +
    +
    +
    <i class="icon-expand"></i> icon-expand
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/external-link-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/external-link-sign/index.html new file mode 100644 index 0000000..198521a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/external-link-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-external-link-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-external-link-sign + + · + Unicode: f14c · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-external-link-sign +
    +
    +
    <i class="icon-external-link-sign"></i> icon-external-link-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/external-link/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/external-link/index.html new file mode 100644 index 0000000..548d33c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/external-link/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-external-link: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-external-link + + · + Unicode: f08e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-external-link +
    +
    +
    <i class="icon-external-link"></i> icon-external-link
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/eye-close/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/eye-close/index.html new file mode 100644 index 0000000..59f040b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/eye-close/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-eye-close: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-eye-close + + · + Unicode: f070 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-eye-close +
    +
    +
    <i class="icon-eye-close"></i> icon-eye-close
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/eye-open/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/eye-open/index.html new file mode 100644 index 0000000..c5b5e12 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/eye-open/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-eye-open: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-eye-open + + · + Unicode: f06e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-eye-open +
    +
    +
    <i class="icon-eye-open"></i> icon-eye-open
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/facebook-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/facebook-sign/index.html new file mode 100644 index 0000000..a92946f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/facebook-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-facebook-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-facebook-sign + + · + Unicode: f082 · + Created: v1.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-facebook-sign +
    +
    +
    <i class="icon-facebook-sign"></i> icon-facebook-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/facebook/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/facebook/index.html new file mode 100644 index 0000000..3f427cc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/facebook/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-facebook: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-facebook + + · + Unicode: f09a · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-facebook +
    +
    +
    <i class="icon-facebook"></i> icon-facebook
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/facetime-video/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/facetime-video/index.html new file mode 100644 index 0000000..f0af716 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/facetime-video/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-facetime-video: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-facetime-video + + · + Unicode: f03d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-facetime-video +
    +
    +
    <i class="icon-facetime-video"></i> icon-facetime-video
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/fast-backward/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/fast-backward/index.html new file mode 100644 index 0000000..12575ff --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/fast-backward/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-fast-backward: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-fast-backward + + · + Unicode: f049 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-fast-backward +
    +
    +
    <i class="icon-fast-backward"></i> icon-fast-backward
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/fast-forward/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/fast-forward/index.html new file mode 100644 index 0000000..2847d9e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/fast-forward/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-fast-forward: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-fast-forward + + · + Unicode: f050 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-fast-forward +
    +
    +
    <i class="icon-fast-forward"></i> icon-fast-forward
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/female/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/female/index.html new file mode 100644 index 0000000..30987c0 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/female/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-female: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-female + + · + Unicode: f182 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-female +
    +
    +
    <i class="icon-female"></i> icon-female
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/fighter-jet/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/fighter-jet/index.html new file mode 100644 index 0000000..8c9a52b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/fighter-jet/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-fighter-jet: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-fighter-jet + + · + Unicode: f0fb · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-fighter-jet +
    +
    +
    <i class="icon-fighter-jet"></i> icon-fighter-jet
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/file-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/file-alt/index.html new file mode 100644 index 0000000..e3034a8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/file-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-file-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-file-alt + + · + Unicode: f016 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-file-alt +
    +
    +
    <i class="icon-file-alt"></i> icon-file-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/file-text-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/file-text-alt/index.html new file mode 100644 index 0000000..f9284ca --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/file-text-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-file-text-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-file-text-alt + + · + Unicode: f0f6 · + Created: v3.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-file-text-alt +
    +
    +
    <i class="icon-file-text-alt"></i> icon-file-text-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/file-text/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/file-text/index.html new file mode 100644 index 0000000..90d7f15 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/file-text/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-file-text: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-file-text + + · + Unicode: f15c · + Created: v3.2 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-file-text +
    +
    +
    <i class="icon-file-text"></i> icon-file-text
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/file/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/file/index.html new file mode 100644 index 0000000..7afa114 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/file/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-file: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-file + + · + Unicode: f15b · + Created: v3.2 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-file +
    +
    +
    <i class="icon-file"></i> icon-file
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/film/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/film/index.html new file mode 100644 index 0000000..fb03bdc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/film/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-film: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-film + + · + Unicode: f008 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-film +
    +
    +
    <i class="icon-film"></i> icon-film
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/filter/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/filter/index.html new file mode 100644 index 0000000..9cb552c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/filter/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-filter: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-filter + + · + Unicode: f0b0 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-filter +
    +
    +
    <i class="icon-filter"></i> icon-filter
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/fire-extinguisher/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/fire-extinguisher/index.html new file mode 100644 index 0000000..5a00fb9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/fire-extinguisher/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-fire-extinguisher: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-fire-extinguisher + + · + Unicode: f134 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-fire-extinguisher +
    +
    +
    <i class="icon-fire-extinguisher"></i> icon-fire-extinguisher
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/fire/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/fire/index.html new file mode 100644 index 0000000..6ca70f8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/fire/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-fire: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-fire + + · + Unicode: f06d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-fire +
    +
    +
    <i class="icon-fire"></i> icon-fire
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/flag-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/flag-alt/index.html new file mode 100644 index 0000000..5d62958 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/flag-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-flag-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-flag-alt + + · + Unicode: f11d · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-flag-alt +
    +
    +
    <i class="icon-flag-alt"></i> icon-flag-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/flag-checkered/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/flag-checkered/index.html new file mode 100644 index 0000000..972ebef --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/flag-checkered/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-flag-checkered: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-flag-checkered + + · + Unicode: f11e · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-flag-checkered +
    +
    +
    <i class="icon-flag-checkered"></i> icon-flag-checkered
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/flag/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/flag/index.html new file mode 100644 index 0000000..7f9c8e9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/flag/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-flag: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-flag + + · + Unicode: f024 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-flag +
    +
    +
    <i class="icon-flag"></i> icon-flag
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/flickr/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/flickr/index.html new file mode 100644 index 0000000..5379f5f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/flickr/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-flickr: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-flickr + + · + Unicode: f16e · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-flickr +
    +
    +
    <i class="icon-flickr"></i> icon-flickr
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/folder-close-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/folder-close-alt/index.html new file mode 100644 index 0000000..5bc757e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/folder-close-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-folder-close-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-folder-close-alt + + · + Unicode: f114 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-folder-close-alt +
    +
    +
    <i class="icon-folder-close-alt"></i> icon-folder-close-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/folder-close/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/folder-close/index.html new file mode 100644 index 0000000..bf006b0 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/folder-close/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-folder-close: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-folder-close + + · + Unicode: f07b · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-folder-close +
    +
    +
    <i class="icon-folder-close"></i> icon-folder-close
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/folder-open-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/folder-open-alt/index.html new file mode 100644 index 0000000..a114fb1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/folder-open-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-folder-open-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-folder-open-alt + + · + Unicode: f115 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-folder-open-alt +
    +
    +
    <i class="icon-folder-open-alt"></i> icon-folder-open-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/folder-open/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/folder-open/index.html new file mode 100644 index 0000000..306c578 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/folder-open/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-folder-open: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-folder-open + + · + Unicode: f07c · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-folder-open +
    +
    +
    <i class="icon-folder-open"></i> icon-folder-open
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/font/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/font/index.html new file mode 100644 index 0000000..2a970e7 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/font/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-font: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-font + + · + Unicode: f031 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-font +
    +
    +
    <i class="icon-font"></i> icon-font
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/food/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/food/index.html new file mode 100644 index 0000000..c5d1837 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/food/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-food: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-food + + · + Unicode: f0f5 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-food +
    +
    +
    <i class="icon-food"></i> icon-food
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/forward/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/forward/index.html new file mode 100644 index 0000000..c1484cc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/forward/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-forward: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-forward + + · + Unicode: f04e · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-forward +
    +
    +
    <i class="icon-forward"></i> icon-forward
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/foursquare/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/foursquare/index.html new file mode 100644 index 0000000..23e71bb --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/foursquare/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-foursquare: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-foursquare + + · + Unicode: f180 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-foursquare +
    +
    +
    <i class="icon-foursquare"></i> icon-foursquare
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/frown/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/frown/index.html new file mode 100644 index 0000000..67132a3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/frown/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-frown: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-frown + + · + Unicode: f119 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-frown +
    +
    +
    <i class="icon-frown"></i> icon-frown
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/fullscreen/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/fullscreen/index.html new file mode 100644 index 0000000..05d4445 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/fullscreen/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-fullscreen: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-fullscreen + + · + Unicode: f0b2 · + Created: v2.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-fullscreen +
    +
    +
    <i class="icon-fullscreen"></i> icon-fullscreen
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/gamepad/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/gamepad/index.html new file mode 100644 index 0000000..0bd4ffe --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/gamepad/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-gamepad: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-gamepad + + · + Unicode: f11b · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-gamepad +
    +
    +
    <i class="icon-gamepad"></i> icon-gamepad
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/gbp/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/gbp/index.html new file mode 100644 index 0000000..87d4317 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/gbp/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-gbp: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-gbp + + · + Unicode: f154 · + Created: v3.2 · + Categories: + + Currency Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-gbp +
    +
    +
    <i class="icon-gbp"></i> icon-gbp
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/gift/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/gift/index.html new file mode 100644 index 0000000..88f3464 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/gift/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-gift: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-gift + + · + Unicode: f06b · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-gift +
    +
    +
    <i class="icon-gift"></i> icon-gift
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/github-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/github-alt/index.html new file mode 100644 index 0000000..eacd12e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/github-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-github-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-github-alt + + · + Unicode: f113 · + Created: v3.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-github-alt +
    +
    +
    <i class="icon-github-alt"></i> icon-github-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/github-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/github-sign/index.html new file mode 100644 index 0000000..15fa951 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/github-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-github-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-github-sign + + · + Unicode: f092 · + Created: v1.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-github-sign +
    +
    +
    <i class="icon-github-sign"></i> icon-github-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/github/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/github/index.html new file mode 100644 index 0000000..102ce0f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/github/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-github: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-github + + · + Unicode: f09b · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-github +
    +
    +
    <i class="icon-github"></i> icon-github
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/gittip/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/gittip/index.html new file mode 100644 index 0000000..620da7f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/gittip/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-gittip: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-gittip + + · + Unicode: f184 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-gittip +
    +
    +
    <i class="icon-gittip"></i> icon-gittip
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/glass/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/glass/index.html new file mode 100644 index 0000000..b03e4d7 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/glass/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-glass: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-glass + + · + Unicode: f000 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-glass +
    +
    +
    <i class="icon-glass"></i> icon-glass
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/globe/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/globe/index.html new file mode 100644 index 0000000..4892bfe --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/globe/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-globe: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-globe + + · + Unicode: f0ac · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-globe +
    +
    +
    <i class="icon-globe"></i> icon-globe
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/google-plus-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/google-plus-sign/index.html new file mode 100644 index 0000000..f408840 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/google-plus-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-google-plus-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-google-plus-sign + + · + Unicode: f0d4 · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-google-plus-sign +
    +
    +
    <i class="icon-google-plus-sign"></i> icon-google-plus-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/google-plus/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/google-plus/index.html new file mode 100644 index 0000000..b274b77 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/google-plus/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-google-plus: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-google-plus + + · + Unicode: f0d5 · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-google-plus +
    +
    +
    <i class="icon-google-plus"></i> icon-google-plus
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/group/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/group/index.html new file mode 100644 index 0000000..27d3857 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/group/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-group: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-group + + · + Unicode: f0c0 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-group +
    +
    +
    <i class="icon-group"></i> icon-group
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/h-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/h-sign/index.html new file mode 100644 index 0000000..9bd171d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/h-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-h-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-h-sign + + · + Unicode: f0fd · + Created: v3.0 · + Categories: + + Medical Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-h-sign +
    +
    +
    <i class="icon-h-sign"></i> icon-h-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/hand-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/hand-down/index.html new file mode 100644 index 0000000..59b3355 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/hand-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-hand-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-hand-down + + · + Unicode: f0a7 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-hand-down +
    +
    +
    <i class="icon-hand-down"></i> icon-hand-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/hand-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/hand-left/index.html new file mode 100644 index 0000000..12d869c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/hand-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-hand-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-hand-left + + · + Unicode: f0a5 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-hand-left +
    +
    +
    <i class="icon-hand-left"></i> icon-hand-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/hand-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/hand-right/index.html new file mode 100644 index 0000000..e415175 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/hand-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-hand-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-hand-right + + · + Unicode: f0a4 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-hand-right +
    +
    +
    <i class="icon-hand-right"></i> icon-hand-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/hand-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/hand-up/index.html new file mode 100644 index 0000000..52f4c8f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/hand-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-hand-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-hand-up + + · + Unicode: f0a6 · + Created: v2.0 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-hand-up +
    +
    +
    <i class="icon-hand-up"></i> icon-hand-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/hdd/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/hdd/index.html new file mode 100644 index 0000000..5d9418d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/hdd/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-hdd: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-hdd + + · + Unicode: f0a0 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-hdd +
    +
    +
    <i class="icon-hdd"></i> icon-hdd
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/headphones/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/headphones/index.html new file mode 100644 index 0000000..643ba0c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/headphones/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-headphones: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-headphones + + · + Unicode: f025 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-headphones +
    +
    +
    <i class="icon-headphones"></i> icon-headphones
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/heart-empty/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/heart-empty/index.html new file mode 100644 index 0000000..4421a0c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/heart-empty/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-heart-empty: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-heart-empty + + · + Unicode: f08a · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-heart-empty +
    +
    +
    <i class="icon-heart-empty"></i> icon-heart-empty
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/heart/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/heart/index.html new file mode 100644 index 0000000..438b768 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/heart/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-heart: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-heart + + · + Unicode: f004 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-heart +
    +
    +
    <i class="icon-heart"></i> icon-heart
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/home/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/home/index.html new file mode 100644 index 0000000..28c9e50 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/home/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-home: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-home + + · + Unicode: f015 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-home +
    +
    +
    <i class="icon-home"></i> icon-home
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/hospital/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/hospital/index.html new file mode 100644 index 0000000..c349211 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/hospital/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-hospital: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-hospital + + · + Unicode: f0f8 · + Created: v3.0 · + Categories: + + Medical Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-hospital +
    +
    +
    <i class="icon-hospital"></i> icon-hospital
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/html5/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/html5/index.html new file mode 100644 index 0000000..0485a6d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/html5/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-html5: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-html5 + + · + Unicode: f13b · + Created: v3.1 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-html5 +
    +
    +
    <i class="icon-html5"></i> icon-html5
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/inbox/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/inbox/index.html new file mode 100644 index 0000000..77f22e6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/inbox/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-inbox: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-inbox + + · + Unicode: f01c · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-inbox +
    +
    +
    <i class="icon-inbox"></i> icon-inbox
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/indent-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/indent-left/index.html new file mode 100644 index 0000000..a464fef --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/indent-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-indent-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-indent-left + + · + Unicode: f03b · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-indent-left +
    +
    +
    <i class="icon-indent-left"></i> icon-indent-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/indent-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/indent-right/index.html new file mode 100644 index 0000000..1b09d48 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/indent-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-indent-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-indent-right + + · + Unicode: f03c · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-indent-right +
    +
    +
    <i class="icon-indent-right"></i> icon-indent-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/info-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/info-sign/index.html new file mode 100644 index 0000000..77d1039 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/info-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-info-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-info-sign + + · + Unicode: f05a · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-info-sign +
    +
    +
    <i class="icon-info-sign"></i> icon-info-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/info/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/info/index.html new file mode 100644 index 0000000..16cf35f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/info/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-info: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-info + + · + Unicode: f129 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-info +
    +
    +
    <i class="icon-info"></i> icon-info
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/inr/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/inr/index.html new file mode 100644 index 0000000..0282bbf --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/inr/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-inr: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-inr + + · + Unicode: f156 · + Created: v3.2 · + Categories: + + Currency Icons + + + + · Aliases: + + icon-rupee + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-inr +
    +
    +
    <i class="icon-inr"></i> icon-inr
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/instagram/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/instagram/index.html new file mode 100644 index 0000000..a6bc13e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/instagram/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-instagram: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-instagram + + · + Unicode: f16d · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-instagram +
    +
    +
    <i class="icon-instagram"></i> icon-instagram
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/italic/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/italic/index.html new file mode 100644 index 0000000..18695b5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/italic/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-italic: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-italic + + · + Unicode: f033 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-italic +
    +
    +
    <i class="icon-italic"></i> icon-italic
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/jpy/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/jpy/index.html new file mode 100644 index 0000000..e2a9a00 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/jpy/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-jpy: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-jpy + + · + Unicode: f157 · + Created: v3.2 · + Categories: + + Currency Icons + + + + · Aliases: + + icon-yen + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-jpy +
    +
    +
    <i class="icon-jpy"></i> icon-jpy
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/key/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/key/index.html new file mode 100644 index 0000000..7f66196 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/key/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-key: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-key + + · + Unicode: f084 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-key +
    +
    +
    <i class="icon-key"></i> icon-key
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/keyboard/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/keyboard/index.html new file mode 100644 index 0000000..6823e6e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/keyboard/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-keyboard: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-keyboard + + · + Unicode: f11c · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-keyboard +
    +
    +
    <i class="icon-keyboard"></i> icon-keyboard
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/krw/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/krw/index.html new file mode 100644 index 0000000..01ac367 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/krw/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-krw: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-krw + + · + Unicode: f159 · + Created: v3.2 · + Categories: + + Currency Icons + + + + · Aliases: + + icon-won + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-krw +
    +
    +
    <i class="icon-krw"></i> icon-krw
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/laptop/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/laptop/index.html new file mode 100644 index 0000000..d4d312f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/laptop/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-laptop: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-laptop + + · + Unicode: f109 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-laptop +
    +
    +
    <i class="icon-laptop"></i> icon-laptop
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/leaf/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/leaf/index.html new file mode 100644 index 0000000..63d7917 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/leaf/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-leaf: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-leaf + + · + Unicode: f06c · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-leaf +
    +
    +
    <i class="icon-leaf"></i> icon-leaf
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/legal/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/legal/index.html new file mode 100644 index 0000000..7d07b4f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/legal/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-legal: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-legal + + · + Unicode: f0e3 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-legal +
    +
    +
    <i class="icon-legal"></i> icon-legal
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/lemon/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/lemon/index.html new file mode 100644 index 0000000..203076f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/lemon/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-lemon: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-lemon + + · + Unicode: f094 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-lemon +
    +
    +
    <i class="icon-lemon"></i> icon-lemon
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/level-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/level-down/index.html new file mode 100644 index 0000000..89f85d3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/level-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-level-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-level-down + + · + Unicode: f149 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-level-down +
    +
    +
    <i class="icon-level-down"></i> icon-level-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/level-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/level-up/index.html new file mode 100644 index 0000000..9448afa --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/level-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-level-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-level-up + + · + Unicode: f148 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-level-up +
    +
    +
    <i class="icon-level-up"></i> icon-level-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/lightbulb/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/lightbulb/index.html new file mode 100644 index 0000000..a2be4e4 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/lightbulb/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-lightbulb: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-lightbulb + + · + Unicode: f0eb · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-lightbulb +
    +
    +
    <i class="icon-lightbulb"></i> icon-lightbulb
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/link/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/link/index.html new file mode 100644 index 0000000..9dc11e1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/link/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-link: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-link + + · + Unicode: f0c1 · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-link +
    +
    +
    <i class="icon-link"></i> icon-link
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/linkedin-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/linkedin-sign/index.html new file mode 100644 index 0000000..a19f146 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/linkedin-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-linkedin-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-linkedin-sign + + · + Unicode: f08c · + Created: v1.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-linkedin-sign +
    +
    +
    <i class="icon-linkedin-sign"></i> icon-linkedin-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/linkedin/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/linkedin/index.html new file mode 100644 index 0000000..6fc1228 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/linkedin/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-linkedin: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-linkedin + + · + Unicode: f0e1 · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-linkedin +
    +
    +
    <i class="icon-linkedin"></i> icon-linkedin
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/linux/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/linux/index.html new file mode 100644 index 0000000..983e10c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/linux/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-linux: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-linux + + · + Unicode: f17c · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-linux +
    +
    +
    <i class="icon-linux"></i> icon-linux
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/list-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/list-alt/index.html new file mode 100644 index 0000000..5a5fa66 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/list-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-list-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-list-alt + + · + Unicode: f022 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-list-alt +
    +
    +
    <i class="icon-list-alt"></i> icon-list-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/list-ol/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/list-ol/index.html new file mode 100644 index 0000000..f8d995c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/list-ol/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-list-ol: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-list-ol + + · + Unicode: f0cb · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-list-ol +
    +
    +
    <i class="icon-list-ol"></i> icon-list-ol
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/list-ul/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/list-ul/index.html new file mode 100644 index 0000000..1821665 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/list-ul/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-list-ul: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-list-ul + + · + Unicode: f0ca · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-list-ul +
    +
    +
    <i class="icon-list-ul"></i> icon-list-ul
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/list/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/list/index.html new file mode 100644 index 0000000..1a0207d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/list/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-list: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-list + + · + Unicode: f03a · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-list +
    +
    +
    <i class="icon-list"></i> icon-list
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/location-arrow/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/location-arrow/index.html new file mode 100644 index 0000000..a12c8c1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/location-arrow/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-location-arrow: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-location-arrow + + · + Unicode: f124 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-location-arrow +
    +
    +
    <i class="icon-location-arrow"></i> icon-location-arrow
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/lock/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/lock/index.html new file mode 100644 index 0000000..b0c06df --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/lock/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-lock: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-lock + + · + Unicode: f023 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-lock +
    +
    +
    <i class="icon-lock"></i> icon-lock
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-down/index.html new file mode 100644 index 0000000..4de7c40 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-long-arrow-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-long-arrow-down + + · + Unicode: f175 · + Created: v3.2 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-long-arrow-down +
    +
    +
    <i class="icon-long-arrow-down"></i> icon-long-arrow-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-left/index.html new file mode 100644 index 0000000..1b6d0ad --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-long-arrow-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-long-arrow-left + + · + Unicode: f177 · + Created: v3.2 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-long-arrow-left +
    +
    +
    <i class="icon-long-arrow-left"></i> icon-long-arrow-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-right/index.html new file mode 100644 index 0000000..0b57a2b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-long-arrow-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-long-arrow-right + + · + Unicode: f178 · + Created: v3.2 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-long-arrow-right +
    +
    +
    <i class="icon-long-arrow-right"></i> icon-long-arrow-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-up/index.html new file mode 100644 index 0000000..2a8e107 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/long-arrow-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-long-arrow-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-long-arrow-up + + · + Unicode: f176 · + Created: v3.2 · + Categories: + + Directional Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-long-arrow-up +
    +
    +
    <i class="icon-long-arrow-up"></i> icon-long-arrow-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/magic/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/magic/index.html new file mode 100644 index 0000000..b82bd18 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/magic/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-magic: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-magic + + · + Unicode: f0d0 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-magic +
    +
    +
    <i class="icon-magic"></i> icon-magic
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/magnet/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/magnet/index.html new file mode 100644 index 0000000..4efafbc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/magnet/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-magnet: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-magnet + + · + Unicode: f076 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-magnet +
    +
    +
    <i class="icon-magnet"></i> icon-magnet
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/mail-reply-all/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/mail-reply-all/index.html new file mode 100644 index 0000000..ed887be --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/mail-reply-all/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-mail-reply-all: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-mail-reply-all + + · + Unicode: f122 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-mail-reply-all +
    +
    +
    <i class="icon-mail-reply-all"></i> icon-mail-reply-all
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/male/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/male/index.html new file mode 100644 index 0000000..56397b4 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/male/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-male: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-male + + · + Unicode: f183 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-male +
    +
    +
    <i class="icon-male"></i> icon-male
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/map-marker/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/map-marker/index.html new file mode 100644 index 0000000..4f1c904 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/map-marker/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-map-marker: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-map-marker + + · + Unicode: f041 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-map-marker +
    +
    +
    <i class="icon-map-marker"></i> icon-map-marker
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/maxcdn/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/maxcdn/index.html new file mode 100644 index 0000000..77fe705 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/maxcdn/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-maxcdn: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-maxcdn + + · + Unicode: f136 · + Created: v3.1 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-maxcdn +
    +
    +
    <i class="icon-maxcdn"></i> icon-maxcdn
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/medkit/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/medkit/index.html new file mode 100644 index 0000000..0dc6de6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/medkit/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-medkit: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-medkit + + · + Unicode: f0fa · + Created: v3.0 · + Categories: + + Medical Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-medkit +
    +
    +
    <i class="icon-medkit"></i> icon-medkit
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/meh/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/meh/index.html new file mode 100644 index 0000000..b2da547 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/meh/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-meh: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-meh + + · + Unicode: f11a · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-meh +
    +
    +
    <i class="icon-meh"></i> icon-meh
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/microphone-off/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/microphone-off/index.html new file mode 100644 index 0000000..9f07f09 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/microphone-off/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-microphone-off: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-microphone-off + + · + Unicode: f131 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-microphone-off +
    +
    +
    <i class="icon-microphone-off"></i> icon-microphone-off
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/microphone/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/microphone/index.html new file mode 100644 index 0000000..194f14e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/microphone/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-microphone: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-microphone + + · + Unicode: f130 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-microphone +
    +
    +
    <i class="icon-microphone"></i> icon-microphone
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/minus-sign-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/minus-sign-alt/index.html new file mode 100644 index 0000000..c051cbb --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/minus-sign-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-minus-sign-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-minus-sign-alt + + · + Unicode: f146 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-minus-sign-alt +
    +
    +
    <i class="icon-minus-sign-alt"></i> icon-minus-sign-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/minus-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/minus-sign/index.html new file mode 100644 index 0000000..0e68e34 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/minus-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-minus-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-minus-sign + + · + Unicode: f056 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-minus-sign +
    +
    +
    <i class="icon-minus-sign"></i> icon-minus-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/minus/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/minus/index.html new file mode 100644 index 0000000..3b67868 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/minus/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-minus: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-minus + + · + Unicode: f068 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-minus +
    +
    +
    <i class="icon-minus"></i> icon-minus
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/mobile-phone/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/mobile-phone/index.html new file mode 100644 index 0000000..7df0447 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/mobile-phone/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-mobile-phone: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-mobile-phone + + · + Unicode: f10b · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-mobile-phone +
    +
    +
    <i class="icon-mobile-phone"></i> icon-mobile-phone
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/money/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/money/index.html new file mode 100644 index 0000000..034d080 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/money/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-money: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-money + + · + Unicode: f0d6 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-money +
    +
    +
    <i class="icon-money"></i> icon-money
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/moon/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/moon/index.html new file mode 100644 index 0000000..85484ff --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/moon/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-moon: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-moon + + · + Unicode: f186 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-moon +
    +
    +
    <i class="icon-moon"></i> icon-moon
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/move/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/move/index.html new file mode 100644 index 0000000..15b9dbf --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/move/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-move: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-move + + · + Unicode: f047 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-move +
    +
    +
    <i class="icon-move"></i> icon-move
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/music/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/music/index.html new file mode 100644 index 0000000..20b12e6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/music/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-music: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-music + + · + Unicode: f001 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-music +
    +
    +
    <i class="icon-music"></i> icon-music
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/off/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/off/index.html new file mode 100644 index 0000000..4c048fb --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/off/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-off: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-off + + · + Unicode: f011 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-power-off + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-off +
    +
    +
    <i class="icon-off"></i> icon-off
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ok-circle/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ok-circle/index.html new file mode 100644 index 0000000..137d67f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ok-circle/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ok-circle: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ok-circle + + · + Unicode: f05d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ok-circle +
    +
    +
    <i class="icon-ok-circle"></i> icon-ok-circle
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ok-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ok-sign/index.html new file mode 100644 index 0000000..b4ff3ab --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ok-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ok-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ok-sign + + · + Unicode: f058 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ok-sign +
    +
    +
    <i class="icon-ok-sign"></i> icon-ok-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ok/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ok/index.html new file mode 100644 index 0000000..8b52957 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ok/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ok: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ok + + · + Unicode: f00c · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ok +
    +
    +
    <i class="icon-ok"></i> icon-ok
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/paper-clip/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/paper-clip/index.html new file mode 100644 index 0000000..b1f37a7 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/paper-clip/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-paper-clip: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-paper-clip + + · + Unicode: f0c6 · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + · Aliases: + + icon-paperclip + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-paper-clip +
    +
    +
    <i class="icon-paper-clip"></i> icon-paper-clip
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/paste/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/paste/index.html new file mode 100644 index 0000000..5c6dd54 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/paste/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-paste: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-paste + + · + Unicode: f0ea · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-paste +
    +
    +
    <i class="icon-paste"></i> icon-paste
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/pause/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/pause/index.html new file mode 100644 index 0000000..74e629b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/pause/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-pause: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-pause + + · + Unicode: f04c · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-pause +
    +
    +
    <i class="icon-pause"></i> icon-pause
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/pencil/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/pencil/index.html new file mode 100644 index 0000000..fc624e0 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/pencil/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-pencil: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-pencil + + · + Unicode: f040 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-pencil +
    +
    +
    <i class="icon-pencil"></i> icon-pencil
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/phone-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/phone-sign/index.html new file mode 100644 index 0000000..a6020dc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/phone-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-phone-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-phone-sign + + · + Unicode: f098 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-phone-sign +
    +
    +
    <i class="icon-phone-sign"></i> icon-phone-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/phone/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/phone/index.html new file mode 100644 index 0000000..f6195d2 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/phone/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-phone: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-phone + + · + Unicode: f095 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-phone +
    +
    +
    <i class="icon-phone"></i> icon-phone
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/picture/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/picture/index.html new file mode 100644 index 0000000..0de34f3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/picture/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-picture: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-picture + + · + Unicode: f03e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-picture +
    +
    +
    <i class="icon-picture"></i> icon-picture
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/pinterest-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/pinterest-sign/index.html new file mode 100644 index 0000000..699330e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/pinterest-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-pinterest-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-pinterest-sign + + · + Unicode: f0d3 · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-pinterest-sign +
    +
    +
    <i class="icon-pinterest-sign"></i> icon-pinterest-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/pinterest/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/pinterest/index.html new file mode 100644 index 0000000..89b5ddf --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/pinterest/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-pinterest: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-pinterest + + · + Unicode: f0d2 · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-pinterest +
    +
    +
    <i class="icon-pinterest"></i> icon-pinterest
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/plane/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/plane/index.html new file mode 100644 index 0000000..5f2c97b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/plane/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-plane: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-plane + + · + Unicode: f072 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-plane +
    +
    +
    <i class="icon-plane"></i> icon-plane
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/play-circle/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/play-circle/index.html new file mode 100644 index 0000000..1a2d2ef --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/play-circle/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-play-circle: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-play-circle + + · + Unicode: f01d · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-play-circle +
    +
    +
    <i class="icon-play-circle"></i> icon-play-circle
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/play-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/play-sign/index.html new file mode 100644 index 0000000..fcaf5e9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/play-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-play-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-play-sign + + · + Unicode: f144 · + Created: v3.1 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-play-sign +
    +
    +
    <i class="icon-play-sign"></i> icon-play-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/play/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/play/index.html new file mode 100644 index 0000000..79d1407 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/play/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-play: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-play + + · + Unicode: f04b · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-play +
    +
    +
    <i class="icon-play"></i> icon-play
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/plus-sign-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/plus-sign-alt/index.html new file mode 100644 index 0000000..7a06b3f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/plus-sign-alt/index.html @@ -0,0 +1,210 @@ + + + + + + + + + + icon-plus-sign-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-plus-sign-alt + + · + Unicode: f0fe · + Created: v3.0 · + Categories: + + Medical Icons, + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-plus-sign-alt +
    +
    +
    <i class="icon-plus-sign-alt"></i> icon-plus-sign-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/plus-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/plus-sign/index.html new file mode 100644 index 0000000..83dcde5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/plus-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-plus-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-plus-sign + + · + Unicode: f055 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-plus-sign +
    +
    +
    <i class="icon-plus-sign"></i> icon-plus-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/plus/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/plus/index.html new file mode 100644 index 0000000..13f2b25 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/plus/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-plus: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-plus + + · + Unicode: f067 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-plus +
    +
    +
    <i class="icon-plus"></i> icon-plus
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/print/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/print/index.html new file mode 100644 index 0000000..32740b8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/print/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-print: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-print + + · + Unicode: f02f · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-print +
    +
    +
    <i class="icon-print"></i> icon-print
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/pushpin/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/pushpin/index.html new file mode 100644 index 0000000..7605899 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/pushpin/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-pushpin: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-pushpin + + · + Unicode: f08d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-pushpin +
    +
    +
    <i class="icon-pushpin"></i> icon-pushpin
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/puzzle-piece/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/puzzle-piece/index.html new file mode 100644 index 0000000..b0dd142 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/puzzle-piece/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-puzzle-piece: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-puzzle-piece + + · + Unicode: f12e · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-puzzle-piece +
    +
    +
    <i class="icon-puzzle-piece"></i> icon-puzzle-piece
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/qrcode/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/qrcode/index.html new file mode 100644 index 0000000..e3f6ed9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/qrcode/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-qrcode: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-qrcode + + · + Unicode: f029 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-qrcode +
    +
    +
    <i class="icon-qrcode"></i> icon-qrcode
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/question-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/question-sign/index.html new file mode 100644 index 0000000..2f36afd --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/question-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-question-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-question-sign + + · + Unicode: f059 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-question-sign +
    +
    +
    <i class="icon-question-sign"></i> icon-question-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/question/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/question/index.html new file mode 100644 index 0000000..45b2e29 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/question/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-question: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-question + + · + Unicode: f128 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-question +
    +
    +
    <i class="icon-question"></i> icon-question
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/quote-left/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/quote-left/index.html new file mode 100644 index 0000000..e3c3f20 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/quote-left/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-quote-left: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-quote-left + + · + Unicode: f10d · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-quote-left +
    +
    +
    <i class="icon-quote-left"></i> icon-quote-left
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/quote-right/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/quote-right/index.html new file mode 100644 index 0000000..c3f4d8e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/quote-right/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-quote-right: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-quote-right + + · + Unicode: f10e · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-quote-right +
    +
    +
    <i class="icon-quote-right"></i> icon-quote-right
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/random/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/random/index.html new file mode 100644 index 0000000..0d20d95 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/random/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-random: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-random + + · + Unicode: f074 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-random +
    +
    +
    <i class="icon-random"></i> icon-random
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/refresh/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/refresh/index.html new file mode 100644 index 0000000..2b21bd5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/refresh/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-refresh: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-refresh + + · + Unicode: f021 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-refresh +
    +
    +
    <i class="icon-refresh"></i> icon-refresh
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/remove-circle/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/remove-circle/index.html new file mode 100644 index 0000000..d0bfb32 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/remove-circle/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-remove-circle: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-remove-circle + + · + Unicode: f05c · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-remove-circle +
    +
    +
    <i class="icon-remove-circle"></i> icon-remove-circle
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/remove-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/remove-sign/index.html new file mode 100644 index 0000000..a958c99 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/remove-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-remove-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-remove-sign + + · + Unicode: f057 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-remove-sign +
    +
    +
    <i class="icon-remove-sign"></i> icon-remove-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/remove/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/remove/index.html new file mode 100644 index 0000000..fc6cd3d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/remove/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-remove: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-remove + + · + Unicode: f00d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-remove +
    +
    +
    <i class="icon-remove"></i> icon-remove
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/renren/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/renren/index.html new file mode 100644 index 0000000..e77e2fe --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/renren/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-renren: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-renren + + · + Unicode: f18b · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-renren +
    +
    +
    <i class="icon-renren"></i> icon-renren
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/reorder/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/reorder/index.html new file mode 100644 index 0000000..5ec2925 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/reorder/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-reorder: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-reorder + + · + Unicode: f0c9 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-reorder +
    +
    +
    <i class="icon-reorder"></i> icon-reorder
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/repeat/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/repeat/index.html new file mode 100644 index 0000000..1f32a24 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/repeat/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-repeat: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-repeat + + · + Unicode: f01e · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + · Aliases: + + icon-rotate-right + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-repeat +
    +
    +
    <i class="icon-repeat"></i> icon-repeat
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/reply-all/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/reply-all/index.html new file mode 100644 index 0000000..c7da496 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/reply-all/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-reply-all: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-reply-all + + · + Unicode: f122 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-reply-all +
    +
    +
    <i class="icon-reply-all"></i> icon-reply-all
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/reply/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/reply/index.html new file mode 100644 index 0000000..d8dff55 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/reply/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-reply: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-reply + + · + Unicode: f112 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-mail-reply + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-reply +
    +
    +
    <i class="icon-reply"></i> icon-reply
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/resize-full/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/resize-full/index.html new file mode 100644 index 0000000..d228578 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/resize-full/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-resize-full: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-resize-full + + · + Unicode: f065 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-resize-full +
    +
    +
    <i class="icon-resize-full"></i> icon-resize-full
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/resize-horizontal/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/resize-horizontal/index.html new file mode 100644 index 0000000..1c0de39 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/resize-horizontal/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-resize-horizontal: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-resize-horizontal + + · + Unicode: f07e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-resize-horizontal +
    +
    +
    <i class="icon-resize-horizontal"></i> icon-resize-horizontal
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/resize-small/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/resize-small/index.html new file mode 100644 index 0000000..728efe3 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/resize-small/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-resize-small: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-resize-small + + · + Unicode: f066 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-resize-small +
    +
    +
    <i class="icon-resize-small"></i> icon-resize-small
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/resize-vertical/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/resize-vertical/index.html new file mode 100644 index 0000000..dcc9e3f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/resize-vertical/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-resize-vertical: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-resize-vertical + + · + Unicode: f07d · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-resize-vertical +
    +
    +
    <i class="icon-resize-vertical"></i> icon-resize-vertical
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/retweet/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/retweet/index.html new file mode 100644 index 0000000..3e4eebd --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/retweet/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-retweet: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-retweet + + · + Unicode: f079 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-retweet +
    +
    +
    <i class="icon-retweet"></i> icon-retweet
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/road/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/road/index.html new file mode 100644 index 0000000..f5d1735 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/road/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-road: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-road + + · + Unicode: f018 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-road +
    +
    +
    <i class="icon-road"></i> icon-road
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/rocket/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/rocket/index.html new file mode 100644 index 0000000..cfbb04a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/rocket/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-rocket: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-rocket + + · + Unicode: f135 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-rocket +
    +
    +
    <i class="icon-rocket"></i> icon-rocket
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/rss-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/rss-sign/index.html new file mode 100644 index 0000000..4babe0a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/rss-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-rss-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-rss-sign + + · + Unicode: f143 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-rss-sign +
    +
    +
    <i class="icon-rss-sign"></i> icon-rss-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/rss/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/rss/index.html new file mode 100644 index 0000000..86404f5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/rss/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-rss: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-rss + + · + Unicode: f09e · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-rss +
    +
    +
    <i class="icon-rss"></i> icon-rss
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/save/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/save/index.html new file mode 100644 index 0000000..2763b39 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/save/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-save: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-save + + · + Unicode: f0c7 · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-save +
    +
    +
    <i class="icon-save"></i> icon-save
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/screenshot/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/screenshot/index.html new file mode 100644 index 0000000..9daf41a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/screenshot/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-screenshot: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-screenshot + + · + Unicode: f05b · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-screenshot +
    +
    +
    <i class="icon-screenshot"></i> icon-screenshot
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/search/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/search/index.html new file mode 100644 index 0000000..dfe279a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/search/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-search: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-search + + · + Unicode: f002 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-search +
    +
    +
    <i class="icon-search"></i> icon-search
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/share-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/share-alt/index.html new file mode 100644 index 0000000..7126edd --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/share-alt/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-share-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-share-alt + + · + Unicode: f064 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-mail-forward + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-share-alt +
    +
    +
    <i class="icon-share-alt"></i> icon-share-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/share-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/share-sign/index.html new file mode 100644 index 0000000..901169d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/share-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-share-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-share-sign + + · + Unicode: f14d · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-share-sign +
    +
    +
    <i class="icon-share-sign"></i> icon-share-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/share/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/share/index.html new file mode 100644 index 0000000..310604d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/share/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-share: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-share + + · + Unicode: f045 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-share +
    +
    +
    <i class="icon-share"></i> icon-share
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/shield/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/shield/index.html new file mode 100644 index 0000000..f5e38a5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/shield/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-shield: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-shield + + · + Unicode: f132 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-shield +
    +
    +
    <i class="icon-shield"></i> icon-shield
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/shopping-cart/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/shopping-cart/index.html new file mode 100644 index 0000000..e13eb4a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/shopping-cart/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-shopping-cart: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-shopping-cart + + · + Unicode: f07a · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-shopping-cart +
    +
    +
    <i class="icon-shopping-cart"></i> icon-shopping-cart
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sign-blank/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sign-blank/index.html new file mode 100644 index 0000000..578b735 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sign-blank/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sign-blank: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sign-blank + + · + Unicode: f0c8 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sign-blank +
    +
    +
    <i class="icon-sign-blank"></i> icon-sign-blank
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/signal/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/signal/index.html new file mode 100644 index 0000000..cb7688c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/signal/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-signal: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-signal + + · + Unicode: f012 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-signal +
    +
    +
    <i class="icon-signal"></i> icon-signal
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/signin/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/signin/index.html new file mode 100644 index 0000000..44d7f6d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/signin/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-signin: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-signin + + · + Unicode: f090 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-signin +
    +
    +
    <i class="icon-signin"></i> icon-signin
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/signout/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/signout/index.html new file mode 100644 index 0000000..c6b8dca --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/signout/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-signout: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-signout + + · + Unicode: f08b · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-signout +
    +
    +
    <i class="icon-signout"></i> icon-signout
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sitemap/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sitemap/index.html new file mode 100644 index 0000000..297b3bf --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sitemap/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sitemap: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sitemap + + · + Unicode: f0e8 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sitemap +
    +
    +
    <i class="icon-sitemap"></i> icon-sitemap
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/skype/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/skype/index.html new file mode 100644 index 0000000..857fbc9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/skype/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-skype: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-skype + + · + Unicode: f17e · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-skype +
    +
    +
    <i class="icon-skype"></i> icon-skype
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/smile/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/smile/index.html new file mode 100644 index 0000000..9ba2550 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/smile/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-smile: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-smile + + · + Unicode: f118 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-smile +
    +
    +
    <i class="icon-smile"></i> icon-smile
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html new file mode 100644 index 0000000..ada4c5f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-by-alphabet-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-by-alphabet-alt + + · + Unicode: f15e · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-by-alphabet-alt +
    +
    +
    <i class="icon-sort-by-alphabet-alt"></i> icon-sort-by-alphabet-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet/index.html new file mode 100644 index 0000000..714f9f1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-alphabet/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-by-alphabet: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-by-alphabet + + · + Unicode: f15d · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-by-alphabet +
    +
    +
    <i class="icon-sort-by-alphabet"></i> icon-sort-by-alphabet
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html new file mode 100644 index 0000000..58bc154 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-by-attributes-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-by-attributes-alt + + · + Unicode: f161 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-by-attributes-alt +
    +
    +
    <i class="icon-sort-by-attributes-alt"></i> icon-sort-by-attributes-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes/index.html new file mode 100644 index 0000000..298d22e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-attributes/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-by-attributes: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-by-attributes + + · + Unicode: f160 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-by-attributes +
    +
    +
    <i class="icon-sort-by-attributes"></i> icon-sort-by-attributes
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order-alt/index.html new file mode 100644 index 0000000..01ff453 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-by-order-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-by-order-alt + + · + Unicode: f163 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-by-order-alt +
    +
    +
    <i class="icon-sort-by-order-alt"></i> icon-sort-by-order-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order/index.html new file mode 100644 index 0000000..5f03df8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-by-order/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-by-order: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-by-order + + · + Unicode: f162 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-by-order +
    +
    +
    <i class="icon-sort-by-order"></i> icon-sort-by-order
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-down/index.html new file mode 100644 index 0000000..cb848f9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-down + + · + Unicode: f0dd · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-down +
    +
    +
    <i class="icon-sort-down"></i> icon-sort-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort-up/index.html new file mode 100644 index 0000000..241bbc2 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort-up + + · + Unicode: f0de · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort-up +
    +
    +
    <i class="icon-sort-up"></i> icon-sort-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sort/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sort/index.html new file mode 100644 index 0000000..566ee70 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sort/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sort: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sort + + · + Unicode: f0dc · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sort +
    +
    +
    <i class="icon-sort"></i> icon-sort
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/spinner/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/spinner/index.html new file mode 100644 index 0000000..2cf9147 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/spinner/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-spinner: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-spinner + + · + Unicode: f110 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-spinner +
    +
    +
    <i class="icon-spinner"></i> icon-spinner
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/stackexchange/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/stackexchange/index.html new file mode 100644 index 0000000..3e2598b --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/stackexchange/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-stackexchange: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-stackexchange + + · + Unicode: f16c · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-stackexchange +
    +
    +
    <i class="icon-stackexchange"></i> icon-stackexchange
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/star-empty/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/star-empty/index.html new file mode 100644 index 0000000..ca43857 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/star-empty/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-star-empty: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-star-empty + + · + Unicode: f006 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-star-empty +
    +
    +
    <i class="icon-star-empty"></i> icon-star-empty
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/star-half-empty/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/star-half-empty/index.html new file mode 100644 index 0000000..47bd07a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/star-half-empty/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-star-half-empty: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-star-half-empty + + · + Unicode: f123 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + · Aliases: + + icon-star-half-full + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-star-half-empty +
    +
    +
    <i class="icon-star-half-empty"></i> icon-star-half-empty
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/star-half/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/star-half/index.html new file mode 100644 index 0000000..efd0ac1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/star-half/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-star-half: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-star-half + + · + Unicode: f089 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-star-half +
    +
    +
    <i class="icon-star-half"></i> icon-star-half
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/star/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/star/index.html new file mode 100644 index 0000000..e61f90c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/star/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-star: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-star + + · + Unicode: f005 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-star +
    +
    +
    <i class="icon-star"></i> icon-star
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/step-backward/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/step-backward/index.html new file mode 100644 index 0000000..578fd70 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/step-backward/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-step-backward: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-step-backward + + · + Unicode: f048 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-step-backward +
    +
    +
    <i class="icon-step-backward"></i> icon-step-backward
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/step-forward/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/step-forward/index.html new file mode 100644 index 0000000..cce1bd4 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/step-forward/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-step-forward: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-step-forward + + · + Unicode: f051 · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-step-forward +
    +
    +
    <i class="icon-step-forward"></i> icon-step-forward
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/stethoscope/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/stethoscope/index.html new file mode 100644 index 0000000..86c1527 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/stethoscope/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-stethoscope: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-stethoscope + + · + Unicode: f0f1 · + Created: v3.0 · + Categories: + + Medical Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-stethoscope +
    +
    +
    <i class="icon-stethoscope"></i> icon-stethoscope
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/stop/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/stop/index.html new file mode 100644 index 0000000..6de8657 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/stop/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-stop: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-stop + + · + Unicode: f04d · + Created: v1.0 · + Categories: + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-stop +
    +
    +
    <i class="icon-stop"></i> icon-stop
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/strikethrough/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/strikethrough/index.html new file mode 100644 index 0000000..368d804 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/strikethrough/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-strikethrough: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-strikethrough + + · + Unicode: f0cc · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-strikethrough +
    +
    +
    <i class="icon-strikethrough"></i> icon-strikethrough
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/subscript/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/subscript/index.html new file mode 100644 index 0000000..1310be1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/subscript/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-subscript: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-subscript + + · + Unicode: f12c · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-subscript +
    +
    +
    <i class="icon-subscript"></i> icon-subscript
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/suitcase/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/suitcase/index.html new file mode 100644 index 0000000..320ecf8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/suitcase/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-suitcase: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-suitcase + + · + Unicode: f0f2 · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-suitcase +
    +
    +
    <i class="icon-suitcase"></i> icon-suitcase
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/sun/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/sun/index.html new file mode 100644 index 0000000..dc53ca9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/sun/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-sun: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-sun + + · + Unicode: f185 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-sun +
    +
    +
    <i class="icon-sun"></i> icon-sun
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/superscript/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/superscript/index.html new file mode 100644 index 0000000..69b333d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/superscript/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-superscript: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-superscript + + · + Unicode: f12b · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-superscript +
    +
    +
    <i class="icon-superscript"></i> icon-superscript
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/table/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/table/index.html new file mode 100644 index 0000000..86b2ad1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/table/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-table: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-table + + · + Unicode: f0ce · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-table +
    +
    +
    <i class="icon-table"></i> icon-table
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tablet/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tablet/index.html new file mode 100644 index 0000000..529db7a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tablet/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tablet: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tablet + + · + Unicode: f10a · + Created: v3.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tablet +
    +
    +
    <i class="icon-tablet"></i> icon-tablet
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tag/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tag/index.html new file mode 100644 index 0000000..dc823f6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tag/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tag: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tag + + · + Unicode: f02b · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tag +
    +
    +
    <i class="icon-tag"></i> icon-tag
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tags/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tags/index.html new file mode 100644 index 0000000..9d5f0b6 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tags/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tags: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tags + + · + Unicode: f02c · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tags +
    +
    +
    <i class="icon-tags"></i> icon-tags
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tasks/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tasks/index.html new file mode 100644 index 0000000..5c232bd --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tasks/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tasks: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tasks + + · + Unicode: f0ae · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tasks +
    +
    +
    <i class="icon-tasks"></i> icon-tasks
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/terminal/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/terminal/index.html new file mode 100644 index 0000000..b608e3f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/terminal/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-terminal: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-terminal + + · + Unicode: f120 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-terminal +
    +
    +
    <i class="icon-terminal"></i> icon-terminal
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/text-height/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/text-height/index.html new file mode 100644 index 0000000..3d7ccde --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/text-height/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-text-height: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-text-height + + · + Unicode: f034 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-text-height +
    +
    +
    <i class="icon-text-height"></i> icon-text-height
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/text-width/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/text-width/index.html new file mode 100644 index 0000000..8a84f94 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/text-width/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-text-width: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-text-width + + · + Unicode: f035 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-text-width +
    +
    +
    <i class="icon-text-width"></i> icon-text-width
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/th-large/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/th-large/index.html new file mode 100644 index 0000000..7eada00 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/th-large/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-th-large: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-th-large + + · + Unicode: f009 · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-th-large +
    +
    +
    <i class="icon-th-large"></i> icon-th-large
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/th-list/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/th-list/index.html new file mode 100644 index 0000000..67fd825 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/th-list/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-th-list: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-th-list + + · + Unicode: f00b · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-th-list +
    +
    +
    <i class="icon-th-list"></i> icon-th-list
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/th/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/th/index.html new file mode 100644 index 0000000..dd086a9 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/th/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-th: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-th + + · + Unicode: f00a · + Created: v1.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-th +
    +
    +
    <i class="icon-th"></i> icon-th
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down-alt/index.html new file mode 100644 index 0000000..42b382d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-thumbs-down-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-thumbs-down-alt + + · + Unicode: f088 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-thumbs-down-alt +
    +
    +
    <i class="icon-thumbs-down-alt"></i> icon-thumbs-down-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down/index.html new file mode 100644 index 0000000..401c918 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-thumbs-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-thumbs-down + + · + Unicode: f165 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-thumbs-down +
    +
    +
    <i class="icon-thumbs-down"></i> icon-thumbs-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up-alt/index.html new file mode 100644 index 0000000..eeacb9e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-thumbs-up-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-thumbs-up-alt + + · + Unicode: f087 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-thumbs-up-alt +
    +
    +
    <i class="icon-thumbs-up-alt"></i> icon-thumbs-up-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up/index.html new file mode 100644 index 0000000..7c9fefe --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/thumbs-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-thumbs-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-thumbs-up + + · + Unicode: f164 · + Created: v3.2 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-thumbs-up +
    +
    +
    <i class="icon-thumbs-up"></i> icon-thumbs-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/ticket/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/ticket/index.html new file mode 100644 index 0000000..333f55c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/ticket/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-ticket: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-ticket + + · + Unicode: f145 · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-ticket +
    +
    +
    <i class="icon-ticket"></i> icon-ticket
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/time/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/time/index.html new file mode 100644 index 0000000..af36297 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/time/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-time: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-time + + · + Unicode: f017 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-time +
    +
    +
    <i class="icon-time"></i> icon-time
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tint/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tint/index.html new file mode 100644 index 0000000..fb7a375 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tint/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tint: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tint + + · + Unicode: f043 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tint +
    +
    +
    <i class="icon-tint"></i> icon-tint
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/trash/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/trash/index.html new file mode 100644 index 0000000..58c9bb7 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/trash/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-trash: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-trash + + · + Unicode: f014 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-trash +
    +
    +
    <i class="icon-trash"></i> icon-trash
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/trello/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/trello/index.html new file mode 100644 index 0000000..0f3498d --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/trello/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-trello: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-trello + + · + Unicode: f181 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-trello +
    +
    +
    <i class="icon-trello"></i> icon-trello
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/trophy/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/trophy/index.html new file mode 100644 index 0000000..ecdd6ea --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/trophy/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-trophy: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-trophy + + · + Unicode: f091 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-trophy +
    +
    +
    <i class="icon-trophy"></i> icon-trophy
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/truck/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/truck/index.html new file mode 100644 index 0000000..158dc47 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/truck/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-truck: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-truck + + · + Unicode: f0d1 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-truck +
    +
    +
    <i class="icon-truck"></i> icon-truck
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tumblr-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tumblr-sign/index.html new file mode 100644 index 0000000..2149ee5 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tumblr-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tumblr-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tumblr-sign + + · + Unicode: f174 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tumblr-sign +
    +
    +
    <i class="icon-tumblr-sign"></i> icon-tumblr-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/tumblr/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/tumblr/index.html new file mode 100644 index 0000000..276c513 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/tumblr/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-tumblr: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-tumblr + + · + Unicode: f173 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-tumblr +
    +
    +
    <i class="icon-tumblr"></i> icon-tumblr
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/twitter-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/twitter-sign/index.html new file mode 100644 index 0000000..efdf8ef --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/twitter-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-twitter-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-twitter-sign + + · + Unicode: f081 · + Created: v1.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-twitter-sign +
    +
    +
    <i class="icon-twitter-sign"></i> icon-twitter-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/twitter/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/twitter/index.html new file mode 100644 index 0000000..d07d9b1 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/twitter/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-twitter: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-twitter + + · + Unicode: f099 · + Created: v2.0 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-twitter +
    +
    +
    <i class="icon-twitter"></i> icon-twitter
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/umbrella/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/umbrella/index.html new file mode 100644 index 0000000..9c54399 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/umbrella/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-umbrella: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-umbrella + + · + Unicode: f0e9 · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-umbrella +
    +
    +
    <i class="icon-umbrella"></i> icon-umbrella
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/underline/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/underline/index.html new file mode 100644 index 0000000..3128eb4 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/underline/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-underline: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-underline + + · + Unicode: f0cd · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-underline +
    +
    +
    <i class="icon-underline"></i> icon-underline
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/undo/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/undo/index.html new file mode 100644 index 0000000..59e600c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/undo/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-undo: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-undo + + · + Unicode: f0e2 · + Created: v2.0 · + Categories: + + Text Editor Icons + + + + · Aliases: + + icon-rotate-left + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-undo +
    +
    +
    <i class="icon-undo"></i> icon-undo
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/unlink/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/unlink/index.html new file mode 100644 index 0000000..9cb39dc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/unlink/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-unlink: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-unlink + + · + Unicode: f127 · + Created: v3.1 · + Categories: + + Text Editor Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-unlink +
    +
    +
    <i class="icon-unlink"></i> icon-unlink
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/unlock-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/unlock-alt/index.html new file mode 100644 index 0000000..b37ae71 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/unlock-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-unlock-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-unlock-alt + + · + Unicode: f13e · + Created: v3.1 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-unlock-alt +
    +
    +
    <i class="icon-unlock-alt"></i> icon-unlock-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/unlock/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/unlock/index.html new file mode 100644 index 0000000..0436dc0 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/unlock/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-unlock: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-unlock + + · + Unicode: f09c · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-unlock +
    +
    +
    <i class="icon-unlock"></i> icon-unlock
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/upload-alt/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/upload-alt/index.html new file mode 100644 index 0000000..321de9e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/upload-alt/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-upload-alt: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-upload-alt + + · + Unicode: f093 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-upload-alt +
    +
    +
    <i class="icon-upload-alt"></i> icon-upload-alt
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/upload/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/upload/index.html new file mode 100644 index 0000000..1a49e78 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/upload/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-upload: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-upload + + · + Unicode: f01b · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-upload +
    +
    +
    <i class="icon-upload"></i> icon-upload
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/usd/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/usd/index.html new file mode 100644 index 0000000..36eb1da --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/usd/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + icon-usd: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-usd + + · + Unicode: f155 · + Created: v3.2 · + Categories: + + Currency Icons + + + + · Aliases: + + icon-dollar + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-usd +
    +
    +
    <i class="icon-usd"></i> icon-usd
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/user-md/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/user-md/index.html new file mode 100644 index 0000000..e8850dc --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/user-md/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-user-md: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-user-md + + · + Unicode: f0f0 · + Created: v2.0 · + Categories: + + Medical Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-user-md +
    +
    +
    <i class="icon-user-md"></i> icon-user-md
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/user/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/user/index.html new file mode 100644 index 0000000..4fe72a2 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/user/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-user: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-user + + · + Unicode: f007 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-user +
    +
    +
    <i class="icon-user"></i> icon-user
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/vk/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/vk/index.html new file mode 100644 index 0000000..3c8f4e8 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/vk/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-vk: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-vk + + · + Unicode: f189 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-vk +
    +
    +
    <i class="icon-vk"></i> icon-vk
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/volume-down/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/volume-down/index.html new file mode 100644 index 0000000..8c538de --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/volume-down/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-volume-down: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-volume-down + + · + Unicode: f027 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-volume-down +
    +
    +
    <i class="icon-volume-down"></i> icon-volume-down
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/volume-off/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/volume-off/index.html new file mode 100644 index 0000000..f00e216 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/volume-off/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-volume-off: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-volume-off + + · + Unicode: f026 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-volume-off +
    +
    +
    <i class="icon-volume-off"></i> icon-volume-off
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/volume-up/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/volume-up/index.html new file mode 100644 index 0000000..8157edd --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/volume-up/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-volume-up: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-volume-up + + · + Unicode: f028 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-volume-up +
    +
    +
    <i class="icon-volume-up"></i> icon-volume-up
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/warning-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/warning-sign/index.html new file mode 100644 index 0000000..31cd8ee --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/warning-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-warning-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-warning-sign + + · + Unicode: f071 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-warning-sign +
    +
    +
    <i class="icon-warning-sign"></i> icon-warning-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/weibo/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/weibo/index.html new file mode 100644 index 0000000..f76ed2a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/weibo/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-weibo: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-weibo + + · + Unicode: f18a · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-weibo +
    +
    +
    <i class="icon-weibo"></i> icon-weibo
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/windows/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/windows/index.html new file mode 100644 index 0000000..7513f5a --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/windows/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-windows: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-windows + + · + Unicode: f17a · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-windows +
    +
    +
    <i class="icon-windows"></i> icon-windows
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/wrench/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/wrench/index.html new file mode 100644 index 0000000..6562caa --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/wrench/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-wrench: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-wrench + + · + Unicode: f0ad · + Created: v2.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-wrench +
    +
    +
    <i class="icon-wrench"></i> icon-wrench
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/xing-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/xing-sign/index.html new file mode 100644 index 0000000..b2f482f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/xing-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-xing-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-xing-sign + + · + Unicode: f169 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-xing-sign +
    +
    +
    <i class="icon-xing-sign"></i> icon-xing-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/xing/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/xing/index.html new file mode 100644 index 0000000..68aa153 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/xing/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-xing: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-xing + + · + Unicode: f168 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-xing +
    +
    +
    <i class="icon-xing"></i> icon-xing
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/youtube-play/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/youtube-play/index.html new file mode 100644 index 0000000..60874dd --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/youtube-play/index.html @@ -0,0 +1,210 @@ + + + + + + + + + + icon-youtube-play: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-youtube-play + + · + Unicode: f16a · + Created: v3.2 · + Categories: + + Brand Icons, + + Video Player Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-youtube-play +
    +
    +
    <i class="icon-youtube-play"></i> icon-youtube-play
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/youtube-sign/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/youtube-sign/index.html new file mode 100644 index 0000000..fe6f624 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/youtube-sign/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-youtube-sign: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-youtube-sign + + · + Unicode: f166 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-youtube-sign +
    +
    +
    <i class="icon-youtube-sign"></i> icon-youtube-sign
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/youtube/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/youtube/index.html new file mode 100644 index 0000000..51ec01c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/youtube/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-youtube: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-youtube + + · + Unicode: f167 · + Created: v3.2 · + Categories: + + Brand Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-youtube +
    +
    +
    <i class="icon-youtube"></i> icon-youtube
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/zoom-in/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/zoom-in/index.html new file mode 100644 index 0000000..294842c --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/zoom-in/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-zoom-in: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-zoom-in + + · + Unicode: f00e · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-zoom-in +
    +
    +
    <i class="icon-zoom-in"></i> icon-zoom-in
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icon/zoom-out/index.html b/app/bower_components/font-awesome/src/3.2.1/icon/zoom-out/index.html new file mode 100644 index 0000000..2f1f188 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icon/zoom-out/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + icon-zoom-out: Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +    + +    +    +    +   + + +
    +

    + icon-zoom-out + + · + Unicode: f010 · + Created: v1.0 · + Categories: + + Web Application Icons + + + + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + icon-zoom-out +
    +
    +
    <i class="icon-zoom-out"></i> icon-zoom-out
    +
    +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/icons.yml b/app/bower_components/font-awesome/src/3.2.1/icons.yml new file mode 100755 index 0000000..c3c8f53 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icons.yml @@ -0,0 +1,2590 @@ +icons: + - name: Glass + id: glass + unicode: f000 + created: 1.0 + categories: + - Web Application Icons + + - name: Music + id: music + unicode: f001 + created: 1.0 + categories: + - Web Application Icons + + - name: Search + id: search + unicode: f002 + created: 1.0 + categories: + - Web Application Icons + + - name: Envelope Alt + id: envelope-alt + unicode: f003 + created: 1.0 + categories: + - Web Application Icons + + - name: Heart + id: heart + unicode: f004 + created: 1.0 + categories: + - Web Application Icons + + - name: Star + id: star + unicode: f005 + created: 1.0 + categories: + - Web Application Icons + + - name: Star Empty + id: star-empty + unicode: f006 + created: 1.0 + categories: + - Web Application Icons + + - name: User + id: user + unicode: f007 + created: 1.0 + categories: + - Web Application Icons + + - name: Film + id: film + unicode: f008 + created: 1.0 + categories: + - Web Application Icons + + - name: th-large + id: th-large + unicode: f009 + created: 1.0 + categories: + - Text Editor Icons + + - name: th + id: th + unicode: f00a + created: 1.0 + categories: + - Text Editor Icons + + - name: th-list + id: th-list + unicode: f00b + created: 1.0 + categories: + - Text Editor Icons + + - name: OK + id: ok + unicode: f00c + created: 1.0 + categories: + - Web Application Icons + + - name: Remove + id: remove + unicode: f00d + created: 1.0 + categories: + - Web Application Icons + + - name: Zoom In + id: zoom-in + unicode: f00e + created: 1.0 + categories: + - Web Application Icons + + + - name: Zoom Out + id: zoom-out + unicode: f010 + created: 1.0 + categories: + - Web Application Icons + + - name: Off + id: 'off' + unicode: f011 + created: 1.0 + aliases: + - power-off + categories: + - Web Application Icons + + - name: signal + id: signal + unicode: f012 + created: 1.0 + categories: + - Web Application Icons + + - name: cog + id: cog + unicode: f013 + created: 1.0 + aliases: + - gear + categories: + - Web Application Icons + + - name: trash + id: trash + unicode: f014 + created: 1.0 + categories: + - Web Application Icons + + - name: home + id: home + unicode: f015 + created: 1.0 + categories: + - Web Application Icons + + - name: file-alt + id: file-alt + unicode: f016 + created: 1.0 + categories: + - Text Editor Icons + + - name: time + id: time + unicode: f017 + created: 1.0 + categories: + - Web Application Icons + + - name: road + id: road + unicode: f018 + created: 1.0 + categories: + - Web Application Icons + + - name: download-alt + id: download-alt + unicode: f019 + created: 1.0 + categories: + - Web Application Icons + + - name: download + id: download + unicode: f01a + created: 1.0 + categories: + - Web Application Icons + + - name: upload + id: upload + unicode: f01b + created: 1.0 + categories: + - Web Application Icons + + - name: inbox + id: inbox + unicode: f01c + created: 1.0 + categories: + - Web Application Icons + + - name: play-circle + id: play-circle + unicode: f01d + created: 1.0 + categories: + - Video Player Icons + + - name: repeat + id: repeat + unicode: f01e + created: 1.0 + aliases: + - rotate-right + categories: + - Text Editor Icons + + + - name: refresh + id: refresh + unicode: f021 + created: 1.0 + categories: + - Web Application Icons + + - name: list-alt + id: list-alt + unicode: f022 + created: 1.0 + categories: + - Text Editor Icons + + - name: lock + id: lock + unicode: f023 + created: 1.0 + categories: + - Web Application Icons + + - name: flag + id: flag + unicode: f024 + created: 1.0 + categories: + - Web Application Icons + + - name: headphones + id: headphones + unicode: f025 + created: 1.0 + categories: + - Web Application Icons + + - name: volume-off + id: volume-off + unicode: f026 + created: 1.0 + categories: + - Web Application Icons + + - name: volume-down + id: volume-down + unicode: f027 + created: 1.0 + categories: + - Web Application Icons + + - name: volume-up + id: volume-up + unicode: f028 + created: 1.0 + categories: + - Web Application Icons + + - name: qrcode + id: qrcode + unicode: f029 + created: 1.0 + categories: + - Web Application Icons + + - name: barcode + id: barcode + unicode: f02a + created: 1.0 + categories: + - Web Application Icons + + - name: tag + id: tag + unicode: f02b + created: 1.0 + categories: + - Web Application Icons + + - name: tags + id: tags + unicode: f02c + created: 1.0 + categories: + - Web Application Icons + + - name: book + id: book + unicode: f02d + created: 1.0 + categories: + - Web Application Icons + + - name: bookmark + id: bookmark + unicode: f02e + created: 1.0 + categories: + - Web Application Icons + + - name: print + id: print + unicode: f02f + created: 1.0 + categories: + - Web Application Icons + + + - name: camera + id: camera + unicode: f030 + created: 1.0 + categories: + - Web Application Icons + + - name: font + id: font + unicode: f031 + created: 1.0 + categories: + - Text Editor Icons + + - name: bold + id: bold + unicode: f032 + created: 1.0 + categories: + - Text Editor Icons + + - name: italic + id: italic + unicode: f033 + created: 1.0 + categories: + - Text Editor Icons + + - name: text-height + id: text-height + unicode: f034 + created: 1.0 + categories: + - Text Editor Icons + + - name: text-width + id: text-width + unicode: f035 + created: 1.0 + categories: + - Text Editor Icons + + - name: align-left + id: align-left + unicode: f036 + created: 1.0 + categories: + - Text Editor Icons + + - name: align-center + id: align-center + unicode: f037 + created: 1.0 + categories: + - Text Editor Icons + + - name: align-right + id: align-right + unicode: f038 + created: 1.0 + categories: + - Text Editor Icons + + - name: align-justify + id: align-justify + unicode: f039 + created: 1.0 + categories: + - Text Editor Icons + + - name: list + id: list + unicode: f03a + created: 1.0 + categories: + - Text Editor Icons + + - name: indent-left + id: indent-left + unicode: f03b + created: 1.0 + categories: + - Text Editor Icons + + - name: indent-right + id: indent-right + unicode: f03c + created: 1.0 + categories: + - Text Editor Icons + + - name: facetime-video + id: facetime-video + unicode: f03d + created: 1.0 + categories: + - Web Application Icons + + - name: picture + id: picture + unicode: f03e + created: 1.0 + categories: + - Web Application Icons + + + - name: pencil + id: pencil + unicode: f040 + created: 1.0 + categories: + - Web Application Icons + + - name: map-marker + id: map-marker + unicode: f041 + created: 1.0 + categories: + - Web Application Icons + + - name: adjust + id: adjust + unicode: f042 + created: 1.0 + categories: + - Web Application Icons + + - name: tint + id: tint + unicode: f043 + created: 1.0 + categories: + - Web Application Icons + + - name: edit + id: edit + unicode: f044 + created: 1.0 + categories: + - Web Application Icons + + - name: share + id: share + unicode: f045 + created: 1.0 + categories: + - Web Application Icons + + - name: check + id: check + unicode: f046 + created: 1.0 + categories: + - Web Application Icons + + - name: move + id: move + unicode: f047 + created: 1.0 + categories: + - Web Application Icons + + - name: step-backward + id: step-backward + unicode: f048 + created: 1.0 + categories: + - Video Player Icons + + - name: fast-backward + id: fast-backward + unicode: f049 + created: 1.0 + categories: + - Video Player Icons + + - name: backward + id: backward + unicode: f04a + created: 1.0 + categories: + - Video Player Icons + + - name: play + id: play + unicode: f04b + created: 1.0 + categories: + - Video Player Icons + + - name: pause + id: pause + unicode: f04c + created: 1.0 + categories: + - Video Player Icons + + - name: stop + id: stop + unicode: f04d + created: 1.0 + categories: + - Video Player Icons + + - name: forward + id: forward + unicode: f04e + created: 1.0 + categories: + - Video Player Icons + + + - name: fast-forward + id: fast-forward + unicode: f050 + created: 1.0 + categories: + - Video Player Icons + + - name: step-forward + id: step-forward + unicode: f051 + created: 1.0 + categories: + - Video Player Icons + + - name: eject + id: eject + unicode: f052 + created: 1.0 + categories: + - Video Player Icons + + - name: chevron-left + id: chevron-left + unicode: f053 + created: 1.0 + categories: + - Directional Icons + + - name: chevron-right + id: chevron-right + unicode: f054 + created: 1.0 + categories: + - Directional Icons + + - name: plus-sign + id: plus-sign + unicode: f055 + created: 1.0 + categories: + - Web Application Icons + + - name: minus-sign + id: minus-sign + unicode: f056 + created: 1.0 + categories: + - Web Application Icons + + - name: remove-sign + id: remove-sign + unicode: f057 + created: 1.0 + categories: + - Web Application Icons + + - name: ok-sign + id: ok-sign + unicode: f058 + created: 1.0 + categories: + - Web Application Icons + + - name: question-sign + id: question-sign + unicode: f059 + created: 1.0 + categories: + - Web Application Icons + + - name: info-sign + id: info-sign + unicode: f05a + created: 1.0 + categories: + - Web Application Icons + + - name: screenshot + id: screenshot + unicode: f05b + created: 1.0 + categories: + - Web Application Icons + + - name: remove-circle + id: remove-circle + unicode: f05c + created: 1.0 + categories: + - Web Application Icons + + - name: ok-circle + id: ok-circle + unicode: f05d + created: 1.0 + categories: + - Web Application Icons + + - name: ban-circle + id: ban-circle + unicode: f05e + created: 1.0 + categories: + - Web Application Icons + + + - name: arrow-left + id: arrow-left + unicode: f060 + created: 1.0 + categories: + - Directional Icons + + - name: arrow-right + id: arrow-right + unicode: f061 + created: 1.0 + categories: + - Directional Icons + + - name: arrow-up + id: arrow-up + unicode: f062 + created: 1.0 + categories: + - Directional Icons + + - name: arrow-down + id: arrow-down + unicode: f063 + created: 1.0 + categories: + - Directional Icons + + - name: share-alt + id: share-alt + unicode: f064 + created: 1.0 + aliases: + - mail-forward + categories: + - Web Application Icons + + - name: resize-full + id: resize-full + unicode: f065 + created: 1.0 + categories: + - Video Player Icons + + - name: resize-small + id: resize-small + unicode: f066 + created: 1.0 + categories: + - Video Player Icons + + - name: plus + id: plus + unicode: f067 + created: 1.0 + categories: + - Web Application Icons + + - name: minus + id: minus + unicode: f068 + created: 1.0 + categories: + - Web Application Icons + + - name: asterisk + id: asterisk + unicode: f069 + created: 1.0 + categories: + - Web Application Icons + + - name: exclamation-sign + id: exclamation-sign + unicode: f06a + created: 1.0 + categories: + - Web Application Icons + + - name: gift + id: gift + unicode: f06b + created: 1.0 + categories: + - Web Application Icons + + - name: leaf + id: leaf + unicode: f06c + created: 1.0 + categories: + - Web Application Icons + + - name: fire + id: fire + unicode: f06d + created: 1.0 + categories: + - Web Application Icons + + - name: eye-open + id: eye-open + unicode: f06e + created: 1.0 + categories: + - Web Application Icons + + + - name: eye-close + id: eye-close + unicode: f070 + created: 1.0 + categories: + - Web Application Icons + + - name: warning-sign + id: warning-sign + unicode: f071 + created: 1.0 + categories: + - Web Application Icons + + - name: plane + id: plane + unicode: f072 + created: 1.0 + categories: + - Web Application Icons + + - name: calendar + id: calendar + unicode: f073 + created: 1.0 + categories: + - Web Application Icons + + - name: random + id: random + unicode: f074 + created: 1.0 + categories: + - Web Application Icons + + - name: comment + id: comment + unicode: f075 + created: 1.0 + categories: + - Web Application Icons + + - name: magnet + id: magnet + unicode: f076 + created: 1.0 + categories: + - Web Application Icons + + - name: chevron-up + id: chevron-up + unicode: f077 + created: 1.0 + categories: + - Directional Icons + + - name: chevron-down + id: chevron-down + unicode: f078 + created: 1.0 + categories: + - Directional Icons + + - name: retweet + id: retweet + unicode: f079 + created: 1.0 + categories: + - Web Application Icons + + - name: shopping-cart + id: shopping-cart + unicode: f07a + created: 1.0 + categories: + - Web Application Icons + + - name: folder-close + id: folder-close + unicode: f07b + created: 1.0 + categories: + - Web Application Icons + + - name: folder-open + id: folder-open + unicode: f07c + created: 1.0 + categories: + - Web Application Icons + + - name: resize-vertical + id: resize-vertical + unicode: f07d + created: 1.0 + categories: + - Web Application Icons + + - name: resize-horizontal + id: resize-horizontal + unicode: f07e + created: 1.0 + categories: + - Web Application Icons + + + - name: bar-chart + id: bar-chart + unicode: f080 + created: 1.0 + categories: + - Web Application Icons + + - name: twitter-sign + id: twitter-sign + unicode: f081 + created: 1.0 + categories: + - Brand Icons + + - name: facebook-sign + id: facebook-sign + unicode: f082 + created: 1.0 + categories: + - Brand Icons + + - name: camera-retro + id: camera-retro + unicode: f083 + created: 1.0 + categories: + - Web Application Icons + + - name: key + id: key + unicode: f084 + created: 1.0 + categories: + - Web Application Icons + + - name: cogs + id: cogs + unicode: f085 + created: 1.0 + aliases: + - gears + categories: + - Web Application Icons + + - name: comments + id: comments + unicode: f086 + created: 1.0 + categories: + - Web Application Icons + + - name: thumbs-up-alt + id: thumbs-up-alt + unicode: f087 + created: 1.0 + categories: + - Web Application Icons + + - name: thumbs-down-alt + id: thumbs-down-alt + unicode: f088 + created: 1.0 + categories: + - Web Application Icons + + - name: star-half + id: star-half + unicode: f089 + created: 1.0 + categories: + - Web Application Icons + + - name: heart-empty + id: heart-empty + unicode: f08a + created: 1.0 + categories: + - Web Application Icons + + - name: signout + id: signout + unicode: f08b + created: 1.0 + categories: + - Web Application Icons + + - name: linkedin-sign + id: linkedin-sign + unicode: f08c + created: 1.0 + categories: + - Brand Icons + + - name: pushpin + id: pushpin + unicode: f08d + created: 1.0 + categories: + - Web Application Icons + + - name: external-link + id: external-link + unicode: f08e + created: 1.0 + categories: + - Web Application Icons + + + - name: signin + id: signin + unicode: f090 + created: 1.0 + categories: + - Web Application Icons + + - name: trophy + id: trophy + unicode: f091 + created: 1.0 + categories: + - Web Application Icons + + - name: github-sign + id: github-sign + unicode: f092 + created: 1.0 + categories: + - Brand Icons + + - name: upload-alt + id: upload-alt + unicode: f093 + created: 1.0 + categories: + - Web Application Icons + + - name: lemon + id: lemon + unicode: f094 + created: 1.0 + categories: + - Web Application Icons + + - name: phone + id: phone + unicode: f095 + created: 2.0 + categories: + - Web Application Icons + + - name: check-empty + id: check-empty + unicode: f096 + created: 2.0 + aliases: + - unchecked + categories: + - Web Application Icons + + - name: bookmark-empty + id: bookmark-empty + unicode: f097 + created: 2.0 + categories: + - Web Application Icons + + - name: phone-sign + id: phone-sign + unicode: f098 + created: 2.0 + categories: + - Web Application Icons + + - name: twitter + id: twitter + unicode: f099 + created: 2.0 + categories: + - Brand Icons + + - name: facebook + id: facebook + unicode: f09a + created: 2.0 + categories: + - Brand Icons + + - name: github + id: github + unicode: f09b + created: 2.0 + categories: + - Brand Icons + + - name: unlock + id: unlock + unicode: f09c + created: 2.0 + categories: + - Web Application Icons + + - name: credit-card + id: credit-card + unicode: f09d + created: 2.0 + categories: + - Web Application Icons + + - name: rss + id: rss + unicode: f09e + created: 2.0 + categories: + - Web Application Icons + + + - name: hdd + id: hdd + unicode: f0a0 + created: 2.0 + categories: + - Web Application Icons + + - name: bullhorn + id: bullhorn + unicode: f0a1 + created: 2.0 + categories: + - Web Application Icons + + - name: bell + id: bell + unicode: f0a2 + created: 2.0 + categories: + - Web Application Icons + + - name: certificate + id: certificate + unicode: f0a3 + created: 2.0 + categories: + - Web Application Icons + + - name: hand-right + id: hand-right + unicode: f0a4 + created: 2.0 + categories: + - Directional Icons + + - name: hand-left + id: hand-left + unicode: f0a5 + created: 2.0 + categories: + - Directional Icons + + - name: hand-up + id: hand-up + unicode: f0a6 + created: 2.0 + categories: + - Directional Icons + + - name: hand-down + id: hand-down + unicode: f0a7 + created: 2.0 + categories: + - Directional Icons + + - name: circle-arrow-left + id: circle-arrow-left + unicode: f0a8 + created: 2.0 + categories: + - Directional Icons + + - name: circle-arrow-right + id: circle-arrow-right + unicode: f0a9 + created: 2.0 + categories: + - Directional Icons + + - name: circle-arrow-up + id: circle-arrow-up + unicode: f0aa + created: 2.0 + categories: + - Directional Icons + + - name: circle-arrow-down + id: circle-arrow-down + unicode: f0ab + created: 2.0 + categories: + - Directional Icons + + - name: globe + id: globe + unicode: f0ac + created: 2.0 + categories: + - Web Application Icons + + - name: wrench + id: wrench + unicode: f0ad + created: 2.0 + categories: + - Web Application Icons + + - name: tasks + id: tasks + unicode: f0ae + created: 2.0 + categories: + - Web Application Icons + + + - name: filter + id: filter + unicode: f0b0 + created: 2.0 + categories: + - Web Application Icons + + - name: briefcase + id: briefcase + unicode: f0b1 + created: 2.0 + categories: + - Web Application Icons + + - name: fullscreen + id: fullscreen + unicode: f0b2 + created: 2.0 + categories: + - Video Player Icons + + + - name: group + id: group + unicode: f0c0 + created: 2.0 + categories: + - Web Application Icons + + - name: link + id: link + unicode: f0c1 + created: 2.0 + categories: + - Text Editor Icons + + - name: cloud + id: cloud + unicode: f0c2 + created: 2.0 + categories: + - Web Application Icons + + - name: beaker + id: beaker + unicode: f0c3 + created: 2.0 + categories: + - Web Application Icons + + - name: cut + id: cut + unicode: f0c4 + created: 2.0 + categories: + - Text Editor Icons + + - name: copy + id: copy + unicode: f0c5 + created: 2.0 + categories: + - Text Editor Icons + + - name: paper-clip + id: paper-clip + unicode: f0c6 + created: 2.0 + aliases: + - paperclip + categories: + - Text Editor Icons + + - name: save + id: save + unicode: f0c7 + created: 2.0 + categories: + - Text Editor Icons + + - name: sign-blank + id: sign-blank + unicode: f0c8 + created: 2.0 + categories: + - Web Application Icons + + - name: reorder + id: reorder + unicode: f0c9 + created: 2.0 + categories: + - Web Application Icons + + - name: list-ul + id: list-ul + unicode: f0ca + created: 2.0 + categories: + - Text Editor Icons + + - name: list-ol + id: list-ol + unicode: f0cb + created: 2.0 + categories: + - Text Editor Icons + + - name: strikethrough + id: strikethrough + unicode: f0cc + created: 2.0 + categories: + - Text Editor Icons + + - name: underline + id: underline + unicode: f0cd + created: 2.0 + categories: + - Text Editor Icons + + - name: table + id: table + unicode: f0ce + created: 2.0 + categories: + - Text Editor Icons + + + - name: magic + id: magic + unicode: f0d0 + created: 2.0 + categories: + - Web Application Icons + + - name: truck + id: truck + unicode: f0d1 + created: 2.0 + categories: + - Web Application Icons + + - name: pinterest + id: pinterest + unicode: f0d2 + created: 2.0 + categories: + - Brand Icons + + - name: pinterest-sign + id: pinterest-sign + unicode: f0d3 + created: 2.0 + categories: + - Brand Icons + + - name: google-plus-sign + id: google-plus-sign + unicode: f0d4 + created: 2.0 + categories: + - Brand Icons + + - name: google-plus + id: google-plus + unicode: f0d5 + created: 2.0 + categories: + - Brand Icons + + - name: money + id: money + unicode: f0d6 + created: 2.0 + categories: + - Web Application Icons + + - name: caret-down + id: caret-down + unicode: f0d7 + created: 2.0 + categories: + - Directional Icons + + - name: caret-up + id: caret-up + unicode: f0d8 + created: 2.0 + categories: + - Directional Icons + + - name: caret-left + id: caret-left + unicode: f0d9 + created: 2.0 + categories: + - Directional Icons + + - name: caret-right + id: caret-right + unicode: f0da + created: 2.0 + categories: + - Directional Icons + + - name: columns + id: columns + unicode: f0db + created: 2.0 + categories: + - Text Editor Icons + + - name: sort + id: sort + unicode: f0dc + created: 2.0 + categories: + - Web Application Icons + + - name: sort-down + id: sort-down + unicode: f0dd + created: 2.0 + categories: + - Web Application Icons + + - name: sort-up + id: sort-up + unicode: f0de + created: 2.0 + categories: + - Web Application Icons + + + - name: Envelope + id: envelope + unicode: f0e0 + created: 2.0 + categories: + - Web Application Icons + + - name: linkedin + id: linkedin + unicode: f0e1 + created: 2.0 + categories: + - Brand Icons + + + - name: undo + id: undo + unicode: f0e2 + created: 2.0 + aliases: + - rotate-left + categories: + - Text Editor Icons + + - name: legal + id: legal + unicode: f0e3 + created: 2.0 + categories: + - Web Application Icons + + - name: dashboard + id: dashboard + unicode: f0e4 + created: 2.0 + categories: + - Web Application Icons + + - name: comment-alt + id: comment-alt + unicode: f0e5 + created: 2.0 + categories: + - Web Application Icons + + - name: comments-alt + id: comments-alt + unicode: f0e6 + created: 2.0 + categories: + - Web Application Icons + + - name: bolt + id: bolt + unicode: f0e7 + created: 2.0 + categories: + - Web Application Icons + + - name: sitemap + id: sitemap + unicode: f0e8 + created: 2.0 + categories: + - Web Application Icons + + - name: umbrella + id: umbrella + unicode: f0e9 + created: 2.0 + categories: + - Web Application Icons + + - name: paste + id: paste + unicode: f0ea + created: 2.0 + categories: + - Text Editor Icons + + - name: lightbulb + id: lightbulb + unicode: f0eb + created: 3.0 + categories: + - Web Application Icons + + - name: exchange + id: exchange + unicode: f0ec + created: 3.0 + categories: + - Web Application Icons + + - name: cloud-download + id: cloud-download + unicode: f0ed + created: 3.0 + categories: + - Web Application Icons + + - name: cloud-upload + id: cloud-upload + unicode: f0ee + created: 3.0 + categories: + - Web Application Icons + + + - name: user-md + id: user-md + unicode: f0f0 + created: 2.0 + categories: + - Medical Icons + + - name: stethoscope + id: stethoscope + unicode: f0f1 + created: 3.0 + categories: + - Medical Icons + + - name: suitcase + id: suitcase + unicode: f0f2 + created: 3.0 + categories: + - Web Application Icons + + - name: bell-alt + id: bell-alt + unicode: f0f3 + created: 3.0 + categories: + - Web Application Icons + + - name: coffee + id: coffee + unicode: f0f4 + created: 3.0 + categories: + - Web Application Icons + + - name: food + id: food + unicode: f0f5 + created: 3.0 + categories: + - Web Application Icons + + - name: file-text-alt + id: file-text-alt + unicode: f0f6 + created: 3.0 + categories: + - Text Editor Icons + + - name: building + id: building + unicode: f0f7 + created: 3.0 + categories: + - Web Application Icons + + - name: hospital + id: hospital + unicode: f0f8 + created: 3.0 + categories: + - Medical Icons + + - name: ambulance + id: ambulance + unicode: f0f9 + created: 3.0 + categories: + - Medical Icons + + - name: medkit + id: medkit + unicode: f0fa + created: 3.0 + categories: + - Medical Icons + + - name: fighter-jet + id: fighter-jet + unicode: f0fb + created: 3.0 + categories: + - Web Application Icons + + - name: beer + id: beer + unicode: f0fc + created: 3.0 + categories: + - Web Application Icons + + - name: h-sign + id: h-sign + unicode: f0fd + created: 3.0 + categories: + - Medical Icons + + - name: plus-sign-alt + id: plus-sign-alt + unicode: f0fe + created: 3.0 + categories: + - Medical Icons + - Web Application Icons + + + - name: double-angle-left + id: double-angle-left + unicode: f100 + created: 3.0 + categories: + - Directional Icons + + - name: double-angle-right + id: double-angle-right + unicode: f101 + created: 3.0 + categories: + - Directional Icons + + - name: double-angle-up + id: double-angle-up + unicode: f102 + created: 3.0 + categories: + - Directional Icons + + - name: double-angle-down + id: double-angle-down + unicode: f103 + created: 3.0 + categories: + - Directional Icons + + - name: angle-left + id: angle-left + unicode: f104 + created: 3.0 + categories: + - Directional Icons + + - name: angle-right + id: angle-right + unicode: f105 + created: 3.0 + categories: + - Directional Icons + + - name: angle-up + id: angle-up + unicode: f106 + created: 3.0 + categories: + - Directional Icons + + - name: angle-down + id: angle-down + unicode: f107 + created: 3.0 + categories: + - Directional Icons + + - name: desktop + id: desktop + unicode: f108 + created: 3.0 + categories: + - Web Application Icons + + - name: laptop + id: laptop + unicode: f109 + created: 3.0 + categories: + - Web Application Icons + + - name: tablet + id: tablet + unicode: f10a + created: 3.0 + categories: + - Web Application Icons + + - name: mobile-phone + id: mobile-phone + unicode: f10b + created: 3.0 + categories: + - Web Application Icons + + - name: circle-blank + id: circle-blank + unicode: f10c + created: 3.0 + categories: + - Web Application Icons + + - name: quote-left + id: quote-left + unicode: f10d + created: 3.0 + categories: + - Web Application Icons + + - name: quote-right + id: quote-right + unicode: f10e + created: 3.0 + categories: + - Web Application Icons + + + - name: spinner + id: spinner + unicode: f110 + created: 3.0 + categories: + - Web Application Icons + + - name: circle + id: circle + unicode: f111 + created: 3.0 + categories: + - Web Application Icons + + - name: reply + id: reply + unicode: f112 + created: 3.0 + aliases: + - mail-reply + categories: + - Web Application Icons + + - name: github-alt + id: github-alt + unicode: f113 + created: 3.0 + categories: + - Brand Icons + + - name: folder-close-alt + id: folder-close-alt + unicode: f114 + created: 3.0 + categories: + - Web Application Icons + + - name: folder-open-alt + id: folder-open-alt + unicode: f115 + created: 3.0 + categories: + - Web Application Icons + + - name: expand-alt + id: expand-alt + unicode: f116 + created: 3.1 + categories: + - Web Application Icons + + - name: collapse-alt + id: collapse-alt + unicode: f117 + created: 3.1 + categories: + - Web Application Icons + + - name: smile + id: smile + unicode: f118 + created: 3.1 + categories: + - Web Application Icons + + - name: frown + id: frown + unicode: f119 + created: 3.1 + categories: + - Web Application Icons + + - name: meh + id: meh + unicode: f11a + created: 3.1 + categories: + - Web Application Icons + + - name: gamepad + id: gamepad + unicode: f11b + created: 3.1 + categories: + - Web Application Icons + + - name: keyboard + id: keyboard + unicode: f11c + created: 3.1 + categories: + - Web Application Icons + + - name: flag-alt + id: flag-alt + unicode: f11d + created: 3.1 + categories: + - Web Application Icons + + - name: flag-checkered + id: flag-checkered + unicode: f11e + created: 3.1 + categories: + - Web Application Icons + + + - name: terminal + id: terminal + unicode: f120 + created: 3.1 + categories: + - Web Application Icons + + - name: code + id: code + unicode: f121 + created: 3.1 + categories: + - Web Application Icons + + - name: reply-all + id: reply-all + unicode: f122 + created: 3.1 + categories: + - Web Application Icons + + - name: mail-reply-all + id: mail-reply-all + unicode: f122 + created: 3.1 + categories: + - Web Application Icons + + - name: star-half-empty + id: star-half-empty + unicode: f123 + created: 3.1 + aliases: + - star-half-full + categories: + - Web Application Icons + + - name: location-arrow + id: location-arrow + unicode: f124 + created: 3.1 + categories: + - Web Application Icons + + - name: crop + id: crop + unicode: f125 + created: 3.1 + categories: + - Web Application Icons + + - name: code-fork + id: code-fork + unicode: f126 + created: 3.1 + categories: + - Web Application Icons + + - name: unlink + id: unlink + unicode: f127 + created: 3.1 + categories: + - Text Editor Icons + + - name: question + id: question + unicode: f128 + created: 3.1 + categories: + - Web Application Icons + + - name: info + id: info + unicode: f129 + created: 3.1 + categories: + - Web Application Icons + + - name: exclamation + id: exclamation + unicode: f12a + created: 3.1 + categories: + - Web Application Icons + + - name: superscript + id: superscript + unicode: f12b + created: 3.1 + categories: + - Web Application Icons + + - name: subscript + id: subscript + unicode: f12c + created: 3.1 + categories: + - Web Application Icons + + - name: eraser + id: eraser + unicode: f12d + created: 3.1 + categories: + - Text Editor Icons + - Web Application Icons + + - name: puzzle-piece + id: puzzle-piece + unicode: f12e + created: 3.1 + categories: + - Web Application Icons + + + - name: microphone + id: microphone + unicode: f130 + created: 3.1 + categories: + - Web Application Icons + + - name: microphone-off + id: microphone-off + unicode: f131 + created: 3.1 + categories: + - Web Application Icons + + - name: shield + id: shield + unicode: f132 + created: 3.1 + categories: + - Web Application Icons + + - name: calendar-empty + id: calendar-empty + unicode: f133 + created: 3.1 + categories: + - Web Application Icons + + - name: fire-extinguisher + id: fire-extinguisher + unicode: f134 + created: 3.1 + categories: + - Web Application Icons + + - name: rocket + id: rocket + unicode: f135 + created: 3.1 + categories: + - Web Application Icons + + - name: MaxCDN + id: maxcdn + unicode: f136 + created: 3.1 + categories: + - Brand Icons + + - name: Chevron Sign Left + id: chevron-sign-left + unicode: f137 + created: 3.1 + categories: + - Directional Icons + + - name: Chevron Sign Right + id: chevron-sign-right + unicode: f138 + created: 3.1 + categories: + - Directional Icons + + - name: Chevron Sign Up + id: chevron-sign-up + unicode: f139 + created: 3.1 + categories: + - Directional Icons + + - name: Chevron Sign Down + id: chevron-sign-down + unicode: f13a + created: 3.1 + categories: + - Directional Icons + + - name: HTML 5 Logo + id: html5 + unicode: f13b + created: 3.1 + categories: + - Brand Icons + + - name: CSS 3 Logo + id: css3 + unicode: f13c + created: 3.1 + categories: + - Brand Icons + + - name: Anchor + id: anchor + unicode: f13d + created: 3.1 + categories: + - Web Application Icons + + - name: Unlock Alt + id: unlock-alt + unicode: f13e + created: 3.1 + categories: + - Web Application Icons + + + - name: Bullseye + id: bullseye + unicode: f140 + created: 3.1 + categories: + - Web Application Icons + + - name: Horizontal Ellipsis + id: ellipsis-horizontal + unicode: f141 + created: 3.1 + categories: + - Web Application Icons + + - name: Vertical Ellipsis + id: ellipsis-vertical + unicode: f142 + created: 3.1 + categories: + - Web Application Icons + + - name: RSS Sign + id: rss-sign + unicode: f143 + created: 3.1 + categories: + - Web Application Icons + + - name: Play Sign + id: play-sign + unicode: f144 + created: 3.1 + categories: + - Video Player Icons + + - name: Ticket + id: ticket + unicode: f145 + created: 3.1 + categories: + - Web Application Icons + + - name: Minus Sign Alt + id: minus-sign-alt + unicode: f146 + created: 3.1 + categories: + - Web Application Icons + + - name: Check Minus + id: check-minus + unicode: f147 + created: 3.1 + categories: + - Web Application Icons + + - name: Level Up + id: level-up + unicode: f148 + created: 3.1 + categories: + - Web Application Icons + + - name: Level Down + id: level-down + unicode: f149 + created: 3.1 + categories: + - Web Application Icons + + - name: Check Sign + id: check-sign + unicode: f14a + created: 3.1 + categories: + - Web Application Icons + + - name: Edit Sign + id: edit-sign + unicode: f14b + created: 3.1 + categories: + - Web Application Icons + + - name: Exteral Link Sign + id: external-link-sign + unicode: f14c + created: 3.1 + categories: + - Web Application Icons + + - name: Share Sign + id: share-sign + unicode: f14d + created: 3.1 + categories: + - Web Application Icons + + - name: Compass + id: compass + unicode: f14e + created: 3.2 + categories: + - Web Application Icons + + + - name: Collapse + id: collapse + unicode: f150 + created: 3.2 + categories: + - Web Application Icons + + - name: Collapse Top + id: collapse-top + unicode: f151 + created: 3.2 + categories: + - Web Application Icons + + - name: Expand + id: expand + unicode: f152 + created: 3.2 + categories: + - Web Application Icons + + - name: Euro (EUR) + id: eur + unicode: f153 + created: 3.2 + aliases: + - euro + categories: + - Currency Icons + + - name: GBP + id: gbp + unicode: f154 + created: 3.2 + categories: + - Currency Icons + + - name: US Dollar + id: usd + unicode: f155 + created: 3.2 + aliases: + - dollar + categories: + - Currency Icons + + - name: Indian Rupee (INR) + id: inr + unicode: f156 + created: 3.2 + aliases: + - rupee + categories: + - Currency Icons + + - name: Japanese Yen (JPY) + id: jpy + unicode: f157 + created: 3.2 + aliases: + - yen + categories: + - Currency Icons + + - name: Renminbi (CNY) + id: cny + unicode: f158 + created: 3.2 + aliases: + - renminbi + categories: + - Currency Icons + + - name: Korean Won (KRW) + id: krw + unicode: f159 + created: 3.2 + aliases: + - won + categories: + - Currency Icons + + - name: Bitcoin (BTC) + id: btc + unicode: f15a + created: 3.2 + aliases: + - bitcoin + categories: + - Currency Icons + - Brand Icons + + - name: File + id: file + unicode: f15b + created: 3.2 + categories: + - Text Editor Icons + + - name: File Text + id: file-text + unicode: f15c + created: 3.2 + categories: + - Text Editor Icons + + - name: Sort By Alphabet + id: sort-by-alphabet + unicode: f15d + created: 3.2 + categories: + - Web Application Icons + + - name: Sort By Alphabet Alt + id: sort-by-alphabet-alt + unicode: f15e + created: 3.2 + categories: + - Web Application Icons + + + - name: Sort By Attributes + id: sort-by-attributes + unicode: f160 + created: 3.2 + categories: + - Web Application Icons + + - name: Sort By Attributes Alt + id: sort-by-attributes-alt + unicode: f161 + created: 3.2 + categories: + - Web Application Icons + + - name: Sort By Order + id: sort-by-order + unicode: f162 + created: 3.2 + categories: + - Web Application Icons + + - name: Sort By Order Alt + id: sort-by-order-alt + unicode: f163 + created: 3.2 + categories: + - Web Application Icons + + + - name: thumbs-up + id: thumbs-up + unicode: f164 + created: 3.2 + categories: + - Web Application Icons + + - name: thumbs-down + id: thumbs-down + unicode: f165 + created: 3.2 + categories: + - Web Application Icons + + - name: YouTube Sign + id: youtube-sign + unicode: f166 + created: 3.2 + categories: + - Brand Icons + + - name: YouTube + id: youtube + unicode: f167 + created: 3.2 + categories: + - Brand Icons + + - name: Xing + id: xing + unicode: f168 + created: 3.2 + categories: + - Brand Icons + + - name: Xing Sign + id: xing-sign + unicode: f169 + created: 3.2 + categories: + - Brand Icons + + - name: YouTube Play + id: youtube-play + unicode: f16a + created: 3.2 + categories: + - Brand Icons + - Video Player Icons + + - name: Dropbox + id: dropbox + unicode: f16b + created: 3.2 + categories: + - Brand Icons + + - name: Stack Exchange + id: stackexchange + unicode: f16c + created: 3.2 + categories: + - Brand Icons + + - name: Instagram + id: instagram + unicode: f16d + created: 3.2 + categories: + - Brand Icons + + - name: Flickr + id: flickr + unicode: f16e + created: 3.2 + categories: + - Brand Icons + + - name: App.net + id: adn + unicode: f170 + created: 3.2 + categories: + - Brand Icons + + - name: Bitbucket + id: bitbucket + unicode: f171 + created: 3.2 + categories: + - Brand Icons + + - name: Bitbucket Sign + id: bitbucket-sign + unicode: f172 + created: 3.2 + categories: + - Brand Icons + + - name: Tumblr + id: tumblr + unicode: f173 + created: 3.2 + categories: + - Brand Icons + + - name: Tumblr Sign + id: tumblr-sign + unicode: f174 + created: 3.2 + categories: + - Brand Icons + + - name: Long Arrow Down + id: long-arrow-down + unicode: f175 + created: 3.2 + categories: + - Directional Icons + + - name: Long Arrow Up + id: long-arrow-up + unicode: f176 + created: 3.2 + categories: + - Directional Icons + + - name: Long Arrow Left + id: long-arrow-left + unicode: f177 + created: 3.2 + categories: + - Directional Icons + + - name: Long Arrow Right + id: long-arrow-right + unicode: f178 + created: 3.2 + categories: + - Directional Icons + + - name: Apple + id: apple + unicode: f179 + created: 3.2 + categories: + - Brand Icons + + - name: Windows + id: windows + unicode: f17a + created: 3.2 + categories: + - Brand Icons + + - name: Android + id: android + unicode: f17b + created: 3.2 + categories: + - Brand Icons + + - name: Linux + id: linux + unicode: f17c + created: 3.2 + categories: + - Brand Icons + + - name: Dribbble + id: dribbble + unicode: f17d + created: 3.2 + categories: + - Brand Icons + + - name: Skype + id: skype + unicode: f17e + created: 3.2 + categories: + - Brand Icons + + + - name: Foursquare + id: foursquare + unicode: f180 + created: 3.2 + categories: + - Brand Icons + + - name: Trello + id: trello + unicode: f181 + created: 3.2 + categories: + - Brand Icons + + - name: Female + id: female + unicode: f182 + created: 3.2 + categories: + - Web Application Icons + + - name: Male + id: male + unicode: f183 + created: 3.2 + categories: + - Web Application Icons + + - name: Gittip + id: gittip + unicode: f184 + created: 3.2 + categories: + - Brand Icons + + - name: Sun + id: sun + unicode: f185 + created: 3.2 + categories: + - Web Application Icons + + - name: Moon + id: moon + unicode: f186 + created: 3.2 + categories: + - Web Application Icons + + - name: Archive + id: archive + unicode: f187 + created: 3.2 + categories: + - Web Application Icons + + - name: Bug + id: bug + unicode: f188 + created: 3.2 + categories: + - Web Application Icons + + - name: VK + id: vk + unicode: f189 + created: 3.2 + categories: + - Brand Icons + + - name: Weibo + id: weibo + unicode: f18a + created: 3.2 + categories: + - Brand Icons + + - name: Renren + id: renren + unicode: f18b + created: 3.2 + categories: + - Brand Icons diff --git a/app/bower_components/font-awesome/src/3.2.1/icons/index.html b/app/bower_components/font-awesome/src/3.2.1/icons/index.html new file mode 100644 index 0000000..779f024 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/icons/index.html @@ -0,0 +1,1202 @@ + + + + + + + + + + Font Awesome Icons + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +

      The Icons

    +

    The complete set of 361 icons in Font Awesome 3.2.1

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

    + You asked, Font Awesome delivers with 58 shiny new icons in version 3.2. + Want to request new icons? Here's how. + + Need vectors or want to use on the desktop? Check the cheatsheet. +

    + +
    +
    +
    + +
    +
    +
    + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + +
    + +
    + + + + +
    + +
    + + + + +
    + +
    + + + + +
    + +
    + + +
    +
      +
    • All brand icons are trademarks of their respective owners.
    • +
    • The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.
    • +
    + +
    + + +
    + +
    + + + + +
    + + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/index.html b/app/bower_components/font-awesome/src/3.2.1/index.html new file mode 100644 index 0000000..0c296ce --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + Font Awesome, the iconic font designed for Bootstrap + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +
    +
    +
    +
    +

    Font Awesome

    +

    The iconic font designed for Bootstrap

    + +
    + + GitHub Project   ·   + Version 3.2.1   ·   + Created & Maintained by Dave Gandy +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + + +
    + +
    +
    +
    + +

    + Font Awesome gives you scalable vector icons that can instantly be customized — size, color, drop shadow, + and anything that can be done with the power of CSS. +

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

    One Font, 361 Icons

    + In a single collection, Font Awesome is a pictographic language of web-related actions. +
    +
    +

    CSS Control

    + Easily style icon color, size, shadow, and anything that's possible with CSS. +
    +
    +

    Infinite Scalability

    + Scalable vector graphics means every icon looks awesome at any size. +
    +
    +

    Free, as in Speech

    + Font Awesome is completely free for commercial use. Check out the license. +
    +
    +

    IE7 Support

    + Font Awesome supports IE7. If you need it, you have my condolences. +
    +
    +

    Perfect on Retina Displays

    + Font Awesome icons are vectors, which mean they're gorgeous on high-resolution displays. +
    +
    +

    Made for Bootstrap

    + Designed from scratch to be fully compatible with Bootstrap 2.3.2. +
    +
    +

    Desktop Friendly

    + To use on the desktop or for a complete set of vectors, + check out the cheatsheet. +
    +
    +

    Screen Reader Compatible

    + Font Awesome won't trip up screen readers, unlike other icon fonts. +
    +
    +
    + +
    + +
    +
    +

    + Thanks to @robmadole and + @supercodepoet for icon design + review, advice, some Jekyll help, and being all around badass coders. +

    +
    +
    +

    + Thanks to @grantgordon and + @johnsmclay for developing and hosting + icnfnt, the best way to subset Font Awesome. +

    +
    +
    +

    + Thanks to MaxCDN for providing the excellent + BootstrapCDN, the fastest and easiest way to + get started with Font Awesome. +

    +
    +
    +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/license/index.html b/app/bower_components/font-awesome/src/3.2.1/license/index.html new file mode 100644 index 0000000..d58cf5e --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/license/index.html @@ -0,0 +1,261 @@ + + + + + + + + + + Font Awesome License + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +

      License

    +

    The full details of how Font Awesome is licensed

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

    + Font Awesome is fully open source and is GPL compatible. You can use it for commercial projects, open source + projects, or really just about whatever you want. +

    + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
      +
    • + Attribution is no longer required as of Font Awesome 3.0 but is much appreciated: + "Font Awesome by Dave Gandy - http://fontawesome.io". +
    • +
    +
    +
    + +
    + +
      +
    • + Applies to all desktop and webfont files in the following directory: + font-awesome/font/. +
    • +
    • License: SIL OFL 1.1
    • +
    • URL: http://scripts.sil.org/OFL
    • +
    +
    + +
    + + +
    + +
    + + +
    + +
    + +
      +
    • All brand icons are trademarks of their respective owners.
    • +
    • The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.
    • +
    + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/test/index.html b/app/bower_components/font-awesome/src/3.2.1/test/index.html new file mode 100644 index 0000000..29c535f --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/test/index.html @@ -0,0 +1,1056 @@ + + + + + + + + + + Font Awesome Visual Test Cases + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    +

    Visual Test Cases

    + +

    Icons Icons should have proper alignment and not be clipped

    +
    +
    +
    + Building +
    +
    +
    +
    + Building Large +
    +
    +
    + Building +
    +
    + Building Large +
    +
    +
    +
    +
    + Building +
    +
    +
    +
    + Building Large +
    +
    +
    + Building Large +
    +
    +
    +
    +
    + Circle +
    +
    +
    +
    + Circle Large +
    +
    +
    + Circle +
    +
    + Circle Large +
    +
    +
    +
    +
    + Circle +
    +
    +
    +
    + Circle Large +
    +
    +
    + Circle Large +
    +
    + + +

    Links with Icons icon should activate link & underline

    + + + + +

    Navbar should stay same height

    + + + +

    Plain buttons next to buttons w/icons should be same height, icons not clipped

    +

    Buttons

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

    Anchors

    +
    +
    +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    +
    +
    +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    +
    +
    +
    +
    +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    +
    +
    +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    + Button + Button + +
    +
    +
    +
    + + +

    Buttons with pulled 2x, 3x, 4x should be same height, have correct line height

    + + + +

    Nav pills & nav tabs should be same height and properly vertically aligned

    + + + + +

    2x, 3x, 4x icons in text should have margins next to and below text

    +
    +
    +

    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus. +

    +
    +
    +

    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus. +

    +
    +
    +
    +
    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus. +
    +
    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus. +
    +
    + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus. +
    +
    + + +

    Bullets should wrap appropriately, have proper spacing

    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + foo + foo +
    • +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + foo + foo +
    • +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + foo + foo +
    • +
    +
    +
    +
    + + +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    +
    +
      +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam et lectus id nisl hendrerit varius. Aliquam erat volutpat. Suspendisse potenti. Aliquam erat volutpat. Aliquam ut dolor lectus.
    • +
    • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    • +
    +
    +
    +
    + + +

    Spinning icons icons should be aligned well and on center, buttons should be same height, won't work in ie7

    +
    + Loading... + + + Loading... + + Loading... +
    +
    + Loading... + + + Loading... + +
    +
    + Loading... + + + Loading... + +
    +

    icon-large

    +
    + Loading... + + + Loading... + +
    +
    + Loading... + + + Loading... + +
    +
    + Loading... + + + Loading... + +
    +

    Bootstrap Prepend and Append

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

    Stacked icons

    +
    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +
    +
    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +
    +

    Stacked icons inside anchor

    + + + +

    Mirrored and rotated icons

    +
    +
    +
    +   normal
    +  icon-rotate-90
    +  icon-rotate-180
    +  icon-rotate-270
    +  icon-flip-horizontal
    +  icon-flip-vertical + +
    +
    +
    +
    +   normal
    +  icon-rotate-90
    +  icon-rotate-180
    +  icon-rotate-270
    +  icon-flip-horizontal
    +  icon-flip-vertical + +
    +
    +
    +

    Mirrored and rotated icons inside anchors and buttons

    + + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/3.2.1/whats-new/index.html b/app/bower_components/font-awesome/src/3.2.1/whats-new/index.html new file mode 100644 index 0000000..fe0f554 --- /dev/null +++ b/app/bower_components/font-awesome/src/3.2.1/whats-new/index.html @@ -0,0 +1,433 @@ + + + + + + + + + + What's New + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +

      What's New

    +

    What's New in the latest version — Font Awesome 3.2

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

    + Font Awesome is always getting a little awesome-er. So here's what's new in the latest version, Font Awesome + 3.2. Have some ideas for new features? + Help contribute. +

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

    58 New Icons in 3.2

    + Requested by the active community on the Font Awesome GitHub project. +
    +
    +

    SCSS Support

    + A long term solution is now in place for SCSS support. Need SASS? Try sass-convert. +
    +
    +

    Better & Simpler License

    + SIL OFL 1.1 for font, MIT license for code. No more attribution required, but much appreciated. +
    +
    +

    Pixel Perfection at 14px

    + Version 3 was re-created from the ground up to be razor sharp at Bootstrap's default 14px. +
    +
    +

    Font Subsetting

    + Thanks to @grantgordon and @johnsmclay, you can subset to get just the icons you need. +
    +
    +

    Want More Details?

    + Check out the CHANGELOG on the GitHub project to see + what's new and changed. +
    +
    +
    + +
    + +
    +
    +

    Rotated and Flipped Icons

    +
    +   normal
    +   icon-rotate-90
    +   icon-rotate-180
    +   icon-rotate-270
    +   icon-flip-horizontal
    +   icon-flip-vertical +
    +
    +
    +

    Stacked Icons

    +
    + + + + + icon-twitter on icon-check-empty
    + + + + + icon-flag on icon-circle
    + + + + + icon-terminal on icon-sign-blank +
    +
    +
    +

    Better Bulleted Lists

    +
    +
      +
    • New bulleted lists
    • +
    • Fix some old bugs
    • +
    • And deal with arbitrary
    • +
    • Font sizes better
    • +
    +
    +
    +
    +
    + +
    + + +
    + You asked, Font Awesome delivers with 58 shiny new icons in version 3.2. + Want to request new icons? Here's how. +
    + + + + +
    + +
    + +
    +
    + + + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/CNAME b/app/bower_components/font-awesome/src/CNAME new file mode 100644 index 0000000..f131452 --- /dev/null +++ b/app/bower_components/font-awesome/src/CNAME @@ -0,0 +1 @@ +fontawesome.io \ No newline at end of file diff --git a/app/bower_components/font-awesome/src/Makefile b/app/bower_components/font-awesome/src/Makefile new file mode 100644 index 0000000..4cdb734 --- /dev/null +++ b/app/bower_components/font-awesome/src/Makefile @@ -0,0 +1,38 @@ +--- +--- +PATH := ../node_modules/.bin:$(PATH) + +FA_ROOT_DIRECTORY = assets/font-awesome +FA_LESS_DIRECTORY = assets/font-awesome/less +FA_SCSS_DIRECTORY = assets/font-awesome/scss +FA_CSS_DIRECTORY = assets/font-awesome/css + +FA_LESS_MODERN = ${FA_LESS_DIRECTORY}/font-awesome.less +FA_SCSS_MODERN = ${FA_SCSS_DIRECTORY}/font-awesome.scss + +FA_CSS_MODERN = ${FA_CSS_DIRECTORY}/font-awesome.css +FA_CSS_MODERN_MIN = ${FA_CSS_DIRECTORY}/font-awesome.min.css + +SITE_LESS_DIRECTORY = assets/less +SITE_CSS_DIRECTORY = assets/css + +SITE_LESS = ${SITE_LESS_DIRECTORY}/site.less +SITE_CSS_MIN = ${SITE_CSS_DIRECTORY}/site.css + +build: + @echo "Compiling Less files" + @mkdir -p ${FA_CSS_DIRECTORY} + + lessc ${FA_LESS_MODERN} > ${FA_CSS_MODERN} + lessc --yui-compress ${FA_LESS_MODERN} > ${FA_CSS_MODERN_MIN} +# sass ${FA_SCSS_MODERN} ${FA_CSS_MODERN} + + lessc --compress ${SITE_LESS} > ${SITE_CSS_MIN} + cp -r ${FA_ROOT_DIRECTORY}/* ../ + cd assets && mv font-awesome font-awesome-{{ site.fontawesome.version }} && zip -r9 font-awesome-{{ site.fontawesome.version }}.zip font-awesome-{{ site.fontawesome.version }} && mv font-awesome-{{ site.fontawesome.version }} font-awesome + + +default: build + + +.PHONY: build diff --git a/app/bower_components/font-awesome/src/_includes/ads/carbon-dark-vertical.html b/app/bower_components/font-awesome/src/_includes/ads/carbon-dark-vertical.html new file mode 100644 index 0000000..15804e7 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/ads/carbon-dark-vertical.html @@ -0,0 +1 @@ +
    diff --git a/app/bower_components/font-awesome/src/_includes/ads/carbon-light-horizontal.html b/app/bower_components/font-awesome/src/_includes/ads/carbon-light-horizontal.html new file mode 100644 index 0000000..8dcfb61 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/ads/carbon-light-horizontal.html @@ -0,0 +1 @@ +
    diff --git a/app/bower_components/font-awesome/src/_includes/ads/carbon-light-vertical.html b/app/bower_components/font-awesome/src/_includes/ads/carbon-light-vertical.html new file mode 100644 index 0000000..e6fce26 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/ads/carbon-light-vertical.html @@ -0,0 +1 @@ +
    diff --git a/app/bower_components/font-awesome/src/_includes/brand-license.html b/app/bower_components/font-awesome/src/_includes/brand-license.html new file mode 100644 index 0000000..3300183 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/brand-license.html @@ -0,0 +1,4 @@ +
      +
    • All brand icons are trademarks of their respective owners.
    • +
    • The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.
    • +
    diff --git a/app/bower_components/font-awesome/src/_includes/community/getting-support.html b/app/bower_components/font-awesome/src/_includes/community/getting-support.html new file mode 100644 index 0000000..8ae311a --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/community/getting-support.html @@ -0,0 +1,22 @@ +
    + +

    + Having trouble getting Font Awesome up and running? Something not working the way you think it should? I hate that + I don't have time to answer Font Awesome support emails anymore. So here are some things you might wanna do: +

    +
      +
    1. + Make sure you've read the latest version of how to get started. + It's been updated recently to make Font Awesome even easier to use. +
    2. +
    3. + Check out the existing questions tagged as + Font Awesome over on Stack Overflow. Other folks might have had the same question you've had. +
    4. +
    5. + Can't find the answer to your question on Stack Overflow? + Ask a new question, then + send me an email and I might be able to take a look. +
    6. +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/community/project-milestones.html b/app/bower_components/font-awesome/src/_includes/community/project-milestones.html new file mode 100644 index 0000000..ba2a4e4 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/community/project-milestones.html @@ -0,0 +1,7 @@ +
    + +

    + Want to keep up with what's planned for Font Awesome? Check out our + milestones on the GitHub project. +

    +
    diff --git a/app/bower_components/font-awesome/src/_includes/community/reporting-bugs.html b/app/bower_components/font-awesome/src/_includes/community/reporting-bugs.html new file mode 100644 index 0000000..b8fb61e --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/community/reporting-bugs.html @@ -0,0 +1,18 @@ +
    + +

    + Found a problem with Font Awesome? Feel free to submit an issue on the GitHub project. But please keep the following in mind: +

    +
      +
    1. Please be nice. Font Awesome is a happy place.
    2. +
    3. Please search to see if your bug was already reported.
    4. +
    5. + Before opening any issue, please read the generic issue + guidelines, by Nicolas Gallagher. +
    6. +
    7. + After doing everything above, feel free to + submit an issue. +
    8. +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/community/requesting-new-icons.html b/app/bower_components/font-awesome/src/_includes/community/requesting-new-icons.html new file mode 100644 index 0000000..1b723de --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/community/requesting-new-icons.html @@ -0,0 +1,27 @@ +
    + +

    + New icons mostly start as requests by the + Font Awesome community on GitHub. Want to request a new + icon? Here are some things to keep in mind: +

    +
      +
    1. Please be nice. Font Awesome is a happy place.
    2. +
    3. Please search to see if your icon request already exists.
    4. +
    5. + Please and thank you if you include the following: +
        +
      • + Title your new issue + Icon request: icon-name. +
      • +
      • Include a few use cases for your requested icon. How do you plan on using it?
      • +
      • Attach a single color image or two that represent the idea you're going for.
      • +
      +
    6. +
    7. + Concrete objects make good icons, since abstract concepts are, well, abstract. It's harder to make an icon + to represent happiness. It's easier to make a smiley face. +
    8. +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/community/submitting-pull-requests.html b/app/bower_components/font-awesome/src/_includes/community/submitting-pull-requests.html new file mode 100644 index 0000000..de79930 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/community/submitting-pull-requests.html @@ -0,0 +1,12 @@ +
    + + Found a way to solve a bug in Font Awesome? Want to contribute new features? Here are a few things to remember: +
      +
    1. Please submit all pull requests against *-wip branches.
    2. +
    3. All pull requests submitted against master will be sumarily closed and this guide referenced.
    4. +
    5. + After doing everything above, feel free to + submit a pull request. +
    6. +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/bootstrap.html b/app/bower_components/font-awesome/src/_includes/examples/bootstrap.html new file mode 100644 index 0000000..1142b90 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/bootstrap.html @@ -0,0 +1,93 @@ +
    + +
    +
    +

    + + Delete + + Settings +

    +

    + + Font Awesome
    Version {{ site.fontawesome.version }}
    +

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

    + Font Awesome works great with the full range of Bootstrap components. +

    +{% highlight html %} + + Delete + + Settings + + + Font Awesome
    Version {{ site.fontawesome.version }}
    + +
    + + + + +
    + +
    + + +
    +
    + + +
    + + +{% endhighlight %} +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/bordered-pulled.html b/app/bower_components/font-awesome/src/_includes/examples/bordered-pulled.html new file mode 100644 index 0000000..f22ee8e --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/bordered-pulled.html @@ -0,0 +1,21 @@ +
    + +
    +
    +

    + + Use a few styles together and you'll have easy pull quotes or a great introductory article icon. +

    +
    +
    +

    + Use fa-border and pull-right or pull-left for easy pull quotes or + article graphics. +

    +{% highlight html %} + +Use a few styles together and you'll have easy pull quotes or a great introductory article icon. +{% endhighlight %} +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/custom.html b/app/bower_components/font-awesome/src/_includes/examples/custom.html new file mode 100644 index 0000000..2de7ad7 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/custom.html @@ -0,0 +1,16 @@ +
    + +
    +
    +

    Anything you can do with CSS font styles, you can do with Font Awesome.

    +
    +
    +

    Star Ratings (inspired by CSS Tricks)

    +
    + + + +
    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/fixed-width.html b/app/bower_components/font-awesome/src/_includes/examples/fixed-width.html new file mode 100644 index 0000000..f14e7e4 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/fixed-width.html @@ -0,0 +1,27 @@ +
    + +
    + +
    +

    + Use fa-fw to set icons at a fixed width. Great to use when variable icon widths throw off alignment. + Especially useful in things like nav lists. +

    +{% highlight html %} + +{% endhighlight %} +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/inline.html b/app/bower_components/font-awesome/src/_includes/examples/inline.html new file mode 100644 index 0000000..93f3024 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/inline.html @@ -0,0 +1,17 @@ +
    + +
    +
    +

    + fa-camera-retro +

    +
    +
    +

    Place Font Awesome icons just about anywhere with the <i> tag.

    +{% highlight html %} + fa-camera-retro +{% endhighlight %} +
    Icon classes are echoed via CSS :before.
    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/larger.html b/app/bower_components/font-awesome/src/_includes/examples/larger.html new file mode 100644 index 0000000..8c5e246 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/larger.html @@ -0,0 +1,29 @@ +
    + +
    +
    +

    fa-camera-retro

    +

    fa-camera-retro

    +

    fa-camera-retro

    +

    fa-camera-retro

    +

    fa-camera-retro

    +
    +
    +

    + To increase icon sizes relative to their container, use the fa-lg (33% increase), fa-2x, + fa-3x, fa-4x, or fa-5x classes. +

    +{% highlight html %} +

    fa-camera-retro

    +

    fa-camera-retro

    +

    fa-camera-retro

    +

    fa-camera-retro

    +

    fa-camera-retro

    +{% endhighlight %} +
    + If your icons are getting chopped off on top and bottom, make sure you have + sufficient line-height. +
    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/list.html b/app/bower_components/font-awesome/src/_includes/examples/list.html new file mode 100644 index 0000000..5cbc175 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/list.html @@ -0,0 +1,24 @@ +
    + +
    +
    +
      +
    • List icons (like these)
    • +
    • can be used
    • +
    • to easily replace
    • +
    • default bullets in lists
    • +
    +
    +
    +

    Use fa-ul and fa-li to easily replace default bullets in unordered lists.

    +{% highlight html %} +
      +
    • List icons (like these)
    • +
    • can be used
    • +
    • to replace
    • +
    • default bullets in lists
    • +
    +{% endhighlight %} +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/rotated-flipped.html b/app/bower_components/font-awesome/src/_includes/examples/rotated-flipped.html new file mode 100644 index 0000000..ff55f2c --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/rotated-flipped.html @@ -0,0 +1,28 @@ +
    + +
    +
    +

    +   normal
    +   fa-rotate-90
    +   fa-rotate-180
    +   fa-rotate-270
    +   fa-flip-horizontal
    +   fa-flip-vertical +

    +
    +
    +

    + To arbitrarily rotate and flip icons, use the fa-rotate-* and fa-flip-* classes. +

    +{% highlight html %} +  normal
    +  fa-rotate-90
    +  fa-rotate-180
    +  fa-rotate-270
    +  fa-flip-horizontal
    +  icon-flip-vertical +{% endhighlight %} +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/spinning.html b/app/bower_components/font-awesome/src/_includes/examples/spinning.html new file mode 100644 index 0000000..4bdb3d0 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/spinning.html @@ -0,0 +1,26 @@ +
    + +
    +
    +

    + + + +

    +
    +
    +

    + Use the fa-spin class to get any icon to rotate. Works well with fa-spinner, + fa-refresh, and fa-cog. +

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

    + CSS3 animations aren't supported in IE8 - IE9. +

    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/examples/stacked.html b/app/bower_components/font-awesome/src/_includes/examples/stacked.html new file mode 100644 index 0000000..0a34c5c --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/examples/stacked.html @@ -0,0 +1,59 @@ +
    + +
    +
    +
    + + + + + fa-twitter on fa-square-o
    + + + + + fa-flag on fa-circle
    + + + + + fa-terminal on fa-square
    + + + + + fa-ban on fa-camera +
    +
    +
    +

    + To stack multiple icons, use the fa-stack class on the parent, the fa-stack-1x + for the regularly sized icon, and fa-stack-2x for the larger icon. fa-inverse + can be used as an alternative icon color. You can even throw larger icon classes on the parent + to get further control of sizing. +

    +{% highlight html %} + + + + +fa-twitter on fa-square-o
    + + + + +fa-flag on fa-circle
    + + + + +fa-terminal on fa-square
    + + + + +fa-ban on fa-camera +{% endhighlight %} +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/footer.html b/app/bower_components/font-awesome/src/_includes/footer.html new file mode 100644 index 0000000..7cdc852 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/footer.html @@ -0,0 +1,24 @@ + diff --git a/app/bower_components/font-awesome/src/_includes/icons/brand.html b/app/bower_components/font-awesome/src/_includes/icons/brand.html new file mode 100644 index 0000000..98bc018 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/brand.html @@ -0,0 +1,15 @@ +
    + + +
    + {% include brand-license.html %} +
    + +
    + {% assign icons_brand = icons | expand_aliases | category:"Brand Icons" | sort_by:'class' %} + + {% for icon in icons_brand %} + + {% endfor %} +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/currency.html b/app/bower_components/font-awesome/src/_includes/icons/currency.html new file mode 100644 index 0000000..6f6942c --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/currency.html @@ -0,0 +1,12 @@ +
    + + +
    + {% assign icons_currency = icons | expand_aliases | category:"Currency Icons" | sort_by:'class' %} + + {% for icon in icons_currency %} + + {% endfor %} +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/directional.html b/app/bower_components/font-awesome/src/_includes/icons/directional.html new file mode 100644 index 0000000..d34b683 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/directional.html @@ -0,0 +1,12 @@ +
    + + +
    + {% assign icons_directional = icons | expand_aliases | category:"Directional Icons" | sort_by:'class' %} + + {% for icon in icons_directional %} + + {% endfor %} +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/form-control.html b/app/bower_components/font-awesome/src/_includes/icons/form-control.html new file mode 100644 index 0000000..98fa0fa --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/form-control.html @@ -0,0 +1,11 @@ +
    + + +
    + {% assign icons_form_control = icons | expand_aliases | category:"Form Control Icons" | sort_by:'class' %} + + {% for icon in icons_form_control %} + + {% endfor %} +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/medical.html b/app/bower_components/font-awesome/src/_includes/icons/medical.html new file mode 100644 index 0000000..9fbe1e9 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/medical.html @@ -0,0 +1,12 @@ +
    + + +
    + {% assign icons_medical = icons | expand_aliases | category:"Medical Icons" | sort_by:'class' %} + + {% for icon in icons_medical %} + + {% endfor %} +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/new.html b/app/bower_components/font-awesome/src/_includes/icons/new.html new file mode 100644 index 0000000..5953916 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/new.html @@ -0,0 +1,18 @@ +<{% if page.navbar_active == "icons" %}div{% else %}section{% endif %} id="new"> + + {% if page.navbar_active != "icons" %} +
    + You asked, Font Awesome delivers with {{ icons | version:site.fontawesome.minor_version | size }} shiny new icons in version {{ site.fontawesome.minor_version }}. + Want to request new icons? Here's how. +
    + {% endif %} + +
    + {% assign icons_new = icons | expand_aliases | version:site.fontawesome.minor_version %} + + {% for icon in icons_new %} + + {% endfor %} +
    + + diff --git a/app/bower_components/font-awesome/src/_includes/icons/text-editor.html b/app/bower_components/font-awesome/src/_includes/icons/text-editor.html new file mode 100644 index 0000000..4e2ea03 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/text-editor.html @@ -0,0 +1,12 @@ +
    + + +
    + {% assign icons_text_editor = icons | expand_aliases | category:"Text Editor Icons" | sort_by:'class' %} + + {% for icon in icons_text_editor %} + + {% endfor %} +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/video-player.html b/app/bower_components/font-awesome/src/_includes/icons/video-player.html new file mode 100644 index 0000000..b06679c --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/video-player.html @@ -0,0 +1,12 @@ +
    + + +
    + {% assign icons_video_player = icons | expand_aliases | category:"Video Player Icons" | sort_by:'class' %} + + {% for icon in icons_video_player %} + + {% endfor %} +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/icons/web-application.html b/app/bower_components/font-awesome/src/_includes/icons/web-application.html new file mode 100644 index 0000000..5b37b46 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/icons/web-application.html @@ -0,0 +1,12 @@ +
    + + +
    + {% assign icons_web_application = icons | expand_aliases | category:"Web Application Icons" | sort_by:'class' %} + + {% for icon in icons_web_application %} + + {% endfor %} +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/jumbotron-carousel.html b/app/bower_components/font-awesome/src/_includes/jumbotron-carousel.html new file mode 100644 index 0000000..49ef1cf --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/jumbotron-carousel.html @@ -0,0 +1,52 @@ + diff --git a/app/bower_components/font-awesome/src/_includes/jumbotron.html b/app/bower_components/font-awesome/src/_includes/jumbotron.html new file mode 100644 index 0000000..747b32d --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/jumbotron.html @@ -0,0 +1,6 @@ +
    +
    +

    {{ jumbotron_h1 }}

    +

    {{ jumbotron_p }}

    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/license-code.less b/app/bower_components/font-awesome/src/_includes/license-code.less new file mode 100644 index 0000000..7e503a8 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/license-code.less @@ -0,0 +1,4 @@ +/*! + * Font Awesome {{ site.fontawesome.version }} by @{{ site.fontawesome.author.twitter }} - {{ site.fontawesome.url }} - @{{ site.fontawesome.twitter }} + * License - {{ site.fontawesome.url }}/license (Font: {{ site.fontawesome.license.font.version }}, CSS: {{ site.fontawesome.license.code.version }}) + */ \ No newline at end of file diff --git a/app/bower_components/font-awesome/src/_includes/navbar.html b/app/bower_components/font-awesome/src/_includes/navbar.html new file mode 100644 index 0000000..ae5696f --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/navbar.html @@ -0,0 +1,69 @@ + diff --git a/app/bower_components/font-awesome/src/_includes/new-features.html b/app/bower_components/font-awesome/src/_includes/new-features.html new file mode 100644 index 0000000..d357dd4 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/new-features.html @@ -0,0 +1,37 @@ +{% capture stripe_ad_content %} +

    + Font Awesome is always getting a little awesome-er. So here's what's new in the latest version, Font Awesome + {{ site.fontawesome.minor_version }}. Have some ideas for new features? + Help contribute. +

    +{% endcapture %} +{% include stripe-ad.html %} + +
    +
    +
    +

    Completely Rewritten

    + Everything re-written from the ground up for speed and simplicity. +
    +
    +

    CSS Best Practices

    + New icon base class allows simpler CSS, faster rendering, and easier control. +
    +
    +

    New Icon Names

    + Icons have been renamed to improve consistency and predictability. +
    +
    +

    Bootstrap 3

    + Font Awesome {{ site.fontawesome.minor_version }} is fully tested and compatible with Bootstrap 3. +
    +
    +

    Better Compatibility

    + Font Awesome is now more compatible with all web frameworks, including Foundation. +
    +
    +

    {{ icons | version:site.fontawesome.minor_version | size }} New Icons in {{ site.fontawesome.minor_version }}

    + Requested by the active community on the Font Awesome GitHub project. +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/new-naming.html b/app/bower_components/font-awesome/src/_includes/new-naming.html new file mode 100644 index 0000000..a1d574d --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/new-naming.html @@ -0,0 +1,157 @@ +
    + +

    fa-[name]-[shape]-[o]-[direction]

    +

    + A desire for better icon naming consistency and predictability are at the heart + of the changes in naming conventions. Once you know the name of the base icon shape, you should be able to predict + the names of variants. +

    +
    +
    +

    fa-*

    +

    Solid icons as the base variant

    +
      +
    • + + fa-bookmark +
    • +
    • + + fa-comment +
    • +
    • + + fa-folder +
    • +
    +
    +
    +

    *-o

    +

    Outlined version of previous modifier

    +
      +
    • + + fa-bookmark-o +
    • +
    • + + fa-comment-o +
    • +
    • + + fa-folder-o +
    • +
    +
    +
    +

    *-circle

    +

    Circle under previous modifier

    +
      +
    • + + fa-check-circle +
    • +
    • + + fa-exclamation-circle +
    • +
    • + + fa-plus-circle +
    • +
    +
    +
    +

    *-square

    +

    Square under previous modifier

    +
      +
    • + + fa-check-square +
    • +
    • + + fa-twitter-square +
    • +
    • + + fa-plus-square +
    • +
    +
    +
    +

    *-right, *-up, etc.

    +

    Directional modifier always at the end

    +
      +
    • + + fa-arrow-right +
    • +
    • + + fa-arrow-circle-right +
    • +
    • + + fa-angle-double-right +
    • +
    +
    +
    +

    *-alt

    +

    Alternative to the original

    +
      +
    • + + fa-unlock-alt +
    • +
    • + + fa-list-alt +
    • +
    • + + fa-github-alt +
    • +
    +
    +
    +

    *-h, *-v

    +

    Horizontal & vertical modifiers

    +
      +
    • + + fa-arrows-v +
    • +
    • + + fa-arrows-h +
    • +
    • + + fa-ellipsis-v +
    • +
    +
    +
    +

    Combine 'em up...

    +

    Consistent when strung together

    +
      +
    • + + fa-arrow-circle-o-right +
    • +
    • + + fa-caret-square-o-right +
    • +
    • + + fa-hand-o-right +
    • +
    +
    + +
    + +
    diff --git a/app/bower_components/font-awesome/src/_includes/new-upgrading.html b/app/bower_components/font-awesome/src/_includes/new-upgrading.html new file mode 100644 index 0000000..5d2d88d --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/new-upgrading.html @@ -0,0 +1,10 @@ +
    + +

    + For complete documentation of the syntax changes in {{ site.fontawesome.minor_version }}, check out the + examples. For the changes to icon names, + @gtagliala has put together a + great wiki page that + documents all the changes. +

    +
    diff --git a/app/bower_components/font-awesome/src/_includes/stripe-ad.html b/app/bower_components/font-awesome/src/_includes/stripe-ad.html new file mode 100644 index 0000000..8ff6bbf --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/stripe-ad.html @@ -0,0 +1,6 @@ +
    +
    + {% include ads/carbon-light-horizontal.html %} + {{ stripe_ad_content }} +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/stripe-social.html b/app/bower_components/font-awesome/src/_includes/stripe-social.html new file mode 100644 index 0000000..a8c0a54 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/stripe-social.html @@ -0,0 +1,18 @@ +
    +
    + +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/tell-me-thanks.html b/app/bower_components/font-awesome/src/_includes/tell-me-thanks.html new file mode 100644 index 0000000..679c884 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/tell-me-thanks.html @@ -0,0 +1,22 @@ +
    + +

    + Hopefully you think Font Awesome is awesome. I've put hundreds of hours into the project to give back to the + open source community. If you'd like, here are a couple of ways you can tell me thanks for all my hard work. +

    +
    +
    +

    Tip me on Gittip

    +

    + Gittip is a great way to let developers know you appreciate their work. +

    +
    +
    +

    My Amazon Wish List

    +

    + Or pick something straight + from my wish list. Gift cards are great. +

    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-anchor.html b/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-anchor.html new file mode 100644 index 0000000..111f1a3 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-anchor.html @@ -0,0 +1,6 @@ +  normal
    +  fa-rotate-90
    +  fa-rotate-180
    +  fa-rotate-270
    +  fa-flip-horizontal
    +  fa-flip-vertical diff --git a/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-btn.html b/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-btn.html new file mode 100644 index 0000000..fc0d788 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped-inside-btn.html @@ -0,0 +1,6 @@ +  normal
    +  fa-rotate-90
    +  fa-rotate-180
    +  fa-rotate-270
    +  fa-flip-horizontal
    +  fa-flip-vertical diff --git a/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped.html b/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped.html new file mode 100644 index 0000000..13a83f4 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/tests/rotated-flipped.html @@ -0,0 +1,6 @@ +  normal
    +  fa-rotate-90
    +  fa-rotate-180
    +  fa-rotate-270
    +  fa-flip-horizontal
    +  fa-flip-vertical diff --git a/app/bower_components/font-awesome/src/_includes/tests/stacked-inside-anchor.html b/app/bower_components/font-awesome/src/_includes/tests/stacked-inside-anchor.html new file mode 100644 index 0000000..58a2dc8 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/tests/stacked-inside-anchor.html @@ -0,0 +1,69 @@ +

    + + + + + + Twitter Icon + + + + + + + Facebook Icon + + + + + + + GitHub Icon + +

    +

    + + + + + + Twitter Icon + + + + + + + Facebook Icon + + + + + + + GitHub Icon + +

    +

    + + + + + + Twitter Icon + + + + + + + Facebook Icon + + + + + + + GitHub Icon + +

    \ No newline at end of file diff --git a/app/bower_components/font-awesome/src/_includes/tests/stacked.html b/app/bower_components/font-awesome/src/_includes/tests/stacked.html new file mode 100644 index 0000000..9a2ebb8 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/tests/stacked.html @@ -0,0 +1,58 @@ + + + + +
    Center +
    +
    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    +

    + + + + + Twitter Icon + + + + + Facebook Icon + + + + + GitHub Icon +

    \ No newline at end of file diff --git a/app/bower_components/font-awesome/src/_includes/thanks-to.html b/app/bower_components/font-awesome/src/_includes/thanks-to.html new file mode 100644 index 0000000..b442a62 --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/thanks-to.html @@ -0,0 +1,26 @@ +
    + +
    +
    +

    + Thanks to @robmadole and + @supercodepoet for icon design + review, advice, some Jekyll help, and being all around badass coders. +

    +
    +
    +

    + HUGE thanks to @gtagliala for doing such a fantastic job managing + pull requests and issues on the Font Awesome + GitHub project. +

    +
    +
    +

    + Thanks to  MaxCDN for providing the excellent + BootstrapCDN, the fastest and easiest way to + get started with Font Awesome. +

    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_includes/why.html b/app/bower_components/font-awesome/src/_includes/why.html new file mode 100644 index 0000000..5ff610a --- /dev/null +++ b/app/bower_components/font-awesome/src/_includes/why.html @@ -0,0 +1,41 @@ +
    +
    +
    +

    One Font, {{ icons | size }} Icons

    + In a single collection, Font Awesome is a pictographic language of web-related actions. +
    +
    +

    No JavaScript Required

    + Fewer compatibility concerns because Font Awesome doesn't require JavaScript. +
    +
    +

    Infinite Scalability

    + Scalable vector graphics means every icon looks awesome at any size. +
    +
    +

    Free, as in Speech

    + Font Awesome is completely free for commercial use. Check out the license. +
    +
    +

    CSS Control

    + Easily style icon color, size, shadow, and anything that's possible with CSS. +
    +
    +

    Perfect on Retina Displays

    + Font Awesome icons are vectors, which mean they're gorgeous on high-resolution displays. +
    +
    +

    Made for Bootstrap

    + Designed from scratch to be fully compatible with Bootstrap {{ site.bootstrap.version }}. +
    +
    +

    Desktop Friendly

    + To use on the desktop or for a complete set of vectors, + check out the cheatsheet. +
    +
    +

    Screen Reader Compatible

    + Font Awesome won't trip up screen readers, unlike other icon fonts. +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_layouts/base.html b/app/bower_components/font-awesome/src/_layouts/base.html new file mode 100644 index 0000000..55c547a --- /dev/null +++ b/app/bower_components/font-awesome/src/_layouts/base.html @@ -0,0 +1,55 @@ + + + + + + + + + + + {% if page.title %}{{ page.title }}{% endif %} + + + + + + + + + + + + + + +
    + {% include navbar.html %} + + {{ content }} +
    +{% include footer.html %} + + + + + + + + + diff --git a/app/bower_components/font-awesome/src/_layouts/icon.html b/app/bower_components/font-awesome/src/_layouts/icon.html new file mode 100644 index 0000000..6e5bf21 --- /dev/null +++ b/app/bower_components/font-awesome/src/_layouts/icon.html @@ -0,0 +1,62 @@ +--- +layout: base +title_suffix: Font Awesome Icons +relative_path: ../../ +--- +
    +
    +
    +    + +    +    +    +   + + +
    +

    + fa-{{ page.icon.id }} + + · + Unicode: {{ page.icon.unicode }} · + Created: v{{ page.icon.created }} · + Categories: + {% for category in page.icon.categories %} + {{ category }}{% unless forloop.last %},{% endunless %} + {% endfor %} + {% assign icon_alias_count = page.icon.aliases | size %} + {% if icon_alias_count > 0 %} + · Aliases: + {% for alias in page.icon.aliases %} + fa-{{ alias }}{% unless forloop.last %},{% endunless %} + {% endfor %} + {% endif %} + +

    +
    +
    + + +
    +
    +
    +
    +

    After you get up and running, you can place Font Awesome icons just about anywhere with the <i> tag:

    +
    +
    + fa-{{ page.icon.id }} +
    +
    +{% highlight html %} + fa-{{ page.icon.id }} +{% endhighlight %} +
    +
    Looking for more? Check out the examples.
    +
    +
    +
    {% include ads/carbon-light-vertical.html %}
    +
    +
    +
    +
    diff --git a/app/bower_components/font-awesome/src/_plugins/icon_page_generator.rb b/app/bower_components/font-awesome/src/_plugins/icon_page_generator.rb new file mode 100644 index 0000000..51475e5 --- /dev/null +++ b/app/bower_components/font-awesome/src/_plugins/icon_page_generator.rb @@ -0,0 +1,46 @@ +## +# Create individual pages for each icon in the FontAwesome set + +require 'yaml' +require 'debugger' + +module Jekyll + + class IconPage < Page + + ## + # Take a single icon and render a page for it. + + def initialize(site, base, dir, icon) + @site = site + @base = base + @dir = dir + @name = "#{icon.id}.html" + @icon = icon + + self.process(@name) + + self.read_yaml(File.join(base, site.config['layouts']), site.config['icon_layout']) + + self.data['icon'] = icon + self.data['title'] = "icon-#{icon.id}: " + self.data['title_suffix'] + end + + end + + class IconGenerator < Generator + + ## + # Iterate over every described icon in a YAML file and create a page for it + + safe true + + def generate(site) + site.icons.each do |icon| + site.pages << IconPage.new(site, site.source, site.config['icon_destination'], icon) + end + end + + end + +end diff --git a/app/bower_components/font-awesome/src/_plugins/site.rb b/app/bower_components/font-awesome/src/_plugins/site.rb new file mode 100644 index 0000000..a6a74b7 --- /dev/null +++ b/app/bower_components/font-awesome/src/_plugins/site.rb @@ -0,0 +1,142 @@ +## +# Provide an icons attribute on the site object + +require 'yaml' +require 'forwardable' + +module Jekyll + + class Icon + + attr_reader :name, :id, :unicode, :created, :categories + + def initialize(icon_object) + @icon_object = icon_object + + # Class name used in CSS and HTML + @icon_object['class'] = icon_object['id'] + # Normalize the aliases + @icon_object['aliases'] ||= [] + + @name = icon_object['name'] + @id = icon_object['id'] + @class = icon_object['class'] + @aliases = icon_object['aliases'] + @unicode = icon_object['unicode'] + @created = icon_object['created'] + @categories = icon_object['categories'] + end + + def to_liquid + return @icon_object + end + + end + + class IconList + ## + # A list of icons + # + include Enumerable + extend Forwardable + + def_delegators :@icon_array, :each, :<< + + def initialize(icon_array) + @original_icon_array = icon_array + @icon_array = [] + + icon_array.each { |icon_object| + @icon_array << Icon.new(icon_object) + } + end + + def [](k) + @icon_array[k] + end + + def to_liquid + @original_icon_array + end + + end + + module IconFilters + def expand_aliases(icons) + expanded = [] + + icons.each { |icon| + # Remove the aliases since we are expanding them + expanded << icon.reject{ |k| k == 'aliases'} + + icon['aliases'].each { |alias_id| + alias_icon = expanded[-1].dup + alias_icon['class'] = alias_id + alias_icon['alias_of'] = icon + + expanded << alias_icon + } + } + + return expanded + end + + def category(icons, cat) + icons.select { |icon| icon['categories'].include?(cat) } + end + + def version(icons, version) + icons.select { |icon| icon['created'] == version } + end + + def sort_by(icons, sort_key) + icons.sort_by! { |icon| icon[sort_key] } + end + end + + Liquid::Template.register_filter(IconFilters) + + class Site + + attr_reader :icons + + def process + self.reset_icons + self.reset + self.read + self.generate + self.render + self.cleanup + self.write + + self.build + end + + ## + # Reads the YAML file that stores all data about icons + def reset_icons + @icons = IconList.new(YAML.load_file(self.config['icon_meta'])['icons']) + end + + ## + # After generation, runs a build of Font-Awesome + def build + system("make build", :chdir => self.config['destination'], :out => :err) + end + + def site_payload + { + "site" => self.config.merge({ + "time" => self.time, + "posts" => self.posts.sort { |a, b| b <=> a }, + "pages" => self.pages, + "html_pages" => self.pages.reject { |page| !page.html? }, + "categories" => post_attr_hash('categories'), + "tags" => post_attr_hash('tags')}), + "icons" => @icons, + } + end + + end + +end diff --git a/app/bower_components/font-awesome/src/assets/css/prettify.css b/app/bower_components/font-awesome/src/assets/css/prettify.css new file mode 100755 index 0000000..aedd8d1 --- /dev/null +++ b/app/bower_components/font-awesome/src/assets/css/prettify.css @@ -0,0 +1,30 @@ +.com { color: #93a1a1; } +.lit { color: #195f91; } +.pun, .opn, .clo { color: #93a1a1; } +.fun { color: #dc322f; } +.str, .atv { color: #D14; } +.kwd, .linenums .tag { color: #1e347b; } +.typ, .atn, .dec, .var { color: teal; } +.pln { color: #48484c; } + +.prettyprint { + padding: 8px; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin: 0 0 0 33px; /* IE indents via margin-left */ +} +ol.linenums li { + padding-left: 12px; + color: #bebec5; + line-height: 18px; + text-shadow: 0 1px 0 #fff; +} \ No newline at end of file diff --git a/app/bower_components/font-awesome/src/assets/css/pygments.css b/app/bower_components/font-awesome/src/assets/css/pygments.css new file mode 100644 index 0000000..5af20ee --- /dev/null +++ b/app/bower_components/font-awesome/src/assets/css/pygments.css @@ -0,0 +1,71 @@ +.hll { background-color: #ffffcc } +/*{ background: #f0f3f3; }*/ +.c { color: #999; } /* Comment */ +.err { color: #AA0000; background-color: #FFAAAA } /* Error */ +.k { color: #006699; } /* Keyword */ +.o { color: #555555 } /* Operator */ +.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ +.cp { color: #009999 } /* Comment.Preproc */ +.c1 { color: #999; } /* Comment.Single */ +.cs { color: #999; } /* Comment.Special */ +.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ +.ge { font-style: italic } /* Generic.Emph */ +.gr { color: #FF0000 } /* Generic.Error */ +.gh { color: #003300; } /* Generic.Heading */ +.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ +.go { color: #AAAAAA } /* Generic.Output */ +.gp { color: #000099; } /* Generic.Prompt */ +.gs { } /* Generic.Strong */ +.gu { color: #003300; } /* Generic.Subheading */ +.gt { color: #99CC66 } /* Generic.Traceback */ +.kc { color: #006699; } /* Keyword.Constant */ +.kd { color: #006699; } /* Keyword.Declaration */ +.kn { color: #006699; } /* Keyword.Namespace */ +.kp { color: #006699 } /* Keyword.Pseudo */ +.kr { color: #006699; } /* Keyword.Reserved */ +.kt { color: #007788; } /* Keyword.Type */ +.m { color: #FF6600 } /* Literal.Number */ +.s { color: #d44950 } /* Literal.String */ +.na { color: #4f9fcf } /* Name.Attribute */ +.nb { color: #336666 } /* Name.Builtin */ +.nc { color: #00AA88; } /* Name.Class */ +.no { color: #336600 } /* Name.Constant */ +.nd { color: #9999FF } /* Name.Decorator */ +.ni { color: #999999; } /* Name.Entity */ +.ne { color: #CC0000; } /* Name.Exception */ +.nf { color: #CC00FF } /* Name.Function */ +.nl { color: #9999FF } /* Name.Label */ +.nn { color: #00CCFF; } /* Name.Namespace */ +.nt { color: #2f6f9f; } /* Name.Tag */ +.nv { color: #003333 } /* Name.Variable */ +.ow { color: #000000; } /* Operator.Word */ +.w { color: #bbbbbb } /* Text.Whitespace */ +.mf { color: #FF6600 } /* Literal.Number.Float */ +.mh { color: #FF6600 } /* Literal.Number.Hex */ +.mi { color: #FF6600 } /* Literal.Number.Integer */ +.mo { color: #FF6600 } /* Literal.Number.Oct */ +.sb { color: #CC3300 } /* Literal.String.Backtick */ +.sc { color: #CC3300 } /* Literal.String.Char */ +.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ +.s2 { color: #CC3300 } /* Literal.String.Double */ +.se { color: #CC3300; } /* Literal.String.Escape */ +.sh { color: #CC3300 } /* Literal.String.Heredoc */ +.si { color: #AA0000 } /* Literal.String.Interpol */ +.sx { color: #CC3300 } /* Literal.String.Other */ +.sr { color: #33AAAA } /* Literal.String.Regex */ +.s1 { color: #CC3300 } /* Literal.String.Single */ +.ss { color: #FFCC33 } /* Literal.String.Symbol */ +.bp { color: #336666 } /* Name.Builtin.Pseudo */ +.vc { color: #003333 } /* Name.Variable.Class */ +.vg { color: #003333 } /* Name.Variable.Global */ +.vi { color: #003333 } /* Name.Variable.Instance */ +.il { color: #FF6600 } /* Literal.Number.Integer.Long */ + +.css .o, +.css .o + .nt, +.css .nt + .nt { color: #999; } + +pre { + background-color: #fafafa; + padding: 8px 15px; +} diff --git a/app/bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf b/app/bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..8b0f54e47e1d356dcf1496942a50e228e0f1ee14 GIT binary patch literal 62856 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 + diff --git a/app/bower_components/sass-bootstrap/_layouts/default.html b/app/bower_components/sass-bootstrap/_layouts/default.html new file mode 100644 index 0000000..a2c26a2 --- /dev/null +++ b/app/bower_components/sass-bootstrap/_layouts/default.html @@ -0,0 +1,79 @@ + + + + + {% include header.html %} + + + Skip to main content + + + {% include nav-main.html %} + + +
    +
    +

    {{ page.title }}

    +

    {{ page.lead }}

    + {% include ads.html %} +
    +
    + + + {% include old-bs-docs.html %} + +
    +
    +
    + +
    +
    + {{ content }} +
    +
    + +
    + + + + + + {% include footer.html %} + + + diff --git a/app/bower_components/sass-bootstrap/_layouts/home.html b/app/bower_components/sass-bootstrap/_layouts/home.html new file mode 100644 index 0000000..c8328fe --- /dev/null +++ b/app/bower_components/sass-bootstrap/_layouts/home.html @@ -0,0 +1,47 @@ + + + + + {% include header.html %} + + + Skip to main content + + + {% include nav-main.html %} + + + {{ content }} + + + + + {% include footer.html %} + + + diff --git a/app/bower_components/sass-bootstrap/about.html b/app/bower_components/sass-bootstrap/about.html new file mode 100644 index 0000000..f64ea8c --- /dev/null +++ b/app/bower_components/sass-bootstrap/about.html @@ -0,0 +1,93 @@ +--- +layout: default +title: About +slug: about +lead: "Learn about the history of Bootstrap, meet the core team, and check out the ever-growing community resources." +base_url: "../" +--- + + + +
    + +

    Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.

    +

    Bootstrap was created at Twitter in mid-2010 by @mdo and @fat. Prior to being an open-sourced framework, Bootstrap was known as Twitter Blueprint. A few months into development, Twitter held its first Hack Week and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.

    +

    Originally released on , we've since had over twenty releases, including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.

    +
    + + + +
    + +

    Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.

    + +

    Get involved with Bootstrap development by opening an issue or submitting a pull request. Read our contributing guidelines for information on how we develop.

    +
    + + + +
    + +

    Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources.

    + +

    You can also follow @twbootstrap on Twitter for the latest gossip and awesome music videos.

    +
    + + + +
    + +

    Community members have translated Bootstrap's documentation into various langauges. None are officially supported and may not always be up to date.

    + +

    Have another language to add, or perhaps a different or better translation? Let us know by opening an issue.

    +
    diff --git a/app/bower_components/sass-bootstrap/bower.json b/app/bower_components/sass-bootstrap/bower.json new file mode 100644 index 0000000..5314ddc --- /dev/null +++ b/app/bower_components/sass-bootstrap/bower.json @@ -0,0 +1,11 @@ +{ + "name": "sass-bootstrap", + "version": "3.0.2", + "main": ["./dist/js/bootstrap.js", "./dist/css/bootstrap.css", "./dist/fonts/*"], + "ignore": [ + "**/.*" + ], + "dependencies": { + "jquery": ">= 1.9.0" + } +} diff --git a/app/bower_components/sass-bootstrap/browserstack.json b/app/bower_components/sass-bootstrap/browserstack.json new file mode 100644 index 0000000..76564eb --- /dev/null +++ b/app/bower_components/sass-bootstrap/browserstack.json @@ -0,0 +1,37 @@ +{ + "username": "--secure--", + "key": "--secure--", + "test_path": "js/tests/index.html", + "browsers": [ + { + "browser": "firefox", + "browser_version": "latest", + "os": "OS X", + "os_version": "Mountain Lion" + }, + { + "browser": "safari", + "browser_version": "latest", + "os": "OS X", + "os_version": "Mountain Lion" + }, + { + "browser": "chrome", + "browser_version": "latest", + "os": "OS X", + "os_version": "Mountain Lion" + }, + { + "browser": "firefox", + "browser_version": "latest", + "os": "Windows", + "os_version": "7" + }, + { + "browser": "chrome", + "browser_version": "latest", + "os": "Windows", + "os_version": "7" + } + ] +} diff --git a/app/bower_components/sass-bootstrap/components.html b/app/bower_components/sass-bootstrap/components.html new file mode 100644 index 0000000..25ed9ea --- /dev/null +++ b/app/bower_components/sass-bootstrap/components.html @@ -0,0 +1,3689 @@ +--- +layout: default +title: Components +slug: components +lead: "Over a dozen reusable components built to provide iconography, dropdowns, navigation, alerts, popovers, and much more." +base_url: "../" +--- + + + +
    + + +

    Available glyphs

    +

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

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

    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.

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

    Examples

    +

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

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

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

    + + +

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

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

    Add .pull-right to a .dropdown-menu to right align the dropdown menu.

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

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

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

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

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

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

    + +
    +

    Tooltips & popovers in button groups require special setting

    +

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

    +
    + +

    Basic example

    +

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

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

    Button toolbar

    +

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

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

    Sizing

    +

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

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

    Nesting

    +

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

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

    Vertical variation

    +

    Make a set of buttons appear vertically stacked rather than horizontally.

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

    Justified link variation

    +

    Make a group of buttons stretch at the same size to span the entire width of its parent.

    + +
    +

    Element-specific usage

    +

    This only works with <a> elements as the <button> doesn't pick up these styles.

    +
    + +
    +
    + Left + Middle + Right +
    +
    +{% highlight html %} +
    + ... +
    +{% endhighlight %} + +
    + + + + +
    + +

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

    + +
    +

    Plugin dependency

    +

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

    +
    + +

    Single button dropdowns

    +

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

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

    Split button dropdowns

    +

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

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

    Sizing

    +

    Button dropdowns work with buttons of all sizes.

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

    Dropup variation

    +

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

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

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

    + +
    +

    Cross-browser compatibility

    +

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

    +
    +
    +

    Tooltips & popovers in input groups require special setting

    +

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

    +
    +
    +

    Don't mix with form groups

    +

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

    +
    + + +

    Basic example

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

    Sizing

    +

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

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

    Checkboxes and radio addons

    +

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

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

    Button addons

    +

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

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

    Buttons with dropdowns

    +

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

    Segmented buttons

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

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

    + + +

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

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

    Requires JavaScript tabs plugin

    +

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

    +
    + + +

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

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

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

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

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

    +
    +

    WebKit and responsive justified navs

    +

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

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

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

    + +
    +

    Link functionality not impacted

    +

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

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

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

    + +

    Tabs with dropdowns

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

    Pills with dropdowns

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

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

    + +
    +

    Customize the collapsing point

    +

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

    +
    +
    +

    Requires JavaScript

    +

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

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

    Plugin dependency

    +

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

    +
    + +
    +

    Make navbars accessible

    +

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

    +
    + + + +

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

    +

    As a heads up, .navbar-form shares much of its code with .form-inline via mixin.

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

    Always add labels

    +

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

    +
    + + + +

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

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

    Context-specific usage

    +

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

    +
    + + +

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

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

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

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

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

    +

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

    + + + +

    Add .navbar-fixed-top.

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

    Body padding required

    +

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

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

    Make sure to include this after the core Bootstrap CSS.

    +
    + + + +

    Add .navbar-fixed-bottom instead.

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

    Body padding required

    +

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

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

    Make sure to include this after the core Bootstrap CSS.

    +
    + + + +

    Create a full-width navbar that scrolls away with the page by adding .navbar-static-top. Unlike the .navbar-fixed-* classes, you do not need to change any padding on the body.

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

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

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

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

    +

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

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

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

    + +

    Default pagination

    +

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

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

    Disabled and active states

    +

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

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

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

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

    Sizing

    +

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

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

    Pager

    +

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

    + +

    Default example

    +

    By default, the pager centers links.

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

    Aligned links

    +

    Alternatively, you can align each link to the sides:

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

    Optional disabled state

    +

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

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

    + +

    Example

    +
    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

    +

    Example heading New

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

    Example heading New

    +{% endhighlight %} + +

    Available variations

    +

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

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

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

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

    Self collapsing

    +

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

    + +
    +

    Cross-browser compatibility

    +

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

    +
    + +

    Adapts to active nav states

    +

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

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

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

    +
    +
    +

    Hello, world!

    +

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

    +

    Learn more

    +
    +
    +{% highlight html %} +
    +

    Hello, world!

    +

    ...

    +

    Learn more

    +
    +{% endhighlight %} +

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

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

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

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

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

    + +

    Default example

    +

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

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

    Custom content

    +

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

    +
    +
    +
    +
    + Generic placeholder thumbnail +
    +

    Thumbnail label

    +

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

    +

    Button Button

    +
    +
    +
    +
    +
    + Generic placeholder thumbnail +
    +

    Thumbnail label

    +

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

    +

    Button Button

    +
    +
    +
    +
    +
    + Generic placeholder thumbnail +
    +

    Thumbnail label

    +

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

    +

    Button Button

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

    Thumbnail label

    +

    ...

    +

    Button Button

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

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

    + +

    Examples

    +

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

    + +
    +

    No default class

    +

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

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

    Dismissable alerts

    +

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

    +
    +
    + + Warning! Best check yo self, you're not looking too good. +
    +
    +{% highlight html %} +
    + + Warning! Best check yo self, you're not looking too good. +
    +{% endhighlight %} + +
    +

    Ensure proper behavior across all devices

    +

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

    +
    + + +

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

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

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

    + +
    +

    Cross-browser compatibility

    +

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

    +
    + +

    Basic example

    +

    Default progress bar.

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

    Contextual alternatives

    +

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

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

    Striped

    +

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

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

    Animated

    +

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

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

    Stacked

    +

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

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

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

    + +

    Default media

    +

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

    +
    +
    + + Generic placeholder image + +
    +

    Media heading

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

    Media heading

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

    Media heading

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

    Media heading

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

    Media list

    +

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

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

      Media heading

      +

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

      + +
      + + Generic placeholder image + +
      +

      Nested media heading

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

      Nested media heading

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

      Nested media heading

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

      Media heading

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

      Media heading

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

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

    + +

    Basic example

    +

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

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

    Badges

    +

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

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

    Linked items

    +

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

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

    Custom content

    +

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

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

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

    + +

    Basic example

    +

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

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

    Panel with heading

    +

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

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

    Panel title

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

    Panel title

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

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

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

    Contextual alternatives

    +

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

    +
    +
    +
    +

    Panel title

    +
    +
    + Panel content +
    +
    +
    +
    +

    Panel title

    +
    +
    + Panel content +
    +
    +
    +
    +

    Panel title

    +
    +
    + Panel content +
    +
    +
    +
    +

    Panel title

    +
    +
    + Panel content +
    +
    +
    +
    +

    Panel title

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

    With tables

    +

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

    +
    +
    + +
    Panel heading
    +
    +

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

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

    ...

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

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

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

    With list groups

    +

    Easily include full-width list groups within any panel.

    +
    +
    + +
    Panel heading
    +
    +

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

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

    ...

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

    Default well

    +

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

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

    Optional classes

    +

    Control padding and rounded corners with two optional modifier classes.

    +
    +
    + Look, I'm in a large well! +
    +
    +{% highlight html %} +
    ...
    +{% endhighlight %} + +
    +
    + Look, I'm in a small well! +
    +
    +{% highlight html %} +
    ...
    +{% endhighlight %} +
    diff --git a/app/bower_components/sass-bootstrap/composer.json b/app/bower_components/sass-bootstrap/composer.json new file mode 100644 index 0000000..66ac304 --- /dev/null +++ b/app/bower_components/sass-bootstrap/composer.json @@ -0,0 +1,28 @@ +{ + "name": "jlong/sass-bootstrap" + , "description": "A sass port of the sleek, intuitive, and powerful front-end framework for faster and easier web development." + , "keywords": ["bootstrap", "css", "sass"] + , "homepage": "http://github.com/jlong/sass-bootstrap/" + , "authors": [ + { + "name": "John W. Long" + }, + { + "name": "Mark Otto", + "email": "markdotto@gmail.com" + }, + { + "name": "Jacob Thornton", + "email": "jacobthornton@gmail.com" + } + ] + , "support": { + "issues": "https://github.com/twbs/bootstrap/issues" + } + , "license": "Apache-2.0" + , "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + } +} diff --git a/app/bower_components/sass-bootstrap/css.html b/app/bower_components/sass-bootstrap/css.html new file mode 100644 index 0000000..495092e --- /dev/null +++ b/app/bower_components/sass-bootstrap/css.html @@ -0,0 +1,2674 @@ +--- +layout: default +title: CSS +slug: css +lead: "Global CSS settings, fundamental HTML elements styled and enhanced with extensible classes, and an advanced grid system." +base_url: "../" +--- + + + +
    + +

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

    + +

    HTML5 doctype

    +

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

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

    Mobile first

    +

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

    +

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

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

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

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

    Responsive images

    +

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

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

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

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

    These styles can be found within scaffolding.less.

    + +

    Normalize

    +

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

    + +

    Containers

    +

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

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

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

    + +

    Introduction

    +

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

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

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

    + +
    +

    Grids and full-width layouts

    +

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

    +
    + +

    Media queries

    +

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

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

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

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

    Grid options

    +

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

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

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

    + +

    Example: Stacked-to-horizontal

    +

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

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

    Example: Mobile and desktop

    +

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

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

    Example: Mobile, tablet, desktops

    +

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

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

    Responsive column resets

    +

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

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

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

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

    Offsetting columns

    +

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

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

    Nesting columns

    +

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

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

    Column ordering

    +

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

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

    LESS mixins and variables

    +

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

    + +

    Variables

    +

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

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

    Mixins

    +

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

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

    Example usage

    +

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

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

    Headings

    +

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

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

    h1. Bootstrap heading

    Semibold 36px

    h2. Bootstrap heading

    Semibold 30px

    h3. Bootstrap heading

    Semibold 24px

    h4. Bootstrap heading

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

    h1. Bootstrap heading

    +

    h2. Bootstrap heading

    +

    h3. Bootstrap heading

    +

    h4. Bootstrap heading

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

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

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

    h1. Bootstrap heading Secondary text

    h2. Bootstrap heading Secondary text

    h3. Bootstrap heading Secondary text

    h4. Bootstrap heading Secondary text

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

    h1. Bootstrap heading Secondary text

    +

    h2. Bootstrap heading Secondary text

    +

    h3. Bootstrap heading Secondary text

    +

    h4. Bootstrap heading Secondary text

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

    Body copy

    +

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

    +
    +

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

    +

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

    +

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

    +
    +{% highlight html %} +

    ...

    +{% endhighlight %} + + +

    Lead body copy

    +

    Make a paragraph stand out by adding .lead.

    +
    +

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

    +
    +{% highlight html %} +

    ...

    +{% endhighlight %} + + +

    Built with Less

    +

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

    + + + +

    Emphasis

    +

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

    + +

    Small text

    +

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

    +

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

    +
    +

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

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

    Bold

    +

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

    +
    +

    The following snippet of text is rendered as bold text.

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

    Italics

    +

    For emphasizing a snippet of text with italics.

    +
    +

    The following snippet of text is rendered as italicized text.

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

    Alternate elements

    +

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

    +
    + +

    Alignment classes

    +

    Easily realign text to components with text alignment classes.

    +
    +

    Left aligned text.

    +

    Center aligned text.

    +

    Right aligned text.

    +
    +{% highlight html %} +

    Left aligned text.

    +

    Center aligned text.

    +

    Right aligned text.

    +{% endhighlight %} + +

    Emphasis classes

    +

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

    +
    +

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

    +

    Nullam id dolor id nibh ultricies vehicula ut id elit.

    +

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

    +

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

    +

    Etiam porta sem malesuada magna mollis euismod.

    +

    Donec ullamcorper nulla non metus auctor fringilla.

    +
    +{% highlight html %} +

    ...

    +

    ...

    +

    ...

    +

    ...

    +

    ...

    +

    ...

    +{% endhighlight %} +
    +

    Dealing with specificity

    +

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

    +
    + + + +

    Abbreviations

    +

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

    + +

    Basic abbreviation

    +

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

    +
    +

    An abbreviation of the word attribute is attr.

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

    Initialism

    +

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

    +
    +

    HTML is the best thing since sliced bread.

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

    Addresses

    +

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

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

    Blockquotes

    +

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

    + +

    Default blockquote

    +

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

    +
    +
    +

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

    +
    +
    +{% highlight html %} +
    +

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

    +
    +{% endhighlight %} + +

    Blockquote options

    +

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

    + +

    Naming a source

    +

    Add <small> tag for identifying the source. Wrap the name of the source work in <cite>.

    +
    +
    +

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

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

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

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

    Alternate displays

    +

    Use .pull-right for a floated, right-aligned blockquote.

    +
    +
    +

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

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

    Lists

    + +

    Unordered

    +

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

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

    Ordered

    +

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

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

    Unstyled

    +

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

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

    Inline

    +

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

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

    Description

    +

    A list of terms with their associated descriptions.

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

    Horizontal description

    +

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

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

    Auto-truncating

    +

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

    +
    +
    + + + +
    + + +

    Inline

    +

    Wrap inline snippets of code with <code>.

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

    Basic block

    +

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

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

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

    +
    + + + + +
    + + +

    Basic example

    +

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

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

    Striped rows

    +

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

    +
    +

    Cross-browser compatibility

    +

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

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

    Bordered table

    +

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

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

    Hover rows

    +

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

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

    Condensed table

    +

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

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

    Contextual classes

    +

    Use contextual classes to color table rows or individual cells.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ClassDescription
    + .active + Applies the hover color to a particular row or cell
    + .success + Indicates a successful or positive action
    + .warning + Indicates a warning that might need attention
    + .danger + Indicates a dangerous or potentially negative action
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #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
    +
    +{% highlight html %} + +... +... +... +... + + + + ... + ... + ... + ... + +{% endhighlight %} + + +

    Responsive tables

    +

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

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

    Basic example

    +

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

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

    Example block-level help text here.

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

    Example block-level help text here.

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

    Inline form

    +

    Add .form-inline for left-aligned and inline-block controls for a compact layout.

    +
    +

    Requires custom widths

    +

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

    +
    +
    +

    Always add labels

    +

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

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

    Horizontal form

    +

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

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

    Supported controls

    +

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

    + +

    Inputs

    +

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

    +
    +

    Type declaration required

    +

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

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

    Input groups

    +

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

    +
    + +

    Textarea

    +

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

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

    Checkboxes and radios

    +

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

    +

    Default (stacked)

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

    Inline checkboxes

    +

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

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

    Selects

    +

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

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

    Static control

    +

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

    +
    +
    +
    + +
    +

    email@example.com

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

    email@example.com

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

    Form states

    +

    Provide feedback to users or visitors with basic feedback states on form controls and labels.

    + +

    Input focus

    +

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

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

    Disabled inputs

    +

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

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

    Disabled fieldsets

    +

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

    + +
    +

    Link functionality of <a> not impacted

    +

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

    +
    + +
    +

    Cross-browser compatibility

    +

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

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

    Validation states

    +

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

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

    Control sizing

    +

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

    + +

    Height sizing

    +

    Create larger or smaller form controls that match button sizes.

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

    Column sizing

    +

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

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

    Help text

    +

    Block level help text for form controls.

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

    Options

    +

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

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

    Sizes

    +

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

    +
    +

    + + +

    +

    + + +

    +

    + + +

    +

    + + +

    +
    +{% highlight html %} +

    + + +

    +

    + + +

    +

    + + +

    +

    + + +

    +{% endhighlight %} + +

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

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

    Active state

    +

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

    + +

    Button element

    +

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

    +

    + + +

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

    Anchor element

    +

    Add the .active class to <a> buttons.

    +

    + Primary link + Link +

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

    Disabled state

    +

    Make buttons look unclickable by fading them back 50%.

    + +

    Button element

    +

    Add the disabled attribute to <button> buttons.

    +

    + + +

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

    Cross-browser compatibility

    +

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

    +
    + +

    Anchor element

    +

    Add the .disabled class to <a> buttons.

    +

    + Primary link + Link +

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

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

    +
    +

    Link functionality not impacted

    +

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

    +
    +
    +

    Context-specific usage

    +

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

    +
    + + +

    Button tags

    +

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

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

    Cross-browser rendering

    +

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

    +

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

    +
    + +
    + + + + +
    + + +

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

    +
    +

    Cross-browser compatibility

    +

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

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

    Responsive images

    +

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

    +
    + +
    + + + +
    + + + +

    Close icon

    +

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

    +
    +

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

    Carets

    +

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

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

    Quick floats

    +

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

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

    Not for use in navbars

    +

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

    +
    + + +

    Center content blocks

    +

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

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

    Clearfix

    +

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

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

    Showing and hiding content

    +

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

    +

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

    +

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

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

    Screen reader content

    +

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

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

    Image replacement

    +

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

    +{% highlight html %} +

    Custom heading

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

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

    +

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

    + + +

    Available classes

    +

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

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

    Print classes

    +

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

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

    Test cases

    +

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

    + +

    Visible on...

    +

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

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

    Hidden on...

    +

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

    +
    +
    + + ✔ Hidden on x-small +
    +
    + + ✔ Hidden on small +
    +
    +
    + Medium + ✔ Hidden on medium +
    +
    + + ✔ Hidden on large +
    +
    +
    +
    + + ✔ Hidden on x-small and small +
    +
    + + ✔ Hidden on medium and large +
    +
    +
    + + ✔ Hidden on x-small and medium +
    +
    + + ✔ Hidden on small and large +
    +
    +
    + + ✔ Hidden on x-small and large +
    +
    + + ✔ Hidden on small and medium +
    +
    + +
    diff --git a/app/bower_components/sass-bootstrap/customize.html b/app/bower_components/sass-bootstrap/customize.html new file mode 100644 index 0000000..5b6a09c --- /dev/null +++ b/app/bower_components/sass-bootstrap/customize.html @@ -0,0 +1,1715 @@ +--- +layout: default +title: Customize and download +slug: customize +lead: Customize Bootstrap's components, LESS variables, and jQuery plugins to get your very own version. +base_url: "../" +--- + + +
    +
    + +

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

    + +
    +
    +

    Common CSS

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

    Components

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

    JavaScript components

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

    Utilities

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

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

    +
    +
    +

    Linked to components

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

    Magic

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

    Produces two files

    +

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

    +
    + +
    +

    jQuery required

    +

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

    +
    +
    + + + +
    + +

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

    + +

    Basics

    + + +

    Color system

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

    Body scaffolding

    +
    +
    + + +

    Background color for <body>.

    + + +

    Global text color on <body>.

    +
    +
    + + +

    Global textual link color

    + + +

    Link hover color set via darken() function

    +
    +
    + + +

    Typography

    +
    +
    +

    Generic font variables

    + + +

    Default sans-serif fonts.

    + + +

    Default serif fonts.

    + + +

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

    + +

    Base type styes

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

    Heading font sizes

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

    Headings

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

    Code blocks

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

    Media queries breakpoints

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

    Layout and grid system

    +
    +
    + + +

    For @screen-sm-min and up.

    +
    +
    + + +

    For @screen-md-min and up.

    +
    +
    +
    + + +

    For @screen-lg-min and up.

    +
    +
    + +
    +
    + + +

    Number of columns in the grid.

    +
    +
    + + +

    Padding between columns.

    +
    +
    +
    + + +

    Point at which the navbar stops collapsing.

    +
    +
    + + +

    Components

    + +

    Padding

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

    Rounded corners

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

    Component active state

    +
    +
    + + +

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

    +
    +
    + + +

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

    +
    +
    + +

    Carets

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

    Buttons

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

    Default

    + + + + + + +

    Primary

    + + + + + + +

    Info

    + + + + + + +
    +
    +

    Success

    + + + + + + +

    Warning

    + + + + + + +

    Danger

    + + + + + + +
    +
    + + +

    Form states and alerts

    +
    +
    +

    Success

    + + + + + + +

    Warning

    + + + + + + +
    +
    +

    Danger

    + + + + + + +

    Info

    + + + + + + +
    +
    + + +

    Alerts

    + +

    Base styles

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

    Warning

    + + + + + + + +

    Success

    + + + + + + +
    +
    +

    Danger

    + + + + + + + +

    Info

    + + + + + + +
    +
    + + +

    Navbar

    + +

    Base styles

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

    Default navbar

    +

    Basics

    + + + + + + + +

    Links

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

    Brand

    + + + + + + + +

    Toggle

    + + + + + + +
    + +
    +

    Inverted navbar

    + +

    Basics

    + + + + + + + +

    Links

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

    Brand

    + + + + + + + +

    Toggle

    + + + + + + +
    +
    + + +

    Nav

    + +

    Default nav

    +
    +
    +

    Common values

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

    Pills

    + + + + +
    +
    +

    Tabs

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

    Tables

    +
    +
    + + +

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

    + + +

    Default padding cells in .table-condensed

    +
    +
    + + +

    Default background color used for all tables.

    + + +

    Background color used for .table-striped.

    +
    +
    + + +

    Background color used for .table-hover.

    + + +

    Border color for table and cell borders.

    +
    +
    + + +

    Forms

    + +

    Inputs

    +
    +
    + + +

    Text color for <input>s

    + + +

    <input> background color

    +
    +
    + + +

    <input> border color

    + + +

    <input> border radius

    +
    +
    + + +

    Placeholder text color

    +
    +
    + +

    Input states

    +
    +
    + + +

    Border color for inputs on focus

    +
    +
    + + +

    <input disabled> background color

    +
    +
    + +

    Input sizes

    +
    +
    + + +

    Default .form-control height

    +
    +
    + + +

    Large .form-control height

    +
    +
    + + +

    Small .form-control height

    +
    +
    + +

    Legend

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

    Input groups

    +
    +
    + + +

    Background color for textual input addons

    +
    +
    + + +

    Border color for textual input addons

    +
    +
    + + +

    Dropdowns

    +
    +
    +

    Dropdown menu

    + + +

    Dropdown menu background color

    + + +

    Dropdown menu border color

    + + +

    Dropdown menu border color for IE8

    + + +

    Indicator arrow for showing an element has a dropdown

    + + +

    Dropdown divider top border color

    + + +

    Text color for headers within dropdown menus

    +
    +
    +

    Dropdown items

    + + +

    Dropdown text color

    + + + +

    Hovered dropdown menu entry text color

    + + +

    Hovered dropdown menu entry text color

    + + + +

    Active dropdown menu entry text color

    + + +

    Active dropdown menu entry background color

    + + + +

    Disabled dropdown menu entry background color

    +
    +
    + + +

    Panels and wells

    + +

    Common panel styles

    +
    +
    + + + + +

    Border color for elements within panels

    +
    +
    + + + + +
    +
    +

    Contextual panel colors

    +
    +
    +

    Default

    + + + + + + + +

    Primary

    + + + + + + + +

    Success

    + + + + + + +
    +
    +

    Info

    + + + + + + + +

    Warning

    + + + + + + + +

    Danger

    + + + + + + +
    +
    + +

    Wells

    + + + + +

    Accordion

    + + + + +

    Badges

    + +

    Base styles

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

    States

    +
    +
    + + +

    Linked badge text color on hover

    +
    +
    + + +

    Badge text color in active nav link

    +
    +
    + + +

    Badge background color in active nav link

    +
    +
    + + +

    Breadcrumbs

    +
    +
    + + +

    Breadcrumb text color

    + + +

    Breadcrumb background color

    +
    +
    + + +

    Text color of current page in the breadcrumb

    + + +

    Textual separator for between breadcrumb elements

    +
    +
    + +

    Jumbotron

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

    Modals

    + +

    Base modal

    +
    +
    + + +

    Padding applied to the modal body

    +
    +
    + + +

    Modal backdrop background color

    +
    +
    + +

    Modal header and footer

    +
    +
    + + +

    Padding applied to the modal title

    +
    +
    + + +

    Modal title line-height

    +
    +
    + + +

    Modal header border color

    + + +

    Modal footer border color

    +
    +
    + +

    Modal content

    +
    +
    + + +

    Background color of modal content area

    +
    +
    + + +

    Modal content border color

    +
    +
    + + +

    Modal content border color for IE8

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

    List group

    + +

    Base styles

    +
    +
    + + +

    Background color on .list-group-item

    +
    +
    + + +

    .list-group-item border color

    +
    +
    + + +

    List group border radius

    +
    +
    + +

    Hover and active states

    +
    +
    + + +

    Background color of single list elements on hover

    +
    +
    +
    +
    + + +

    Text color of active list elements

    +
    +
    + + +

    Background color of active list elements

    +
    +
    + + +

    Border color of active list elements

    +
    +
    + + +

    Thumbnails

    + +

    Base thumbnail

    +
    +
    + + +

    Padding around the thumbnail image

    + + +

    Thumbnail background color

    +
    +
    + + +

    Thumbnail border color

    + + +

    Thumbnail border radius

    +
    +
    + +

    Thumbnail captions

    +
    +
    + + +

    Padding around the thumbnail caption

    +
    +
    + + +

    Custom text color for thumbnail captions

    +
    +
    + + +

    Progress bars

    + +

    Shared styles

    +
    +
    + + +

    Background color of the whole progress component

    +
    +
    + + +

    Info progress bar text color

    +
    +
    + + +

    Info progress bar text shadow

    +
    +
    + + +

    Default progress bar color

    +
    +
    + +

    Contextual states

    +
    +
    + + +

    Success progress bar color

    + + +

    Info progress bar color

    +
    +
    + + +

    Warning progress bar color

    + + +

    Danger progress bar color

    +
    +
    + + +

    Pagination

    + +

    Default styles

    +
    +
    + + +

    Background color

    +
    +
    + + +

    Border color

    +
    +
    + + +

    Background hover color

    +
    +
    + +

    Disabled and active states

    +
    +
    + + +

    Disabled text color

    +
    +
    + + +

    Active background color

    +
    +
    + + +

    Active text color

    +
    +
    + + +

    Pager

    +
    +
    + + +

    Pager border radius

    +
    +
    + + +

    Pager disabled state color

    +
    +
    + + +

    Labels

    +
    +
    + + +

    Default label text color

    +
    +
    + + +

    Default text color of a linked label

    +
    +
    + + +

    Default label background color

    +
    +
    + +
    +
    + + +

    Primary label background color

    + + +

    Success label background color

    +
    +
    + + +

    Info label background color

    + + +

    Warning label background color

    +
    +
    + + +

    Danger label background color

    +
    +
    + + +

    Tooltips and popovers

    + +

    Tooltip

    +
    +
    + + +

    Tooltip text color

    + + +

    Tooltip background color

    +
    +
    + + +

    Tooltip arrow width

    + + +

    Tooltip arrow color

    +
    +
    + + +

    Tooltip max width

    +
    +
    + +

    Popovers

    + +

    Base styles

    +
    +
    + + +

    Popover body background color

    + + +

    Popover maximum width

    +
    +
    + + +

    Popover border color

    + + +

    Popover fallback border color

    +
    +
    + + +

    Popover title background color

    +
    +
    + +

    Popover arrows

    +
    +
    + + +

    Popover arrow width

    +
    +
    + + +

    Popover arrow color

    +
    +
    +
    +
    + + +

    Popover outer arrow width

    +
    +
    + + +

    Popover outer arrow color

    +
    +
    + + +

    Popover outer arrow fallback color

    +
    +
    + + +

    Close button

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

    Type

    +
    +
    + + +

    Text muted color

    +
    +
    + + +

    Abbreviations and acronyms border color

    +
    +
    + + +

    Headings small color

    +
    +
    + + +

    Blockquote small color

    +
    +
    + + +

    Blockquote border color

    +
    +
    + + +

    Page header border color

    +
    +
    + + +

    Other

    +
    +
    + + +

    Horizontal line color

    +
    +
    + + +

    Horizontal offset for forms and lists

    +
    +
    +
    + +
    + +

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

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

    ' + msg + '

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

    Attention!

    \ +

    ' + msg + '

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

    "+(e.message||"There is an error in your .less file")+"

    "+'

    in '+l+" ";var c=function(e,t,n){e.extract[t]&&a.push(i.replace(/\{line\}/,parseInt(e.line)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};e.stack?u+="
    "+e.stack.split("\n").slice(1).join("
    "):e.extract&&(c(e,0,""),c(e,1,"line"),c(e,2,""),u+="on line "+e.line+", column "+(e.column+1)+":

    "+"
      "+a.join("")+"
    "),s.innerHTML=u,S([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),s.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),r.env=="development"&&(o=setInterval(function(){document.body&&(document.getElementById(n)?document.body.replaceChild(s,document.getElementById(n)):document.body.insertBefore(s,document.body.firstChild),clearInterval(o))},10))}Array.isArray||(Array.isArray=function(e){return Object.prototype.toString.call(e)==="[object Array]"||e instanceof Array}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){var n=this.length>>>0;for(var r=0;r>>0,n=new Array(t),r=arguments[1];for(var i=0;i>>0,n=0;if(t===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n=t)return-1;n<0&&(n+=t);for(;nh&&(c[u]=c[u].slice(o-h),h=o)}function w(e){var t=e.charCodeAt(0);return t===32||t===10||t===9}function E(e){var t,n,r,i,a;if(e instanceof Function)return e.call(p.parsers);if(typeof e=="string")t=s.charAt(o)===e?e:null,r=1,b();else{b();if(!(t=e.exec(c[u])))return null;r=t[0].length}if(t)return S(r),typeof t=="string"?t:t.length===1?t[0]:t}function S(e){var t=o,n=u,r=o+c[u].length,i=o+=e;while(o=0&&t.charAt(n)!=="\n";n--)r++;return{line:typeof e=="number"?(t.slice(0,e).match(/\n/g)||"").length:null,column:r}}function L(e){return r.mode==="browser"||r.mode==="rhino"?e.filename:n("path").resolve(e.filename)}function A(e,t,n){return{lineNumber:k(e,t).line+1,fileName:L(n)}}function O(e,t){var n=C(e,t),r=k(e.index,n),i=r.line,s=r.column,o=n.split("\n");this.type=e.type||"Syntax",this.message=e.message,this.filename=e.filename||t.filename,this.index=e.index,this.line=typeof i=="number"?i+1:null,this.callLine=e.call&&k(e.call,n).line+1,this.callExtract=o[k(e.call,n).line],this.stack=e.stack,this.column=s,this.extract=[o[i-1],o[i],o[i+1]]}var s,o,u,a,f,l,c,h,p,d=this,t=t||{};t.contents||(t.contents={}),t.rootpath=t.rootpath||"",t.files||(t.files={});var v=function(){},m=this.imports={paths:t.paths||[],queue:[],files:t.files,contents:t.contents,mime:t.mime,error:null,push:function(e,n){var i=this;this.queue.push(e),r.Parser.importer(e,this.paths,function(t,r,s){i.queue.splice(i.queue.indexOf(e),1);var o=s in i.files;i.files[s]=r,t&&!i.error&&(i.error=t),n(t,r,o),i.queue.length===0&&v(i.error)},t)}};return this.env=t=t||{},this.optimization="optimization"in this.env?this.env.optimization:1,this.env.filename=this.env.filename||null,p={imports:m,parse:function(e,a){var f,d,m,g,y,b,w=[],S,x=null;o=u=h=l=0,s=e.replace(/\r\n/g,"\n"),s=s.replace(/^\uFEFF/,""),c=function(e){var n=0,r=/(?:@\{[\w-]+\}|[^"'`\{\}\/\(\)\\])+/g,i=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,o=/"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`]|\\.)*)`/g,u=0,a,f=e[0],l;for(var c=0,h,p;c0?"missing closing `}`":"missing opening `{`",filename:t.filename},t)),e.map(function(e){return e.join("")})}([[]]);if(x)return a(x,t);try{f=new i.Ruleset([],E(this.parsers.primary)),f.root=!0}catch(T){return a(new O(T,t))}f.toCSS=function(e){var s,o,u;return function(s,o){var u=[],a;s=s||{},typeof o=="object"&&!Array.isArray(o)&&(o=Object.keys(o).map(function(e){var t=o[e];return t instanceof i.Value||(t instanceof i.Expression||(t=new i.Expression([t])),t=new i.Value([t])),new i.Rule("@"+e,t,!1,0)}),u=[new i.Ruleset(null,o)]);try{var f=e.call(this,{frames:u}).toCSS([],{compress:s.compress||!1,dumpLineNumbers:t.dumpLineNumbers})}catch(l){throw new O(l,t)}if(a=p.imports.error)throw a instanceof O?a:new O(a,t);return s.yuicompress&&r.mode==="node"?n("ycssmin").cssmin(f):s.compress?f.replace(/(\s)+/g,"$1"):f}}(f.eval);if(o=0&&s.charAt(N)!=="\n";N--)C++;x={type:"Parse",message:"Syntax Error on line "+y,index:o,filename:t.filename,line:y,column:C,extract:[b[y-2],b[y-1],b[y]]}}this.imports.queue.length>0?v=function(e){e=x||e,e?a(e):a(null,f)}:a(x,f)},parsers:{primary:function(){var e,t=[];while((e=E(this.mixin.definition)||E(this.rule)||E(this.ruleset)||E(this.mixin.call)||E(this.comment)||E(this.directive))||E(/^[\s\n]+/)||E(/^;+/))e&&t.push(e);return t},comment:function(){var e;if(s.charAt(o)!=="/")return;if(s.charAt(o+1)==="/")return new i.Comment(E(/^\/\/.*/),!0);if(e=E(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new i.Comment(e)},entities:{quoted:function(){var e,t=o,n;s.charAt(t)==="~"&&(t++,n=!0);if(s.charAt(t)!=='"'&&s.charAt(t)!=="'")return;n&&E("~");if(e=E(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new i.Quoted(e[0],e[1]||e[2],n)},keyword:function(){var e;if(e=E(/^[_A-Za-z-][_A-Za-z0-9-]*/))return i.colors.hasOwnProperty(e)?new i.Color(i.colors[e].slice(1)):new i.Keyword(e)},call:function(){var e,n,r,s,a=o;if(!(e=/^([\w-]+|%|progid:[\w\.]+)\(/.exec(c[u])))return;e=e[1],n=e.toLowerCase();if(n==="url")return null;o+=e.length;if(n==="alpha"){s=E(this.alpha);if(typeof s!="undefined")return s}E("("),r=E(this.entities.arguments);if(!E(")"))return;if(e)return new i.Call(e,r,a,t.filename)},arguments:function(){var e=[],t;while(t=E(this.entities.assignment)||E(this.expression)){e.push(t);if(!E(","))break}return e},literal:function(){return E(this.entities.ratio)||E(this.entities.dimension)||E(this.entities.color)||E(this.entities.quoted)||E(this.entities.unicodeDescriptor)},assignment:function(){var e,t;if((e=E(/^\w+(?=\s?=)/i))&&E("=")&&(t=E(this.entity)))return new i.Assignment(e,t)},url:function(){var e;if(s.charAt(o)!=="u"||!E(/^url\(/))return;return e=E(this.entities.quoted)||E(this.entities.variable)||E(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/)||"",x(")"),new i.URL(e.value!=null||e instanceof i.Variable?e:new i.Anonymous(e),t.rootpath)},variable:function(){var e,n=o;if(s.charAt(o)==="@"&&(e=E(/^@@?[\w-]+/)))return new i.Variable(e,n,t.filename)},variableCurly:function(){var e,n,r=o;if(s.charAt(o)==="@"&&(n=E(/^@\{([\w-]+)\}/)))return new i.Variable("@"+n[1],r,t.filename)},color:function(){var e;if(s.charAt(o)==="#"&&(e=E(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/)))return new i.Color(e[1])},dimension:function(){var e,t=s.charCodeAt(o);if(t>57||t<43||t===47||t==44)return;if(e=E(/^([+-]?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn|dpi|dpcm|dppx|rem|vw|vh|vmin|vm|ch)?/))return new i.Dimension(e[1],e[2])},ratio:function(){var e,t=s.charCodeAt(o);if(t>57||t<48)return;if(e=E(/^(\d+\/\d+)/))return new i.Ratio(e[1])},unicodeDescriptor:function(){var e;if(e=E(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))return new i.UnicodeDescriptor(e[0])},javascript:function(){var e,t=o,n;s.charAt(t)==="~"&&(t++,n=!0);if(s.charAt(t)!=="`")return;n&&E("~");if(e=E(/^`([^`]*)`/))return new i.JavaScript(e[1],o,n)}},variable:function(){var e;if(s.charAt(o)==="@"&&(e=E(/^(@[\w-]+)\s*:/)))return e[1]},shorthand:function(){var e,t;if(!N(/^[@\w.%-]+\/[@\w.-]+/))return;g();if((e=E(this.entity))&&E("/")&&(t=E(this.entity)))return new i.Shorthand(e,t);y()},mixin:{call:function(){var e=[],n,r,u=[],a=[],f,l,c,h,p,d,v,m=o,b=s.charAt(o),w,S,C=!1;if(b!=="."&&b!=="#")return;g();while(n=E(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/))e.push(new i.Element(r,n,o)),r=E(">");if(E("(")){p=[];while(c=E(this.expression)){h=null,S=c;if(c.value.length==1){var k=c.value[0];k instanceof i.Variable&&E(":")&&(p.length>0&&(d&&T("Cannot mix ; and , as delimiter types"),v=!0),S=x(this.expression),h=w=k.name)}p.push(S),a.push({name:h,value:S});if(E(","))continue;if(E(";")||d)v&&T("Cannot mix ; and , as delimiter types"),d=!0,p.length>1&&(S=new i.Value(p)),u.push({name:w,value:S}),w=null,p=[],v=!1}x(")")}f=d?u:a,E(this.important)&&(C=!0);if(e.length>0&&(E(";")||N("}")))return new i.mixin.Call(e,f,m,t.filename,C);y()},definition:function(){var e,t=[],n,r,u,a,f,c=!1;if(s.charAt(o)!=="."&&s.charAt(o)!=="#"||N(/^[^{]*\}/))return;g();if(n=E(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){e=n[1];do{E(this.comment);if(s.charAt(o)==="."&&E(/^\.{3}/)){c=!0,t.push({variadic:!0});break}if(!(u=E(this.entities.variable)||E(this.entities.literal)||E(this.entities.keyword)))break;if(u instanceof i.Variable)if(E(":"))a=x(this.expression,"expected expression"),t.push({name:u.name,value:a});else{if(E(/^\.{3}/)){t.push({name:u.name,variadic:!0}),c=!0;break}t.push({name:u.name})}else t.push({value:u})}while(E(",")||E(";"));E(")")||(l=o,y()),E(this.comment),E(/^when/)&&(f=x(this.conditions,"expected condition")),r=E(this.block);if(r)return new i.mixin.Definition(e,t,r,f,c);y()}}},entity:function(){return E(this.entities.literal)||E(this.entities.variable)||E(this.entities.url)||E(this.entities.call)||E(this.entities.keyword)||E(this.entities.javascript)||E(this.comment)},end:function(){return E(";")||N("}")},alpha:function(){var e;if(!E(/^\(opacity=/i))return;if(e=E(/^\d+/)||E(this.entities.variable))return x(")"),new i.Alpha(e)},element:function(){var e,t,n,r;n=E(this.combinator),e=E(/^(?:\d+\.\d+|\d+)%/)||E(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||E("*")||E("&")||E(this.attribute)||E(/^\([^()@]+\)/)||E(/^[\.#](?=@)/)||E(this.entities.variableCurly),e||E("(")&&(r=E(this.entities.variableCurly)||E(this.entities.variable)||E(this.selector))&&E(")")&&(e=new i.Paren(r));if(e)return new i.Element(n,e,o)},combinator:function(){var e,t=s.charAt(o);if(t===">"||t==="+"||t==="~"||t==="|"){o++;while(s.charAt(o).match(/\s/))o++;return new i.Combinator(t)}return s.charAt(o-1).match(/\s/)?new i.Combinator(" "):new i.Combinator(null)},selector:function(){var e,t,n=[],r,u;if(E("("))return e=E(this.entity),E(")")?new i.Selector([new i.Element("",e,o)]):null;while(t=E(this.element)){r=s.charAt(o),n.push(t);if(r==="{"||r==="}"||r===";"||r===","||r===")")break}if(n.length>0)return new i.Selector(n)},attribute:function(){var e="",t,n,r;if(!E("["))return;if(t=E(/^(?:[_A-Za-z0-9-]|\\.)+/)||E(this.entities.quoted))(r=E(/^[|~*$^]?=/))&&(n=E(this.entities.quoted)||E(/^[\w-]+/))?e=[t,r,n.toCSS?n.toCSS():n].join(""):e=t;if(!E("]"))return;if(e)return"["+e+"]"},block:function(){var e;if(E("{")&&(e=E(this.primary))&&E("}"))return e},ruleset:function(){var e=[],n,r,u,a;g(),t.dumpLineNumbers&&(a=A(o,s,t));while(n=E(this.selector)){e.push(n),E(this.comment);if(!E(","))break;E(this.comment)}if(e.length>0&&(r=E(this.block))){var f=new i.Ruleset(e,r,t.strictImports);return t.dumpLineNumbers&&(f.debugInfo=a),f}l=o,y()},rule:function(){var e,t,n=s.charAt(o),r,a;g();if(n==="."||n==="#"||n==="&")return;if(e=E(this.variable)||E(this.property)){e.charAt(0)!="@"&&(a=/^([^@+\/'"*`(;{}-]*);/.exec(c[u]))?(o+=a[0].length-1,t=new i.Anonymous(a[1])):e==="font"?t=E(this.font):t=E(this.value),r=E(this.important);if(t&&E(this.end))return new i.Rule(e,t,r,f);l=o,y()}},"import":function(){var e,n,r=o;g();var s=E(/^@import(?:-(once))?\s+/);if(s&&(e=E(this.entities.quoted)||E(this.entities.url))){n=E(this.mediaFeatures);if(E(";"))return new i.Import(e,m,n,s[1]==="once",r,t.rootpath)}y()},mediaFeature:function(){var e,t,n=[];do if(e=E(this.entities.keyword))n.push(e);else if(E("(")){t=E(this.property),e=E(this.entity);if(!E(")"))return null;if(t&&e)n.push(new i.Paren(new i.Rule(t,e,null,o,!0)));else{if(!e)return null;n.push(new i.Paren(e))}}while(e);if(n.length>0)return new i.Expression(n)},mediaFeatures:function(){var e,t=[];do if(e=E(this.mediaFeature)){t.push(e);if(!E(","))break}else if(e=E(this.entities.variable)){t.push(e);if(!E(","))break}while(e);return t.length>0?t:null},media:function(){var e,n,r,u;t.dumpLineNumbers&&(u=A(o,s,t));if(E(/^@media/)){e=E(this.mediaFeatures);if(n=E(this.block))return r=new i.Media(n,e),t.dumpLineNumbers&&(r.debugInfo=u),r}},directive:function(){var e,n,r,u,a,f,l,c,h,p;if(s.charAt(o)!=="@")return;if(n=E(this["import"])||E(this.media))return n;g(),e=E(/^@[a-z-]+/);if(!e)return;l=e,e.charAt(1)=="-"&&e.indexOf("-",2)>0&&(l="@"+e.slice(e.indexOf("-",2)+1));switch(l){case"@font-face":c=!0;break;case"@viewport":case"@top-left":case"@top-left-corner":case"@top-center":case"@top-right":case"@top-right-corner":case"@bottom-left":case"@bottom-left-corner":case"@bottom-center":case"@bottom-right":case"@bottom-right-corner":case"@left-top":case"@left-middle":case"@left-bottom":case"@right-top":case"@right-middle":case"@right-bottom":c=!0;break;case"@page":case"@document":case"@supports":case"@keyframes":c=!0,h=!0;break;case"@namespace":p=!0}h&&(e+=" "+(E(/^[^{]+/)||"").trim());if(c){if(r=E(this.block))return new i.Directive(e,r)}else if((n=p?E(this.expression):E(this.entity))&&E(";")){var d=new i.Directive(e,n);return t.dumpLineNumbers&&(d.debugInfo=A(o,s,t)),d}y()},font:function(){var e=[],t=[],n,r,s,o;while(o=E(this.shorthand)||E(this.entity))t.push(o);e.push(new i.Expression(t));if(E(","))while(o=E(this.expression)){e.push(o);if(!E(","))break}return new i.Value(e)},value:function(){var e,t=[],n;while(e=E(this.expression)){t.push(e);if(!E(","))break}if(t.length>0)return new i.Value(t)},important:function(){if(s.charAt(o)==="!")return E(/^! *important/)},sub:function(){var e;if(E("(")&&(e=E(this.expression))&&E(")"))return e},multiplication:function(){var e,t,n,r;if(e=E(this.operand)){while(!N(/^\/[*\/]/)&&(n=E("/")||E("*"))&&(t=E(this.operand)))r=new i.Operation(n,[r||e,t]);return r||e}},addition:function(){var e,t,n,r;if(e=E(this.multiplication)){while((n=E(/^[-+]\s+/)||!w(s.charAt(o-1))&&(E("+")||E("-")))&&(t=E(this.multiplication)))r=new i.Operation(n,[r||e,t]);return r||e}},conditions:function(){var e,t,n=o,r;if(e=E(this.condition)){while(E(",")&&(t=E(this.condition)))r=new i.Condition("or",r||e,t,n);return r||e}},condition:function(){var e,t,n,r,s=o,u=!1;E(/^not/)&&(u=!0),x("(");if(e=E(this.addition)||E(this.entities.keyword)||E(this.entities.quoted))return(r=E(/^(?:>=|=<|[<=>])/))?(t=E(this.addition)||E(this.entities.keyword)||E(this.entities.quoted))?n=new i.Condition(r,e,t,s,u):T("expected expression"):n=new i.Condition("=",e,new i.Keyword("true"),s,u),x(")"),E(/^and/)?new i.Condition("and",n,E(this.condition)):n},operand:function(){var e,t=s.charAt(o+1);s.charAt(o)==="-"&&(t==="@"||t==="(")&&(e=E("-"));var n=E(this.sub)||E(this.entities.dimension)||E(this.entities.color)||E(this.entities.variable)||E(this.entities.call);return e?new i.Operation("*",[new i.Dimension(-1),n]):n},expression:function(){var e,t,n=[],r;while(e=E(this.addition)||E(this.entity))n.push(e);if(n.length>0)return new i.Expression(n)},property:function(){var e;if(e=E(/^(\*?-?[_a-z0-9-]+)\s*:/))return e[1]}}}};if(r.mode==="browser"||r.mode==="rhino")r.Parser.importer=function(e,t,n,r){!/^([a-z-]+:)?\//.test(e)&&t.length>0&&(e=t[0]+e),w({href:e,title:e,type:r.mime,contents:r.contents,files:r.files,rootpath:r.rootpath,entryPath:r.entryPath,relativeUrls:r.relativeUrls},function(e,i,s,o,u,a){e&&typeof r.errback=="function"?r.errback.call(null,a,t,n,r):n.call(null,e,i,a)},!0)};(function(e){function t(t){return e.functions.hsla(t.h,t.s,t.l,t.a)}function n(t,n){return t instanceof e.Dimension&&t.unit=="%"?parseFloat(t.value*n/100):r(t)}function r(t){if(t instanceof e.Dimension)return parseFloat(t.unit=="%"?t.value/100:t.value);if(typeof t=="number")return t;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function i(e){return Math.min(1,Math.max(0,e))}e.functions={rgb:function(e,t,n){return this.rgba(e,t,n,1)},rgba:function(t,i,s,o){var u=[t,i,s].map(function(e){return n(e,256)});return o=r(o),new e.Color(u,o)},hsl:function(e,t,n){return this.hsla(e,t,n,1)},hsla:function(e,t,n,i){function u(e){return e=e<0?e+1:e>1?e-1:e,e*6<1?o+(s-o)*e*6:e*2<1?s:e*3<2?o+(s-o)*(2/3-e)*6:o}e=r(e)%360/360,t=r(t),n=r(n),i=r(i);var s=n<=.5?n*(t+1):n+t-n*t,o=n*2-s;return this.rgba(u(e+1/3)*255,u(e)*255,u(e-1/3)*255,i)},hsv:function(e,t,n){return this.hsva(e,t,n,1)},hsva:function(e,t,n,i){e=r(e)%360/360*360,t=r(t),n=r(n),i=r(i);var s,o;s=Math.floor(e/60%6),o=e/60-s;var u=[n,n*(1-t),n*(1-o*t),n*(1-(1-o)*t)],a=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(u[a[s][0]]*255,u[a[s][1]]*255,u[a[s][2]]*255,i)},hue:function(t){return new e.Dimension(Math.round(t.toHSL().h))},saturation:function(t){return new e.Dimension(Math.round(t.toHSL().s*100),"%")},lightness:function(t){return new e.Dimension(Math.round(t.toHSL().l*100),"%")},red:function(t){return new e.Dimension(t.rgb[0])},green:function(t){return new e.Dimension(t.rgb[1])},blue:function(t){return new e.Dimension(t.rgb[2])},alpha:function(t){return new e.Dimension(t.toHSL().a)},luma:function(t){return new e.Dimension(Math.round((.2126*(t.rgb[0]/255)+.7152*(t.rgb[1]/255)+.0722*(t.rgb[2]/255))*t.alpha*100),"%")},saturate:function(e,n){var r=e.toHSL();return r.s+=n.value/100,r.s=i(r.s),t(r)},desaturate:function(e,n){var r=e.toHSL();return r.s-=n.value/100,r.s=i(r.s),t(r)},lighten:function(e,n){var r=e.toHSL();return r.l+=n.value/100,r.l=i(r.l),t(r)},darken:function(e,n){var r=e.toHSL();return r.l-=n.value/100,r.l=i(r.l),t(r)},fadein:function(e,n){var r=e.toHSL();return r.a+=n.value/100,r.a=i(r.a),t(r)},fadeout:function(e,n){var r=e.toHSL();return r.a-=n.value/100,r.a=i(r.a),t(r)},fade:function(e,n){var r=e.toHSL();return r.a=n.value/100,r.a=i(r.a),t(r)},spin:function(e,n){var r=e.toHSL(),i=(r.h+n.value)%360;return r.h=i<0?360+i:i,t(r)},mix:function(t,n,r){r||(r=new e.Dimension(50));var i=r.value/100,s=i*2-1,o=t.toHSL().a-n.toHSL().a,u=((s*o==-1?s:(s+o)/(1+s*o))+1)/2,a=1-u,f=[t.rgb[0]*u+n.rgb[0]*a,t.rgb[1]*u+n.rgb[1]*a,t.rgb[2]*u+n.rgb[2]*a],l=t.alpha*i+n.alpha*(1-i);return new e.Color(f,l)},greyscale:function(t){return this.desaturate(t,new e.Dimension(100))},contrast:function(e,t,n,r){return e.rgb?(typeof n=="undefined"&&(n=this.rgba(255,255,255,1)),typeof t=="undefined"&&(t=this.rgba(0,0,0,1)),typeof r=="undefined"?r=.43:r=r.value,(.2126*(e.rgb[0]/255)+.7152*(e.rgb[1]/255)+.0722*(e.rgb[2]/255))*e.alpha255?255:e<0?0:e).toString(16),e.length===1?"0"+e:e}).join("")},operate:function(t,n){var r=[];n instanceof e.Color||(n=n.toColor());for(var i=0;i<3;i++)r[i]=e.operate(t,this.rgb[i],n.rgb[i]);return new e.Color(r,this.alpha+n.alpha)},toHSL:function(){var e=this.rgb[0]/255,t=this.rgb[1]/255,n=this.rgb[2]/255,r=this.alpha,i=Math.max(e,t,n),s=Math.min(e,t,n),o,u,a=(i+s)/2,f=i-s;if(i===s)o=u=0;else{u=a>.5?f/(2-i-s):f/(i+s);switch(i){case e:o=(t-n)/f+(t255?255:e<0?0:e).toString(16),e.length===1?"0"+e:e}).join("")},compare:function(e){return e.rgb?e.rgb[0]===this.rgb[0]&&e.rgb[1]===this.rgb[1]&&e.rgb[2]===this.rgb[2]&&e.alpha===this.alpha?0:-1:-1}}}(n("../tree")),function(e){e.Comment=function(e,t){this.value=e,this.silent=!!t},e.Comment.prototype={toCSS:function(e){return e.compress?"":this.value},eval:function(){return this}}}(n("../tree")),function(e){e.Condition=function(e,t,n,r,i){this.op=e.trim(),this.lvalue=t,this.rvalue=n,this.index=r,this.negate=i},e.Condition.prototype.eval=function(e){var t=this.lvalue.eval(e),n=this.rvalue.eval(e),r=this.index,i,i=function(e){switch(e){case"and":return t&&n;case"or":return t||n;default:if(t.compare)i=t.compare(n);else{if(!n.compare)throw{type:"Type",message:"Unable to perform comparison",index:r};i=n.compare(t)}switch(i){case-1:return e==="<"||e==="=<";case 0:return e==="="||e===">="||e==="=<";case 1:return e===">"||e===">="}}}(this.op);return this.negate?!i:i}}(n("../tree")),function(e){e.Dimension=function(e,t){this.value=parseFloat(e),this.unit=t||null},e.Dimension.prototype={eval:function(){return this},toColor:function(){return new e.Color([this.value,this.value,this.value])},toCSS:function(){var e=this.value+this.unit;return e},operate:function(t,n){return new e.Dimension(e.operate(t,this.value,n.value),this.unit||n.unit)},compare:function(t){return t instanceof e.Dimension?t.value>this.value?-1:t.value":e.compress?">":" > ","|":e.compress?"|":" | "}[this.value]}}(n("../tree")),function(e){e.Expression=function(e){this.value=e},e.Expression.prototype={eval:function(t){return this.value.length>1?new e.Expression(this.value.map(function(e){return e.eval(t)})):this.value.length===1?this.value[0].eval(t):this},toCSS:function(e){return this.value.map(function(t){return t.toCSS?t.toCSS(e):""}).join(" ")}}}(n("../tree")),function(e){e.Import=function(t,n,r,i,s,o){var u=this;this.once=i,this.index=s,this._path=t,this.features=r&&new e.Value(r),this.rootpath=o,t instanceof e.Quoted?this.path=/(\.[a-z]*$)|([\?;].*)$/.test(t.value)?t.value:t.value+".less":this.path=t.value.value||t.value,this.css=/css([\?;].*)?$/.test(this.path),this.css||n.push(this.path,function(t,n,r){t&&(t.index=s),r&&u.once&&(u.skip=r),u.root=n||new e.Ruleset([],[])})},e.Import.prototype={toCSS:function(e){var t=this.features?" "+this.features.toCSS(e):"";return this.css?(typeof this._path.value=="string"&&!/^(?:[a-z-]+:|\/)/.test(this._path.value)&&(this._path.value=this.rootpath+this._path.value),"@import "+this._path.toCSS()+t+";\n"):""},eval:function(t){var n,r=this.features&&this.features.eval(t);return this.skip?[]:this.css?this:(n=new e.Ruleset([],this.root.rules.slice(0)),n.evalImports(t),this.features?new e.Media(n.rules,this.features.value):n.rules)}}}(n("../tree")),function(e){e.JavaScript=function(e,t,n){this.escaped=n,this.expression=e,this.index=t},e.JavaScript.prototype={eval:function(t){var n,r=this,i={},s=this.expression.replace(/@\{([\w-]+)\}/g,function(n,i){return e.jsify((new e.Variable("@"+i,r.index)).eval(t))});try{s=new Function("return ("+s+")")}catch(o){throw{message:"JavaScript evaluation error: `"+s+"`",index:this.index}}for(var u in t.frames[0].variables())i[u.slice(1)]={value:t.frames[0].variables()[u].value,toJS:function(){return this.value.eval(t).toCSS()}};try{n=s.call(i)}catch(o){throw{message:"JavaScript evaluation error: '"+o.name+": "+o.message+"'",index:this.index}}return typeof n=="string"?new e.Quoted('"'+n+'"',n,this.escaped,this.index):Array.isArray(n)?new e.Anonymous(n.join(", ")):new e.Anonymous(n)}}}(n("../tree")),function(e){e.Keyword=function(e){this.value=e},e.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value},compare:function(t){return t instanceof e.Keyword?t.value===this.value?0:1:-1}},e.True=new e.Keyword("true"),e.False=new e.Keyword("false")}(n("../tree")),function(e){e.Media=function(t,n){var r=this.emptySelectors();this.features=new e.Value(n),this.ruleset=new e.Ruleset(r,t),this.ruleset.allowImports=!0},e.Media.prototype={toCSS:function(e,t){var n=this.features.toCSS(t);return this.ruleset.root=e.length===0||e[0].multiMedia,"@media "+n+(t.compress?"{":" {\n ")+this.ruleset.toCSS(e,t).trim().replace(/\n/g,"\n ")+(t.compress?"}":"\n}\n")},eval:function(t){t.mediaBlocks||(t.mediaBlocks=[],t.mediaPath=[]);var n=new e.Media([],[]);return this.debugInfo&&(this.ruleset.debugInfo=this.debugInfo,n.debugInfo=this.debugInfo),n.features=this.features.eval(t),t.mediaPath.push(n),t.mediaBlocks.push(n),t.frames.unshift(this.ruleset),n.ruleset=this.ruleset.eval(t),t.frames.shift(),t.mediaPath.pop(),t.mediaPath.length===0?n.evalTop(t):n.evalNested(t)},variable:function(t){return e.Ruleset.prototype.variable.call(this.ruleset,t)},find:function(){return e.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return e.Ruleset.prototype.rulesets.apply(this.ruleset)},emptySelectors:function(){var t=new e.Element("","&",0);return[new e.Selector([t])]},evalTop:function(t){var n=this;if(t.mediaBlocks.length>1){var r=this.emptySelectors();n=new e.Ruleset(r,t.mediaBlocks),n.multiMedia=!0}return delete t.mediaBlocks,delete t.mediaPath,n},evalNested:function(t){var n,r,i=t.mediaPath.concat([this]);for(n=0;n0;n--)t.splice(n,0,new e.Anonymous("and"));return new e.Expression(t)})),new e.Ruleset([],[])},permute:function(e){if(e.length===0)return[];if(e.length===1)return e[0];var t=[],n=this.permute(e.slice(1));for(var r=0;r0){c=!0;for(a=0;athis.params.length)return!1;if(this.required>0&&n>this.params.length)return!1}r=Math.min(n,this.arity);for(var s=0;si.selectors[o].elements.length?Array.prototype.push.apply(r,i.find(new e.Selector(t.elements.slice(1)),n)):r.push(i);break}}),this._lookups[o]=r)},toCSS:function(t,n){var r=[],i=[],s=[],o=[],u=[],a,f,l;this.root||this.joinSelectors(u,t,this.selectors);for(var c=0;c0){f=e.debugInfo(n,this),a=u.map(function(e){return e.map(function(e){return e.toCSS(n)}).join("").trim()}).join(n.compress?",":",\n");for(var c=i.length-1;c>=0;c--)s.indexOf(i[c])===-1&&s.unshift(i[c]);i=s,r.push(f+a+(n.compress?"{":" {\n ")+i.join(n.compress?"":"\n ")+(n.compress?"}":"\n}\n"))}return r.push(o),r.join("")+(n.compress?"\n":"")},joinSelectors:function(e,t,n){for(var r=0;r0)for(i=0;i0&&this.mergeElementsOnToSelectors(g,a);for(s=0;s0&&(l[0].elements=l[0].elements.slice(0),l[0].elements.push(new e.Element(f.combinator,"",0))),y.push(l);else for(o=0;o0?(h=l.slice(0),m=h.pop(),d=new e.Selector(m.elements.slice(0)),v=!1):d=new e.Selector([]),c.length>1&&(p=p.concat(c.slice(1))),c.length>0&&(v=!1,d.elements.push(new e.Element(f.combinator,c[0].elements[0].value,0)),d.elements=d.elements.concat(c[0].elements.slice(1))),v||h.push(d),h=h.concat(p),y.push(h)}a=y,g=[]}}g.length>0&&this.mergeElementsOnToSelectors(g,a);for(i=0;i0?i[i.length-1]=new e.Selector(i[i.length-1].elements.concat(t)):i.push(new e.Selector(t))}}}(n("../tree")),function(e){e.Selector=function(e){this.elements=e},e.Selector.prototype.match=function(e){var t=this.elements,n=t.length,r,i,s,o;r=e.elements.slice(e.elements.length&&e.elements[0].value==="&"?1:0),i=r.length,s=Math.min(n,i);if(i===0||n1?"["+e.value.map(function(e){return e.toCSS(!1)}).join(", ")+"]":e.toCSS(!1)}}(n("./tree"));var o=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);r.env=r.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.port.length>0||o?"development":"production"),r.async=r.async||!1,r.fileAsync=r.fileAsync||!1,r.poll=r.poll||(o?1e3:1500);if(r.functions)for(var u in r.functions)r.tree.functions[u]=r.functions[u];var a=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);a&&(r.dumpLineNumbers=a[1]),r.watch=function(){return r.watchMode||(r.env="development",f()),this.watchMode=!0},r.unwatch=function(){return clearInterval(r.watchTimer),this.watchMode=!1},/!watch/.test(location.hash)&&r.watch();var l=null;if(r.env!="development")try{l=typeof e.localStorage=="undefined"?null:e.localStorage}catch(c){}var h=document.getElementsByTagName("link"),p=/^text\/(x-)?less$/;r.sheets=[];for(var d=0;d= scrollHeight - offsetBottom) ? 'bottom' :\n offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false\n\n if (this.affixed === affix) return\n if (this.unpin) this.$element.css('top', '')\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? position.top - scrollTop : null\n\n this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))\n\n if (affix == 'bottom') {\n this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.affix\n\n $.fn.affix = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom) data.offset.bottom = data.offsetBottom\n if (data.offsetTop) data.offset.top = data.offsetTop\n\n $spy.affix(data)\n })\n })\n\n}(jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.0.2\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.hasClass('alert') ? $this : $this.parent()\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n $parent.trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one($.support.transition.end, removeElement)\n .emulateTransitionEnd(150) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.alert\n\n $.fn.alert = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.0.2\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n }\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (!data.resetText) $el.data('resetText', $el[val]())\n\n $el[val](data[state] || this.options[state])\n\n // push to event loop to allow forms to submit\n setTimeout(function () {\n state == 'loadingText' ?\n $el.addClass(d).attr(d, d) :\n $el.removeClass(d).removeAttr(d);\n }, 0)\n }\n\n Button.prototype.toggle = function () {\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n .prop('checked', !this.$element.hasClass('active'))\n .trigger('change')\n if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')\n }\n\n this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n var old = $.fn.button\n\n $.fn.button = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n $btn.button('toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n","carousel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.0.2\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.pause == 'hover' && this.$element\n .on('mouseenter', $.proxy(this.pause, this))\n .on('mouseleave', $.proxy(this.cycle, this))\n }\n\n Carousel.DEFAULTS = {\n interval: 5000\n , pause: 'hover'\n , wrap: true\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getActiveIndex = function () {\n this.$active = this.$element.find('.item.active')\n this.$items = this.$active.parent().children()\n\n return this.$items.index(this.$active)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getActiveIndex()\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid', function () { that.to(pos) })\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition.end) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || $active[type]()\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n this.sliding = true\n\n isCycling && this.pause()\n\n var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n\n if ($next.hasClass('active')) return\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n this.$element.one('slid', function () {\n var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n $nextIndicator && $nextIndicator.addClass('active')\n })\n }\n\n if ($.support.transition && this.$element.hasClass('slide')) {\n this.$element.trigger(e)\n if (e.isDefaultPrevented()) return\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one($.support.transition.end, function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () { that.$element.trigger('slid') }, 0)\n })\n .emulateTransitionEnd(600)\n } else {\n this.$element.trigger(e)\n if (e.isDefaultPrevented()) return\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger('slid')\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.carousel\n\n $.fn.carousel = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n var $this = $(this), href\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n $target.carousel(options)\n\n if (slideIndex = $this.attr('data-slide-to')) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n })\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n $carousel.carousel($carousel.data())\n })\n })\n\n}(jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.0.2\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.transitioning = null\n\n if (this.options.parent) this.$parent = $(this.options.parent)\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n if (actives && actives.length) {\n var hasData = actives.data('bs.collapse')\n if (hasData && hasData.transitioning) return\n actives.collapse('hide')\n hasData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')\n [dimension](0)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('in')\n [dimension]('auto')\n this.transitioning = 0\n this.$element.trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n [dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element\n [dimension](this.$element[dimension]())\n [0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse')\n .removeClass('in')\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .trigger('hidden.bs.collapse')\n .removeClass('collapsing')\n .addClass('collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.collapse\n\n $.fn.collapse = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {\n var $this = $(this), href\n var target = $this.attr('data-target')\n || e.preventDefault()\n || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n var $target = $(target)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n var parent = $this.attr('data-parent')\n var $parent = parent && $(parent)\n\n if (!data || !data.transitioning) {\n if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n }\n\n $target.collapse(option)\n })\n\n}(jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.0.2\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=dropdown]'\n var Dropdown = function (element) {\n var $el = $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we we use a backdrop because click events don't delegate\n $('
    ').insertAfter($(this)).on('click', clearMenus)\n }\n\n $parent.trigger(e = $.Event('show.bs.dropdown'))\n\n if (e.isDefaultPrevented()) return\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown')\n\n $this.focus()\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27)/.test(e.keyCode)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).focus()\n return $this.click()\n }\n\n var $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n if (!$items.length) return\n\n var index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index=0\n\n $items.eq(index).focus()\n }\n\n function clearMenus() {\n $(backdrop).remove()\n $(toggle).each(function (e) {\n var $parent = getParent($(this))\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown'))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown')\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = function (option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('dropdown')\n\n if (!data) $this.data('dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)\n\n}(jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.js v3.0.2\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n\n if (this.options.remote) this.$element.load(this.options.remote)\n }\n\n Modal.DEFAULTS = {\n backdrop: true\n , keyboard: true\n , show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.escape()\n\n this.$element.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(document.body) // don't move modals dom position\n }\n\n that.$element.show()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$element.find('.modal-dialog') // wait for modal to slide in\n .one($.support.transition.end, function () {\n that.$element.focus().trigger(e)\n })\n .emulateTransitionEnd(300) :\n that.$element.focus().trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one($.support.transition.end, $.proxy(this.hideModal, this))\n .emulateTransitionEnd(300) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.focus()\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keyup.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.removeBackdrop()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
    ')\n .appendTo(document.body)\n\n this.$element.on('click.dismiss.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n $.support.transition && this.$element.hasClass('fade')?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (callback) {\n callback()\n }\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.modal\n\n $.fn.modal = function (option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) //strip for ie7\n var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n e.preventDefault()\n\n $target\n .modal(option, this)\n .one('hide', function () {\n $this.is(':visible') && $this.focus()\n })\n })\n\n $(document)\n .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.0.2\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================================== */\n\n\n+function ($) { \"use strict\";\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right'\n , trigger: 'click'\n , content: ''\n , template: '

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

    Hello, world!

    +

    This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.

    +

    Learn more »

    +
    +
    + +
    + +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

    +

    View details »

    +
    +
    + +
    + +
    +

    © Company 2013

    +
    +
    + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/jumbotron/jumbotron.css b/app/bower_components/sass-bootstrap/examples/jumbotron/jumbotron.css new file mode 100644 index 0000000..179d408 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/jumbotron/jumbotron.css @@ -0,0 +1,5 @@ +/* Move down content because we have a fixed navbar that is 50px tall */ +body { + padding-top: 50px; + padding-bottom: 20px; +} diff --git a/app/bower_components/sass-bootstrap/examples/justified-nav/index.html b/app/bower_components/sass-bootstrap/examples/justified-nav/index.html new file mode 100644 index 0000000..c2cf0ca --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/justified-nav/index.html @@ -0,0 +1,83 @@ + + + + + + + + + + + Justified Nav Template for Bootstrap + + + + + + + + + + + + + + + + +
    + +
    +

    Project name

    + +
    + + +
    +

    Marketing stuff!

    +

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet.

    +

    Get started today

    +
    + + +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.

    +

    View details »

    +
    +
    + + + + +
    + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/justified-nav/justified-nav.css b/app/bower_components/sass-bootstrap/examples/justified-nav/justified-nav.css new file mode 100644 index 0000000..baf0e11 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/justified-nav/justified-nav.css @@ -0,0 +1,88 @@ +body { + padding-top: 20px; +} + +.footer { + border-top: 1px solid #eee; + margin-top: 40px; + padding-top: 40px; + padding-bottom: 40px; +} + +/* Main marketing message and sign up button */ +.jumbotron { + text-align: center; + background-color: transparent; +} +.jumbotron .btn { + font-size: 21px; + padding: 14px 24px; +} + +/* Customize the nav-justified links to be fill the entire space of the .navbar */ + +.nav-justified { + background-color: #eee; + border-radius: 5px; + border: 1px solid #ccc; +} +.nav-justified > li > a { + margin-bottom: 0; + padding-top: 15px; + padding-bottom: 15px; + color: #777; + font-weight: bold; + text-align: center; + border-bottom: 1px solid #d5d5d5; + background-color: #e5e5e5; /* Old browsers */ + background-repeat: repeat-x; /* Repeat the gradient */ + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e5e5e5 100%); /* FF3.6+ */ + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */ + background-image: -webkit-linear-gradient(top, #f5f5f5 0%,#e5e5e5 100%); /* Chrome 10+,Safari 5.1+ */ + background-image: -o-linear-gradient(top, #f5f5f5 0%,#e5e5e5 100%); /* Opera 11.10+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */ + background-image: linear-gradient(top, #f5f5f5 0%,#e5e5e5 100%); /* W3C */ +} +.nav-justified > .active > a, +.nav-justified > .active > a:hover, +.nav-justified > .active > a:focus { + background-color: #ddd; + background-image: none; + box-shadow: inset 0 3px 7px rgba(0,0,0,.15); +} +.nav-justified > li:first-child > a { + border-radius: 5px 5px 0 0; +} +.nav-justified > li:last-child > a { + border-bottom: 0; + border-radius: 0 0 5px 5px; +} + +@media (min-width: 768px) { + .nav-justified { + max-height: 52px; + } + .nav-justified > li > a { + border-left: 1px solid #fff; + border-right: 1px solid #d5d5d5; + } + .nav-justified > li:first-child > a { + border-left: 0; + border-radius: 5px 0 0 5px; + } + .nav-justified > li:last-child > a { + border-radius: 0 5px 5px 0; + border-right: 0; + } +} + +/* Responsive: Portrait tablets and up */ +@media screen and (min-width: 768px) { + /* Remove the padding we set earlier */ + .masthead, + .marketing, + .footer { + padding-left: 0; + padding-right: 0; + } +} diff --git a/app/bower_components/sass-bootstrap/examples/navbar-fixed-top/index.html b/app/bower_components/sass-bootstrap/examples/navbar-fixed-top/index.html new file mode 100644 index 0000000..de04aa6 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/navbar-fixed-top/index.html @@ -0,0 +1,91 @@ + + + + + + + + + + + Fixed Top Navbar Example for Bootstrap + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Navbar example

    +

    This example is a quick exercise to illustrate how the default, static and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.

    +

    To see the difference between static and fixed top navbars, just scroll.

    +

    + View navbar docs » +

    +
    + +
    + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/navbar-fixed-top/navbar-fixed-top.css b/app/bower_components/sass-bootstrap/examples/navbar-fixed-top/navbar-fixed-top.css new file mode 100644 index 0000000..b0c8837 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/navbar-fixed-top/navbar-fixed-top.css @@ -0,0 +1,4 @@ +body { + min-height: 2000px; + padding-top: 70px; +} diff --git a/app/bower_components/sass-bootstrap/examples/navbar-static-top/index.html b/app/bower_components/sass-bootstrap/examples/navbar-static-top/index.html new file mode 100644 index 0000000..c77c00a --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/navbar-static-top/index.html @@ -0,0 +1,92 @@ + + + + + + + + + + + Static Top Navbar Example for Bootstrap + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Navbar example

    +

    This example is a quick exercise to illustrate how the default, static and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.

    +

    To see the difference between static and fixed top navbars, just scroll.

    +

    + View navbar docs » +

    +
    + +
    + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/navbar-static-top/navbar-static-top.css b/app/bower_components/sass-bootstrap/examples/navbar-static-top/navbar-static-top.css new file mode 100644 index 0000000..59a37e7 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/navbar-static-top/navbar-static-top.css @@ -0,0 +1,7 @@ +body { + min-height: 2000px; +} + +.navbar-static-top { + margin-bottom: 19px; +} \ No newline at end of file diff --git a/app/bower_components/sass-bootstrap/examples/navbar/index.html b/app/bower_components/sass-bootstrap/examples/navbar/index.html new file mode 100644 index 0000000..24c154a --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/navbar/index.html @@ -0,0 +1,88 @@ + + + + + + + + + + + Navbar Template for Bootstrap + + + + + + + + + + + + + + + + +
    + + + + + +
    +

    Navbar example

    +

    This example is a quick exercise to illustrate how the default, static navbar and fixed to top navbar work. It includes the responsive CSS and HTML, so it also adapts to your viewport and device.

    +

    + View navbar docs » +

    +
    + +
    + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/navbar/navbar.css b/app/bower_components/sass-bootstrap/examples/navbar/navbar.css new file mode 100644 index 0000000..d219524 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/navbar/navbar.css @@ -0,0 +1,8 @@ +body { + padding-top: 20px; + padding-bottom: 20px; +} + +.navbar { + margin-bottom: 20px; +} diff --git a/app/bower_components/sass-bootstrap/examples/non-responsive/index.html b/app/bower_components/sass-bootstrap/examples/non-responsive/index.html new file mode 100644 index 0000000..1c56b30 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/non-responsive/index.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + + Non-responsive Template for Bootstrap + + + + + + + + + + + + + + + + + + + +
    + + + +

    What changes

    +

    Note the lack of the <meta name="viewport" content="width=device-width, initial-scale=1.0">, which disables the zooming aspect of sites in mobile devices. In addition, we reset our container's width and are basically good to go.

    + +

    Regarding navbars

    +

    As a heads up, the navbar component is rather tricky here in that the styles for displaying it are rather specific and detailed. Overrides to ensure desktop styles display are not as performant or sleek as one would like. Just be aware there may be potential gotchas as you build on top of this example when using the navbar.

    + +

    Non-responsive grid system

    +
    +
    One third
    +
    One third
    +
    One third
    +
    + +
    + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/non-responsive/non-responsive.css b/app/bower_components/sass-bootstrap/examples/non-responsive/non-responsive.css new file mode 100644 index 0000000..526b0b8 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/non-responsive/non-responsive.css @@ -0,0 +1,116 @@ +/* Template-specific stuff + * + * Customizations just for the template; these are not necessary for anything + * with disabling the responsiveness. + */ + +/* Account for fixed navbar */ +body { + padding-top: 70px; + padding-bottom: 30px; +} + +/* Finesse the page header spacing */ +.page-header { + margin-bottom: 30px; +} +.page-header .lead { + margin-bottom: 10px; +} + + +/* Non-responsive overrides + * + * Utilitze the following CSS to disable the responsive-ness of the container, + * grid system, and navbar. + */ + +/* Reset the container */ +.container { + max-width: none !important; + width: 970px; +} + +/* Demonstrate the grids */ +.col-xs-4 { + padding-top: 15px; + padding-bottom: 15px; + background-color: #eee; + border: 1px solid #ddd; + background-color: rgba(86,61,124,.15); + border: 1px solid rgba(86,61,124,.2); +} + +.container .navbar-header, +.container .navbar-collapse { + margin-right: 0; + margin-left: 0; +} + +/* Always float the navbar header */ +.navbar-header { + float: left; +} + +/* Undo the collapsing navbar */ +.navbar-collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; +} + +.navbar-toggle { + display: none; +} + +.navbar-brand { + margin-left: -15px; +} + +/* Always apply the floated nav */ +.navbar-nav { + float: left; + margin: 0; +} +.navbar-nav > li { + float: left; +} +.navbar-nav > li > a { + padding: 15px; +} + +/* Redeclare since we override the float above */ +.navbar-nav.navbar-right { + float: right; +} + +/* Undo custom dropdowns */ +.navbar .open .dropdown-menu { + position: absolute; + float: left; + background-color: #fff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-width: 0 1px 1px; + border-radius: 0 0 4px 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} +.navbar .open .dropdown-menu > li > a { + color: #333; +} +.navbar .open .dropdown-menu > li > a:hover, +.navbar .open .dropdown-menu > li > a:focus, +.navbar .open .dropdown-menu > .active > a, +.navbar .open .dropdown-menu > .active > a:hover, +.navbar .open .dropdown-menu > .active > a:focus { + color: #fff !important; + background-color: #428bca !important; +} +.navbar .open .dropdown-menu > .disabled > a, +.navbar .open .dropdown-menu > .disabled > a:hover, +.navbar .open .dropdown-menu > .disabled > a:focus { + color: #999 !important; + background-color: transparent !important; +} diff --git a/app/bower_components/sass-bootstrap/examples/offcanvas/index.html b/app/bower_components/sass-bootstrap/examples/offcanvas/index.html new file mode 100644 index 0000000..a9350bd --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/offcanvas/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + Off Canvas Template for Bootstrap + + + + + + + + + + + + + + + + + +
    + +
    + +
    +

    + +

    +
    +

    Hello, world!

    +

    This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

    +
    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +

    Heading

    +

    Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

    +

    View details »

    +
    +
    +
    + + +
    + +
    + +
    +

    © Company 2013

    +
    + +
    + + + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.css b/app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.css new file mode 100644 index 0000000..71ad2ac --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.css @@ -0,0 +1,50 @@ +/* + * Style tweaks + * -------------------------------------------------- + */ +html { + overflow-x: hidden; /* Prevent scroll on narrow devices */ +} +body { + padding-top: 70px; +} +footer { + padding: 30px 0; +} + +/* + * Off Canvas + * -------------------------------------------------- + */ +@media screen and (max-width: 767px) { + .row-offcanvas { + position: relative; + -webkit-transition: all 0.25s ease-out; + -moz-transition: all 0.25s ease-out; + transition: all 0.25s ease-out; + } + + .row-offcanvas-right + .sidebar-offcanvas { + right: -50%; /* 6 columns */ + } + + .row-offcanvas-left + .sidebar-offcanvas { + left: -50%; /* 6 columns */ + } + + .row-offcanvas-right.active { + right: 50%; /* 6 columns */ + } + + .row-offcanvas-left.active { + left: 50%; /* 6 columns */ + } + + .sidebar-offcanvas { + position: absolute; + top: 0; + width: 50%; /* 6 columns */ + } +} diff --git a/app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.js b/app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.js new file mode 100644 index 0000000..12f2dff --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/offcanvas/offcanvas.js @@ -0,0 +1,5 @@ +$(document).ready(function() { + $('[data-toggle=offcanvas]').click(function() { + $('.row-offcanvas').toggleClass('active'); + }); +}); \ No newline at end of file diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/carousel.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/carousel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a63a1ba9d1e024eceedbfa279668aab5d65650d5 GIT binary patch literal 82379 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

    @jKB&A}ZOF76 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%0D3R_tMk`>iyV+p>pi`0^Bvx#NqGC@g&QQi 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

    CGrkBaQxMDr}gZ<%(C4 zn>J3C8HWkFFZ+4)ItJvU36SClWnMyTRTRdV?oy~$8EfP_^Zcw{AThm?81(aJkDtOF+>$EYl)TZTN>xir3Ncpl z4(7iB4%>A_>Zsy)!gu7!+|h@!L@xe)k%m7`jWSM7H*}oX*~t(kh!j@n?>xxwvYWpC z5&?Cb$ilNzcrT`vtCmU%p0Ol7@1C~&F6Nrw?xLfA>}W_+!G;@XqU4jDyO;d_iqHJM z`YZOhBg>=YjNLatH3(-knO}M8Qu^Z^abIXFmV_oesWE8DUxy_$^t(ZKcVPD6KSKJB zNf(yOB>6`wisiHtJwa7kLWgU)C7)w8~6MEmLt{f?{u;$w8I)$Ek+ z?N*EJzw%&gO=g?-N&ghn{G_)dtrKol%iu~`)%R}c?R&IEL#^XK4yu{=_!HQ_Rm@J3 c$HgPp9?xLPC6UpXdkpix81%id`u5@f0TbHr3;+NC literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/jumbotron-narrow.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/jumbotron-narrow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..915d10f4c322678de75de31cabf7f8e8bd8866d2 GIT binary patch literal 68675 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 literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/jumbotron.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/jumbotron.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46bce0c5388902a0ed131c9a93eae4dfde403682 GIT binary patch literal 77911 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 literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/justified-nav.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/justified-nav.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f57923e66f35b17e47e7089da63324700a7c043 GIT binary patch literal 79170 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 D7*rC^ literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/navbar-fixed.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/navbar-fixed.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16a03b0bc9595003b19c96992c99ff76767278fb GIT binary patch literal 38093 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 literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/non-responsive.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/non-responsive.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b8953ce1229c97a6ac377bf13cd857f96173e10 GIT binary patch literal 61233 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

    Z8JVZNbE^?3aI-kT)wfOQ3 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 literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/offcanvas.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/offcanvas.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76b7d6702e0f86a579f43876965d46f2e6a82ce7 GIT binary patch literal 112583 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Ⓢ;Wv%NlN7Lp#NfgtLb=K}4 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 z zbRtsoto9N$u5qO#$129l=j?Mx(F%a84%PtIeRyIkW6`Su1VI;KMfvD*;t8yKMARum z4gbgGFQM@Ht||8c95e%B!)Gvf*$0Chv8w}BL`_CwRGcKxWu){rAE{P*5X=o>qot~t`c>=3enRge3$FPt~?NI1fdhC_a#wS8(|xP&zpm4{a1eQ3FY zIGwXnBjU)lNE2a!*IKE6hC>By>PehM8#(_v4=A)wv_M$p_oFdalQho=VN6t=I66$5 zsMR>c%jM#hYKyUim8PA|s2@rK`{mHej`@Nhw>Rz*%1KXK2{BLP7jg3botUotq*YOo zrWlY20}mcnW4-%CqH9Kk&NDyLfb6W_U@IeE<$4lOb7vY*u}wvUBDELG)J(EH@u!oG zOefT_lZ%PgcNzb9IHVde*VgeX2vH|NQSDx-&fxat9EMIwx5n}r!<3_6CdK%P*P%dR z16c-_-D6*FU*ngLaguk|OKgbbI_hh1<(W_!#*WtQ_7ks_>)hz|+N_aR6{S85RT}4x zECT}>$>KO3r$EJ|D!UqhfFBo)(T+i}sUyj!>++g&ntZ%$6(?+5p4X|QIvHV5&O%o8^Dls@-o|U=sHBpT8l>Xh%Q1XOY+c?F^uRj& zs^Vz#GcY-Ji)NZ4X{*QM&%Eroza(ipFs1(@>1X%X2IE}CW-NH3`bmbNWU45!hap7M z^qXavg@Jk^n{0*dHNyU6)}zHat&XmGDeSxCH{?lZDl3eIMPQ^fIQq?X$T`yj1K-Vz zQ?b=#m!r1G=#xS3KHXUz^M;+;Al5C^yI8A$ht+DXjSrb1O4wV^1d&=_l2qtHEi;hrcflJif+0yymwqaA}SGLpU%W6^x zPvR-X1>azV{5GK0y!u7tX!JoLeI$2jTG(Kc+9TokToy~KAurFRzWtv3WBaaohK+aJ zyub7wul-4JBR5B2andDKvtS=_qx{ZR9CG_R*w~52JRO`eEtRhkvEu$ny>_0{x6~p} z{Y25rHr!H2UAgf4dZHlL-3=+CHIhk0oDzc&i<+Kx5~S3$@zjwJWVy?45k`D|BIc-RuoqH*F5g)BsFp?Q)q-K**3O3y(&7aA zeDN7X3CttG4`REz9^j~YG`^lplU$FAPrL>?*n~uakk1xNI?U8z>Ip8Dx$}P|%}O8g zCM)JKEy0^P(NFoMCVX&NA%(NDK)&()H10+E8P>D%Vp6^yKW|7XdW*K7a~z+kcq!$S zclNpw_kKDqR8X8XSZvwtlS)1N5?H!p|C7<>Q7yBWBYfbejuI*J=ppGlpQRw3En=z^ zZ9(nbBVPRmx*n+|CX?;pz94t_e9gITYmVjMH5C7JNHOuI-iZwk6+3BBi;5%eh_>mQ zl)PE%q`|YxITckM=VnerdAZ{ax^y0p``(bXkOb3<4R71H3$*d($|j5P%V7Z;QH5^v z;(F(wxP@tPkhW!gHTHlTYl$hEid~)=$@>&~eEGf+799qJvxF?z`mE0K6WVEEU&hPI zalKml%Br(}%gi?&zmSt6 zj~s8bS72}AT0pW*e(<3gH%<|H<)J$1$&@3Wci;Am(C|2_r-mBNz`v=&L~~&BB$`E( zxP6hT`J+@G3HfK3jhGsl&ApmsM$>iC^{C2~aJx@+m!FW{R>}It=H^A4ZFO^;#N_dn z9QI4qW(F0z@Qz(}mrvX!%WQbm*yEWh*5!*xuwYn!$4QQlV&zFrV)R0Bn+8Y4vLrbK zl+M*~jrn1*SV`KHDmXF#s{Za>1MyGWbIZ469QSffzVJgt0v1fIZU)Jhr@6!=Qwao_ zUj3IQ=U+o}$b?izX}&J#$ycnYli0Zy_?eW_5FI!m=f!%GZN#wA8&frkv}tjZ8`l1w zJ#3a#)FNLQ`5pO+gqWGWTT(-gtp}29cp7MfItPwd(Bu~0vZyD!QcoR=rcvJ*x-e&d z%Qv?e=J8F<=x!cVlmvIrXpvdM3UO%3@{8(>##9E!U0f zxw&1rp5Tj;!7a5IvG5VyQaBn~5~a1kUEIy@0Be?FUR(YGI$k+PanoGu57)#>BNtfl zoUf;iApDPuL1qeG%pt!uX6*C7ApDtmW?7|h zC10LT9eQjI-t%UrKgrU279_o};u#NCpI|4RRy&iX8oQm2ua~hw{WC+$5KYZswd&`+ z{{3vJ=ueF1_tXC@T-m9S*bm~CeFg={I{pI6)Z*UQzBEmX{+E(f0IKrCVYKW*KpO51 zu7cNc?n_Fw=G(*nT83i**Ec~%pOfW`+^J#lGr(fSm^Xee?t4@6M(g5;%c7L2p`57f z7v@u)CtaRXQgb!e zXXtqa5#pwfL|Njt&^@3ui9%9J8a>%qe#yaT46ICPZt5q7M4^UB+7NXqWvL{!Z4i9N zZaJT(hA^9utrWBSwd?eH#a}>`-rLvCVi_iuw2r#tmxire!%KKU*pOM?=r_>FIrk`B z_h;OT{sng*V|iJM)W9akLJpI+W+dQ4f9hWL=+uq-2ft@$9b9Q5?w8{ur@S!9ZHfy; znB*x|jMp1C)}!jMLJum`kF^Qe!1DPP^>@1FXw=sb*r)>2BJ29cvw0o$Y#U*Y4NEu4 z8ZfOU#aR}MGV73eme_2K0`y~03ELkjZB;gr$svv}>L&=Kw)~#{E54XM?qWs!@uKMM zaqiRe^iPkopKj;(I-PGTby^T$Sq?K7{I>-m?O(s{tE%=t`^MBQ_`3IW{b|-02Wq<@ zzWvWD{CD>U8>gw8eqO(iy0uUPp93617`nTMlh)QFWS#}T>QM|yL3!HbzW{3*)Sm&% z`-WqXqKn(ZLiawVZC?Tu9#-$!&sQ}=%|WOuU)kT`KM69Qd+sn9F>HU$Gc^WG60DC1 zP8})&i}R6XrqKN3qEL&qV#Ej}X429O-578ii&13f=kW+BetvM>85kA7l3X))LZ-@l zl^FB7QtWLAWo@v?a+OP188aL4(b7v$7r<9qkM1`|H6X{978Xirs+ieiYH(cHrObF) zO;o2SLx1p7%XUb{mlxOyMt+4&Y1*xc@hW~uNf=s?nd%HD5BhTZP0Ca#JT%{OkBZA? z#@EoXfm;#mUVaKI4wGPIeJPWv%P3FLj9;x={W6|ft+^SWE8`-{ZJHLQ;~}kxez2x3 zXpHIlB1-@K5>orpbfrTE0r`ijD+m+>$Uj~H00;_zh)GcKw*fMvfI~z7Eulg{LcyHA z{a*aP^jbl_Grut4oW1$YJo?>@=@IKvD($@n{VGR3oLe?%<)tk_K%Yf9!6zD+;uXR= zAF4vUO~To1W%ZV5pyc+@1==3fo+``W1*WU565%eoj8+Ke4N2jnY)4^J@S2sP zLZdhOAe$T8<%0f}T14T_UVDDe>@6B39O4#nm7;dq@cGJa{k}BqtNlKb6|p089?h(_ zwTRe}?iM9ynQu)Di@;K=9MOqqBiH$)da>H5=m3?dZI~>@{yS9aiDeRIIqYlH740ds znM(Dyko!x@C`do}*NGv&X2}5v7Kje(1t-ecGVrN&rwPoEv$CAc=cD4}_3#yRoSX6D^|+BLY0%%qaf#9=U;%d&uV zoG%sSjKMTfIJTYaQ6I`<%_g}N{%4_mMH6UafAXz>b>{w4Tj-}!;$!}}lR^bX%^|`i zNqj#j*$F~`8-R1%Gv377-~(fF^>>T~n_KXJipVhgLVq}6so>b@sC0FJqK;Niwm&{B z>ldllkCv1fa-|rM(prPRfE0LaM*aRE$bT1jR>~b4)md*onk`nx{vl{tUs8hEq5p3E zfA;-<@rhZGX?;G9FG#g|Adi!~{2ksjx6}!Z@_FJsZ_Y)3C53sxbwlagRnd^OqW3w=~%c4^S@UER63a_j-n7?KeM7+s)61w|6=3t`DsL zsCuVXKz3BwYsJU@5~(%y&SK@$z|Ufhm{e>GkJ#}#>1vvK@@x6lVEd}UeTt`*8veCiCPMZvWRh`~V626bI=VTtitq6OLX%69yxsYaZ+1>R)-fmlh+~8#^5-TM0t|$DfRk2< zZtk(qbv<$+{nSmq*_u{RK{Je~2g4iN{zkRNFX(0=`U%o#DK?O)I(I%AYnCw4VbX{Y zCwYi+ZV1nPfH(r0(Q(yW(jW5dm9$Vhvr2;)F6rE=E%dV#VXKQ%J&Je_u_C)ucCuZT zi?97ODe`iHs`kCVZpHXQzK4AQ{z`}BaTtmi^tf3zpB&E0qZYfA7)E;EGnQI1OG{Ah z_$21~<>sFQ^ck?AP>dC0;*9tMTtIXVBFb^igT-)2)?pQzWbJv|tBZHXtna0ErvyMb z%1SKP{1u0_lZEyHzKmsbla{ek8ivUA?Ao8uA~rM;QH1aM-ZE3J(Tai&v~)kt%rpGc z6HBE?*X!2IlFT*5&lT8i4)#7ZwD{OE%Myt;-&0bIUm`)F%==(n6$1GxUJ*I)!KrF4 z_{rR2wox=Z2eyH`8!TO{1CxUYPt}^^ITZ06YeW6#Xy^g1fz<%TJrEO@olpOZi0?zz z3D~2p!BbEbo9VDzM-PmjBn%b^?y&svrPt=AJcL#AqY`04fvx@$l^yt zA7?3SPwcM`Wl~Vuih&r+mB_~VS}Fdni2j45vz-&qPcCnrEZzfT!enY4>`=e84fD!% z9rzRH3C1X7x4f*lzqgIGsDVncYU^NBgdUc(sa}F{2F*TQKvk{t?e(;4jL(hCZMF4l zcOW|Os+xY?zyu!CDO~c4C8fgysWP!5eJ9DDdvvQH!u z6QZD`#LarZbsBhmSAk3ueY1@0ybGlxaG&Jw=bH71Z|cG^s|#u#EI2#a*oNqyuq|hm z)?Bd#2|0Izp9Bp)6$5t&y=nixWVr{(24I_}Res{vIYBj6I&Fu2Fq-#+?=sd-09WwM zom5GGIC03Y{*YdNY19Y|kEDQEC|ls}YX4dHoqBh693A7FD>jC6(yUdZ9Zodp_AlU{ z*7{D3(-+%-n9k=EhM16HmU zeby%T+vPf_GO!;}26+N#C!9k?#`&oichWY)`=?{<#7GB2w7iW1ApUwLZ4I~c{o9OP zUeh8eol%z16WF@1a<9u8M|&J6E1Ev?T77K(!FsW^;A1kBA^SUeEC7PbzDhV{#BERJ z+dJ^Bhz~?Kq}3T?%Wz`{3K!h68G9x}{f8a`!S=Ey6gD>G87KE~PTU!xl|7&Qe1n2; z!E!A`Jwfk^K1KocP`(aW%F|WW2r86qIY;pB)6bKaoYqin*!Q}B+xO1Itu2NP>x7B+ zQmE}gey2kL)<(j%Rj=U5P4}~_NAFC)tMw#gaM%@|l?u3bKEuyST zFlCgu9iSi`isNq+NJX##sTZa0-tK6d0PW!CfG|@#IjKVPrFWWQvIzKWbWLGsUQPpd zw%BGge)a|B@A<})K|Vnti#^Xh_X6v*asxT>$yfDowaS{HyF{RViW6arlM(yKYpdGt zz#M;E*s}=>dYITjZUf6eb@E+;6iB}BMs=)0fh{ty(F+pk!ylpzL3$UXY9aj!TYw)* zEbN2I=EDi!KotZlHrWgI%EZX1IaKd2KNhC)50KpTutGK-Fh3sP(MIhDiSaM!M?oHF z^ju^Gfc zIr=Jz_{;}>fHAwC1@?5r+mJ8S^!M%EfYJ6SFRC^yDA#iq0!8!uQ=3}Tyb`cy@=>ROOeO>c?emv*z${yS69b?f(h5-vQEs^kUnI~Ex>Lh z?k}6za_lguPlsWgHYO|6{FMI-KuQIU2@no!?Bxw-bd_Sw_lg*JMkg2sY)S7F1@36aPa2M$i7Ck^;<90lD@KvW8T=Yu{J2oq=nXkBq za&NRX9XUKRNDRrQkeN3uJT2c{)0$*8j|P;H+G`hu@`2llYu#4-K+T!)f zb*egPT9w-8e|dff6jaS`QaG0PKCu~$KdVBtOPJapn)$<1B zzn!?u@@(WE)I#SNk}!yyOv_GGx}hf}+0jEMND6!F`gODOz=V-+ocC}}+KrzFmoe_& zrmPf8w=ZEuS{(LaI?wpS>*x57{NV6nfIXdS0qQc!^|zw?)iYnU-^}NtLt{*+o8d&#pm^&_fM<6 zoogqDn(=Q|WL9R-2&;p1z<`g8MmzBc-1HQO>nOx!H=a8%N(PX?f`sEn_WX}$74f3s zeHQFa5{Zjq@CRff(L6QJn;m0o?%YVW6KN#~fp##5cchkhv-F3L8hwLCzrd-?Wzq;C;9;Lji3R)1|I zOHYyGBd(m^wUKtKQ9>yuODas=9XJIR%21OrA%QefIelbB;NgZzZ=?;vmS`NN7OOFR zsGxZXP64*jvFjw9G6RxNq#kP6hctbLAC2JjgzY)7Ud+L8`@fG+1Q=?r|EL)O2Bnl7 zTRpvcH}~kBASChX&2f51fq*Wj_Cam~5>vQC-i6XoG z*54qkKjq+F);>0+V;pjxVgz4FLN1TkP*|<^$*VPH+iK49Q}{5PLtR?F{K4)E#FWUt z50vY5`QFF!7hC7ltIlXVk3OYFER6v|ZxE85MW_gpiI9nC#!5CIL)k5IEvX@v9lb4d z*N9u&c!YTImHV*S1=FpRVo&Z6iiBDr+K_I7vCXK)5VhEE+?REghT9d`M=9m6)zUaB z)G53Be&&%99nik>Rfi9=xCqbR{{vK>%{d)zT`(;_Mgo@RG@GNg%~nf0&hmsz6Nw(2 za$dHgY<-T^hDGP*h2_}riF-t_G&9Z$mJ|cF)iyyyh@q8~V2Yj7@#<9qvlwBglZ0Ez za%N-$$$p7r)8-oYBT1p`8sMQs40(Xbi$@>2gGSSg|)crk5OMbZN?vPc9R`GL7n@O+h+r%;elZA(R|L7R>8_n z)H6B2FA-@Fhr;C%*-T)YThilUJ~+fI;_zU2*t%M3{+PjsM;)jla{v^BUTe~kf?|KrO{I zYo5fg3jS_Nc>X3yHB?>Ike%DNd<1VD*U>WB3;)YH=iO@S`Okkt?cTqDf8x{My8l^s zSs)@mPDZopY+zTFli_$d`)F`Aj@cGkWP^g%`}|KFha55ib!YtjbcXodEWxK~tat5D z&-#v`)dOpTH|i=^^y&ZO4XgFQGD@V(|FHu63rP3}UMI*5A?&7A6F9OD5ARS?Z$n69 zr!=VT5|ktu{}-0|h?q(9GlaDvHUyTc-Fj&cC6d8X7-i0{PGD(6>7F9_{1@K)en;`O zG{p)$^x`>K;op4!(rMVrwQKsy8~PeN0FL#ww61OFTBf*|rfZo^i%bZKR!&-Nt{`rS58%1?zs9Ja&=49UO-;xFEZ>0cQFs)YC-jTIw;jC3t~U-sKfD&n(LSBM)2v+YajDEg#++_ z=N8ED-CV@Ig1s@4cx(Vg{*)5-ppC8++hD|PVu&EE3|Y4dPPfD#xKe7vKsP&gWr*}{ zDqfa)T6BGujT#mKRucaCu7_!@k%-^oJLhUQHyh(O31Xd<1JO zS~8!Kz!Pz>)JndyufIF+pBNhYn6)Xp*8VbcJgoC66gz#B=Kz7vM`<{e4Eh)q3pP7z z4Sl~T_>H0oYfEWzu)rn?s<@AI)=+_WX%suyus+1P z>qXnO12-J;tnp!#LvGm(H!oh>imAu~8G)oRtoz%PirOZhjy6g-BIJD{Nb>>unS=`b zL;N?kyg_s32#a^@1@7SxrgG1r$pETX)%x3I1#m_PgU&Rc;fDsSVI!JHlgam%UL4&1 zJH)qyI(w%BM|q2#jHD0)CgY%h|f#_PfXe<;YqE${Z9mjw!8_|i==yucpry> zAjNIzO``UL!(8q%B8P@1+5WT-{~L6yPL;q?vbbbu26qa{n(j%@*Nnfa^RD~X5(WHx zPTBe?7HTS62GAUE&hld*Pvo*fFmYCalTWNYK9B%WX-_U+HdgG);GSMq5ERwTT!^FI zp-TWwnTv}s0+GA^Y}*!d-$^SO%Hn6-6b5cEqiSo1yPZK7V@a?LcH}OLoyySbEz)QR zMxzD`P8Rs)#aI@S?A{Rh^$0nc(N+++A>a(R?VG5hi2}*Wd481++n7vRy*>Uni#}T@ zs9N;j8-wXKzl`uy~FY@)}rKg=sn?h5$_>-A$w_s|SwuL#0135e1L2zC<))L!LVpV{flnapWh782o@i>Ccfd3?|x6esNZd!C6Ckcs~FQVF9hxFNy4wfJ; z)FM+Tb!H~WGC^`6?kqn~m=uYk5NsJ{l`)@K(uHzXNj&&N!(_N)+vs)TJ@j>L7VEkU3b@*@ z){^Y*k7aOm!FYANi_Jmm8o_!f)nKdETwh>@ND#AsSykGVv^ptftA+2M1D^E}LP}#6G#ZADqGhx#j-4E~}=?#~7?_+%0M&#)4k%s#Rb0}ZLQPQeijmaYP4*J5Q?aL zq)8w+qz#kFTFptPtG*kGV>@y}`r1+s__=|h282kQ7}0i#f=pGGz(a^`QM^qi?&q`SkfwJVzW|G99(l7XmBfV0>jL zC0b>+I21n;H4RXVKgdGMQ8<6TIrE%gS#oXr$B3jK2fks1SvqXtZ<%j3Kid^5ON)W`3uE7tV}02sinyZglUZvLOzDh5*@19 zjmdf{<*vfgExx!j5hh1=r$E~FUu=2FM+c6yhlikZs}|o(e7N$bnUBbm2|@f)q2q1S zv@`e~22X{2;_;Ke0N7QF52uD$0vM`5AA{+nr=5qmGoyACT*pqZ)9viwzy1rLML!Xt zz4uZhYjH_r7j)t|u)j`Cebg4wqsWxtb4lEYIJF$n{f#MQc@(YW(OtdVZz9{ExH}M- zH{w`7uy6?O^Lx7~#FG20vrNZFrf`$$xGxs#)T1gB)u?(@!I}5SPw?w5ZNLa!u0+?K z(*ByiPjaZge`TI69p z-_SO&uVMmb(3zA;bS~B3bQAfz30yh90WCj*xdL?p?Kz^O>~ciqEFb{tKB&MlO|V#} zwvSC_k)2+k#~;MX0)kW-krUtoK8Z{jvyM5DoFh2;>B4!w7R;({2tiOtC4gmZT8Lye z&Pa#y7XXyw-`sagI^h)qRXmiV;VJD(q<0Yc!JiImB@UN9iL2P5)j<*fpR((A33Z~B zygO?k+Mu9J6AoDIaUp7hT*z4rNgZR`-||FGx9Rz)0jl<7$xs;O3nc5)pk;%^R;_?n zR~2SQO;c?X=Q-I~PA~mHQKMZ4y1Q#?u++2XK&C-PRse)J-60+T$d$$2?|3O_&Y^)4 zKt0o$nbV$ zuQ7e)zX0Rn^k%Pg@G|@A)TLTR7j%-jr@)%~5hf8aR^B20IdBy0a!a>pe{WPjDfts> z!t|0>P6Pn^sfF_0eiF^_fI?9`I3gXgBfVSksH}_V@}GdOnPcPiZ-BHbAy%`5)A|rp zO<&wnQgN~7dVX~` zP9gke*^hZ(H<;Ko;u7q3o>EWLAspxc$sZn1L=ciZI2C*4*^wv_P@8Uf&bK?yoeSg0 zm?Er=@*A}h(G8uz6dyD;USUj^L8J3QN_rLdk4W^VGG&k)EnH=BO}MFMe-`5`yi!%h zVyFlLwUk%{RtkAX9Y^cX9QEP`KsGCVpw!7HQB?Jb5U65g<-X2JjlLUOI_^Hw0B2DU z)L1#qc1z=epDomLT?>ON0i~S^BFX+F5PG3cGoI{aPCjl8PpcNyzo9kULK^3$-auJP zZ$Tne2Sz#clc9{p#9EF=G8*(R0GdZ(?2vBd!~#UA6+Tvj5g=@Akp;@dIa~xyky(G@n*2*Qh7@iEt2P!1I?j}8;BAbT+*I( zu>XRGOIu#CIF}=LnO_4}y)({-hvTl2VO0Iv3x z`4=$z#XjF2FI^zCB$$mq(0uYlyLIeiAe52B-s>$yoRDK|jE;qU{LNPdK_Bn>GSV>S z=iJTd7fkv0LS;j8sut4IW2t}DI_CQizhLS$EWP;ZHrhAQXmYjC3cFL!&CE9XnrvaX z2Har~Yf<`q9{L-EAH<6TrzTHTBKBfMSW4JZHRmnDs=n}AHJ&!cfMi6x82<->y=75c zBR>9wNM-OEQT8Va^yuFl$pa4h+%0lBWVO-t_m#ez8~6lx%cxh$y+@IQ4_o`BMc3=X zN%655_;g41TmF}O7|=X5-Gm*h8MFo-D#SUVJqJ5$hyKonMlH3?(O zXPwbMX-0I@d(&Gs9it%!lUPfN#%>Ze(WZ?Zt?Ukn%m-sU0W}NcgYP%&pk;1Xzvia1 z#p%)*$4O4InU}-!%#w(Mqh72i*F8q|M@f=Yl}fDR(&shB%AIFG@tEKxsEQ_}lrt?A zWAY3kvg~YkaDZfi|6-V%d#XSOrcLvaQ9vu9*%yiXAYLk}Ps(yb?%z;tLHdz|Q1r*5 za-XP@*}N;ZW{N%S_ELZ&zxK^gNQ;{!K9Jt)l-|OR?$_TrlC0pfg%nL4p!~|g|6J<7 zG{%&%Fli8tzdj^PEEpiJnvwU);p3vCvIvi&p+xg;ACWuz4io(g<0}!#a=pcA$g2Ct zh!89EV+Ns{Nn1Ut#KIPQviyqli1Zp#c7|NpRCe~6^e14@!6#g|yRH`4<%#{PbZL7&Lhu*_59)!-k&+)h={emRH8pBKr;8K!6q(cNQ|4 zpNyAT3#*+~SpahMAiT^X0x>P(P3b@({3)7IgR=1f{kCXoxOL5c0f#(9J~Tr;zj`=o zzaVsQArJN^Ruer`l0~@{r}v`zLebMn6~|?IDK>d_{$96sQ71z=%>2^=EApff1#{ly?g40n$)pB(W$RU<;42+) zi3Xc5GO%5ix_%x0jT+x1TVfzJ8VA%jFw?JkdL#yU}aO`q{jcoVlec{4sWj~87U$2pf5Yv~B25~-lVMw?9ju8z| z*T@bXfYt5MGoCWzg9x?Htch#A>XZj(1=Vy6i1|FTjJl*6p2ggZ6J=$&NdGHOfsBjf zDin$dKRi6Sx{EdVy{c>65~6ST9~{zs1db6I*It7P5N-vN@8M@6g6^wUK_$x~{#6;I zml3&!Fx}Kr1lG|#=%0~S6u*RPHL(vD*n6}(9CsJQ5v5*tT_%N;>DHTVQ0B&n`{~Nj zR^TfmyR5UqoaR>`tvU%SDGltl>v(c~C!nvLVGc5fv`ZElz^xciz} zZ|(eA29e`^w5GrOILJ2=57xpp9|%V0Y`+=?+iv}UqQ^8mC~XkS%?U-9;7S~&?KX(zAQtN*hFeiAMG+H z6en4P$*)nX>*mDhu`?1vygwo5OW4YZNs0{B8H>$U1U`)s9FIRl^q@EnPQ^EfCYu8u zVup{@vgHj>2nV+m^Kaub#D%G&LNJw+`dOvmA4Rop(%$kZnr?wO3_f+lqtbl-tArc- zRxCF;0y6~$RL3CT771{nSUw1C0vZAT5e6B~%3z~^cxeQgPD&f(=?xGP0v$)Vi#}VL z7J!utl%*z8-o$|#S^SQkMw?IO6=NX7=Ea||I#)l(+op! z%QAJ#bZu;dyYmQIyh$cA~^z3+d3?J?jq8J6MVsVsUpm8hPh8TToR2 z9WGf-Xg0`+Zl~MKNgO*Q7^m1-7L+rZR_5LC`(n6!cIE!sd@bd$(6=F>ln_3UV){9F zr=R(AXjYIN3w}%SXsZ0UQATFv$#xJs05f%g^(}9V!|d{~stG>eB1m&!d_j_wLMD!I zWzOW7q6Yu`Ov>xZYoPW+dk;N>bkzL* zzYa_-SP#(zk=%ijSYtmR%u|89N=zAN4xZY&X;>x0|2#k?Qa4BVV*a}k;>jr1rscu; zKibhMkx7}y@Iz-d{Z^;eE}4Y{MBEt77tsC!^p|QifyCNSAj`u7t9|x9EFrAXRh+wW zbRANibo$;T@j{OZz-Zd=lY*3l>HL>8H3cQ?gf>PPfu9*wKRr1Py?!gXHNh*DLqLJU z#4x>zh7cI)mq~HJ(eKN(6bL0Zpn)FC1zr;jDYjyv`e@IADtF%0T&$iKk>|UY>#rgy zWptmv$;-&?9t=G{=RNRee5@60lJRMD#7=1Ai9HB{q(KgtrdlNgg6}m%438&ub!tFj zc5!cLNkW^q&t}%N0|#2P+#0>!?uA$#MNpfPF2*VSGy2?do_gyxMN{83gwyXY!qO;t zPL3lfvTeo+*S9FdPM`!@V>BU`Y&(P_g=EHwSoq$XqW_@ zZn>;m8VxknAkmmaq;i-oa_k(@%zC$Ejq*ysyfwhL(08N|Z%3b({s%FioZ=dD| zXImk$7xJvKc_|Dbr}o3ZDMB>xTvO^yWWi1izGAl_+Jfj@sjIbYJF9YEWZFOnGT8+D zeD6Py7RU^vkww5o3%O=zp<#8=+bjYM%%&e@Bu)$ASvj*33keO1sgt;+Gw>x#@tf1o zIQH8@1JaMW_tR*nhUD>Rq7M~l&y8(;!m-4Cv>9RH0O{yU@|)chSGibEGjQ)_A)ieH zf7bT=tbhM(b=TVf2q1!hz3^QY^>k(iC!%^Tc*q9hsObUT~aqVEl4HmD;FEj|~H zgZl4!LJ1p2Pzy=Y5OA> z51U$_<`-KrqRiRP(dQ#bl0|lu4JM31&T+qa?XbhR*$!-!RI!!gI`c@!!zC=o?xx*a z#8)KnfsKK-I4DGru43{x(9>NNv*R6o(LaC*miIAG z44r8b+)u&#e1sVHCmt^l+_eH6vb_7Ds|R<#bhIgCKXL`RRV>$hV-J)p1gwnac;u>t z;|Vn+oK!{^qMNp={ss0@ZN+iklf6}u7zFg#woMWduuT!p6qKqMeKw! zeht-DMc&Rf_gP?I6hsa08V=#S^oh9D33x&`x#r9)gEF!^9HVZB`N+Y|_KA&7A2Tg5 z1u!LHw}_7w$M~Ec{DE5fRzrCcU+Ye-Mo^01VZrR742O2qpY0>EJup&6J;a-HX|P>FpM0eFP$vg{AKmFcqw#a$@1OuD zadopQCWc83$VQj_3vk=tzSYO#zgF~u>en|c#_K#VD;~KX0Jt9BPff#vk+YP>5Q4Wc zHng1>#Q#8jFaisP_^?#p#3cM2p1`YW8Quc|>)X%Iw1A1Xqp#Rr=#_SB~c1#4GCkk48h*=FXGXep1URDGTb z?T4i%3@VStHq2~@$+AAqIb)iy++sE2ZmrE{(%sEBJCcgqT^1^1wkfFp023&52{4vNA*)pi{=)9<%vR^$nJ z%2oCM#jX6j>8hXEZ4ShIDq3JWrM4_m-3mVW+T13CfUlh8P?rx!QW^3a8r=)q&VA9G z$KMAPaS^aVy&QecLiSfJR4`)_hb<}$STwW){l(cTWoXcB$2EjvYcjE#c)VNP-K4_G z0Ga)6@AppjYG!5VSM236+`$YWhs5S>jV?1}NH2 zpe^v>EC9v?{!B+A$U3N~xj4}u)p4hwbb*1alhS~rUw{nHfWbsmZ)chWh4{CDYRKn> zgRL?{JXEP24GkSwPmZ4Di-EOc$c0E7|38iYBh{cc!8bSy@B_0Ij~kk z6!Gc}A(`p;7s?Xui$K2Og0KA|>_6oe(#5bMsluzdWkYj}^^e}GrOYLsJFxJPK{JdB zERLMm(8QPIGUa6n_!9rh#t`sD%*}wE4J|`*9BY+(BZnstm8gu!td8bVuf<&tKp^Sn zzFqK3YsY9Cgf>v?N@M~*-qTtiwXT$z-73MQLldH7_j3!M9ckY`5i|BG#wn6ym?^%% zQ&o{ro!(AJgxQB_7RgPVU=ZMu+J1CK?UF;wG6N(T+NB;=F3c4|>)}GGF zPLHB=sSY%Z?5Y&)Cy_VU4{E7>Uxnimz|VCa!%{COLL8CeaY4+gRt9UglyEdvl?wwh z8(R}0!&fmnjkjd5)c&~WGh?7_f_z*%eJ4vv^Js|9YyQj9DIf6fOE?yBRNc~KlaYFulgiv{jg9R$-REKpWS_#@Q}y8Es(tcwBCXPMQ8;ysUKJgR-s z3$ll5Aqj1escZfMxX3kqHI(un58nk`j&Y+&Q3)c5!cIlNjnz%<^e@3oG4%ny9v7S4 z`Z7+jOE~X%pkZbx8lXX+4&ja zs*KQJwp4*v7CM-r)@Vd*d{Y%zA}rJ*ccYVL+?Tj>%lS_#9Zis6zEDYAq^BX|&m4h# z5LJCB>IZoIW&3!9Q`YV2V>tG3XOr=LSv~93m8{D87z-t?lx?(*=THJy&@y&G$X9|Vh68^`hj9M({f5vqus-=0jWeduU10gtsf&{(<& z9R$cb?;Pk^94<ap=)tWRVqy8b=Z-4h2i5RSoRZHFwIaT%|KGO ziAWP}<_oL0>eWMi@gFq3wp)6tV{>S6i%9~fot(SoO232*lFT1v=F4XJqRp!*aP^ag zLC(XA?8LdKJ?KIKoVDO1P34eQzUSN^lc{*r;gBuEJV>*uSSF;pHJ}J+MR_bwloZa0 z_dA>6(dOW=%q6%^FJ3jZUgDIhk4$5aH<0~Qj z#q1y=YfzdqSsNRf(?gMNqtHZ^jtxa>Ib~d7kQnpGleml>Ba)6T=}3jXvx5*gmJI<# z*azlemug$+)b-KY!egk`m9h9?i6v68xWa}03>u^C2;C5#B3$L?*b{B584E``j9^ew zS*>y7_z#*YGV?cdOe2~97jthJ6j#u7jShpmyZc~+yAAFH4Nh=(2ofZNySqEV-61fz z1a}MW5;TMmLO$O2yYEx?{<&4({dKEORiD${|N8Xqy;rZjHY*e3PJ#_8MINO%U^q!Q z+JkPt@f_*HaN(*;7!Y$$Zc;=40ysT_V`-4=x=i}Ir=&tdtF13@|`=m=jbr$`uvV+MegIDJBn_xG#hH9FT2%d<9$ zGqdt}Dy4&+`J~5$^QiVvVKMq1c=byIn?Rs~fOo2ynDw=(0rrcszCF?TO{f%Yk2T=F zkPWfB=~@K0q7ISWCO4`8td~m7!8g`q9>$n1D4PUTv!p9523pj(BA5dg28!yWi-8p& z{!&lRjBe#(L4yQ)?bPj*f+Zg!GP*;Dg=(P{A^fTd=>nTlmVSVdIhLrRNx zMZ`B}lmP8#?e3~@aY7Bx#u2KAk$N&W=?{8ytEqn!OrQMSixB7z6RIv2DyfdZV-!La zwhVubXk6YM7b^M7xjQ>zVmI~V+pqmln-}TaYZbpTCO`OQNkRuVM-?)k4-7dkfuCBR z8?=rNC-w)L78+13RUymg(>ylL(-q@VCOzXTg7Pk7sD4ek$zUKdvM#l!84sI>g>7*k zb(X9dTDjq{UyZIPoxx6}axlS|@Dc6fo0z4XfN#NU0I>_Y6Y@QJcvY5p1eHAYvPd=T zsnn47w2cpbe1F7|*MXmt$5ccU_Zfwq9Ina5wwYdG{#HQY6-kB}(Iaa$?!8eKd;S6& z^clwya@WVGDrr%3X=BzWs6I{JB2)Z$($~rp#&}xHTp{PPhdMCU{9~xeh?Jkgdy zgMIGd%t$H25yYbvk-$6Y zl)wdg4)4P~?uL(Ni?GJg{L$PDlvg$`RtUcmioN|1Z$XX*D7~_x_0D=H9ai5fPwb%0 zM1A`6z{?s%DZAp8gu`6%3eEB-7|UTb;iFf1mR(<8$+37SVjWpz zo*Ba8usBRb4jdZ;bZgbX@;%q2uUmiOhL2?1GJB?(YDsWEjT+xd$+!i=nW?K9Y9@0e zEoOv}TQWp1dFogtVT9iKRgehxZ84G@zb?{<{Bl@D5keJjWU9$`fsIYP|NBm^iHG0| zwpjv&a5}c}XIuNju%Ld~OzdYb3X305Tg%pUa!zh2A({HTtWhf_55Cuh1`H$ z(5Lywpt!kEa&aj%dV8kNoWXeECbpVUnv+qtrt$p2E=)R}C|`+hIKYU;HSxmloi;Gu z(&PEYa6+ru=?Ga4l4)o8m;_0}8YqEbw#kJ9m?W2=fV`!>aOoxsA9L1rw5%T&b^UU_ z++nbyr%pb_x-u11(#*YQz%^v{&y)n7i3hb23$N*hfan& z5MwCu^F#(}_@2EyyTE%Sm<*=pgtJLSfcFnzjKc@tXwOMR^vkbenQGy2l%VvFE}9q8 z`Y&~HE^6xlqAPejTIl8K1c8NzqQ+Z|B%%Fx3Zd|RW53~vgO<0*?943eI0o*Hcv$90 zrOQ?0J5l{WAmPpMGzR}-{$jpydwrISigE5POfvAe?9z}Y-jsz_DjLD}DR|R3QQ73w zg|p=}kwc46oyaRip5l-sUB|W4#4K-Ago=8f7~CHosC^tmk$nq7NI&t1!|lDg50aff ztA#F-IcT1a;fc25c?wdhzGsZ{f72HdLJDcJip2Z<_^bbH#C)N8IN4^Te zFo#NFfX-X|JWMYUcGl+Mdg1}$D^YkK#WVB6khT;KA=F8VTw8wDKN|bPp`NKfM2-8m zI3gp`qV{^<6H5q;@9~7uJ`X7?4Ue|Q_Aa5m8%UUm%qb5+nTbkSicMzC@7?z z&3H)?#9)Oc0&)X8TbuILdPce@faot7OYg{IWpou=Rh9&j%9EAZ5fjLZdSn0*MU+4L zgKARav>)@rRXxj#%`@u3(6cZj7S{q{gtwaLF%=RC)i9_ydi(Me!i z6c1fmSEdMK(t=Ef)SIft*8lNWP|eB5UD^J#O*}X~5NL)O$hd@^F;{|A&c`%^rL}M# zHrimBLR>H9h!>|ZOysIM5U|qeRHtP{IVO7xiSFv{NKhBw%EJfc$4*KhS3}`Kklu>N z@2}eZusR~pw0tsYKx=ZgNYVGm(wTGjbO?a|PP@V%%wE~LFN*n%74wUTFIns-i02HN z6K|@!qH|BIYc`>qt;p7af61}c%`2B{)w6g zMiIRbs~=iQwjmv+3Un4clWbg}Y8Z6vsOo{rC!q8`B=7VdTWpk{%EM>RlL)PuSu_}d zJ#3$YO=j1BCKS$@wbpmUvU0IcW@$J!gJ$T!g#H= zZ}H5Fap+IG+#A9;!p(R8BDTHo97Y!G!-gU!=68NUzuM)ptL%$q`A)Gn_p>E=Pg!S* zcYo?+2j=gDLTG4lL5Xx?3E*?+=HT3+Eo66ECOvl_mo87A8dWFfYSCDkak&DwkhPOE zAH^AE{m+oh`&Hud*?|uy)b2cH6ZlLhyL@SQ403wC?%o+w}7VOOCvWmt-;O7H~aw@*=zvX+2*6838EB-14M+F-9 z1#fNP_O51`%Ta}*E|al;Z;1u0MCDdy6+2-4$(Dxfb7@pY?1$49wReD4xD9^9esmh_ zyCPhWDJ6tRuIzLq=<&{G2FdY6Oz7+$@9x11`-|0bNqIijL1j`$a`@z*LApwT;y%0kyd(FM$y^`R0 z6Q%uNi{>tUksHtb?n#8{BWIppUEYA4ZPNqx=5OrH=Pr|U6;Ybk6hSJzI)drRh$8r^ zi(A$i2G$vJRUE^Q)iBf7f?H7j@T3Q>eSUbE_b<}_8cd4E6|Eb9dqb!DISMmozu6wO z+^zq1dT9?blKlU3$3MUpl_-YqmwJCexlPW?2M*cLdH7GL3}j*b2F($neizj96Mm`G zqDVx;QjDm`hYLr{cj>kEFV+CUZ%EDR8@T+jRo3b?g)+q$F_g0}M>cbpPAN{7X%GOQ zntgQx9KnFW+%VT21B@^?XI=eG@3E|{8`!2O8AL(LKPu3;4Rd3oS(ya`2aWi-3yCvk zd9dgHu{PAqxxOfku|53F7!U2(haQ~%i@gG$S^EY@^!~N!#3leNr z+%z!nmbCXDRSVizw!iWXI}ZV2vcg0Zq^d|?KabNQOq4s7nF_dJ-4zyb>vjzWiEWtf zPf$A2!8qt)_GE(|$+bMn!59~c0tXuUxrQC#-==#xIIQiNdx^S5E!)&s;y(teM;iXT zR7&7O!A85$qk&|($^6VS&}K+t-=QuW_<*5E(T9;QPV*EqFe1DFMEUV)ClQGo-y{z6 zkP3mVg=WA`k9kD1=B5QRH5iPVvSueNd-Y(b8g#QL zTA|xtSCc%QhuWVwU zN4$64@=;J{HjmXrDwFE}Nn_Rn+49gN0zKW|7&WN_kUmYBwh-5jTyX!tzQ~eXD?)$a z<1)(Lm4CSV2T-_w^>qtOtoIHg3y7skXf^#o&o*d9(OOMMpBWQngv--eA>BU=Y;f!) zz1B`|6FNzL9F7r@XAV1jeUhOrydMg^4D@WdSv)kD{fWevV7R}p@RWiRI4N~vp+y&5 zqAsB`C!E0SRbx?f_e0B@TS#0N`grhX4 zK$4e#fC36?%ZvQNh(gu@r0ep=dKm6eA}8IvPMz_9sj~2>HnE~_)ym& z=qn1dC9p!y2x5gB$icuV!;K6dRF4b+3{528?x2dln{;&fHFLoQQT?s6#!XO+E9-}^ z_?&o`-pDYlxQ+QP@8;(@9r@hE=?e;4Z6h{4(#zdOVMKxtve__>Mrkr%;`-|^+r2OI zD+t`b{{h5=B*w~iyqE>? zX$9vJPD2vm22BlmqocH$+}IEMQQx~un&Hk%g-&!t0M~P8W9_KI-i;V7$o1~As#Q@? z-9{~a8%@V?r8WFvgFK#V(n|sl0a}LzC=e&Q&=)?sd;0TT-b5<>7EQ|?V?7F$4S+vu zgE7#RVigjJrPii6k0Qzh^!I?&Ws7}!tG>PoQ-}E zze-S|le!bigCGr7$7$Z5<^-ueG^I$%+gHHVE{jRfp}Sdm5E&on9^i$CeV>Z44jf37 zaup0zNYEMcVa_ihO(SJ;PFoBsDSkQ)Z!P!Thul&OI;;^FMFM_Y$M8vwjY9GEJTDeY zK|P^gxNOLVnN`dLN44;)l)peLp>!T4^lub(1hfKv!(U{89yM?y!b%w`?K=_+H`jIT z*Uw+qpX~2yU97UkGmp{7S^jf_>B zp?aE)or6T#V^O3or~M#Pjrb}*m)b_`L~izW8;o;Lsgp-`QCSu9Oe2W|kD(J$=UboY zA~Z8!P8TK;Wi^9FfK%AT)O_F5{u2}l(>n0IG#_Dsb)_XCVije`nJUDNWFN5bd4zsd z?CB>N%mHy_2;&^);Qzd5SeJ;~l$Hk_B%P%C4@&l_4+5zY2*3LyrfZH={@6oh*7S>( z%fpk(kH9*@(cf#yceKZ}=4Q6>FhC9o!4wGvcbXvK*bAsQ78aOO)bOQwDA ztggaXW&2_K@`dkN1QsDFc@l}d_M5)H5c}z)6J#B_CKX8`OTdSkm=!yW+-1cm1oH|* z3)cwsB0cy{g0lpdMQE3itN~{-=`M}tKB$JmDO2HB8@1Suw9YQ<)Qu^XBw|^V-?)b% z+fk~Jn{%D_rUr-QvUKkx~t$Y_t%BWkMeE!s?ispxmggJ$dP7%>nSdyn< zi3yxyL~s$caraN)yL<5SPWJpFNU<)A>~@3o+{=ENV%1H&Tc=?nt$nhEI%w z8Q<9UbFg7uCHTVTYC3zuFIL@Z7Rx>{hB(Tmf`e6o(6G9S&~n?u>+aLyaToZ?qXeMY;sKd(xp7CIf|yTASspSnNQo7?Y0&%L={?4b4> z^;@j&i=^N82{ycHtwqH(Ml*ZRq)S8Vg=*>udoY&BSEf!J%ojfO?;iaj35IBuI6|b% z1#AVsqXiQ@e?QE`AKBO zScQFoWvoOsAD~!%p!nwIVeMhYHak2t1}7K5ccpn^1m#T!9=c#2aep9@xd-o zy4=*QThCSXih-TMiox#xwkc`e=<`&Xs9s>4{dCxGYl;jcA5|^C%`R(rTL%OrvpTwX z)W9BUFLU&Tr?w;v((OHmxdG&>3Cx9(1_J0?ngW#07H-G>p& zq~D4x&)?VVs1y1X5`4UJPsM4m%5ua~EjT=qG;f*iY5wR~d2;)g>2j@7&Q;e(1z*oM*lD zK6@wi9a~RyeE6r&lR6k_uhdQIZ|8lo`H^oNtCKXLsyP=F7q^6t_9zi>+z^wDz81>E zGiqQ{)!L_e@L}hFHe71Xog=uVwR->PFVAC)%B2Xer&04etnUjo_U_V9#2#MwNe0sP z3ffl9S{g0~M<7R8^W23C2B2#fsN3gXh#bcu1i$2G&Zd65zpmbb13E;QG3juANWD_$ zF(nDs*r3NhDvm+ZFC|#OWPX|PTt4WqUg*s+o2ChYmXS!Id4C!xz}JT}1Ckp@lGLa* zG48RomjBtW?p=f?L7f=oWujc}2&BF9_6(pBoXCr`KC)_AMJqWQg`+NZ zhbAFb7x$9to`!l2-r0Qbr18>%F=bGhcyx}0@F{D~1T4AcThE&TgysuQQKLpW84po@ zjf+_T#ai5nuu5g#`GE);ow*S|91G@gbJ2m{A-a;G=>)q9@#%K^aQoveLyWBS)W;7* z>t}uWr<(5Shn{Kg=ur2CbyDRXQdM$Fj3)2KDo*$%m%v{myl_o0-KKl9 z2aX)`^SOR?CK~+DO!ErmD)T&YiFHNr?Gm4_)=j%b~p1VZ*_%Lq&rb$zZOs2Ava#Wt_m|_ zO7zMl1*}tNbU=pC6!Xu02Rt?pN(xkVl1QT|8KjBJ@nKaM&zzedemi0I9m%c{hW-tr zbO%frq39~OeQ)B_*Jg36uw`{WEHe7^Dm4rRWH!DT%32N^Yw3Jc4nAl3rZIjT_bqzf zpjv_4IHE|sh*J9_m5pp{oX$iML02`26d`35lHcfrXla9R)3uv39qA*(EilDGvKG6R zd~YEn@#gU@gs2fdxU<#!l4wv7*pl$^0q{RA1O}#ST#Z20V(nzhL1Ftz3_ee)Qz8-{EdXt<(!%ki$tt#vm(|DRx>SXG~5@sp4+Q@Ee z)n-Q-c<$_ZAw-TPNGGvAr@GzWZ8zpz2gA#Z80qrZ$a+hgWSXlzTqe7VLxh`?SN>1t zJh^Pw?>{yIv&dxKDtubyn8`+xENFx4r#-#B{bPKlnT2ic$@rslLjVdZ;^&4^B%R0{fpHw}9#}VD-yK#+Jbdyv{ zVA(4*T=E25fX~=(q0eNaC_ORTQBA4pxHRCw(<8yzU;_UQa0Bz#z@4bOXiLU?l zzybW_xmatcR0e#+)@;e+9kTdLai+C6>FGq4r#KO!OO}(!e@;jl7W-{0>3@#n&_IHL z2q^z2jn3YBBO3Hg+mj7QqK~qb+XF#-i+RMW6-mKk7X;f>s&qw~X)O-Ow$D+t;V}v& zAfOP9qi3P-z+{!f*XQUvF_a-{qp`5JVjsMWm7BYuC^4sM$>f ziBD%5QsvE5{n72t!3Y7VI=0w3pn2rmJfLZDhbfBXM)2FV29~egc2bmuJ#k!n>kCXq zUhzk&AW2T1;N6Fov4%3T6t@@JN1c?K;D}CvoFz`JP`Tqgt`3xG0!nmYTIj4L4cLa0! zT+Tn|{5;ZERB;KfeupWj=U{ApsH|uwk6td51A-{QPby|d%y?S$DA(epjArbgRP}G1 zrg8W?Rto`daKV`>UK=JJ{58v zcv!4c=Tu|kdznLZqA*JcH`Ju$({|tFW1b0Q@-bphy_h7PS%qzt{nHRQRL(6FLa&_ePVGoA3 ze6#4hDkx?~8td=&lSsRS+Z9u_ts)PUBUz}=oPemZrIqnb-QyUJLj#u4`F@aX-ld4b z{TX=y3ulD1Y*LM}IJ$XH*qO6K1)Lak9`2tDxeonKggb#zkS1io!FHR!ort6_>;$1NX9 zh?Rgl0|BP7tFdS5xHOrq-i$;jT-o>z5_6gZ{2G|?P%_I|yq5xt94tYKVPz&W+8a8$ z_;pM>mFqB-l?X4x4F6;%>|H`SYcv?S{Q_9|i{BlEZ@S`o9Gfj_yn7$(3G zC)&V=B^TSIT%17Gvi)N7SRKn9;vcn|zzY$XnWyIS2VH1*N|&kc(u++H%<}}Hr*%e| zC}n+QL#dS@Q5eTZcBv^P8uctmzPe{%w2wSPMGPgOZC0!5u4#6ybzewsKst<&q5Kwu zA7t(qEX2{3X-x<*DT_m>@wT^^lg?~W8|JT8nrNh;3%?;0?M3eXJ?WNj@j*0jWPi2O zI&Et$JK2mL^Rz)ie58?QU%@qg<`vBStf|8k=g@?5x40+Sfw!O-jr-X+ zO7|mO)zb5Bf-2b0YO2hqhb~e~z1Oq5M$|8QKxmA@u#^3#d4%1pW}KQCX`&EEng3ku zcB~)(N5g*peU^<>n;#j8F-xz32_q5+{@lbrhq@K+Svt)e?WJVK_YK7kEp)nhxcQwo z+b(|50+sxZx zc{rTO;xw_W!jN<8+ksx`|YmS7nic%5ew&UDSn`DKr`vY(FeN*1$ z>=3GiVC0kWF*-zt7#SC^S!s~TA23kd<4d1m++!3F8HG}t9k4Mjdg7v>t|dg-=eHMd z)1k$N&%`+vB@{VtYNr$9dEt>;P;h)3K?a3h*mE&WrQFu1@s)mI?R_dvTyY1w6Yf9F z&a4Sr%Qy+uQ5MlR!m)~pDMMyEXhDj?b62IMZUQSNd$=th8qgtT%4WacqkH@f4WY7` z#>Xsk<>0z?(><+Ox-EqdUWZ5oJKzi$G_jSXBjDSJts#|@Lg6pWN%BlM!gGqk^Zf7- z%`;4d?uMURlZv#q^abLO;FM~Ye}xdEGyNhnM{_l6=eDTwpGc4Yd+6|nV+Gx}kPi)0 z2<1sMpwL)`@+@Y2XWjZWi%>Jz1=9=UL7<#svERpDib+e`xT>CC6E*$^z;rm?;S{jN zNEo0RF}!y9TRe?ly(=OdqZFU_eTlcotS!PXj_}EveRVb#v5l3GjavYWL{am7Q90MH zVufz$HuA0fxqk@cjtqrF?s#&Jpb``J`4GTRi*b;E?kV67U1ZTNh!#r5kwmt|f4{*A z(RB6&PU*7Qu1sa?mf}x~^Q4-UEI0O&dW&81OxfvtYUI%N7AL8*=tDz_N_IfNp~4DH zWcGHhL6WIGN9}fJmp7*qWVbPFb|G~hl9};EThU`?@5B5@O!(~6_Nv;XH zs43K6>6oJyCyu#bt&Ub76NO~4aW>uym~kGo(^8N-9}7&O^1jSurQ1ggu4#`^{4~jf zcWhCUiw0g+nwvljGCwZGvH#kiUQifyS42{?qY|s2dhGH9%hFgHu{CE>_7T%fVr^B1 zd^yr*X?d4wpsxK(Pw?nv_2up82;R*@e*h}Fn~0hD4z@%axO4F;n-Ll#sAY|390)H% zRVt!$%9kwiJJopT5Mydc!%aHb$=n zFdnJ;Dar6I20bMJe$xU3!rMyr`Wv|%jMQJN>% z$O+}7Dm-;)*3j{fMtq2^HLuLJ^0D`!+0GOh@>=!Dfm2`KT|iUM?m`Ze=^MM_)BOin zp1l2VpMyu!Ab8jum4FzH-^w77$qt`JZUB=G>69a}_swvyxe9To%cJ!eSj#gw8~um_ zOZEk?Dxf*m3AAkfF>j$nIP7767Q~N}_y9M0zFCOQqvRyEg+T0~#gFqEVILe!!OW!x z|7EOpp23eb`e!9s;c!0JLS_?wy^9~=C1zpm(}hMaVivF8QIj=I2sTYlN7*Mz8mBS4 zzm#S&$V(MMWLiB57{){OR5V>sMhd3vNIpUPIirah{SNi!Xb3PTD?kl#Em}d%26q0* zSA`C)o@*JeNK4(OY!WpGN}%=`^EO0Y4K$?zijxJSa(PdUcAXh}f79mbGC6Lhr{?6k zL~M-T)=1xXPq|AWi_F`J%dRV_sm7#bHAVtn1GneqjCrj|!`35u%yGd&3`mzH^h_m5 zZcKUl(G))=;S5k?f=fZL!0Mb@u_y(F{KY2#X7|2_0t#dYMb#IgD3iVB#jO9RPd z8(6A8WA*Zf!BBOI$`w3)T<}~QOG`cL8nV~Tr(qg1r9D|?2h7DpOR9*{XTZ8(8~{Hd zpHoV7WKTB0W2{56z~7$PPn%0{&faZpj+J+BCrYtv9Mxnb60Ty+4z8|qa{>zyO+<-M zzr?s_g!dwxDcGYAS0dTJuG395`d-%<$C_f#>VSm*!B5y8C0D+Gx@Ore;gttDXPn%q zN-7luRenHx#q!Qs+ZOxX?cuy&lpGY=g}w;y_K2zzqJ@o1<3$Rmrwc-Iw-ybE>*2LM zzqX{%=cJIAfF}3Z+aV2dXc{$Dg`2op&U*~F2Av(Usk;;d$!hIpC(`LvU6Hj^JOqr1 z#>eKfP_|fwxsD6WqZN6IY#flP??bgrvxZp3?MZyHiPZF2w=WgjT{0Cl;N+vkpTib? zc#ESzsRP~UzHB!_J9ZVjh|4F>(kL_`|9Kd+QQ(=n0KPC<05$;f_!^yPBtmBi@uM(P zH#b1{kF=_wb0FxJ8M9k$1@nEKK9?y02I=p5oNM4`0pgo5SQjTnq{0*d7$aW9-IWr6 z<7GY*q4+A3s?n5f*Dk?!q2IrLqEo?Q#U_}41pG?;Kbk%dZLslNh|1u zr&2k=zrAOI-X#fB+59et*|dn{2QuMR=$f8Bf;s)_jeYHs0eZiuD2_X@wyY>lHz6+- zzsRuczSivwR?Q9qBoI(;b!EJx!__ds7sEu@b9Sxm0*C|AKiML&N%y(FLzGa1V^32v z7VJXnxv-<@s;Oy6=>-e#D~3cs4rpjzkpIA)yLF#h9d{&N4FZj zyY4M9K8!bN(r~NboV0}}BNM;Zna38wJ2E}*JKy*urLGK`K#j&l9(X}>J3+o19+0~n zs~;!Zr2WYOt3bYlqkoNZCWWrq^kf1R;lEh6-H7}ZB7u})$3TJpv%z}aOD0VtA{9J> zSfX?E(xvc(xbg4Mp^SS@Ifu%jt_H5iD0k2OQJ@vStV+vDNqe|~V7i!H5sIpx9Tf7k!+zJp?_sytL+3Z$d+aZX4>c-^QQW4A;6pLuVrINHm z(oCsW0gf9dW1QsJ(H4%rNm20aB~A^zK-6loh)dlqO!<@#Y2#|D#pV%s7v-_x3q!dh zKArD6n^%9|(n(Cwqv_0rQtSI>{>EZIy34%fm$Dw$VQ&0T+%oajE+(+iD$ch^VGo?x z&=gu%*0_wKr;(rG5JP@T?mVo$BuyF%!TTzD3lhnRLec!nCxq-p*kv=YwaeIWdkfS< zFvBCMbNm&lJdiQ;igO>G%@x2n<;EU|p{|BkWno|<+G_&)(Q1`oXFCYJonB`b=cue8AzSEss=bMl+kui|6?+@@N*F|gvz^$%o>_{mQy~?@8`3>dndT3tPl6U`( z_RCN6FwOATHJY*~FaVK`j^Km7mmq^a z`(ah_BM}Pda#o`7E^Oqwy@@TMfIR}F=ATukJ(J~_F+)u(4XrQE9GzS8ur%-tKgpe) zAd+WCqlsoY(B6F#HATJ?Efm^G%=I{?$IZY(Y_M+uf3KmU${ zie^CEB|9O3bPG?omnJE*MleYZt^6~qX1?1rvCBotqU?^*kgB=}0w(}%a;+}@0cKXt z4!&ayF2k&bxn81*8_R{HFKQ*|+V(w|RIG<-VoM`kC;tIb;mm&g9Qy2$dl|~*;{Er8vm1i&a%DsBbc9s=w+M6 ztQ5z%a#vI5mzqjBtrWK#>k$%unFmR&NYgO~IcC5alE^q1`&<6lSrfTI#6LiIyg1^A zO&fKy}OlzU;goGo?+R)#nYPT;Vn%>dRrY1i69xKMyQ*%1o# z)fPvnsQA1A4q-6;L%Xyehs(%OI-xO_D%k}9n~dfNZSd2A48Ht_9LKI~pv2{vC{)bm zN=3{#RY}0*sa2IH2{oQr*#3=KrW!=Baq^d8u11MzUcB6V30-xF?c2=|U=~63j;H_r zxWrpOE4!UH+8rl%{=vtdUmN*pk$e1brf=eO~)b=}Ul$W8&35=^~=qxGj$U z%@Ga^r+Tp1+DCzKI()@Y>yR8h`h4qMt;VllSuMr34}}2fG%4vsWM{PP>O{(KxK!|n z>3`2f;sSq&({1tkc?bowQP#LB?cD{~56j^4*{7){pOz4MI$-c1(TC7$ZUdL?SqYMt zz0H7=+!{dSW%Q(xwaNmP-@Z(6bEAJr;;6$rG_ufgrW|$~A;$O&@IQpISV3WqdF+<6 ze0?R(k0Y=~pCjBs;@T^_W04Z2iZM}dtrLQ-0Zdir)^Wd6Ogof)4oF>K9WouE%%PQ+ zpR1cIG66GFZwxOK3_MSTV-zSnP$1)o+Vp%4#VyQ$1sL*7&TOSWd&)XAsp!Pc+1EN; z0QrPXjZoC!{YFN=En~a8Y9oIbv`$4-L=DPd#i5-HDPnj449e{17Bka91WwQ`XG)A{ z9O*v|brsdqBPK*&VX)~stm(g+1ekRLI*^mp!*ZrcTjFo87Z?Qd-jCk7g(&e^x;F$+ zQV)h*2GU*RMS6ItbTiSm1}xAghnh7;F#E=6E5`>)ob&YKZj%crXuk@lPuE6y~}p|Y>X>IT`Pn`SHwYrhcozmZ$T zyd0!SKmgP5tHQqMH7Tq+c%< zvu@9Gqm0hL@N?(zatB4T(_4n=bf~hFeJ5B(@{(qIJG^6u8|Ckgx9WB;c*OB|i5ptk~JoGD7ga;2$7* zh%oIZs(mYpYY68Z;>&D?8*;4@s-4BRW>Z$Jd z^J}<W*#kWO8Ga_V}ED#Zd^5DqgOlcerkP6hH|L zLA(;lGhw};;KONE=S;Br%loQF6NV2-xdJhzxMGd}dx$zv{#-E8fL_*p0;cul^r8cYEJZ z-haMzLFBqmr3d(KSyNDAX?P@bd|(a`NIB(BJ&t@3KF8WPr=Qu*#46i#GK_R82$C-_ zi!OG9qQQg;n8G>gAzJuKpYzddu}R`Lk;o(4_6dd2N2!xd$;|dlR>CyhmD$`h`@6V+ z%*&GFv;P2Yg;xy`9Ba2v|)c1x_-E zyKtFA=}SW-{+0O?>?Gt+#gzVgN)f;Gh*JMbw{oESu5PBXf}D&hx8N~)@~#33+})gb zNvWxG5X2@or5T!OA4;;-Y#ySpQMRlqa8)naN?+^Hq~wl;Z3gv7sHI{f_pDkE}SLsg_;qo%E`1cIlH z%tHijOxq3YLt9Rc8@gE$w^(~}wUh6h;pDPd)jO&<-xqc81q< z=)v8wOZaA2{8eylM8_-?@y$naT2vZY3w+2%z}1-ywzTUQZAnkHWf+sqmG!Vv6@y#M zeCL^r+EM|Ed0a^I8>;9n{=}Z^*3`RLY*`%DDI1@DfQuzhm=w`Cv>?=(KuYOQOiQV_ zuSmScVO@s4aUFh-+vhB8z9%Px$)VB?y*n#9JeTD-G=yX#lDl;T`Is+(<#= z`0zFq9vTynz(uGw>&! zL~Qf!Gbc{}Q={mcTFDMl{tzmbmvBuihBgyi7=qD&Sw@JQM48Ki1;ODTixqo7dDf~p zmTfTBjG-ylM?Oj5q#D0sfKPr0yHvvxRKSnQacVvR}_QGf*yh{1e`d;Pj92`yd)Kf7azcLj#&m^h=WiF z9Cdy_LT+ZiX@*f-H!nqban(^#xL=ASDJ>t#TusjKw>7{+g`%SwHrXuInZIB&iMF=M zO4a_V<2b=mhhTBo8a@8C7&Unz&B!Z-r6bl-^%$*6fk(`|G|5<^44AT9_p3VkE3>7m zZ7nK4&FCW3NH8I1f1joN#P0U1>HENi!B)P+*?H3Qc~wMz$$7hR{LWU}y>oSasI=>g z*YZ2|V^7+0<_snZ>x{~?Op)V}9#pm%dcvP(Z?Ani!G#wrhTjYTQKGoU$E@Kri$oAwM=f6U_b)(4e8NBe19Y1R z3YK(fzLGj8RzTFXS^P(IBL~ZDfOf?FSBd$9u@L^|*X1bTV(PlzJ1aW3bD9xa*1Gb= z@~6TpI1{V5axQf*xI>Y2Y(h-ol~!`?A5JEJRLTH!u@tD2;33&F{5-m41iQky87W*% zSspx2M1?9nt@td#suY|CrRS{;t{-!YDh5FP@MUfAuK< zvCN8?sabP6T_8I_PsPD~J{eAFogoj!oR~T(ncFEYD%EFW-etFxf@|OnpphrV*C>g# zzN#6{f<(r1uCNp0Ok$H=rox0@9UO?mh6Np=>X{Qwuq zZ=PZiX7?wq$NSGz{v7ah_)8uCJ=O#{fWEb0XdNjxq}`z*#`p}i?PZo86= z*xM?nOO2aFuQ&eXgKX(kZ9i_%;-jh~xWG0{SHfbf@Zm5w$7arH;Ca845@enZ6~J?n zlQWdiA6^`wjRsqEk+;ts5RuXFnPo1u#fizEHn`6cWd%7W!Dl?`<+OM>G9U$ozh}&C zKorYdS7mpI-bRn#R(iq9LXl+1)+*hUZjA<*L0WT+`)I5rv-fB|{*l4rU?#7GudI<} zE1Wii4~=3n?~@;uFFV!pC!s&2-BLr-)@fn)TlSV3t?^e(h(v17%`n~$Z$_lARl*)BLGHDX;!nfG_j+@sVX*B zH(L`$$8`uyusYEXxyOL*Q*xf;>(6ouQtz-TAxK;Is3o&uP3+4o993L?kyZ3|ogxQT zB^fgHa^W-u0@B=Ndt{)2&|sO+lDEp$M@s_{Utn`Fv8uTgv%)n7xMa@dHuG-7 zI>8VITGq(}v?T(r0d5${naUj^@YE>QwffBNMA0GIIF1IVLw-|E*%XdC_3yO z2|bNkx+Gf{WxtxVf&f8hM09{t2^gPJIhBq~7h=3hGsLp((1RuZ;;u`ML#{4)}M_Y%8s!?8KOJi^D&Tr4&Pr8CrSrWh4VShua8u3xmn_zl&nP3`A5WW0RB^GJ1 zO&{lO&?mi*0M#N#d$Pnz5lxqik3szHL|Z>~7|r|Ec$d#`s+A$TNp7=%%nZXeB_%^-=dv=F2d$TZf^G7Xl7z@%5gHw zV8o3+!T96`wOeZ`*@WK}*7-abdj-bWedEI2?%57AE8c(*5lshj6+FKBR1;--mKH7J zu~f2wI^}dnX)Y>Qp`wUVAQjy`1MWauPmMDY*xNXSYk;ACJ|~AfjBl1^{Np2_DL;n@ z1VkbM1dpOp!*ehI+Coc-HH4Tnzkhjhl$P}`@X7DBLhCI{Oqijc19)FZKVzFj3uq<+ zj^eG77TOE32k$G~dJu~uB5{MgrLWqamT?P@r?@ic-C&iLs8FUA2^{cbsLhR%nL^i+ z{aP@94`sV12Hk=Fy)LUMJwgVH(9HzFt|E3~K0XJP);`*Lx_4vVJ)j&tdS&$R^y|0; zD&%9(XuFP&L8IkB8bh#Y`4K%vJo26M{91Pl?l&-=2`R#uZoK@*1Tw{y@Y>6jWe!)3 z|3%(gM#T|?ZK5-S4L-QLySvQ{FnAc;U4mO60Rm)jcb5>{3GNcy37P~59w4{`k^q5Z z`Mz&=&)pw)&)uJU?yv4TZ*_H@?yl;3pL*Ws70Q#vi}(i+*UnLfH~Jf%I4nDcC@W^a zd{*)XnKYzs3=1`RCTTy$G=1@g%jeTc;4W1li)$B&*qYz;%eTnNPbHMb%kGXHZj6MD zh*|OA!;$uMYd1|1MU5l*R9zHz2v_|XgjUO+5^8>(9c9s&vXQ&y;?&#e?+(Z>2RiTt z;;pU)uvsbF2XQ1b#_iXTfE4@7F}WNM%Z;Ft)h6Di>+2dGCq{eTa@8;99d%wTeHBd2 zAF45qceYm~f*!kfy8wxmBt$ilVgVKPGH1!H!MWDo(SZQ&9COj_qUsvc^9yR-Y&sf=( z2~;{lnBNX2HJXbjmM9(Vjz?*URk8I*I(wtk$CI%NW(0eTq}*;dLOsdyg9D^2k+i$= zxT-v4vS=La}deq?z)NXIo z`aHHInv@G+93v+i+_vKUyO=;j#%;h|42CKZH36#=YCZwODY04J^99;2Pv&IXm&hV1 zsq{60$IA_56b=ON_#*G;#v%%Xo8da+S+&xAuhdgwSQi7LIl+TO7-r#dpQwcmwivr! zWVmus(YeZFj`CCV4W`gl7aq9YWC})lyyw^brABiv`6F+-;78l`6kF*~Qopl=AY<%D zv-X>Eh+_vo35$$T32Z=a_>~{8IGE8kn4FsE6_IwuE>Jb|xAqK8qb9T%r#4=SE)35^ z7hq@7GP_VmNEC-+EY->MjaxidS8-uG%0sm+TNGcbqYpf5s>(&ZE!1N@c{INNJ}X!% zdMl1=1e;d{LIrxZ+5(pFhV25FdW|`f0j&?kO^|IDIl#v(aO0?e)2DVi4U?GmY||d) z0eIC<<-hYi8h9D5)Se$_JyME1E{_?V$Jy}er35oQ+#Ca#vkX#4sDSS4c6ri>Ud?dj zW-vwu6YGInkyxi;ac3m!z~Eb6yPgI;T6<-2>t`o85NJ?ysKFXXtez)NQ#5=Hy&2Lw zGt4gY&T({YdwT+-?E;>nP%pu)F9S3+FIh=;VB@WA<2jgk0nkJKd+rn z0PLs>APSQw%{6!GK?uPFyKpNu-3$b4Sc6 z8LC6IYSNEjtDwW+#y#{_Z0TE-x1x$;U12K9GdRNW*N_2Pd@{(22~Go#m7ruIrg zpi11KH%jo|KZ1E(CU7c$@0(-r(g_b0{TwmO6H=lRS2kbtgs*&b;3XyfKOgjC^_F=Ky*|+S^MW6G zP|`l@w?{M(l>F<9odykl}HL54Ry2nQo3h{R#$=7n(`CBU!ue-@22P_@3bipJQ(d^L*Y9 z%94q=+nh)^7S)ne!8^az%K!kX92$+SIBPD7P2*`KH1mbN%oiLfQ8fNaHFSiaQ!Y4p z!s0P>xvwn?3TL-oZS2g7B&KZFX zm0F^Z9FPvs_6U|wopC(pS_%;>9~b^?zb=o=rKZeTY2KuuVt%F~0?8LId;+hy)MLY6 zJw0b~=G%ft9@UtXm|IhsEjE-F@Y%Z$@2&Q5?s)(Y&m&~^P_`2Jl`ge$_ULpgEQF2HhaM_I}=><|hx#B%Kko!CLG!g++ zm4etXY5UUZw&gnMAlWeChf3BVeh1>u3}z|_pNRwU6Qd|GKl@0?i98r<6S*b1vO`p! zBUtMstDQc7Y1G1cVuM71<=SqxW(b99)bInDK@{E35N$ym1&PA^;4PcwRx0?Rm(A|h zN-DtVi#Ks!k{%)BGgdTH@65ZPLRC(WQ<2uB0R6D<{7leVBR|%6t+&HDU-@M@DjsKI zI96F!=4>#t&i9W|0I4=KY!{~4*vp|D+Ap-7Fu{n!x3&G{iJU^`7hcvxYa(ZRLUFa&-qp7?!jxX;4|6Y|`$=n0a0 z^Dw?}OhcLQG774{kRGFM$*EJD?W>36WkMV8_YXclH&LW`_7iaYTQD$$p^4o~=Bg zWna{c#Ru~JBB(aoc4z8nW+iQYfQ6zFXv;jV<1jtjR^9C2aMSHU4Dn|D<>lF0hsOck zwkU=xWt7YF56fD^q^H#-ycE5xFmy293L4thn?d*XukQVeE`MsYq1KIm5xlhAfTm7< z@A_uO^Apiwi#Hfg_VzWovqr7m2(JCDAAan^=bEZ9p%C_|cH)a$zW*>U>6(5t&IHt3 zez>hc)dFfRv3TB<{R5nbw7jePej;`M@&Bfir_h^DX7B=M0n5-Eb$UX#=vFu50KAEfzxhJ*e*|aL{qqHF@#m`m z2!Yh+?;j?UM@)k}fiD(R<-R$9?2msk=N1%i>u_#;)7L6qaLyRIB~|OBUrt}8&Y?8? z_Ju2qRb#cJ3l(;SGXyjSHMg__t^NTNKm3;@1povDf`RC0Pl6QxDM(Hj+9j}!CDM{rebnA$p&AJL` z{tr|9$Nv{=Q+M*Y|3It5{O0BVs5^QvcC65r`M);sUu}E*@9*-z>A?S8ChK;G<;|<4 zhO>Ww5BB(7Fd$GREx%gpk~)a1Wmktm(4%uEuEP{x6n9l)gE^m(pLd(%a7`<=V&hq>+GOD!)S8S80+2^tqaJ=?`< zw}T|U5?iXj{E{W4bo~ z;Sf=I`VY|L=eM<^5c2rv_r=zS|9-I9!{{s{>0}v0$IM<3wx9UD^(MI>K>fJsQRIKt z`CqU2|6Z~wt@sCUcME|C5SoheziIpj;DeICKMmUXKa6DhkI*N`%%s2C85#3)=fmM7 zn~8ap;}@O>-v5V;$&*0I8i7O3N-4*&I0CcYzlcxZR{LQb?H&XsnboF@Pn;0*rFhyo z-3T0_1p)9!{hU8i2mTTaW_U4xrfw6mP&I;HHk6@Dprrj2)Wq};khA>;3Ipyii;U2D z71df5ys|3cRH9N>z2?Rm$ipJw-wvYGC(2vDbJf)XVtuY;drIN)5dGIK^brFcT%=EO zNv;4CG}Jsad2{sA^5ioHa$a<&h~-{o`_06g14)K?BxN*|*ZPHAf zFZx0BgH@<4}g42EC~E#UH3V-=QZ-ir_p_@Nw~s*cc01+$8xO9^dWww>Z=f zr|Fp=HT5w69l`rhV&p?Hg%fFGLj(+imN4vp+#OFz*E-xvr=F1qK}Ws^$k`yp^=dGy z7w;F}9)(*EgULE3U|c|3?6j>uDY-RefJ!rSSh|+w)R=tZpl0AnnGa)mB*tifa+r$z z435PK`$y*&w6QCTnE!MRI`_5@lSI9)(WX{DIB&VJak&7qt46WEL#1M450fX7HRj{)dDe zwJ1i>Y%3L17B)oA!)(W_vtHwyT80=Mp?8=fDM0I0t|xOe^Ou$x&}mWaG~iv^*+a{b zO@OL;FV>rwd&GyewHdyzeMHe`NI4jkn@@jTr2723CMB4Rop zy|Iyzp?9`h;(FQROGNA|W1yPtde7T5Pxh#JRees*Sk_mr+5Hu$H`5K7Qna-iZ%P@% z|8oG}kUmz}tLEsV1LS_JV?ryetwDyu>R@$c$4+=f_h?-2Q)VJ+2gAb0at!H*roHLM zWb!P*Pj)Nh6>C;>@DVPt6PLW-23NwPIJj8FeFNCmto73-Zhn;hoxiHaxfz2syN3)p!tkV6&`I>^4q+E7M+YlKqb2G? zODu{6a2$A=z;S;sRcQ^fF>3a;P(N^o$q65o?@OWo*rc=4)|GQJTcfl70Dfq_w85$SUT1QY>viukla z*n1g3f{{i~ey|6Kg^r>T&yg9-Ji+8{{@LPynG0PojFL8nok|P2!s)g&Z!mh&{RDxs zLdaqV20kaS=hCrsUjW1CTsl65c&dN%Nr4F$^BHuTM77$*#YQN@iI@f$LshiC^cl9d zA9v!SIt=-0%EZOYiBviogF|1U`wBs*-AKjtIdwf;RdF~u*~3C>or`}5G=7H;OO{8&*+hJ0nfYhNx!1CgKx8NIsOIPfoMEz_T4Wo)#-%Z|$?wBH0HBRuCK zc0YaTAXYz}F~^H_hd?AnK4>*j`Qy)69V&mf*xR_}BHNDCqaM+pQt*i7I;BG~gqYfbY zcBIT1OA16ymG45%pR$e)`Vl`qb8-okccy0Ua&CSfqx5 zmU)@!o&cT5y9>eO@fZwYdvF>9i%RmQHjg4QqV$k4<={kSUG_a61>j%Be*mF@d+wh< z;T0 ziuW;EJa)zsMPw#3iz+k$a5fLAZN(+;Gks##THU|6wLP1}hAb_6aco@oz$_ zP9wT7Td*6RmO0_e2Pa)FhA7~%^F=LE#}^l zz2h`iC#I-i55v!?E18^bU5=$6VbytEPOSB!IsstB!z&OyN3 z7%t@b`WP6XjR0!W9<7%S zIV!@mg`8^Y(Exc7(Ib3Ng=lA_BvMn9IA~$FxZEX(gyE7^1`E1TMl|?`&&$iFp0WXy|7{ zcNi$<%IrjwjNI^NO}*+^{3pRVr#7vmxj-1G0i8)`h^kpEh(-UzJH zIak6<1u1A^_w7iFuo4h!M1c(@H9f-`(odgD>`#4q6BvjA`cZ%^J+Z3h9{|_xb;meb z0sCOlQOT^Gt&4Yge_vA!0FNd59a`T>jBC8Mw?+)6L6a(>AK_{N$Mi|C6@42e6tty>@XP6AGiX|B9lZ{gs)S77!F zG^}gY@x_=LNBmOD^8yi@BU)Q@EOOh8bRI!z+6WmYDs3)#fwF&&;VC2A2@@vV4DdxxATeo*PReIU?m1IeX-(y;o$0UyC-F3I zo*PJW?5N<01oBU1DZdLH3h5xJhu{AI#t?$-&O7wTiLl3I2&jrj z16q%3DuLMqVFKzR$zq52{FMwa?7)ePiK2_*L40%JT`clMAnVT_7`Dsf^VU? zg}#(&Ixhur(CbLmV4(t47fi>$otH%($X1D^kj5ylsDxv#UrbTl15^`>4E@UJ&}B|V zJkv*yONihKXIEgP4L9sy!QSDI%L%$c{HP99PZRnOU#xa#StKATe4$g7D!kur6%Wp=hi@!4x9Y&bjG)QS;a?aS7%!?@~q-`c*P9tFw61 zyAKff0Ik0)=*wfap!A%8JW}o30pd)tILs34zYqn1E~zR-rJ6C|kkWKsKS*Sc5htjY zI28MvqqA@F+u}HuP>3pE_~h0W6N_OJ&~U23EfzSUYkvx4ZvmO41A>fg5(;AjtQ{iow`Lka;AFF+pISgknm(`IQ5nmKjD61lUGe`ge| z(Ee*0{~H#D-pGe#U~T#j0J7S%E+%>bb!X46CLW`v_8S@}xVmNdA8olvV>xF2_KpNa z)GOMmSP)%Iym5M5`NLuWl z1MD@4M^vv}_Dd8_t>mLgos)P2p1coC1sVIQuv%!?x+ABmU^;ykK2z$5aUC{!KUekC z_LemHUjhZRzsj4r%lpyk53XOXqOU$Ee7i9z$oV2|dp*oB(D#P&4bAmmg)x|E5IwBB zi!a^iI<N7X&8c^{yeXx=(bDB0!_+mLT2#5D%F#PT*1u-+(lVE@q#EI!E z?yzbiB%-OLSa=7I8NnKXZw8k@a;pYpTV;GD3p)+etQ*bBd+Mx6?=+&U*n1v2gKYku z#`54+J}a&nwHUAD|EH?Wz~LAbt`N|<7MB~IGe=CVQ(Ib!{M`yyCQ6x>M?wX0z=%$E z6YBGmHcg-3k1WuM`GA%u)qD8Cx^{dJ(30~Fxj-3b!$vYmW1ZQq_d9ui`04U>t==&S zDZ`W$sQ4WoHETZac-#{u6pnKs%>{d#K{0Ymm}MBhpans)Twt94?4uM0-lEBhqTh)` zbm*)YmI&}F1eVTKpMS|MD60LeGtltx%66ZC^WkWJ$}IZYA_VIpREFZ$TRFeDW+eDp zDCynROI;VS*VT!5r65MF%ZI~9p9zu-mhHFDe*oR%5_{2wWe0-cEp;N29xVenW{gv7 zJVr*ozMAHui2gNQ$3flb@t-1B+#v5y=q_>2QDfzq*M>r~+GNS2-;Ofa$RxB6<}wVl zui9S8zQw6MJ$OkfG1||ax=96owvPF&@7vyx7PKquqtU`7oZKyi*9HtGiBQ>){_0no z1KT`dT&lp{Uyj2x+Ks3*ZAj0DF{wF=SAYQB<#MCHUWjG>5)iG^V+9n(>I39y2lWq^b;@^u zma5@#Uf@^Z@9kd`8nd1#n&MmU`lL?#vcLb;xcOrdKNV{rJ zOBEMc7{x?+iO@2}VD>*izCh*QwkP`ghh*+2fdHxymw$kRY00C87@Fun9X;yey0$AJ6e9bp9=oht=QN`KBM;D)&y7so2 zQyMEV6`=MHkl89;n0&O&)cbbMhx zM4B+6gPhmxeAth;ITnz0_7uY_5Ye6GecRP`~!re*Nu zn9axj0pupp+w~QxmunE8CxdO+Mle!fC@tUWIy&aSOCqLUybBPw$vaLZB}@T!9*yuI zCSgKV9bNUgsF^1SA`$c)Gi6=1I~~ zt8<=yRY+^sDDifw6v1qc#_SE*)i>F>WLGH9>(O#LVI{!-ZP#J$JIxDv|Ba-7$5$?i zBVpmy>v9*vO+??mAM7H}^YzbK%vRlPg2+cPN%;ws?naM%gM-iSW3&AAZD>}2=w6m=Mbn*R)MM~Z|Wq!j0pqdL;`h9nTH4CIJu)zsbSQwSe}2|R+!Mg zd7b_~!zX5eQka2u=WwV@q?o{XGt@l6)O|oS^)9oejP|`5Xtc16&1MW*118y4E#J1U z;Xz};c1P&uNv)aOI{Po%s=VdKR>mWz!A-FE*-p);!LJqnzL}?%8qs)fwCD3-4;MRV z_?VQ)VpY!_k%yzWLMuGqMEVOY@dl9+sWPJ`WlLWZ>c-pgh|#`TNAnM`vgs;E?LQ%< zkr|$|EG{{)y0CUEWYFUGFyPtuSu_ky(IyU4)vED@{cEiLL|~ z$FWbTa`t9Br8!1#sIMc1>4HsrdTMe)B9E9<6>wrcm}Uf-(m1TS+Wpc?^>eTIb2nB6 zJ%a@|36>xetu)@d3Gm11*2YI#kfI6H(ZOgjdhvvJo{KA~Xn=dS1WbtFM&BP1@?{$u z_Ey5s`&>RR+&*H-Xb~|%T&TB^;r3CX@|A47n6we%;v#C#lXy}ExnjpS&IF3PJ%LVR z2*R{^O5B&s1d>*)pMB^qN}6xRVMC=!O5CpitC>@AV;n7_9aXe3_aJP|6`V}nT;vJW z_X)OXKaz^Qh1nci;Zh!BIf)ZBq#QH{B+p@B@_B7q_8OGQ<};$K`56Z~|l9ppUCtR72Gol0o^A&msA79Yx0(}%>=Avmhp?>Xri7Og_PKUN2HB{4 zZ}Gi~5>iv*>jYt2Qe3)Ioh^!8MQ|IKi)NqMu}uB=f*IL+8D-^CsP+1gg?bk=+C?PJ zB2EvT@{amiVT_aGEk_&*eJ!D+3@c@U>Y0ouvm>z=i@>1|d_!}XQYoa#OOG{ZTsXFM zo;~+faWXStMHP_Ar(s`-J(<=8I(zjL$=X4935!+Mp(@g>c6%K0U%EZ~=)#64MB)E1 zA?qB+u9S~mL-bCQ&orORb&<~K(A#z+{u8mb151LXB5kDv5x;w$4aV=6@(tmiz2La7 zDjLLCF?0s`L_^eIK6a7PJr)c~V44hOaoYIAqw}{;za2;TN_&zp=bQ9<=apJ*DFE)U z0TPl6>N-4UHP|>);7F38@LvOto4(^;H0+yNh#Gx&OwXLK&`i-Tg zCebHP^MdZx<48dSDa}4la=hGkf5fUSNWjK-v+1KCV%bLc?QJ7dEBQzIG}vZV;!pL= zSv-HvZ065IV_^cRGD4RM+Kax$;vFqK8idET?7lrIKhy+o;mz=OFMaP>7><97)BSc- zdc)Sl^yu+H1#?I4o;fUV-&**Io`{}9aH`72O
      0X!4RuXtg{xGb& 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%0DrosyP@H95~9FU=$ZFYE) zUio*SW zTze(-?X&DHnD->j2m&vH@_-&8T7n}e41e&&&*_HV$uPF4UP(%$b&R8Je3aXZrU1D$@e^oFO zll0OoZ>mum;Pd5SCTFZeRStF4k@^4R4@d(~!7uLm-qBpQih3Xau8G}h)(i>ax7Evb z-S7&D^I0JwA_nacKlA0gFXZuPB1|Dlf=)Z zEmrkVNxpd(2RjVqg@UyZC48U-Z*M$9`8kWMYhEHGF>{WD1R2pXwJu!1#(5^H;NQmj z+Qv>WNg_++Sd4X@gLAStPtB-EcOp%2FHl|+_p1SIuYV9Sk1uKg-cx`Z`SMbQhe-`D zxxTLYs&W7eXDhxBF*uC4lMIA{)*OCq8|`Il{T5U)P-pOpjuOOR8mdfi`(56mws07Z zkvTXO=}X*LX*FI?M5ji}(yLt|M3@$l9%$YCvIEGkY92O{V%;Hn^jGfv@L9hVwlEw= zd^&$?xS)4G>f~j9%SWPP+D2axt$X8nUF}|;6*Ia^=~k8 z;%oBwOj?^Z+&aY3q~hGl2b7aeROdXGziPHXY~GD`tgOli=+@S@fyndqgDw4~48{Xh4(_!|HK literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/starter-template.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/starter-template.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2545aa32fdfa86b8c63f7ad21b96c25e9c395cba GIT binary patch literal 22620 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 literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/sticky-footer-navbar.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/sticky-footer-navbar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6226bf4ac052283aaba45105d430863983c44c1c GIT binary patch literal 39387 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 + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/signin/signin.css b/app/bower_components/sass-bootstrap/examples/signin/signin.css new file mode 100644 index 0000000..a6bf9b1 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/signin/signin.css @@ -0,0 +1,40 @@ +body { + padding-top: 40px; + padding-bottom: 40px; + background-color: #eee; +} + +.form-signin { + max-width: 330px; + padding: 15px; + margin: 0 auto; +} +.form-signin .form-signin-heading, +.form-signin .checkbox { + margin-bottom: 10px; +} +.form-signin .checkbox { + font-weight: normal; +} +.form-signin .form-control { + position: relative; + font-size: 16px; + height: auto; + padding: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.form-signin .form-control:focus { + z-index: 2; +} +.form-signin input[type="text"] { + margin-bottom: -1px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.form-signin input[type="password"] { + margin-bottom: 10px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} \ No newline at end of file diff --git a/app/bower_components/sass-bootstrap/examples/starter-template/index.html b/app/bower_components/sass-bootstrap/examples/starter-template/index.html new file mode 100644 index 0000000..a792db8 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/starter-template/index.html @@ -0,0 +1,68 @@ + + + + + + + + + + + Starter Template for Bootstrap + + + + + + + + + + + + + + + + + + +
      + +
      +

      Bootstrap starter template

      +

      Use this document as a way to quickly start any new project.
      All you get is this text and a mostly barebones HTML document.

      +
      + +
      + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/starter-template/starter-template.css b/app/bower_components/sass-bootstrap/examples/starter-template/starter-template.css new file mode 100644 index 0000000..4af7a61 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/starter-template/starter-template.css @@ -0,0 +1,7 @@ +body { + padding-top: 50px; +} +.starter-template { + padding: 40px 15px; + text-align: center; +} diff --git a/app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/index.html b/app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/index.html new file mode 100644 index 0000000..fb86074 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/index.html @@ -0,0 +1,91 @@ + + + + + + + + + + + Sticky Footer Navbar Template for Bootstrap + + + + + + + + + + + + + + + + + +
      + + + + + +
      + +

      Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added within #wrap with padding-top: 60px; on the .container.

      +

      Back to the default sticky footer minus the navbar.

      +
      +
      + + + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/sticky-footer-navbar.css b/app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/sticky-footer-navbar.css new file mode 100644 index 0000000..4869de0 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/sticky-footer-navbar/sticky-footer-navbar.css @@ -0,0 +1,45 @@ +/* Sticky footer styles +-------------------------------------------------- */ + +html, +body { + height: 100%; + /* The html and body elements cannot have any padding or margin. */ +} + +/* Wrapper for page content to push down footer */ +#wrap { + min-height: 100%; + height: auto; + /* Negative indent footer by its height */ + margin: 0 auto -60px; + /* Pad bottom by footer height */ + padding: 0 0 60px; +} + +/* Set the fixed height of the footer here */ +#footer { + height: 60px; + background-color: #f5f5f5; +} + + +/* Custom page CSS +-------------------------------------------------- */ +/* Not required for template or sticky footer method. */ + +#wrap > .container { + padding: 60px 15px 0; +} +.container .credit { + margin: 20px 0; +} + +#footer > .container { + padding-left: 15px; + padding-right: 15px; +} + +code { + font-size: 80%; +} diff --git a/app/bower_components/sass-bootstrap/examples/sticky-footer/index.html b/app/bower_components/sass-bootstrap/examples/sticky-footer/index.html new file mode 100644 index 0000000..b52754d --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/sticky-footer/index.html @@ -0,0 +1,55 @@ + + + + + + + + + + + Sticky Footer Template for Bootstrap + + + + + + + + + + + + + + + + + +
      + + +
      + +

      Pin a fixed-height footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.

      +

      Use the sticky footer with a fixed navbar if need be, too.

      +
      +
      + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/sticky-footer/sticky-footer.css b/app/bower_components/sass-bootstrap/examples/sticky-footer/sticky-footer.css new file mode 100644 index 0000000..db69add --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/sticky-footer/sticky-footer.css @@ -0,0 +1,38 @@ +/* Sticky footer styles +-------------------------------------------------- */ + +html, +body { + height: 100%; + /* The html and body elements cannot have any padding or margin. */ +} + +/* Wrapper for page content to push down footer */ +#wrap { + min-height: 100%; + height: auto; + /* Negative indent footer by its height */ + margin: 0 auto -60px; + /* Pad bottom by footer height */ + padding: 0 0 60px; +} + +/* Set the fixed height of the footer here */ +#footer { + height: 60px; + background-color: #f5f5f5; +} + + +/* Custom page CSS +-------------------------------------------------- */ +/* Not required for template or sticky footer method. */ + +.container { + width: auto; + max-width: 680px; + padding: 0 15px; +} +.container .credit { + margin: 20px 0; +} diff --git a/app/bower_components/sass-bootstrap/examples/theme/index.html b/app/bower_components/sass-bootstrap/examples/theme/index.html new file mode 100644 index 0000000..5adb44a --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/theme/index.html @@ -0,0 +1,384 @@ + + + + + + + + + + + Theme Template for Bootstrap + + + + + + + + + + + + + + + + + + + + + +
      + + +
      +

      Hello, world!

      +

      This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.

      +

      Learn more »

      +
      + + + + +

      + + + + + + + +

      +

      + + + + + + + +

      +

      + + + + + + + +

      +

      + + + + + + + +

      + + + + + A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera + + + + + + + + + + + + + + + + + + +
      + Well done! You successfully read this important alert message. +
      +
      + Heads up! This alert needs your attention, but it's not super important. +
      +
      + Warning! Best check yo self, you're not looking too good. +
      +
      + Oh snap! Change a few things up and try submitting again. +
      + + + + +
      +
      60% Complete
      +
      +
      +
      40% Complete (success)
      +
      +
      +
      20% Complete
      +
      +
      +
      60% Complete (warning)
      +
      +
      +
      80% Complete (danger)
      +
      +
      +
      35% Complete (success)
      +
      20% Complete (warning)
      +
      10% Complete (danger)
      +
      + + + + + + + + + +
      +
      +
      +
      +

      Panel title

      +
      +
      + Panel content +
      +
      +
      +
      +

      Panel title

      +
      +
      + Panel content +
      +
      +
      +
      +
      +
      +

      Panel title

      +
      +
      + Panel content +
      +
      +
      +
      +

      Panel title

      +
      +
      + Panel content +
      +
      +
      +
      +
      +
      +

      Panel title

      +
      +
      + Panel content +
      +
      +
      +
      +

      Panel title

      +
      +
      + Panel content +
      +
      +
      +
      + + + + +
      +

      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed diam eget risus varius blandit sit amet non magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur.

      +
      + + +
      + + + + + + + + + diff --git a/app/bower_components/sass-bootstrap/examples/theme/theme.css b/app/bower_components/sass-bootstrap/examples/theme/theme.css new file mode 100644 index 0000000..e755923 --- /dev/null +++ b/app/bower_components/sass-bootstrap/examples/theme/theme.css @@ -0,0 +1,14 @@ +body { + padding-top: 70px; + padding-bottom: 30px; +} + +.theme-dropdown .dropdown-menu { + display: block; + position: static; + margin-bottom: 20px; +} + +.theme-showcase > p > .btn { + margin: 5px 0; +} \ No newline at end of file diff --git a/app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.eot b/app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..423bd5d3a20b804f596e04e5cd02fb4f16cfcbc1 GIT binary patch literal 20290 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.ttf b/app/bower_components/sass-bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a498ef4e7c8b556fc36f580c5ff524025bb11c84 GIT binary patch literal 41236 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 +
      + +

      Bootstrap has a few easy ways to quickly get started, each one appealing to a different skill level and use case. Read through to see what suits your particular needs.

      + +

      Compiled CSS, JS, and fonts

      +

      The fastest way to get Bootstrap is to download the precompiled and minified versions of our CSS, JavaScript, and fonts. No documentation or original source code files are included.

      +

      Download precompiled Bootstrap

      + +

      Additional downloads

      +
      +

      + Download source code +

      +

      Get the latest Bootstrap LESS and JavaScript source code by downloading it directly from GitHub.

      +

      + Clone or fork via GitHub +

      +

      Visit us on GitHub to clone or fork the Bootstrap project.

      +

      + Install with Bower +

      +

      Install and manage Bootstrap's styles, JavaScript, and documentation using Bower.

      + {% highlight bash %}$ bower install bootstrap{% endhighlight %} +
      + +

      Bootstrap CDN

      +

      The folks over at MaxCDN graciously provide CDN support for Bootstrap's CSS and JavaScript. Just use these Bootstrap CDN links.

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

      Compiling Bootstrap's LESS files

      +

      If you work with Bootstrap's uncompiled source code, you need to compile the LESS files to produce usable CSS files. For compiling LESS files into CSS, we only officially support Recess, which is Twitter's CSS hinter based on less.js.

      +
      +
      + + + +
      + +

      Within the download you'll find the following directories and files, logically grouping common resources and providing both compiled and minified variations.

      +

      Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:

      + + +{% highlight bash %} +bootstrap/ +├── css/ +│ ├── bootstrap.css +│ ├── bootstrap.min.css +│ ├── bootstrap-theme.css +│ └── bootstrap-theme.min.css +├── js/ +│ ├── bootstrap.js +│ └── bootstrap.min.js +└── fonts/ + ├── glyphicons-halflings-regular.eot + ├── glyphicons-halflings-regular.svg + ├── glyphicons-halflings-regular.ttf + └── glyphicons-halflings-regular.woff +{% endhighlight %} + +

      This is the most basic form of Bootstrap: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). Fonts from Glyphicons are included, as is the optional Bootstrap theme.

      +
      +

      jQuery required

      +

      Please note that all JavaScript plugins require jQuery to be included, as shown in the starter template. Consult our bower.json to see which versions of jQuery are supported.

      +
      +
      + + + +
      + +

      Start with this basic HTML template, or modify these examples. We hope you'll customize our templates and examples, adapting them to suit your needs.

      + +

      Copy the HTML below to begin working with a minimal Bootstrap document.

      +{% highlight html %} + + + + Bootstrap 101 Template + + + + + + + + + +

      Hello, world!

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

      Build on the basic template above with Bootstrap's many components. See also Customizing Bootstrap for tips on maintaining your own Bootstrap variants.

      + +
      +
      + + + +

      Starter template

      +

      Nothing but the basics: compiled CSS and JavaScript along with a container.

      +
      +
      + + + +

      Grids

      +

      Multiple examples of grid layouts with all four tiers, nesting, and more.

      +
      +
      + +
      + + + +

      Jumbotron

      +

      Build around the jumbotron with a navbar and some basic grid columns.

      +
      +
      + + + +

      Narrow jumbotron

      +

      Build a more custom page by narrowing the default container and jumbotron.

      +
      +
      + +
      + + + +

      Navbar

      +

      Super basic template that includes the navbar along with some additional content.

      +
      +
      + + + +

      Static top navbar

      +

      Super basic template with a static top navbar along with some additional content.

      +
      +
      + +
      + + + +

      Fixed navbar

      +

      Super basic template with a fixed top navbar along with some additional content.

      +
      +
      + + + +

      Sign-in page

      +

      Custom form layout and design for a simple sign in form.

      +
      +
      + +
      + + + +

      Sticky footer

      +

      Attach a footer to the bottom of the viewport when the content is shorter than it.

      +
      +
      + + + +

      Sticky footer with navbar

      +

      Attach a footer to the bottom of the viewport with a fixed navbar at the top.

      +
      +
      + +
      + + + +

      Justified nav

      +

      Create a custom navbar with justified links. Heads up! Not too WebKit friendly.

      +
      +
      + + + +

      Offcanvas

      +

      Build a toggleable off-canvas navigation menu for use with Bootstrap.

      +
      +
      + +
      + + + +

      Carousel

      +

      Customize the navbar and carousel, then add some new components.

      +
      +
      + + + +

      Non-responsive Bootstrap

      +

      Easily disable the responsiveness of Bootstrap per our docs.

      +
      +
      + +
      + + + +

      Bootstrap theme

      +

      Load the optional Bootstrap theme for a visually enhanced experience.

      +
      +
      + +
      + + + +
      + +

      Bootstrap automatically adapts your pages for various screen sizes. + Here's how to disable this feature so your page works like in this non-responsive example.

      + +

      Steps to disable page responsiveness

      +
        +
      1. Omit the viewport <meta> mentioned in the CSS docs
      2. +
      3. Override the width on the .container for each grid tier with a single width, for example width: 970px !important; Be sure that this comes after the default Bootstrap CSS. You can optionally avoid the !important with media queries or some selector-fu.
      4. +
      5. If using navbars, remove all navbar collapsing and expanding behavior.
      6. +
      7. For grid layouts, use .col-xs-* classes in addition to, or in place of, the medium/large ones. Don't worry, the extra-small device grid scales to all resolutions.
      8. +
      +

      You'll still need Respond.js for IE8 (since our media queries are still there and need to be processed). + This disables the "mobile site" aspects of Bootstrap.

      + +

      Bootstrap template with responsiveness disabled

      +

      We've applied these steps to an example. Read its source code to see the specific changes implemented.

      +

      + View non-responsive example +

      +
      + + + +
      + +

      Bootstrap 3 is not backwards compatible with v2.x. Use this section as a general guide to upgrading from v2.x to v3.0. For a broader overview, see what's new in the v3.0 release announcement.

      + +

      Major class changes

      +

      This table shows the style changes between v2.x and v3.0.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Bootstrap 2.xBootstrap 3.0
      .container-fluid.container
      .row-fluid.row
      .span*.col-md-*
      .offset*.col-md-offset-*
      .brand.navbar-brand
      .nav-collapse.navbar-collapse
      .nav-toggle.navbar-toggle
      .btn-navbar.navbar-btn
      .hero-unit.jumbotron
      .icon-*.glyphicon .glyphicon-*
      .btn.btn .btn-default
      .btn-mini.btn-xs
      .btn-small.btn-sm
      .btn-large.btn-lg
      .alert-error.alert-danger
      .visible-phone.visible-xs
      .visible-tablet.visible-sm
      .visible-desktop.visible-md
      .hidden-phone.hidden-xs
      .hidden-tablet.hidden-sm
      .hidden-desktop.hidden-md
      .input-small.input-sm
      .input-large.input-lg
      .control-group.form-group
      .checkbox.inline .radio.inline.checkbox-inline .radio-inline
      .input-prepend .input-append.input-group
      .add-on.input-group-addon
      .img-polaroid.img-thumbnail
      ul.unstyled.list-unstyled
      ul.inline.list-inline
      .muted.text-muted
      .text-error.text-danger
      .table .error.table .danger
      .bar.progress-bar
      .bar-*.progress-bar-*
      .accordion.panel-group
      .accordion-group.panel .panel-default
      .accordion-heading.panel-heading
      .accordion-body.panel-collapse
      .accordion-inner.panel-body
      +
      + +

      What's new

      +

      We've added new elements and changed some existing ones. Here are the new or updated styles.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ElementDescription
      Panels.panel .panel-default .panel-body .panel-title .panel-heading .panel-footer .panel-collapse
      List groups.list-group .list-group-item .list-group-item-text .list-group-item-heading
      Glyphicons.glyphicon
      Jumbotron.jumbotron
      Extra small grid (<768px).col-xs-*
      Small grid (≥768px).col-sm-*
      Medium grid (≥992px).col-md-*
      Large grid (≥1200px).col-lg-*
      Responsive utility classes (≥1200px).visible-lg .hidden-lg
      Offsets.col-sm-offset-* .col-md-offset-* .col-lg-offset-*
      Push.col-sm-push-* .col-md-push-* .col-lg-push-*
      Pull.col-sm-pull-* .col-md-pull-* .col-lg-pull-*
      Input groups.input-group .input-group-addon .input-group-btn
      Form controls.form-control .form-group
      Button group sizes.btn-group-xs .btn-group-sm .btn-group-lg
      Navbar text.navbar-text
      Navbar header.navbar-header
      Justified tabs / pills.nav-justified
      Responsive images.img-responsive
      Contextual table rows.success .danger .warning .active
      Contextual panels.panel-success .panel-danger .panel-warning .panel-info
      Modal.modal-dialog .modal-content
      Thumbnail image.img-thumbnail
      Well sizes.well-sm .well-lg
      Alert links.alert-link
      +
      + + +

      What's removed

      +

      The following elements have been dropped or changed in v3.0.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      ElementRemoved from 2.x3.0 Equivalent
      Form actions.form-actionsN/A
      Search form.form-searchN/A
      Fluid container.container-fluid.container (no more fixed grid)
      Fluid row.row-fluid.row (no more fixed grid)
      Controls wrapper.controlsN/A
      Controls row.controls-row.row or .form-group
      Navbar inner.navbar-innerN/A
      Navbar vertical dividers.navbar .divider-verticalN/A
      Dropdown submenu.dropdown-submenuN/A
      Tab alignments.tabs-left .tabs-right .tabs-belowN/A
      Nav lists.nav-list .nav-headerNo direct equivalent, but list groups and .panel-groups are similar.
      +
      + + +

      Additional notes

      +

      Other changes in v3.0 are not immediately apparent. Base classes, key styles, and behaviors have been adjusted for flexibility and our mobile first approach. Here's a partial list:

      +
        +
      • By default, text-based form controls now receive only minimal styling. For focus colors and rounded corners, apply the .form-control class on the element to style.
      • +
      • Text-based form controls with the .form-control class applied are now 100% wide by default. Wrap inputs inside <div class="col-*"></div> to control input widths.
      • +
      • .badge no longer has contextual (-success,-primary,etc..) classes.
      • +
      • .btn must also use .btn-default to get the "default" button.
      • +
      • .container and .row are now fluid (percentage-based).
      • +
      • Images are no longer responsive by default. Use .img-responsive for fluid <img> size.
      • +
      • The icons, now .glyphicon, are now font based. Icons also require a base and icon class (e.g. .glyphicon .glyphicon-asterisk).
      • +
      • Typeahead has been dropped, in favor of using Twitter Typeahead.
      • +
      • Modal markup has changed significantly. The .modal-header, .modal-body, and .modal-footer sections are now wrapped in .modal-content and .modal-dialog for better mobile styling and behavior.
      • +
      • The HTML loaded by the remote modal option is now injected into the .modal instead of into the .modal-body. This allows you to also easily vary the header and footer of the modal, not just the modal body.
      • +
      • JavaScript events are namespaced. For example, to handle the modal "show" event, use 'show.bs.modal'. For tabs "shown" use 'shown.bs.tab', etc..
      • +
      +

      For more information on upgrading to v3.0, and code snippets from the community, see Bootply.

      +
      + + + +
      + +

      Bootstrap is built to work best in the latest desktop and mobile browsers, meaning older browsers might display differently styled, though fully functional, renderings of certain components.

      + +

      Supported browsers

      +

      Specifically, we support the latest versions of the following:

      +
        +
      • Chrome (Mac, Windows, iOS, and Android)
      • +
      • Safari (Mac and iOS only, as the Windows version is being abandoned)
      • +
      • Firefox (Mac, Windows)
      • +
      • Internet Explorer
      • +
      • Opera (Mac, Windows)
      • +
      +

      Unofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, Firefox for Linux, and Internet Explorer 7, though they are not officially supported.

      + +

      Internet Explorer 8 and 9

      +

      Internet Explorer 8 and 9 are also supported, however, please be aware that some CSS3 properties and HTML5 elements are not fully supported by these browsers. In addition, Internet Explorer 8 requires the use of Respond.js to enable media query support.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      FeatureInternet Explorer 8Internet Explorer 9
      border-radius Not supported Supported
      box-shadow Not supported Supported
      transform Not supported Supported, with -ms prefix
      transition Not supported
      placeholder Not supported
      +
      + +

      Visit Can I use... for details on browser support of CSS3 and HTML5 features.

      + +

      Internet Explorer 8 and Respond.js

      +

      Beware of the following caveats when using Respond.js in your development and production environments for Internet Explorer 8.

      +

      Respond.js and cross-domain CSS

      +

      Using Respond.js with CSS hosted on a different (sub)domain (for example, on a CDN) requires some additional setup. See the Respond.js docs for details.

      +

      Respond.js and file://

      +

      Due to browser security rules, Respond.js doesn't work with pages viewed via the file:// protocol (like when opening a local HTML file). To test responsive features in IE8, view your pages over HTTP(S). See the Respond.js docs for details.

      +

      Respond.js and @import

      +

      Respond.js doesn't work with CSS that's referenced via @import. In particular, some Drupal configurations are known to use @import. See the Respond.js docs for details.

      + +

      Internet Explorer 8 and box-sizing

      +

      IE8 does not fully support box-sizing: border-box; when combined with min-width, max-width, min-height, or max-height. For that reason, as of v3.0.1, we no longer use max-width on .containers.

      + +

      IE Compatibility modes

      +

      Bootstrap is not supported in the old Internet Explorer compatibility modes. To be sure you're using the latest rendering mode for IE, consider including the appropriate <meta> tag in your pages:

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

      This tag is included in all docs pages and examples to ensure the best rendering possible in each supported version of Internet Explorer.

      +

      See this StackOverflow question for more information.

      + +

      Internet Explorer 10 in Windows 8 and Windows Phone 8

      +

      Internet Explorer 10 doesn't differentiate device width from viewport width, and thus doesn't properly apply the media queries in Bootstrap's CSS. Normally you'd just add a quick snippet of CSS to fix this:

      +{% highlight css %} +@-ms-viewport { width: device-width; } +{% endhighlight %} +

      However, this doesn't work as it causes Windows Phone 8 devices to show a mostly desktop view instead of narrow "phone" view. To address this, you'll need to include the following CSS and JavaScript to work around the bug until Microsoft issues a fix.

      +{% highlight css %} +@-webkit-viewport { width: device-width; } +@-moz-viewport { width: device-width; } +@-ms-viewport { width: device-width; } +@-o-viewport { width: device-width; } +@viewport { width: device-width; } +{% endhighlight %} + +{% highlight js %} +if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement("style") + msViewportStyle.appendChild( + document.createTextNode( + "@-ms-viewport{width:auto!important}" + ) + ) + document.getElementsByTagName("head")[0].appendChild(msViewportStyle) +} +{% endhighlight %} +

      For more information and usage guidelines, read Windows Phone 8 and Device-Width.

      +

      As a heads up, we include this in the Bootstrap docs as an example.

      + +

      Safari percent rounding

      +

      As of Safari v6.1 for OS X and Safari for iOS v7.0.1, Safari's rendering engine has some trouble with the number of decimal places used in our .col-*-1 grid classes. So if you have 12 individual grid columns, you'll notice that they come up short compared to other rows of columns. We can't do much here (see #9282) but you do have some options:

      +
        +
      • Add .pull-right to your last grid column to get the hard-right alignment
      • +
      • Tweak your percentages manually to get the perfect rounding for Safari (more difficult than the first option)
      • +
      +

      We'll keep an eye on this though and update our code if we have an easy solution.

      + +

      Modals and mobile devices

      +

      Overflow and scrolling

      +

      Support for overflow: hidden on the <body> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the <body> content will begin to scroll.

      +

      Virtual keyboards

      +

      Also, note that if you're using inputs in your modal – iOS has a rendering bug that doesn't update the position of fixed elements when the virtual keyboard is triggered. A few workarounds for this include transforming your elements to position: absolute or invoking a timer on focus to try to correct the positioning manually. This is not handled by Bootstrap, so it is up to you to decide which solution is best for your application.

      + +

      Browser zooming

      +

      Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.

      +
      + + + +
      + +

      While we don't officially support any third party plugins or add-ons, we do offer some useful advice to help avoid potential issues in your projects.

      + +

      Box-sizing

      +

      Some third party software, including Google Maps and Google Custom Search Engine, conflict with Bootstrap due to * { box-sizing: border-box; }, a rule which makes it so padding does not affect the final computed width of an element. Learn more about box model and sizing at CSS Tricks.

      +

      Depending on the context, you may override as-needed (Option 1) or reset the box-sizing for entire regions (Option 2).

      +{% highlight css %} +/* Box-sizing resets + * + * Reset individual elements or override regions to avoid conflicts due to + * global box model settings of Bootstrap. Two options, individual overrides and + * region resets, are available as plain CSS and uncompiled LESS formats. + */ + +/* Option 1A: Override a single element's box model via CSS */ +.element { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* Option 1B: Override a single element's box model by using a Bootstrap LESS mixin */ +.element { + .box-sizing(content-box); +} + +/* Option 2A: Reset an entire region via CSS */ +.reset-box-sizing, +.reset-box-sizing *, +.reset-box-sizing *:before, +.reset-box-sizing *:after { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* Option 2B: Reset an entire region with a custom LESS mixin */ +.reset-box-sizing { + &, + *, + *:before, + *:after { + .box-sizing(content-box); + } +} +.element { + .reset-box-sizing(); +} +{% endhighlight %} +
      + + + +
      + +

      Bootstrap follows common web standards, and with minimal extra effort, can be used to create sites that are accessible to those using AT.

      + +

      Skip navigation

      +

      If your navigation contains many links and comes before the main content in the DOM, add a Skip to main content link immediately after your opening <body> tag. (read why)

      +{% highlight html %} + + Skip to main content +
      + The main page content. +
      + +{% endhighlight %} + +

      Nested headings

      +

      When nesting headings (<h1> - <h6>), your primary document header should be an <h1>. Subsequent headings should make logical use of <h2> - <h6> such that screen readers can construct a table of contents for your pages.

      +

      Learn more at HTML CodeSniffer and Penn State's AccessAbility.

      + +

      Additional resources

      + +
      + + + +
      + +

      Bootstrap is released under the Apache 2 license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions.

      + +
      +
      +

      It allows you to:

      +
        +
      • Freely download and use Bootstrap, in whole or in part, for personal, company internal or commercial purposes
      • +
      • Use Bootstrap in packages or distributions that you create
      • +
      +
      +
      +

      It forbids you to:

      +
        +
      • Redistribute any piece of Bootstrap without proper attribution
      • +
      • Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution
      • +
      • Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question
      • +
      +
      +
      +
      +
      +

      It requires you to:

      +
        +
      • Include a copy of the license in any redistribution you may make that includes Bootstrap
      • +
      • Provide clear attribution to Twitter for any distributions that include Bootstrap
      • +
      +
      +
      +

      It does not require you to:

      +
        +
      • Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
      • +
      • Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)
      • +
      +
      +
      +

      The full Bootstrap license is located in the project repository for more information.

      +
      + + +
      + +

      Bootstrap is best maintained when you treat it as a separate and independently-versioned dependency in your development environment. Doing this makes upgrading Bootstrap easier in the future.

      + +

      Once you've downloaded and included Bootstrap's styles and scripts, you can customize its components. Just create a new stylesheet (LESS, if you like, or just plain CSS) to house your customizations.

      + +
      +

      Compiled or minified?

      +

      Unless you plan on reading the CSS, go with minified stylesheets. It's the same code, just compacted. Minified styles use less bandwidth, which is good, especially in production environments.

      +
      + +

      From there, include whatever Bootstrap components and HTML content you need to create templates for your site's pages.

      + +

      Customizing components

      +

      You can customize components to varying degrees, but most fall into two camps: light customizations and overhauls. Plenty examples of both are available from third parties.

      +

      We define light customizations as superficial changes, for example, color and font changes to existing Bootstrap components. A light customization example is the Twitter Translation Center (coded by @mdo). Let's look at how to implement the custom button we wrote for this site, .btn-ttc.

      +

      The stock Bootstrap buttons require just one class, .btn, to start. Here we extend the .btn style with a new modifier class, .btn-ttc, that we will create. This gives us a distinct custom look with minimal effort.

      +

      Our customized button will be coded like this:

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

      Note how .btn-ttc is added to the standard .btn class.

      + +

      To implement this, in the custom stylesheet, add the following CSS:

      + +{% highlight css %} +/* Custom button +-------------------------------------------------- */ + +/* Override base .btn styles */ +/* Apply text and background changes to three key states: default, hover, and active (click). */ +.btn-ttc, +.btn-ttc:hover, +.btn-ttc:active { + color: white; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #007da7; +} + +/* Apply the custom-colored gradients */ +/* Note: you'll need to include all the appropriate gradients for various browsers and standards. */ +.btn-ttc { + background-repeat: repeat-x; + background-image: linear-gradient(top, #009ED2 0%, #007DA7 100%); + ... +} + +/* Set the hover state */ +/* An easy hover state is just to move the gradient up a small amount. Add other embellishments as you see fit. */ +.btn-ttc:hover { + background-position: 0 -15px; +} +{% endhighlight %} + +

      In short: Look to the style source and duplicate the selectors you need for your modifications.

      +

      In summary, here's the basic workflow:

      +
        +
      • For each element you want to customize, find its code in the compiled Bootstrap CSS.
      • +
      • Copy the component's selector and styles and paste them in your custom stylesheet. For instance, to customize the navbar background, just copy the .navbar style specification.
      • +
      • In your custom stylesheet, edit the CSS you just copied from the Bootstrap source. No need for prepending additional classes, or appending !important here. Keep it simple.
      • +
      • Rinse and repeat until you're happy with your customizations.
      • +
      +

      Once you are comfortable performing light customizations, visual overhauls are just as straightforward. For a site like Karma, which uses Bootstrap as a CSS reset with heavy modifications, more extensive work is involved. But the same principle applies: include Bootstrap's default stylesheet first, then apply your custom stylesheet.

      + +
      +

      Alternate customization methods

      +

      While not recommended for folks new to Bootstrap, you may use one of two alternate methods for customization. The first is modifying the source .less files (making upgrades super difficult), and the second is mapping source LESS code to your own classes via mixins. For the time being, neither of those options are documented here.

      +
      + +

      Removing potential bloat

      +

      Not all sites and applications need to make use of everything Bootstrap has to offer, especially in production environments where optimizing bandwidth is an issue. We encourage you to remove whatever is unused with our Customizer.

      +

      Using the Customizer, simply uncheck any component, feature, or asset you don't need. Hit download and swap out the default Bootstrap files with these newly customized ones. You'll get vanilla Bootstrap, but without the features *you* deem unnecessary. All custom builds include compiled and minified versions, so use whichever works for you.

      + +
      diff --git a/app/bower_components/sass-bootstrap/index.html b/app/bower_components/sass-bootstrap/index.html new file mode 100644 index 0000000..9e8485e --- /dev/null +++ b/app/bower_components/sass-bootstrap/index.html @@ -0,0 +1,16 @@ +--- +layout: home +title: Bootstrap +base_url: "./" +--- + +
      +
      +

      Bootstrap

      +

      Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.

      +

      + Download Bootstrap + Download source +

      +
      +
      diff --git a/app/bower_components/sass-bootstrap/javascript.html b/app/bower_components/sass-bootstrap/javascript.html new file mode 100644 index 0000000..06a0bd0 --- /dev/null +++ b/app/bower_components/sass-bootstrap/javascript.html @@ -0,0 +1,1983 @@ +--- +layout: default +title: JavaScript +slug: js +lead: "Bring Bootstrap's components to life with over a dozen custom jQuery plugins. Easily include them all, or one by one." +base_url: "../" +--- + + + +
      + + +

      Individual or compiled

      +

      Plugins can be included individually (using Bootstrap's individual *.js files), or all at once (using bootstrap.js or the minified bootstrap.min.js).

      + +
      +

      Do not attempt to include both.

      +

      Both bootstrap.js and bootstrap.min.js contain all plugins in a single file.

      +
      + +
      +

      Plugin dependencies

      +

      Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included before the plugin files). Consult our bower.json to see which versions of jQuery are supported.

      +
      + +

      Data attributes

      +

      You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first-class API and should be your first consideration when using a plugin.

      + +

      That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the document namespaced with data-api. This looks like this: +{% highlight js %} +$(document).off('.data-api') +{% endhighlight %} + +

      Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:

      +{% highlight js %} +$(document).off('.alert.data-api') +{% endhighlight %} + +

      Programmatic API

      +

      We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.

      +{% highlight js %} +$(".btn.danger").button("toggle").addClass("fat") +{% endhighlight %} + +

      All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):

      +{% highlight js %} +$("#myModal").modal() // initialized with defaults +$("#myModal").modal({ keyboard: false }) // initialized with no keyboard +$("#myModal").modal('show') // initializes and invokes show immediately

      +{% endhighlight %} + +

      Each plugin also exposes its raw constructor on a Constructor property: $.fn.popover.Constructor. If you'd like to get a particular plugin instance, retrieve it directly from an element: $('[rel=popover]').data('popover').

      + +

      No conflict

      +

      Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.

      +{% highlight js %} +var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value +$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality +{% endhighlight %} + +

      Events

      +

      Bootstrap provides custom events for most plugin's unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is trigger on the completion of an action.

      +

      As of 3.0.0, all Bootstrap events are namespaced.

      +

      All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.

      +{% highlight js %} +$('#myModal').on('show.bs.modal', function (e) { + if (!data) return e.preventDefault() // stops modal from being shown +}) +{% endhighlight %} + +
      +

      Third-party libraries

      +

      Bootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite .noConflict and namespaced events, there may be compatibility problems that you need to fix on your own. Ask on the mailing list if you need help.

      +
      +
      + + + + +
      + +

      About transitions

      +

      For simple transition effects, include transition.js once alongside the other JS files. If you're using the compiled (or minified) bootstrap.js, there is no need to include this—it's already there.

      +

      What's inside

      +

      Transition.js is a basic helper for transitionEnd events as well as a CSS transition emulator. It's used by the other plugins to check for CSS transition support and to catch hanging transitions.

      +
      + + + + +
      + + +

      Examples

      +

      Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.

      + +
      +

      Overlapping modals not supported

      +

      Be sure not to open a modal while another is still visible. Showing more than one modal at a time requires custom code.

      +
      +
      +

      Mobile device caveats

      +

      There are some caveats regarding using modals on mobile devices. See our browser support docs for details.

      +
      + +

      Static example

      +

      A rendered modal with header, body, and set of actions in the footer.

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

      Live demo

      +

      Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.

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

      Make modals accessible

      +

      Be sure to add role="dialog" to .modal, aria-labelledby="myModalLabel" attribute to reference the modal title, and aria-hidden="true" to tell assistive technologies to skip the modal's DOM elements.

      +

      Additionally, you may give a description of your modal dialog with aria-describedby on .modal.

      +
      + +

      Usage

      +

      The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds .model-open to the <body> to override default scrolling behavior and generates a .modal-backdrop to provide a click area for dismissing shown modals when clicking outside the modal.

      + +

      Via data attributes

      +

      Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.

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

      Via JavaScript

      +

      Call a modal with id myModal with a single line of JavaScript:

      + {% highlight js %}$('#myModal').modal(options){% endhighlight %} + +

      Options

      +

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

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Nametypedefaultdescription
      backdropboolean or the string 'static'trueIncludes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
      keyboardbooleantrueCloses the modal when escape key is pressed
      showbooleantrueShows the modal when initialized.
      remotepathfalse

      If a remote URL is provided, content will be loaded via jQuery's load method and injected into the root of the modal element. If you're using the data-api, you may alternatively use the href attribute to specify the remote source. An example of this is shown below:

      +{% highlight html %} +Click me +{% endhighlight %} +
      +
      + +

      Methods

      + +

      .modal(options)

      +

      Activates your content as a modal. Accepts an optional options object.

      +{% highlight js %} +$('#myModal').modal({ + keyboard: false +}) +{% endhighlight %} + +

      .modal('toggle')

      +

      Manually toggles a modal.

      + {% highlight js %}$('#myModal').modal('toggle'){% endhighlight %} + +

      .modal('show')

      +

      Manually opens a modal.

      + {% highlight js %}$('#myModal').modal('show'){% endhighlight %} + +

      .modal('hide')

      +

      Manually hides a modal.

      + {% highlight js %}$('#myModal').modal('hide'){% endhighlight %} + +

      Events

      +

      Bootstrap's modal class exposes a few events for hooking into modal functionality.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      show.bs.modalThis event fires immediately when the show instance method is called.
      shown.bs.modalThis event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete).
      hide.bs.modalThis event is fired immediately when the hide instance method has been called.
      hidden.bs.modalThis event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).
      +
      +{% highlight js %} +$('#myModal').on('hidden.bs.modal', function () { + // do something… +}) +{% endhighlight %} +
      + + + + +
      + + + +

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

      + +

      Within a navbar

      + + +

      Within tabs

      + + + + +

      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.

      + +

      Via data attributes

      +

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

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

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

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

      Via JavaScript

      +

      Call the dropdowns via JavaScript:

      +{% highlight js %} +$('.dropdown-toggle').dropdown() +{% endhighlight %} + +

      Options

      +

      None

      + +

      Methods

      +

      $().dropdown('toggle')

      +

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

      + +

      Events

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      show.bs.dropdownThis event fires immediately when the show instance method is called.
      shown.bs.dropdownThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
      hide.bs.dropdownThis event is fired immediately when the hide instance method has been called.
      hidden.bs.dropdownThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
      +
      +{% highlight js %} +$('#myDropdown').on('show.bs.dropdown', function () { + // do something… +}) +{% endhighlight %} +
      + + +
      + + + +

      Example in navbar

      +

      The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.

      +
      + +
      +

      @fat

      +

      Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

      +

      @mdo

      +

      Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

      +

      one

      +

      Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

      +

      two

      +

      In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

      +

      three

      +

      Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

      +

      Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. +

      +
      +
      + + +

      Usage

      + +

      Via data attributes

      +

      To easily add scrollspy behavior to your topbar navigation, add data-spy="scroll" to the element you want to spy on (most typically this would be the <body>). Then add the data-target attribute with the ID or class of the parent element of any Bootstrap .nav component.

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

      Via JavaScript

      +

      Call the scrollspy via JavaScript:

      +{% highlight js %} +$('body').scrollspy({ target: '#navbar-example' }) +{% endhighlight %} + +
      +

      Resolvable ID targets required

      +

      Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the DOM like <div id="home"></div>.

      +
      + +

      Methods

      +

      .scrollspy('refresh')

      +

      When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:

      +{% highlight js %} +$('[data-spy="scroll"]').each(function () { + var $spy = $(this).scrollspy('refresh') +}) +{% endhighlight %} + + +

      Options

      +

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

      +
      + + + + + + + + + + + + + + + + + +
      Nametypedefaultdescription
      offsetnumber10Pixels to offset from top when calculating position of scroll.
      +
      + +

      Events

      +
      + + + + + + + + + + + + + +
      Event TypeDescription
      activate.bs.scrollspyThis event fires whenever a new item becomes activated by the scrollspy.
      +
      +{% highlight js %} +$('#myScrollspy').on('activate.bs.scrollspy', function () { + // do something… +}) +{% endhighlight %} +
      + + + + +
      + + +

      Example tabs

      +

      Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.

      +
      + +
      +
      +

      Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

      +
      +
      +

      Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

      +
      + + +
      +
      + +
      +

      Extends tabbed navigation

      +

      This plugin extends the tabbed navigation component to add tabbable areas.

      +
      + + +

      Usage

      +

      Enable tabbable tabs via JavaScript (each tab needs to be activated individually):

      +{% highlight js %} +$('#myTab a').click(function (e) { + e.preventDefault() + $(this).tab('show') +}) +{% endhighlight %} + +

      You can activate individual tabs in several ways:

      +{% highlight js %} +$('#myTab a[href="#profile"]').tab('show') // Select tab by name +$('#myTab a:first').tab('show') // Select first tab +$('#myTab a:last').tab('show') // Select last tab +$('#myTab li:eq(2) a').tab('show') // Select third tab (0-indexed) +{% endhighlight %} + +

      Markup

      +

      You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Adding the nav and nav-tabs classes to the tab ul will apply the Bootstrap tab styling, while adding the nav and nav-pills classes will apply pill styling.

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

      Fade effect

      +

      To make tabs fade in, add .fade to each .tab-pane. The first tab pane must also have .in to properly fade in initial content.

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

      Methods

      +

      $().tab

      +

      + Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM. +

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

      Events

      +
      + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      show.bs.tabThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
      shown.bs.tabThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
      +
      +{% highlight js %} +$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + e.target // activated tab + e.relatedTarget // previous tab +}) +{% endhighlight %} +
      + + + + +
      + + +

      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

      +
      +
      + + + + +
      +
      + +
      +

      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:

      +{% highlight js %} +$('#example').tooltip(options) +{% endhighlight %} + +

      Markup

      +

      The generated markup of a tooltip is rather simple, though it does require a position (by default, set to top by the plugin).

      +{% highlight html linenos %} +
      +
      + Tooltip! +
      +
      +
      +{% endhighlight %} + +

      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.

      +
      + +

      Markup

      +{% highlight html %} +Hover over me +{% endhighlight %} + +

      Methods

      + +

      $().tooltip(options)

      +

      Attaches a tooltip handler to an element collection.

      + +

      .tooltip('show')

      +

      Reveals an element's tooltip.

      + {% highlight js %}$('#element').tooltip('show'){% endhighlight %} + +

      .tooltip('hide')

      +

      Hides an element's tooltip.

      + {% highlight js %}$('#element').tooltip('hide'){% endhighlight %} + +

      .tooltip('toggle')

      +

      Toggles an element's tooltip.

      + {% highlight js %}$('#element').tooltip('toggle'){% endhighlight %} + +

      .tooltip('destroy')

      +

      Hides and destroys an element's tooltip.

      + {% highlight js %}$('#element').tooltip('destroy'){% endhighlight %} + +

      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).
      +
      +{% highlight js %} +$('#myTooltip').on('hidden.bs.tooltip', function () { + // do something… +}) +{% endhighlight %} +
      + + +
      + + +

      Examples

      +

      Add small overlays of content, like those on the iPad, to any element for housing secondary information.

      + +
      +

      Plugin dependency

      +

      Popovers require the tooltip plugin to be included in your version of Bootstrap.

      +
      +
      +

      Opt-in functionality

      +

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

      +
      +
      +

      Popovers in button groups and input groups require special setting

      +

      When using popovers 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 popover is triggered).

      +
      +
      +

      Popovers on disabled elements require wrapper elements

      +

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

      +
      + +

      Static popover

      +

      Four options are available: top, right, bottom, and left aligned.

      +
      +
      +
      +

      Popover top

      +
      +

      Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

      +
      +
      + +
      +
      +

      Popover right

      +
      +

      Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

      +
      +
      + +
      +
      +

      Popover bottom

      + +
      +

      Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

      +
      +
      + +
      +
      +

      Popover left

      +
      +

      Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

      +
      +
      + +
      +
      + +

      Live demo

      + + +

      Four directions

      +
      +
      + + + + +
      +
      + + +

      Usage

      +

      Enable popovers via JavaScript:

      + {% highlight js %}$('#example').popover(options){% endhighlight %} + +

      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 popover. 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'right'how to position the popover - top | bottom | left | right | auto.
      When "auto" is specified, it will dynamically reorient the popover. 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. in practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example.
      triggerstring'click'how popover is triggered - click | hover | focus | manual
      titlestring | function''default title value if title attribute isn't present
      contentstring | function''default content value if data-content attribute isn't present
      delaynumber | object0 +

      delay showing and hiding the popover (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 popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.

      +
      +
      +
      +

      Data attributes for individual popovers

      +

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

      +
      + +

      Methods

      +

      $().popover(options)

      +

      Initializes popovers for an element collection.

      + +

      .popover('show')

      +

      Reveals an elements popover.

      + {% highlight js %}$('#element').popover('show'){% endhighlight %} + +

      .popover('hide')

      +

      Hides an elements popover.

      + {% highlight js %}$('#element').popover('hide'){% endhighlight %} + +

      .popover('toggle')

      +

      Toggles an elements popover.

      + {% highlight js %}$('#element').popover('toggle'){% endhighlight %} + +

      .popover('destroy')

      +

      Hides and destroys an element's popover.

      + {% highlight js %}$('#element').popover('destroy'){% endhighlight %} +

      Events

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      show.bs.popoverThis event fires immediately when the show instance method is called.
      shown.bs.popoverThis event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).
      hide.bs.popoverThis event is fired immediately when the hide instance method has been called.
      hidden.bs.popoverThis event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).
      +
      +{% highlight js %} +$('#myPopover').on('hidden.bs.popover', function () { + // do something… +}) +{% endhighlight %} +
      + + +
      + + + +

      Example alerts

      +

      Add dismiss functionality to all alert messages with this plugin.

      +
      +
      + + Holy guacamole! Best check yo self, you're not looking too good. +
      +
      + +
      +
      + +

      Oh snap! You got an error!

      +

      Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.

      +

      + + +

      +
      +
      + + +

      Usage

      +

      Enable dismissal of an alert via JavaScript:

      + {% highlight js %}$(".alert").alert(){% endhighlight %} + +

      Markup

      +

      Just add data-dismiss="alert" to your close button to automatically give an alert close functionality.

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

      Methods

      + +

      $().alert()

      +

      Wraps all alerts with close functionality. To have your alerts animate out when closed, make sure they have the .fade and .in class already applied to them.

      + +

      .alert('close')

      +

      Closes an alert.

      + {% highlight js %}$(".alert").alert('close'){% endhighlight %} + + +

      Events

      +

      Bootstrap's alert class exposes a few events for hooking into alert functionality.

      +
      + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      close.bs.alertThis event fires immediately when the close instance method is called.
      closed.bs.alertThis event is fired when the alert has been closed (will wait for CSS transitions to complete).
      +
      +{% highlight js %} +$('#my-alert').bind('closed.bs.alert', function () { + // do something… +}) +{% endhighlight %} +
      + + + + +
      + + +

      Example uses

      +

      Do more with buttons. Control button states or create groups of buttons for more components like toolbars.

      + +

      Stateful

      +

      Add data-loading-text="Loading..." to use a loading state on a button.

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

      Single toggle

      +

      Add data-toggle="button" to activate toggling on a single button.

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

      Checkbox

      +

      Add data-toggle="buttons" to a group of checkboxes for checkbox style toggling on btn-group.

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

      Radio

      +

      Add data-toggle="buttons" to a group of radio inputs for radio style toggling on btn-group.

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

      Usage

      +

      Enable buttons via JavaScript:

      +{% highlight js %} +$('.btn-group').button() +{% endhighlight %} + +

      Markup

      +

      Data attributes are integral to the button plugin. Check out the example code below for the various markup types.

      + +

      Options

      +

      None

      + +

      Methods

      + +

      $().button('toggle')

      +

      Toggles push state. Gives the button the appearance that it has been activated.

      +
      +

      Auto toggling

      +

      You can enable auto toggling of a button by using the data-toggle attribute.

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

      $().button('loading')

      +

      Sets button state to loading - disables button and swaps text to loading text. Loading text should be defined on the button element using the data attribute data-loading-text. +

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

      Cross-browser compatibility

      +

      Firefox persists the disabled state across page loads. A workaround for this is to use autocomplete="off".

      +
      + +

      $().button('reset')

      +

      Resets button state - swaps text to original text.

      + +

      $().button(string)

      +

      Resets button state - swaps text to any data defined text state.

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

      About

      +

      Get base styles and flexible support for collapsible components like accordions and navigation.

      + +
      +

      Plugin dependency

      +

      Collapse requires the transitions plugin to be included in your version of Bootstrap.

      +
      + +

      Example accordion

      +

      Using the collapse plugin, we built a simple accordion by extending the panel component.

      + +
      +
      +
      + +
      +
      + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
      +
      +
      +
      + +
      +
      + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
      +
      +
      +
      + +
      +
      + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
      +
      +
      +
      +
      +{% highlight html %} +
      +
      + +
      +
      + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
      +
      +
      +
      + +
      +
      + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
      +
      +
      +
      + +
      +
      + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. +
      +
      +
      +
      +{% endhighlight %} + +

      You can also use the plugin without the accordion markup. Make a button toggle the expanding and collapsing of another element.

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

      Usage

      +

      The collapse plugin utilizes a few classes to handle the heavy lifting:

      +
        +
      • .collapse hides the content
      • +
      • .collapse.in shows the content
      • +
      • .collapsing is added when the transition starts, and removed when it finishes
      • +
      +

      These classes can be found in component-animations.less.

      + +

      Via data attributes

      +

      Just add data-toggle="collapse" and a data-target to element to automatically assign control of a collapsible element. The data-target attribute accepts a CSS selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class in.

      +

      To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector". Refer to the demo to see this in action.

      + +

      Via JavaScript

      +

      Enable manually with:

      +{% highlight js %} +$(".collapse").collapse() +{% endhighlight %} + +

      Options

      +

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

      +
      + + + + + + + + + + + + + + + + + + + + + + + +
      Nametypedefaultdescription
      parentselectorfalseIf selector then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this dependent on the accordion-group class)
      togglebooleantrueToggles the collapsible element on invocation
      +
      + +

      Methods

      + +

      .collapse(options)

      +

      Activates your content as a collapsible element. Accepts an optional options object. +{% highlight js %} +$('#myCollapsible').collapse({ + toggle: false +}) +{% endhighlight %} + +

      .collapse('toggle')

      +

      Toggles a collapsible element to shown or hidden.

      + +

      .collapse('show')

      +

      Shows a collapsible element.

      + +

      .collapse('hide')

      +

      Hides a collapsible element.

      + +

      Events

      +

      Bootstrap's collapse class exposes a few events for hooking into collapse functionality.

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      show.bs.collapseThis event fires immediately when the show instance method is called.
      shown.bs.collapseThis event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete).
      hide.bs.collapse + This event is fired immediately when the hide method has been called. +
      hidden.bs.collapseThis event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete).
      +
      +{% highlight js %} +$('#myCollapsible').on('hidden.bs.collapse', function () { + // do something… +}) +{% endhighlight %} +
      + + + + +
      + + + +

      The slideshow below shows a generic plugin and component for cycling through elements like a carousel.

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

      Optional captions

      +

      Add captions to your slides easily with the .carousel-caption element within any .item. Place just about any optional HTML within there and it will be automatically aligned and formatted.

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

      Accessibility issue

      +

      The carousel component is generally not compliant with accessibility standards. If you need to be compliant, please consider other options for presenting your content.

      +
      + + + +

      Via data attributes

      +

      Use data attributes to easily control the position of the carousel. data-slide accepts the keywords prev or next, which alters the slide position relative to its current position. Alternatively, use data-slide-to to pass a raw slide index to the carousel data-slide-to="2", which shifts the slide position to a particular index beginning with 0.

      +

      The data-ride="carousel" attribute is used to mark a carousel as animating starting at page load.

      + +

      Via JavaScript

      +

      Call carousel manually with:

      +{% highlight js %} +$('.carousel').carousel() +{% endhighlight %} + +

      Options

      +

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

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Nametypedefaultdescription
      intervalnumber5000The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle.
      pausestring"hover"Pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave.
      wrapbooleantrueWhether the carousel should cycle continuously or have hard stops.
      +
      + +

      Methods

      + +

      .carousel(options)

      +

      Initializes the carousel with an optional options object and starts cycling through items.

      +{% highlight js %} +$('.carousel').carousel({ + interval: 2000 +}) +{% endhighlight %} + +

      .carousel('cycle')

      +

      Cycles through the carousel items from left to right.

      + +

      .carousel('pause')

      +

      Stops the carousel from cycling through items.

      + + +

      .carousel(number)

      +

      Cycles the carousel to a particular frame (0 based, similar to an array).

      + +

      .carousel('prev')

      +

      Cycles to the previous item.

      + +

      .carousel('next')

      +

      Cycles to the next item.

      + +

      Events

      +

      Bootstrap's carousel class exposes two events for hooking into carousel functionality.

      +
      + + + + + + + + + + + + + + + + + +
      Event TypeDescription
      slide.bs.carouselThis event fires immediately when the slide instance method is invoked.
      slid.bs.carouselThis event is fired when the carousel has completed its slide transition.
      +
      +{% highlight js %} +$('#myCarousel').on('slide.bs.carousel', function () { + // do something… +}) +{% endhighlight %} +
      + + + + +
      + + +

      Example

      +

      The subnavigation on the left is a live demo of the affix plugin.

      + +
      + +

      Usage

      + +

      Via data attributes

      +

      To easily add affix behavior to any element, just add data-spy="affix" to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.

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

      Requires independent styling ;)

      +

      + Affix toggles between three states/classes: .affix, .affix-top, and .affix-bottom. You must provide the styles for these classes yourself (independent of this plugin). + The .affix-top class should be in the regular flow of the document. The .affix class should be position: fixed. And .affix-bottom should be position: absolute. Note: .affix-bottom is special in that the plugin will place the element with JS relative to the offset: { bottom: number } option you've provided. +

      +
      + +

      Via JavaScript

      +

      Call the affix plugin via JavaScript:

      +{% highlight js %} + $('#myAffix').affix({ + offset: { + top: 100 + , bottom: function () { + return (this.bottom = $('.bs-footer').outerHeight(true)) + } + } + }) +{% endhighlight %} + + +

      Options

      +

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

      + +
      + + + + + + + + + + + + + + + + + +
      Nametypedefaultdescription
      offsetnumber | function | object10Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and bottom directions. To provide a unique, bottom and top offset just provide an object offset: { top: 10 } or offset: { top: 10, bottom: 5 }. Use a function when you need to dynamically calculate an offset.
      +
      + +
      diff --git a/app/bower_components/sass-bootstrap/js/affix.js b/app/bower_components/sass-bootstrap/js/affix.js new file mode 100644 index 0000000..7d111ec --- /dev/null +++ b/app/bower_components/sass-bootstrap/js/affix.js @@ -0,0 +1,126 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.0.2 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + this.$window = $(window) + .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 = + this.unpin = null + + this.checkPosition() + } + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0 + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var scrollHeight = $(document).height() + var scrollTop = this.$window.scrollTop() + var position = this.$element.offset() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top() + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + + var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false : + offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' : + offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false + + if (this.affixed === affix) return + if (this.unpin) this.$element.css('top', '') + + this.affixed = affix + this.unpin = affix == 'bottom' ? position.top - scrollTop : null + + this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : '')) + + if (affix == 'bottom') { + this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + var old = $.fn.affix + + $.fn.affix = function (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]() + }) + } + + $.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) data.offset.bottom = data.offsetBottom + if (data.offsetTop) data.offset.top = data.offsetTop + + $spy.affix(data) + }) + }) + +}(jQuery); diff --git a/app/bower_components/sass-bootstrap/js/alert.js b/app/bower_components/sass-bootstrap/js/alert.js new file mode 100644 index 0000000..031d72a --- /dev/null +++ b/app/bower_components/sass-bootstrap/js/alert.js @@ -0,0 +1,98 @@ +/* ======================================================================== + * Bootstrap: alert.js v3.0.2 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); diff --git a/app/bower_components/sass-bootstrap/js/button.js b/app/bower_components/sass-bootstrap/js/button.js new file mode 100644 index 0000000..0145689 --- /dev/null +++ b/app/bower_components/sass-bootstrap/js/button.js @@ -0,0 +1,109 @@ +/* ======================================================================== + * Bootstrap: button.js v3.0.2 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d); + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + .prop('checked', !this.$element.hasClass('active')) + .trigger('change') + if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') + } + + this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); diff --git a/app/bower_components/sass-bootstrap/js/carousel.js b/app/bower_components/sass-bootstrap/js/carousel.js new file mode 100644 index 0000000..902d4d7 --- /dev/null +++ b/app/bower_components/sass-bootstrap/js/carousel.js @@ -0,0 +1,217 @@ +/* ======================================================================== + * Bootstrap: carousel.js v3.0.2 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000 + , pause: 'hover' + , wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); diff --git a/app/bower_components/sass-bootstrap/js/collapse.js b/app/bower_components/sass-bootstrap/js/collapse.js new file mode 100644 index 0000000..9967b16 --- /dev/null +++ b/app/bower_components/sass-bootstrap/js/collapse.js @@ -0,0 +1,179 @@ +/* ======================================================================== + * Bootstrap: collapse.js v3.0.2 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); diff --git a/app/bower_components/sass-bootstrap/js/dropdown.js b/app/bower_components/sass-bootstrap/js/dropdown.js new file mode 100644 index 0000000..d5da638 --- /dev/null +++ b/app/bower_components/sass-bootstrap/js/dropdown.js @@ -0,0 +1,154 @@ +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.2 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we we use a backdrop because click events don't delegate + $('

      {C2lSuIAa6L5T|7^E*Uf4HS# zxzXfY_7BSSJ&E<^^D*dqe!f2A|JGUd6ulq3`{aZ_KP-H8Iy@ZQEnGkT1IXt82jIKo z{rTZ3{~^#)QM_JKn<8(Jz2b&|fyuA9>lpXwygm7Q zpVvnunpQE@C>?myc_#3={@qf3L^^+(~RL;PJerj3ck7>zr3FR zzTTfW>-+R@{cFF(9=MAL@RcvU#-4Qd$l-EX+0gT8&waiufAje0ZqN91S^0bUes1;a zx^~m;<>CFd_Fd2CtH+=pB$G0uNP^f0?*0eje1P1?HKv=>-S|5XPNCT}+>$-BI-*E}qub|%rdXrpIaGdpXD|2cEY2fRAZHFH%!=UK)2Sx!xYFW4!(D~{?9m*mY zQBrxKY^@ox2NV&ba;-P2)7!D$xAZ@Y2kC@oK+SuIo_qf&UYOt*>en=ZZ|b{J4C}zV zdpv*)25F5Os#Qhd7un~bL7lEUNTge6BX~g$bEt$2 z<#T#ZLwx%x5^DpmMD{)~=hr@1`d9$~Brw2_o>!zJYH8)9;{V+bDH$m6P|aXu zVgU5F<5`tKs))ZJdk2jfpGX(=L*m%{Hk0_JCuVbEq4jAgm8FjE?~kcWerPcpMhid+V=`=lg*=q|k2EQBB`9Ok@(6&+PI7R4 zOUEp66p=nt`(0yiW}$fl>&S?;))JaGvEP3FO@66DHmA?@`Xl$SIOE4nP z$kfW1p=k>0F2~e4Zq<|p1=O9|Ht|KI&nomv5D3AIlU2=UGtzQ*IdUDmQ^lZ5;Y_rq z2I7(S6`1Wr+}8dr-wTbpK#il19LDSM{dGb}kuCW@ zkTJaKB8|{$3aluhT4;D2KiGAg4@$Cp{JKyWNCYt}3F;XkOp^lY(RbiF@_o2wL`bnT z4ntXmRVEYwB&^sbdqY|N7-=SozqC{Hm9SUP%EJ;5+`64L_1iV7U(qHOh6wWcIK(8B zE}i&plCX+7i9Bg3eD#h#`!*cQN!)T#i| zXn5~Y$I-x>5HzVh;i7;@KvE2OIA>WwF-lAbDu93s{DxJiAgTid_6g-B>e)_vO4gwS z@HuPP5=j)0RY@GaLevduK-`G%oU9#GDw7i`zQJz+1{Y|G5=2cMb|A)1`b18#ObBHy zzi_ImyZ-=@Ggf{ucP&M_4Ul|UPZqh%5d=lt3&mh<7jVF%Aa)h0z%ZB`i6|^bz#gEJ z*g_g=fk<8y+J_;OlZweY18_hmUXT|eStojHtzb}>1f+tYsi7zaPH4I?&_te45P(JI zjHJ+!4iN%t2o6+OZB-jHbwotJYqBP^P^$X!PZjUHI`~Ym5(NMdU@=wUkc3h^ihB;i z#Jp}4F^W}?YN8u=p4i0bASwaf!@xNn@_}do1Ei41-~b0+kF}mNF-JMjV4L}((xeq2etc8sNAs$ya=Fz%<0FsqBK_^f!<|eUv^`sQnOY}LZf*S#vYNW;&lH2pV9{!)_|~* zlPDw^SL-)NWtv(_oB|(+-AXIaf8x50Oxr?(C~9wR+#EpquSf+39+TU`umLZlT(H>8 ztg)J)aE*bD$cQk2>?99ctAEb^e!>bQ&vQ50xx{Kc>*M+J-YTlQ`igAl7U$;w0MPZG z=5ueJ<^aUE=goyXRD5707-zZjniEs+_x$I%fizb=-<(-i&%fu+DWy$!T+BVi&W0JH=OI?zm*UI`e37>q6v6s*^ogpg2y z00S4ElpvjWDW#&)++-nQfC0ON{G*scLVCrCG(!uznwONcF$0+aN~;+s+#m!Ef3!^2 z_~yrMkpdmHEW^KK+z9P0(}t7~Oa-9WWkeAu;tAP%X zK&IAqoz&1+I@i#XB@Cf+t~rLt0*7V>!88L&RRgeG`;=-mSI7aZr~*kKhAq$`m8VLj za*%?O5`_)HsFsZTT$><>x)b9~^g6`ywcIpi*i@9Y&tN+<^yF)Ml literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/sticky-footer.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/sticky-footer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..644f6dd2694add5e4c717724aac2117accae7772 GIT binary patch literal 25056 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 literal 0 HcmV?d00001 diff --git a/app/bower_components/sass-bootstrap/examples/screenshots/theme.jpg b/app/bower_components/sass-bootstrap/examples/screenshots/theme.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef47acb9c72cf2b9eace321ee54cdcaa583d481a GIT binary patch literal 95407 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 kk!WO7-YU~-+Amk+Dx%NrV + + + + + + + + + + Signin Template for Bootstrap + + + + + + + + + + + + + + + + +