{{navGroup.name}}
++
diff --git a/docs/app/assets/css/docs.css b/docs/app/assets/css/docs.css
index ddd73f213ef9..d7ccdc148eed 100644
--- a/docs/app/assets/css/docs.css
+++ b/docs/app/assets/css/docs.css
@@ -1,696 +1,161 @@
-html, body {
- position:relative;
- height:100%;
+md-sidenav.md-locked-open[flex="20"] {
+ width: 20%;
}
-#wrapper {
- min-height:100%;
- position:relative;
- padding-bottom:120px;
+md-sidenav.md-locked-open[flex="25"] {
+ width: 25%;
}
-.footer {
- border-top:20px solid white;
- position:absolute;
- bottom:0;
- left:0;
- right:0;
- z-index:100;
- padding-top: 2em;
- background-color: #333;
- color: white;
- padding-bottom: 2em;
-}
-
-.header-fixed {
- position:fixed;
- z-index:1000;
- top:0;
- left:0;
- right:0;
-}
-
-.header-branding {
- min-height:41px!important;
-}
-
-.docs-navbar-primary {
- border-radius:0!important;
- margin-bottom:0!important;
-}
-
-/* Logo */
-/*.dropdown-menu {
- display:none;
-}
-*/
-h1,h2,h3,h4,h5,h6 {
- font-family: "Open Sans";
-}
-
-.subnav-body {
- margin:70px 0 20px;
-}
-
-.header .brand {
- padding-top: 6px;
- padding-bottom: 0px;
-}
-
-.header .brand img {
- margin-top:5px;
- height: 30px;
-}
-
-.docs-search {
- margin:10px 0;
- padding:4px 0 4px 20px;
- background:white;
- border-radius:20px;
- vertical-align:middle;
-}
-
-.docs-search > .search-query {
- font-size:14px;
- border:0;
- width:80%;
- color:#555;
-}
-
-.docs-search > .search-icon {
- font-size:15px;
- margin-right:10px;
-}
-
-.docs-search > .search-query:focus {
- outline:0;
-}
-
-/* end: Logo */
-
-
-.spacer {
- height: 1em;
-}
-
-
-.icon-cog {
- line-height: 13px;
-}
-
-.naked-list,
-.naked-list ul,
-.naked-list li {
- list-style:none;
- margin:0;
- padding:0;
-}
-
-.nav-index-section a {
- font-weight:bold;
- font-family: "Open Sans";
- color:black!important;
- margin-top:10px;
- display:block;
-}
-
-.nav-index-group {
- margin-bottom:20px!important;
-}
-
-.nav-index-group-heading {
- color:#6F0101;
- font-weight:bold;
- font-size:1.2em;
- padding:0;
- margin:0;
- border-bottom:1px soild #aaa;
- margin-bottom:5px;
-}
-
-.nav-index-group .nav-index-listing.current a {
- color: #B52E31;
-}
-
-.nav-breadcrumb {
- margin:4px 0;
- padding:0;
-}
-
-.nav-breadcrumb-entry {
- font-family: "Open Sans";
- padding:0;
- margin:0;
- font-size:18px;
- display:inline-block;
- vertical-align:middle;
-}
-
-.nav-breadcrumb-entry > .divider {
- color:#555;
- display:inline-block;
- padding-left:8px;
-}
-
-.nav-breadcrumb-entry > span,
-.nav-breadcrumb-entry > a {
- color:#6F0101;
-}
-
-.step-list > li:nth-child(1) {
- padding-left:20px;
-}
-
-.step-list > li:nth-child(2) {
- padding-left:40px;
-}
-
-.step-list > li:nth-child(3) {
- padding-left:60px;
-}
-
-.api-profile-header-heading {
- margin:0;
- padding:0;
-}
-
-.api-profile-header-structure,
-.api-profile-header-structure a {
- font-family: "Open Sans";
- font-weight:bold;
- color:#999;
-}
-
-.api-profile-section {
- margin-top:30px;
- padding-top:30px;
- border-top:1px solid #aaa;
-}
-
-pre {
- white-space: pre-wrap;
- word-break: normal;
-}
-
-.aside-nav a,
-.aside-nav a:link,
-.aside-nav a:visited,
-.aside-nav a:active {
- color:#999;
-}
-.aside-nav a:hover {
- color:black;
-}
-
-.api-profile-description > p:first-child {
- margin:15px 0;
- font-size:18px;
-}
-
-p > code,
-code.highlighted {
- background:#f4f4f4;
- border-radius:5px;
- padding:2px 5px;
- color:maroon;
-}
-
-ul + p {
- margin-top: 10px;
+md-sidenav.md-locked-open[flex="33"] {
+ width: 33%;
}
-.docs-version-jump {
- min-width:100%;
- max-width:100%;
+md-toolbar .md-button.toolbar-btn {
+ border-radius: 0;
+ border-right: 1px solid;
+ margin: 2px 0;
+ padding: 10px 15px;
}
-.picker {
- position: relative;
- width: auto;
- display: inline-block;
- margin: 0 0 2px 1.2%;
- overflow: hidden;
- border: 1px solid #e5e5e5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- -ms-border-radius: 4px;
- -o-border-radius: 4px;
- border-radius: 4px;
- font-family: "Open Sans";
- font-weight: 600;
- height: auto;
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2));
- background-image: -webkit-linear-gradient(#ffffff, #f2f2f2);
- background-image: -moz-linear-gradient(#ffffff, #f2f2f2);
- background-image: -o-linear-gradient(#ffffff, #f2f2f2);
- background-image: linear-gradient(#ffffff, #f2f2f2);
-}
-
-.picker select {
- position: relative;
- display: block;
- min-width: 100%;
- width: 120%;
- height: 34px;
- padding: 6px 30px 6px 15px;
- color: #555555;
- border: none;
- background: transparent;
- outline: none;
- -webkit-appearance: none;
- z-index: 99;
- cursor: pointer;
- font-size: 16px;
- -moz-appearance: none;
- text-indent: 0.01px;
- text-overflow: '';
-}
-
-.picker:after {
- content:"";
- position: absolute;
- right: 8%;
- top: 50%;
- z-index: 0;
- color: #999;
- width: 0;
- margin-top:-2px;
- height: 0;
- border-top: 6px solid;
- border-right: 6px solid transparent;
- border-left: 6px solid transparent;
-}
-
-iframe.example {
- width: 100%;
- border: 1px solid black;
-}
-
-.search-results-frame {
- clear:both;
- display:table;
- width:100%;
-}
-
-.search-results.ng-hide {
- display:none;
-}
-
-.search-results-container {
- padding-bottom:1em;
- border-top:1px solid #111;
- background:#181818;
- box-shadow:inset 0 0 10px #111;
-}
-
-.search-results-container .search-results-group {
- vertical-align:top;
- padding:10px 10px;
- display:inline-block;
-}
-
-.search-results-group-heading {
- font-family: "Open Sans";
- padding-left:10px;
- color:white;
-}
-
-.search-results-frame > .search-results-group:first-child > .search-results {
- border-right:1px solid #050505;
-}
-
-.search-results-group.col-group-api { width:30%; }
-.search-results-group.col-group-guide,
-.search-results-group.col-group-tutorial { width:20%; }
-.search-results-group.col-group-misc,
-.search-results-group.col-group-error { width:15%; float: right; }
-
-
-.search-results-group.col-group-api .search-result {
- width:48%;
- display:inline-block;
-}
-
-.search-close {
- position: absolute;
- bottom: 0;
- left: 50%;
- margin-left: -100px;
- color: white;
- text-align: center;
- padding: 5px;
- background: #333;
- border-top-right-radius: 5px;
- border-top-left-radius: 5px;
- width: 200px;
- box-shadow:0 0 10px #111;
-}
-
-.variables-matrix {
- border:1px solid #ddd;
- width:100%;
- margin:10px 0;
-}
-
-.variables-matrix td,
-.variables-matrix th {
- padding:10px;
-}
-
-.variables-matrix td {
- border-top:1px solid #eee;
-}
-
-.variables-matrix td + td,
-.variables-matrix th + th {
- border-left:1px solid #eee;
-}
-
-.variables-matrix tr:nth-child(even) td {
- background:#f5f5f5;
-}
-
-.variables-matrix th {
- background:#f1f1f1;
-}
-
-.sup-header {
- padding-top:10px;
- padding-bottom:5px;
- background:rgba(245,245,245,0.88);
- box-shadow:0 0 2px #999;
-}
-
-.main-body-grid {
- margin-top:120px;
- position:relative;
-}
-
-.main-body-grid > .grid-left,
-.main-body-grid > .grid-right {
- padding:20px 0;
-}
-
-.main-body-grid > .grid-left {
- position:fixed;
- top:120px;
- bottom:0;
- overflow:auto;
-}
-
-.main-header-grid > .grid-left,
-.main-body-grid > .grid-left {
- width:260px;
-}
-
-.main-header-grid > .grid-right,
-.main-body-grid > .grid-right {
- margin-left:270px;
- position:relative;
-}
-
-.main-header-grid > .grid-left {
- float:left;
-}
-
-.main-body-grid .side-navigation {
- position:relative;
- padding-bottom:120px;
-}
-
-.main-body-grid .side-navigation.ng-hide {
- display:block!important;
-}
-
-.variables-matrix td {
- vertical-align:top;
- padding:5px;
-}
-
-.type-hint {
- display:inline-block;
- background: gray;
-}
-
-.variables-matrix .type-hint {
- text-align:center;
- min-width:60px;
- margin:1px 5px;
-}
-
-.type-hint + .type-hint {
- margin-top:5px;
-}
-
-.type-hint-expression {
- background:purple;
-}
-
-.type-hint-date {
- background:pink;
+.back-to-top {
+ bottom: 10px;
+ display: inline-block;
+ opacity: 0.1;
+ position: absolute;
+ right: 25px;
+ z-index: 3;
}
-.type-hint-string {
- background:#3a87ad;
+.clickable {
+ cursor: pointer;
}
-.type-hint-function {
- background:green;
+.content-area {
+ display: block;
+ padding: 0 15px;
+ text-align: justify;
}
-.type-hint-object {
- background:#999;
+.footer {
+ font-size: 0.7em;
}
-.type-hint-array {
- background:#F90;;
+.footer span {
+ color: White;
+ color: rgba(255, 255, 255, 1.0);
}
-.type-hint-boolean {
- background:rgb(18, 131, 39);
+.logo {
+ padding: 5px 15px;
}
-.type-hint-number {
- background:rgb(189, 63, 66);
+.logo-container {
+ border-right: 1px solid Black;
}
-.type-hint-regexp {
- background: rgb(90, 84, 189);
+.md-tile-left .fa {
+ border: 1px solid #f44336;
+ border-radius: 30px;
+ padding: 16px;
}
-.type-hint-domelement {
- background: rgb(95, 158, 160);
+.md-toolbar-tools md-item {
+ background-color: rgba(0, 0, 0, 0.05);
+ border-bottom: 3px solid Transparent;
+ border-radius: 0;
+ color: White;
+ color: rgba(255, 255, 255, 1.0);
+ margin: 0;
+ margin-right: 1px;
+ padding: 10px;
}
-.runnable-example-frame {
- width:100%;
- height:300px;
- border: 1px solid #ddd;
- border-radius:5px;
+.md-toolbar-tools md-item.active {
+ background-color: rgba(0, 0, 0, 0.1);
+ border-bottom-color: #e53935;
}
-.runnable-example-tabs {
- margin-top:10px;
- margin-bottom:20px;
+.positioned {
+ position: relative;
}
-.tutorial-nav {
- display:block;
+.red {
+ color: #f44336;
}
-h1 + ul, h1 + ul > li,
-h2 + ul, h2 + ul > li,
-ul.tutorial-nav, ul.tutorial-nav > li,
-.usage > ul, .usage > ul > li,
-ul.methods, ul.methods > li,
-ul.events, ul.events > li {
- list-style:none;
- padding:0;
+.reverse-whiteframe-z1 {
+ box-shadow: 0px -2px 5px 0 rgba(0, 0, 0, 0.26);
}
-h2 {
- border-top:1px solid #eee;
- margin-top:30px;
- padding-top:30px;
+.stretched {
+ align-self: stretch;
}
-h4 {
- margin-top:20px;
- padding-top:20px;
+.tight {
+ margin: 0;
+ padding: 0;
}
-.btn {
- color:#428bca;
- position: relative;
- width: auto;
- display: inline-block;
- margin: 0 0 2px;
- overflow: hidden;
- border: 1px solid #e5e5e5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- -ms-border-radius: 4px;
- -o-border-radius: 4px;
- border-radius: 4px;
- font-family: "Open Sans";
- font-weight: 600;
- height: auto;
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2));
- background-image: -webkit-linear-gradient(#ffffff, #f2f2f2);
- background-image: -moz-linear-gradient(#ffffff, #f2f2f2);
- background-image: -o-linear-gradient(#ffffff, #f2f2f2);
- background-image: linear-gradient(#ffffff, #f2f2f2);
+.toolbar-fab {
+ position: absolute;
+ right: 15px;
+ top: calc(100% - 28px);
}
-.btn + .btn {
- margin-left:10px;
+.viewport {
+ bottom: 0;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
}
-.btn:hover {
- color:black!important;
- border: 1px solid #ddd!important;
- background:white!important;
+#sidenav-search.md-locked-open {
+ bottom: 0;
+ position: absolute;
+ top: 64px;
+ transform: translate3d(-100%, 0, 0);
}
-.view-source, .improve-docs {
- position:relative;
- z-index:100;
+#sidenav-toc {
+ overflow-x: hidden;
}
-.view-source {
- margin-right:10px;
+#sidenav-toc.md-locked-open {
+ bottom: 0;
+ position: absolute;
+ top: 64px;
}
-.improve-docs {
- float:right;
+#sidenav-toc a:not(.md-primary) {
+ color: Black;
+ color: rgba(0, 0, 0, 1.0);
}
-.return-arguments,
-.return-arguments th,
-.return-arguments th + th,
-.return-arguments td,
-.return-arguments td + td {
- border-radius:0;
- border:0;
+#sidenav-toc a:not(.md-primary):hover {
+ text-decoration: underline;
}
-.return-arguments td:first-child {
- width:100px;
+#sidenav-toc > md-content {
+ height: 100%;
+ overflow-x: hidden;
+ padding-top: 15px;
}
-ul.methods > li,
-ul.events > li {
- margin-bottom:40px;
+#sidenav-toc > md-content h2 {
+ margin-top: 0;
}
-@media only screen and (min-width: 769px) and (max-width: 991px) {
- .main-body-grid {
- margin-top: 160px;
- }
- .main-body-grid > .grid-left {
- top: 160px;
- }
+#sidenav-toc .md-primary {
+ background-color: rgb(235, 235, 235);
+ background-color: rgba(158, 158, 158, 0.2);
+ border-radius: 0;
+ border-style: solid;
+ border-width: 0 3px 0 3px;
+ font-weight: bold;
}
-@media only screen and (max-width : 768px) {
- .picker, .picker select {
- width:auto;
- display:block;
- margin-bottom:10px;
- }
- .docs-navbar-primary {
- text-align:center;
- }
- .main-body-grid {
- margin-top:0;
- }
- .main-header-grid > .grid-left,
- .main-body-grid > .grid-left,
- .main-header-grid > .grid-right,
- .main-body-grid > .grid-right {
- display:block;
- float:none;
- width:auto!important;
- margin-left:0;
- }
- .main-body-grid > .grid-left,
- .header-fixed, .footer {
- position:static!important;
- }
- .main-body-grid > .grid-left {
- background:#efefef;
- margin-left:-1em;
- margin-right:-1em;
- padding:1em;
- width:auto!important;
- overflow:visible;
- }
- .main-header-grid > .grid-right,
- .main-body-grid > .grid-right {
- margin-left:0;
- }
- .main-body-grid .side-navigation {
- display:block!important;
- }
- .main-body-grid .side-navigation.ng-hide {
- display:none!important;
- }
- .nav-index-group .nav-index-listing {
- display:inline-block;
- padding:3px 0;
- }
- .nav-index-group .nav-index-listing:not(.nav-index-section):after {
- padding-right:5px;
- margin-left:-3px;
- content:", ";
- }
- .nav-index-group .nav-index-listing:last-child:after {
- content:"";
- display:inline-block;
- }
- .nav-index-group .nav-index-section {
- display:block;
- }
- .toc-toggle {
- margin-bottom:20px;
- }
- .toc-close {
+#top-anchor {
position: absolute;
- bottom: -50px;
- left: 50%;
- margin-left: -50%;
- text-align: center;
- padding: 5px;
- background: #eee;
- border-radius: 5px;
- width: 90%;
- border:1px solid #ddd;
- box-shadow:0 0 10px #bbb;
- }
- .navbar-brand {
- float:none;
- text-align:center;
- }
- .search-results-container {
- padding-bottom:60px;
- text-align:left;
- }
- .search-results-group {
- float:none!important;
- display:block!important;
- width:auto!important;
- border:0!important;
- padding:0!important;
- }
- .search-results-group .search-result {
- display:inline-block!important;
- padding:0 5px;
- width:auto!important;
- }
- .search-results-group .search-result:after {
- content:", ";
- }
- #wrapper {
- padding-bottom:0px;
- }
+ top: 0;
}
diff --git a/docs/app/assets/css/docs_old.css b/docs/app/assets/css/docs_old.css
new file mode 100644
index 000000000000..ddd73f213ef9
--- /dev/null
+++ b/docs/app/assets/css/docs_old.css
@@ -0,0 +1,696 @@
+html, body {
+ position:relative;
+ height:100%;
+}
+
+#wrapper {
+ min-height:100%;
+ position:relative;
+ padding-bottom:120px;
+}
+
+.footer {
+ border-top:20px solid white;
+ position:absolute;
+ bottom:0;
+ left:0;
+ right:0;
+ z-index:100;
+ padding-top: 2em;
+ background-color: #333;
+ color: white;
+ padding-bottom: 2em;
+}
+
+.header-fixed {
+ position:fixed;
+ z-index:1000;
+ top:0;
+ left:0;
+ right:0;
+}
+
+.header-branding {
+ min-height:41px!important;
+}
+
+.docs-navbar-primary {
+ border-radius:0!important;
+ margin-bottom:0!important;
+}
+
+/* Logo */
+/*.dropdown-menu {
+ display:none;
+}
+*/
+h1,h2,h3,h4,h5,h6 {
+ font-family: "Open Sans";
+}
+
+.subnav-body {
+ margin:70px 0 20px;
+}
+
+.header .brand {
+ padding-top: 6px;
+ padding-bottom: 0px;
+}
+
+.header .brand img {
+ margin-top:5px;
+ height: 30px;
+}
+
+.docs-search {
+ margin:10px 0;
+ padding:4px 0 4px 20px;
+ background:white;
+ border-radius:20px;
+ vertical-align:middle;
+}
+
+.docs-search > .search-query {
+ font-size:14px;
+ border:0;
+ width:80%;
+ color:#555;
+}
+
+.docs-search > .search-icon {
+ font-size:15px;
+ margin-right:10px;
+}
+
+.docs-search > .search-query:focus {
+ outline:0;
+}
+
+/* end: Logo */
+
+
+.spacer {
+ height: 1em;
+}
+
+
+.icon-cog {
+ line-height: 13px;
+}
+
+.naked-list,
+.naked-list ul,
+.naked-list li {
+ list-style:none;
+ margin:0;
+ padding:0;
+}
+
+.nav-index-section a {
+ font-weight:bold;
+ font-family: "Open Sans";
+ color:black!important;
+ margin-top:10px;
+ display:block;
+}
+
+.nav-index-group {
+ margin-bottom:20px!important;
+}
+
+.nav-index-group-heading {
+ color:#6F0101;
+ font-weight:bold;
+ font-size:1.2em;
+ padding:0;
+ margin:0;
+ border-bottom:1px soild #aaa;
+ margin-bottom:5px;
+}
+
+.nav-index-group .nav-index-listing.current a {
+ color: #B52E31;
+}
+
+.nav-breadcrumb {
+ margin:4px 0;
+ padding:0;
+}
+
+.nav-breadcrumb-entry {
+ font-family: "Open Sans";
+ padding:0;
+ margin:0;
+ font-size:18px;
+ display:inline-block;
+ vertical-align:middle;
+}
+
+.nav-breadcrumb-entry > .divider {
+ color:#555;
+ display:inline-block;
+ padding-left:8px;
+}
+
+.nav-breadcrumb-entry > span,
+.nav-breadcrumb-entry > a {
+ color:#6F0101;
+}
+
+.step-list > li:nth-child(1) {
+ padding-left:20px;
+}
+
+.step-list > li:nth-child(2) {
+ padding-left:40px;
+}
+
+.step-list > li:nth-child(3) {
+ padding-left:60px;
+}
+
+.api-profile-header-heading {
+ margin:0;
+ padding:0;
+}
+
+.api-profile-header-structure,
+.api-profile-header-structure a {
+ font-family: "Open Sans";
+ font-weight:bold;
+ color:#999;
+}
+
+.api-profile-section {
+ margin-top:30px;
+ padding-top:30px;
+ border-top:1px solid #aaa;
+}
+
+pre {
+ white-space: pre-wrap;
+ word-break: normal;
+}
+
+.aside-nav a,
+.aside-nav a:link,
+.aside-nav a:visited,
+.aside-nav a:active {
+ color:#999;
+}
+.aside-nav a:hover {
+ color:black;
+}
+
+.api-profile-description > p:first-child {
+ margin:15px 0;
+ font-size:18px;
+}
+
+p > code,
+code.highlighted {
+ background:#f4f4f4;
+ border-radius:5px;
+ padding:2px 5px;
+ color:maroon;
+}
+
+ul + p {
+ margin-top: 10px;
+}
+
+.docs-version-jump {
+ min-width:100%;
+ max-width:100%;
+}
+
+.picker {
+ position: relative;
+ width: auto;
+ display: inline-block;
+ margin: 0 0 2px 1.2%;
+ overflow: hidden;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ font-family: "Open Sans";
+ font-weight: 600;
+ height: auto;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2));
+ background-image: -webkit-linear-gradient(#ffffff, #f2f2f2);
+ background-image: -moz-linear-gradient(#ffffff, #f2f2f2);
+ background-image: -o-linear-gradient(#ffffff, #f2f2f2);
+ background-image: linear-gradient(#ffffff, #f2f2f2);
+}
+
+.picker select {
+ position: relative;
+ display: block;
+ min-width: 100%;
+ width: 120%;
+ height: 34px;
+ padding: 6px 30px 6px 15px;
+ color: #555555;
+ border: none;
+ background: transparent;
+ outline: none;
+ -webkit-appearance: none;
+ z-index: 99;
+ cursor: pointer;
+ font-size: 16px;
+ -moz-appearance: none;
+ text-indent: 0.01px;
+ text-overflow: '';
+}
+
+.picker:after {
+ content:"";
+ position: absolute;
+ right: 8%;
+ top: 50%;
+ z-index: 0;
+ color: #999;
+ width: 0;
+ margin-top:-2px;
+ height: 0;
+ border-top: 6px solid;
+ border-right: 6px solid transparent;
+ border-left: 6px solid transparent;
+}
+
+iframe.example {
+ width: 100%;
+ border: 1px solid black;
+}
+
+.search-results-frame {
+ clear:both;
+ display:table;
+ width:100%;
+}
+
+.search-results.ng-hide {
+ display:none;
+}
+
+.search-results-container {
+ padding-bottom:1em;
+ border-top:1px solid #111;
+ background:#181818;
+ box-shadow:inset 0 0 10px #111;
+}
+
+.search-results-container .search-results-group {
+ vertical-align:top;
+ padding:10px 10px;
+ display:inline-block;
+}
+
+.search-results-group-heading {
+ font-family: "Open Sans";
+ padding-left:10px;
+ color:white;
+}
+
+.search-results-frame > .search-results-group:first-child > .search-results {
+ border-right:1px solid #050505;
+}
+
+.search-results-group.col-group-api { width:30%; }
+.search-results-group.col-group-guide,
+.search-results-group.col-group-tutorial { width:20%; }
+.search-results-group.col-group-misc,
+.search-results-group.col-group-error { width:15%; float: right; }
+
+
+.search-results-group.col-group-api .search-result {
+ width:48%;
+ display:inline-block;
+}
+
+.search-close {
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ margin-left: -100px;
+ color: white;
+ text-align: center;
+ padding: 5px;
+ background: #333;
+ border-top-right-radius: 5px;
+ border-top-left-radius: 5px;
+ width: 200px;
+ box-shadow:0 0 10px #111;
+}
+
+.variables-matrix {
+ border:1px solid #ddd;
+ width:100%;
+ margin:10px 0;
+}
+
+.variables-matrix td,
+.variables-matrix th {
+ padding:10px;
+}
+
+.variables-matrix td {
+ border-top:1px solid #eee;
+}
+
+.variables-matrix td + td,
+.variables-matrix th + th {
+ border-left:1px solid #eee;
+}
+
+.variables-matrix tr:nth-child(even) td {
+ background:#f5f5f5;
+}
+
+.variables-matrix th {
+ background:#f1f1f1;
+}
+
+.sup-header {
+ padding-top:10px;
+ padding-bottom:5px;
+ background:rgba(245,245,245,0.88);
+ box-shadow:0 0 2px #999;
+}
+
+.main-body-grid {
+ margin-top:120px;
+ position:relative;
+}
+
+.main-body-grid > .grid-left,
+.main-body-grid > .grid-right {
+ padding:20px 0;
+}
+
+.main-body-grid > .grid-left {
+ position:fixed;
+ top:120px;
+ bottom:0;
+ overflow:auto;
+}
+
+.main-header-grid > .grid-left,
+.main-body-grid > .grid-left {
+ width:260px;
+}
+
+.main-header-grid > .grid-right,
+.main-body-grid > .grid-right {
+ margin-left:270px;
+ position:relative;
+}
+
+.main-header-grid > .grid-left {
+ float:left;
+}
+
+.main-body-grid .side-navigation {
+ position:relative;
+ padding-bottom:120px;
+}
+
+.main-body-grid .side-navigation.ng-hide {
+ display:block!important;
+}
+
+.variables-matrix td {
+ vertical-align:top;
+ padding:5px;
+}
+
+.type-hint {
+ display:inline-block;
+ background: gray;
+}
+
+.variables-matrix .type-hint {
+ text-align:center;
+ min-width:60px;
+ margin:1px 5px;
+}
+
+.type-hint + .type-hint {
+ margin-top:5px;
+}
+
+.type-hint-expression {
+ background:purple;
+}
+
+.type-hint-date {
+ background:pink;
+}
+
+.type-hint-string {
+ background:#3a87ad;
+}
+
+.type-hint-function {
+ background:green;
+}
+
+.type-hint-object {
+ background:#999;
+}
+
+.type-hint-array {
+ background:#F90;;
+}
+
+.type-hint-boolean {
+ background:rgb(18, 131, 39);
+}
+
+.type-hint-number {
+ background:rgb(189, 63, 66);
+}
+
+.type-hint-regexp {
+ background: rgb(90, 84, 189);
+}
+
+.type-hint-domelement {
+ background: rgb(95, 158, 160);
+}
+
+.runnable-example-frame {
+ width:100%;
+ height:300px;
+ border: 1px solid #ddd;
+ border-radius:5px;
+}
+
+.runnable-example-tabs {
+ margin-top:10px;
+ margin-bottom:20px;
+}
+
+.tutorial-nav {
+ display:block;
+}
+
+h1 + ul, h1 + ul > li,
+h2 + ul, h2 + ul > li,
+ul.tutorial-nav, ul.tutorial-nav > li,
+.usage > ul, .usage > ul > li,
+ul.methods, ul.methods > li,
+ul.events, ul.events > li {
+ list-style:none;
+ padding:0;
+}
+
+h2 {
+ border-top:1px solid #eee;
+ margin-top:30px;
+ padding-top:30px;
+}
+
+h4 {
+ margin-top:20px;
+ padding-top:20px;
+}
+
+.btn {
+ color:#428bca;
+ position: relative;
+ width: auto;
+ display: inline-block;
+ margin: 0 0 2px;
+ overflow: hidden;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -ms-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+ font-family: "Open Sans";
+ font-weight: 600;
+ height: auto;
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #f2f2f2));
+ background-image: -webkit-linear-gradient(#ffffff, #f2f2f2);
+ background-image: -moz-linear-gradient(#ffffff, #f2f2f2);
+ background-image: -o-linear-gradient(#ffffff, #f2f2f2);
+ background-image: linear-gradient(#ffffff, #f2f2f2);
+}
+
+.btn + .btn {
+ margin-left:10px;
+}
+
+.btn:hover {
+ color:black!important;
+ border: 1px solid #ddd!important;
+ background:white!important;
+}
+
+.view-source, .improve-docs {
+ position:relative;
+ z-index:100;
+}
+
+.view-source {
+ margin-right:10px;
+}
+
+.improve-docs {
+ float:right;
+}
+
+.return-arguments,
+.return-arguments th,
+.return-arguments th + th,
+.return-arguments td,
+.return-arguments td + td {
+ border-radius:0;
+ border:0;
+}
+
+.return-arguments td:first-child {
+ width:100px;
+}
+
+ul.methods > li,
+ul.events > li {
+ margin-bottom:40px;
+}
+
+@media only screen and (min-width: 769px) and (max-width: 991px) {
+ .main-body-grid {
+ margin-top: 160px;
+ }
+ .main-body-grid > .grid-left {
+ top: 160px;
+ }
+}
+
+@media only screen and (max-width : 768px) {
+ .picker, .picker select {
+ width:auto;
+ display:block;
+ margin-bottom:10px;
+ }
+ .docs-navbar-primary {
+ text-align:center;
+ }
+ .main-body-grid {
+ margin-top:0;
+ }
+ .main-header-grid > .grid-left,
+ .main-body-grid > .grid-left,
+ .main-header-grid > .grid-right,
+ .main-body-grid > .grid-right {
+ display:block;
+ float:none;
+ width:auto!important;
+ margin-left:0;
+ }
+ .main-body-grid > .grid-left,
+ .header-fixed, .footer {
+ position:static!important;
+ }
+ .main-body-grid > .grid-left {
+ background:#efefef;
+ margin-left:-1em;
+ margin-right:-1em;
+ padding:1em;
+ width:auto!important;
+ overflow:visible;
+ }
+ .main-header-grid > .grid-right,
+ .main-body-grid > .grid-right {
+ margin-left:0;
+ }
+ .main-body-grid .side-navigation {
+ display:block!important;
+ }
+ .main-body-grid .side-navigation.ng-hide {
+ display:none!important;
+ }
+ .nav-index-group .nav-index-listing {
+ display:inline-block;
+ padding:3px 0;
+ }
+ .nav-index-group .nav-index-listing:not(.nav-index-section):after {
+ padding-right:5px;
+ margin-left:-3px;
+ content:", ";
+ }
+ .nav-index-group .nav-index-listing:last-child:after {
+ content:"";
+ display:inline-block;
+ }
+ .nav-index-group .nav-index-section {
+ display:block;
+ }
+ .toc-toggle {
+ margin-bottom:20px;
+ }
+ .toc-close {
+ position: absolute;
+ bottom: -50px;
+ left: 50%;
+ margin-left: -50%;
+ text-align: center;
+ padding: 5px;
+ background: #eee;
+ border-radius: 5px;
+ width: 90%;
+ border:1px solid #ddd;
+ box-shadow:0 0 10px #bbb;
+ }
+ .navbar-brand {
+ float:none;
+ text-align:center;
+ }
+ .search-results-container {
+ padding-bottom:60px;
+ text-align:left;
+ }
+ .search-results-group {
+ float:none!important;
+ display:block!important;
+ width:auto!important;
+ border:0!important;
+ padding:0!important;
+ }
+ .search-results-group .search-result {
+ display:inline-block!important;
+ padding:0 5px;
+ width:auto!important;
+ }
+ .search-results-group .search-result:after {
+ content:", ";
+ }
+ #wrapper {
+ padding-bottom:0px;
+ }
+}
diff --git a/docs/app/assets/font-awesome/css/font-awesome.css b/docs/app/assets/font-awesome/css/font-awesome.css
new file mode 100644
index 000000000000..4040b3cf859f
--- /dev/null
+++ b/docs/app/assets/font-awesome/css/font-awesome.css
@@ -0,0 +1,1672 @@
+/*!
+ * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('../fonts/fontawesome-webfont.eot?v=4.2.0');
+ src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font: normal normal normal 14px/1 FontAwesome;
+ font-size: inherit;
+ text-rendering: auto;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.33333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.28571429em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.14285714em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.14285714em;
+ width: 2.14285714em;
+ top: 0.14285714em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.85714286em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: fa-spin 2s infinite linear;
+ animation: fa-spin 2s infinite linear;
+}
+@-webkit-keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes fa-spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
+ -webkit-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
+ -webkit-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+ filter: none;
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+.fa-space-shuttle:before {
+ content: "\f197";
+}
+.fa-slack:before {
+ content: "\f198";
+}
+.fa-envelope-square:before {
+ content: "\f199";
+}
+.fa-wordpress:before {
+ content: "\f19a";
+}
+.fa-openid:before {
+ content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+ content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+ content: "\f19d";
+}
+.fa-yahoo:before {
+ content: "\f19e";
+}
+.fa-google:before {
+ content: "\f1a0";
+}
+.fa-reddit:before {
+ content: "\f1a1";
+}
+.fa-reddit-square:before {
+ content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+ content: "\f1a3";
+}
+.fa-stumbleupon:before {
+ content: "\f1a4";
+}
+.fa-delicious:before {
+ content: "\f1a5";
+}
+.fa-digg:before {
+ content: "\f1a6";
+}
+.fa-pied-piper:before {
+ content: "\f1a7";
+}
+.fa-pied-piper-alt:before {
+ content: "\f1a8";
+}
+.fa-drupal:before {
+ content: "\f1a9";
+}
+.fa-joomla:before {
+ content: "\f1aa";
+}
+.fa-language:before {
+ content: "\f1ab";
+}
+.fa-fax:before {
+ content: "\f1ac";
+}
+.fa-building:before {
+ content: "\f1ad";
+}
+.fa-child:before {
+ content: "\f1ae";
+}
+.fa-paw:before {
+ content: "\f1b0";
+}
+.fa-spoon:before {
+ content: "\f1b1";
+}
+.fa-cube:before {
+ content: "\f1b2";
+}
+.fa-cubes:before {
+ content: "\f1b3";
+}
+.fa-behance:before {
+ content: "\f1b4";
+}
+.fa-behance-square:before {
+ content: "\f1b5";
+}
+.fa-steam:before {
+ content: "\f1b6";
+}
+.fa-steam-square:before {
+ content: "\f1b7";
+}
+.fa-recycle:before {
+ content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+ content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+ content: "\f1ba";
+}
+.fa-tree:before {
+ content: "\f1bb";
+}
+.fa-spotify:before {
+ content: "\f1bc";
+}
+.fa-deviantart:before {
+ content: "\f1bd";
+}
+.fa-soundcloud:before {
+ content: "\f1be";
+}
+.fa-database:before {
+ content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+ content: "\f1c1";
+}
+.fa-file-word-o:before {
+ content: "\f1c2";
+}
+.fa-file-excel-o:before {
+ content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+ content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+ content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+ content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+ content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+ content: "\f1c8";
+}
+.fa-file-code-o:before {
+ content: "\f1c9";
+}
+.fa-vine:before {
+ content: "\f1ca";
+}
+.fa-codepen:before {
+ content: "\f1cb";
+}
+.fa-jsfiddle:before {
+ content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+ content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+ content: "\f1ce";
+}
+.fa-ra:before,
+.fa-rebel:before {
+ content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+ content: "\f1d1";
+}
+.fa-git-square:before {
+ content: "\f1d2";
+}
+.fa-git:before {
+ content: "\f1d3";
+}
+.fa-hacker-news:before {
+ content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+ content: "\f1d5";
+}
+.fa-qq:before {
+ content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+ content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+ content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+ content: "\f1d9";
+}
+.fa-history:before {
+ content: "\f1da";
+}
+.fa-circle-thin:before {
+ content: "\f1db";
+}
+.fa-header:before {
+ content: "\f1dc";
+}
+.fa-paragraph:before {
+ content: "\f1dd";
+}
+.fa-sliders:before {
+ content: "\f1de";
+}
+.fa-share-alt:before {
+ content: "\f1e0";
+}
+.fa-share-alt-square:before {
+ content: "\f1e1";
+}
+.fa-bomb:before {
+ content: "\f1e2";
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+ content: "\f1e3";
+}
+.fa-tty:before {
+ content: "\f1e4";
+}
+.fa-binoculars:before {
+ content: "\f1e5";
+}
+.fa-plug:before {
+ content: "\f1e6";
+}
+.fa-slideshare:before {
+ content: "\f1e7";
+}
+.fa-twitch:before {
+ content: "\f1e8";
+}
+.fa-yelp:before {
+ content: "\f1e9";
+}
+.fa-newspaper-o:before {
+ content: "\f1ea";
+}
+.fa-wifi:before {
+ content: "\f1eb";
+}
+.fa-calculator:before {
+ content: "\f1ec";
+}
+.fa-paypal:before {
+ content: "\f1ed";
+}
+.fa-google-wallet:before {
+ content: "\f1ee";
+}
+.fa-cc-visa:before {
+ content: "\f1f0";
+}
+.fa-cc-mastercard:before {
+ content: "\f1f1";
+}
+.fa-cc-discover:before {
+ content: "\f1f2";
+}
+.fa-cc-amex:before {
+ content: "\f1f3";
+}
+.fa-cc-paypal:before {
+ content: "\f1f4";
+}
+.fa-cc-stripe:before {
+ content: "\f1f5";
+}
+.fa-bell-slash:before {
+ content: "\f1f6";
+}
+.fa-bell-slash-o:before {
+ content: "\f1f7";
+}
+.fa-trash:before {
+ content: "\f1f8";
+}
+.fa-copyright:before {
+ content: "\f1f9";
+}
+.fa-at:before {
+ content: "\f1fa";
+}
+.fa-eyedropper:before {
+ content: "\f1fb";
+}
+.fa-paint-brush:before {
+ content: "\f1fc";
+}
+.fa-birthday-cake:before {
+ content: "\f1fd";
+}
+.fa-area-chart:before {
+ content: "\f1fe";
+}
+.fa-pie-chart:before {
+ content: "\f200";
+}
+.fa-line-chart:before {
+ content: "\f201";
+}
+.fa-lastfm:before {
+ content: "\f202";
+}
+.fa-lastfm-square:before {
+ content: "\f203";
+}
+.fa-toggle-off:before {
+ content: "\f204";
+}
+.fa-toggle-on:before {
+ content: "\f205";
+}
+.fa-bicycle:before {
+ content: "\f206";
+}
+.fa-bus:before {
+ content: "\f207";
+}
+.fa-ioxhost:before {
+ content: "\f208";
+}
+.fa-angellist:before {
+ content: "\f209";
+}
+.fa-cc:before {
+ content: "\f20a";
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+ content: "\f20b";
+}
+.fa-meanpath:before {
+ content: "\f20c";
+}
diff --git a/docs/app/assets/font-awesome/css/font-awesome.min.css b/docs/app/assets/font-awesome/css/font-awesome.min.css
new file mode 100644
index 000000000000..ec53d4d6d5bf
--- /dev/null
+++ b/docs/app/assets/font-awesome/css/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}
\ No newline at end of file
diff --git a/docs/app/assets/font-awesome/fonts/FontAwesome.otf b/docs/app/assets/font-awesome/fonts/FontAwesome.otf
new file mode 100644
index 000000000000..81c9ad949b47
Binary files /dev/null and b/docs/app/assets/font-awesome/fonts/FontAwesome.otf differ
diff --git a/docs/app/assets/font-awesome/fonts/fontawesome-webfont.eot b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.eot
new file mode 100644
index 000000000000..84677bc0c5f3
Binary files /dev/null and b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.eot differ
diff --git a/docs/app/assets/font-awesome/fonts/fontawesome-webfont.svg b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.svg
new file mode 100644
index 000000000000..d907b25ae60e
--- /dev/null
+++ b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.svg
@@ -0,0 +1,520 @@
+
+
+
\ No newline at end of file
diff --git a/docs/app/assets/font-awesome/fonts/fontawesome-webfont.ttf b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.ttf
new file mode 100644
index 000000000000..96a3639cdde5
Binary files /dev/null and b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.ttf differ
diff --git a/docs/app/assets/font-awesome/fonts/fontawesome-webfont.woff b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.woff
new file mode 100644
index 000000000000..628b6a52a87e
Binary files /dev/null and b/docs/app/assets/font-awesome/fonts/fontawesome-webfont.woff differ
diff --git a/docs/app/src/app.js b/docs/app/src/app.js
index 53ef48819e8f..f5d9588d3bcf 100644
--- a/docs/app/src/app.js
+++ b/docs/app/src/app.js
@@ -1,6 +1,11 @@
+'use strict';
+
angular.module('docsApp', [
'ngMaterial',
+ 'HeaderController',
+ 'FooterController',
'DocsController',
+ 'ViewUtils',
'versionsData',
'pagesData',
'navData',
@@ -9,7 +14,8 @@ angular.module('docsApp', [
'examples',
'search',
'tutorials',
- 'versions'
+ 'versions',
+ 'responsiveMenu'
])
.config(['$locationProvider', function($locationProvider) {
diff --git a/docs/app/src/directives.js b/docs/app/src/directives.js
index 4c3acf781000..8fc527864da2 100644
--- a/docs/app/src/directives.js
+++ b/docs/app/src/directives.js
@@ -1,22 +1,34 @@
angular.module('directives', [])
/**
- * backToTop Directive
- * @param {Function} $anchorScroll
+ * scrollTo Directive
*
- * @description Ensure that the browser scrolls when the anchor is clicked
+ * @description
+ * Upon click, scroll to the target element (identified by the selector provided via the `scroll-to`
+ * attribute).
*/
-.directive('backToTop', ['$anchorScroll', '$location', function($anchorScroll, $location) {
- return function link(scope, element) {
- element.on('click', function(event) {
- $location.hash('');
- scope.$apply($anchorScroll);
- });
+.directive('scrollTo', ['$document', '$location', function($document, $location) {
+ var doc = $document[0];
+
+ return {
+ restrict: 'A',
+ link: function scrollToPostLink(scope, elem, attrs) {
+ elem.on('click', onClick);
+
+ function onClick() {
+ var targetSelector = attrs.scrollTo;
+ var targetElem = doc.querySelector(targetSelector);
+
+ if (targetElem) {
+ targetElem.scrollIntoView();
+ }
+ }
+ }
};
}])
-.directive('code', function() {
+.directive('code', ['$window', function($window) {
return {
restrict: 'E',
terminal: true,
@@ -25,13 +37,17 @@ angular.module('directives', [])
var match = /lang-(\S+)/.exec(element[0].className);
var lang = match && match[1];
var html = element.html();
- element.html(window.prettyPrintOne(html, lang, linenums));
+ element.html($window.prettyPrintOne(html, lang, linenums));
}
};
-})
+}])
+
+// TODO: Probably not needed any more
.directive('scrollYOffsetElement', ['$anchorScroll', function($anchorScroll) {
- return function(scope, element) {
- $anchorScroll.yOffset = element;
+ return {
+ link: function(scope, element) {
+ $anchorScroll.yOffset = element;
+ }
};
}]);
diff --git a/docs/app/src/docs.js b/docs/app/src/docs.js
index 1cdfed45c1d5..0a8ce69430c6 100644
--- a/docs/app/src/docs.js
+++ b/docs/app/src/docs.js
@@ -1,15 +1,21 @@
-angular.module('DocsController', [])
+angular.module('DocsController', ['ViewUtils'])
.controller('DocsController', [
- '$scope', '$rootScope', '$location', '$window', 'openPlunkr',
+ '$scope', '$rootScope', '$location', '$window', 'openPlunkr', 'ViewUtils',
'NG_PAGES', 'NG_NAVIGATION', 'NG_VERSION',
- function($scope, $rootScope, $location, $window, openPlunkr,
+ function($scope, $rootScope, $location, $window, openPlunkr, ViewUtils,
NG_PAGES, NG_NAVIGATION, NG_VERSION) {
+ $scope.vu = ViewUtils;
+
$scope.openPlunkr = openPlunkr;
$scope.docsVersion = NG_VERSION.isSnapshot ? 'snapshot' : NG_VERSION.version;
+ $scope.isCurrentPath = function(path) {
+ return this.currentPage && path && (this.currentPage.path === path);
+ };
+
$scope.navClass = function(navItem) {
return {
active: navItem.href && this.currentPage && this.currentPage.path,
@@ -25,13 +31,13 @@ angular.module('DocsController', [])
$window._gaq.push(['_trackPageview', pagePath]);
});
- $scope.$watch(function docsPathWatch() {return $location.path(); }, function docsPathWatchAction(path) {
+ $scope.$watch(function docsPathWatch() { return $location.path(); }, function docsPathWatchAction(path) {
path = path.replace(/^\/?(.+?)(\/index)?\/?$/, '$1');
- currentPage = $scope.currentPage = NG_PAGES[path];
+ var currentPage = $scope.currentPage = NG_PAGES[path];
- if ( currentPage ) {
+ if (currentPage) {
$scope.partialPath = 'partials/' + path + '.html';
$scope.currentArea = NG_NAVIGATION[currentPage.area];
var pathParts = currentPage.path.split('/');
@@ -53,8 +59,6 @@ angular.module('DocsController', [])
Initialize
***********************************/
- $scope.versionNumber = angular.version.full;
- $scope.version = angular.version.full + " " + angular.version.codeName;
$scope.loading = 0;
diff --git a/docs/app/src/errors.js b/docs/app/src/errors.js
index bd7f6bbeef83..97025583c50b 100644
--- a/docs/app/src/errors.js
+++ b/docs/app/src/errors.js
@@ -1,23 +1,23 @@
angular.module('errors', ['ngSanitize'])
-.filter('errorLink', ['$sanitize', function ($sanitize) {
+.filter('errorLink', ['$sanitize', function($sanitize) {
var LINKY_URL_REGEXP = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}<>]/g,
MAILTO_REGEXP = /^mailto:/,
STACK_TRACE_REGEXP = /:\d+:\d+$/;
- var truncate = function (text, nchars) {
+ var truncate = function(text, nchars) {
if (text.length > nchars) {
return text.substr(0, nchars - 3) + '...';
}
return text;
};
- return function (text, target) {
+ return function(text, target) {
var targetHtml = target ? ' target="' + target + '"' : '';
if (!text) return text;
- return $sanitize(text.replace(LINKY_URL_REGEXP, function (url) {
+ return $sanitize(text.replace(LINKY_URL_REGEXP, function(url) {
if (STACK_TRACE_REGEXP.test(url)) {
return url;
}
@@ -48,10 +48,10 @@ angular.module('errors', ['ngSanitize'])
};
return {
- link: function (scope, element, attrs) {
+ link: function(scope, element, attrs) {
var search = $location.search(),
- formatArgs = [attrs.errorDisplay],
- i;
+ formatArgs = [attrs.errorDisplay],
+ i;
for (i = 0; angular.isDefined(search['p'+i]); i++) {
formatArgs.push(search['p'+i]);
diff --git a/docs/app/src/examples.js b/docs/app/src/examples.js
index 2d882ea25f45..029307bd5b52 100644
--- a/docs/app/src/examples.js
+++ b/docs/app/src/examples.js
@@ -2,7 +2,7 @@ angular.module('examples', [])
.factory('formPostData', ['$document', function($document) {
return function(url, fields) {
- /**
+ /*
* Form previously posted to target="_blank", but pop-up blockers were causing this to not work.
* If a user chose to bypass pop-up blocker one time and click the link, they would arrive at
* a new default plnkr, not a plnkr with the desired template.
@@ -48,7 +48,7 @@ angular.module('examples', [])
// The manifests provide the production index file but Plunkr wants
// a straight index.html
if (filename === "index-production.html") {
- filename = "index.html"
+ filename = "index.html";
}
return {
diff --git a/docs/app/src/footer-conroller.js b/docs/app/src/footer-conroller.js
new file mode 100644
index 000000000000..72a9e1ea789c
--- /dev/null
+++ b/docs/app/src/footer-conroller.js
@@ -0,0 +1,9 @@
+angular.
+ module('FooterController', []).
+ controller('FooterController', FooterController);
+
+function FooterController() {
+ var v = angular.version;
+ this.versionNumber = v.full;
+ this.version = v.full + ' ' + v.codeName;
+}
diff --git a/docs/app/src/header-conroller.js b/docs/app/src/header-conroller.js
new file mode 100644
index 000000000000..51befd7f2249
--- /dev/null
+++ b/docs/app/src/header-conroller.js
@@ -0,0 +1,35 @@
+angular.
+ module('HeaderController', []).
+ controller('HeaderController', HeaderController);
+
+HeaderController.$inject = [];
+function HeaderController() {
+ this.learnItems = [
+ {label: 'Why AngularJS?', url: '//angularjs.org/'},
+ {label: 'Watch', url: '//www.youtube.com/user/angularjs'},
+ {label: 'Tutorial', url: 'tutorial'},
+ {label: 'Case Studies', url: '//builtwith.angularjs.org/'},
+ {label: 'Seed App project template', url: '//github.com/angular/angular-seed'},
+ {label: 'FAQ', url: 'misc/faq'}
+ ];
+
+ this.developItems = [
+ {label: 'Why AngularJS?', url: '//angularjs.org/'},
+ {label: 'Tutorial', url: 'tutorial'},
+ {label: 'Developer Guide', url: 'guide'},
+ {label: 'API Reference', url: 'api'},
+ {label: 'Error Reference', url: 'error'},
+ {label: 'Contribute', url: 'misc/contribute'},
+ {label: 'Download', url: '//code.angularjs.org/'}
+ ];
+
+ this.discussItems = [
+ {label: 'Blog', url: '//blog.angularjs.org'},
+ {label: 'Mailing List', url: '//groups.google.com/group/angular'},
+ {label: 'Chat Room', url: '//webchat.freenode.net/?channels=angularjs&uio=d4'},
+ {label: 'Twitter', url: '//twitter.com/#!/angularjs'},
+ {label: 'Google+', url: '//plus.google.com/110323587230527980117'},
+ {label: 'GitHub', url: '//github.com/angular/angular.js'},
+ {label: 'Issue Tracker', url: '//github.com/angular/angular.js/issues'},
+ ];
+}
diff --git a/docs/app/src/responsive-menu.js b/docs/app/src/responsive-menu.js
new file mode 100644
index 000000000000..1fca6434c492
--- /dev/null
+++ b/docs/app/src/responsive-menu.js
@@ -0,0 +1,55 @@
+angular.
+ module('responsiveMenu', ['ngMaterial', 'ViewUtils']).
+ directive('responsiveMenu', responsiveMenuDirective);
+
+responsiveMenuDirective.$inject = ['$mdBottomSheet', 'ViewUtils'];
+function responsiveMenuDirective($mdBottomSheet, ViewUtils) {
+ // TODO: Create showFns for various sizes (not necessarily all)
+ var showFns = {
+ // 'gt-lg': '',
+ // 'lg': '',
+ // 'md': '',
+ 'sm': function showSmFn(items) {
+ $mdBottomSheet.show({
+ template: _getResponsiveMenuSmTemplate(),
+ controller: ['$mdBottomSheet', '$scope',
+ function ResponsiveMenuSmController($mdBottomSheet, $scope) {
+ $scope.items = items;
+ $scope.onItemClick = $mdBottomSheet.hide.bind($mdBottomSheet);
+ }
+ ]
+ });
+ }
+ };
+
+ var defaultShowFn = showFns.sm;
+
+ return {
+ restrict: 'A',
+ scope: {
+ items: '=rmItems'
+ },
+ controller: ['$element', '$scope', function ResponsiveMenuController($element, $scope) {
+ $element.on('click', onClick.bind(this));
+
+ function onClick(evt) {
+ var showFn = ViewUtils.getValueForSize(showFns, defaultShowFn);
+ showFn($scope.items);
+ }
+ }]
+ };
+}
+
+function _getResponsiveMenuSmTemplate() {
+ return [
+ '
Workspace Reset Instructions ➤
\n' + 'Reset the workspace to step {{step}}.
' + 'git checkout -f step-{{step}}\n' + '
Refresh your browser or check out this step online: '+ - 'Step {{step}} Live Demo.
\n' + + 'Step {{step}} Live Demo.\n' + 'The most important changes are listed below. You can see the full diff on ' + 'GitHub\n' + '
' }; -}); \ No newline at end of file +}); diff --git a/docs/app/src/versions.js b/docs/app/src/versions.js index 6899bb6fb89d..0ad055f91c67 100644 --- a/docs/app/src/versions.js +++ b/docs/app/src/versions.js @@ -2,8 +2,9 @@ angular.module('versions', []) .controller('DocsVersionsCtrl', ['$scope', '$location', '$window', 'NG_VERSIONS', function($scope, $location, $window, NG_VERSIONS) { $scope.docs_version = NG_VERSIONS[0]; + $scope.docs_versions = NG_VERSIONS; - for(var i=0, minor = NaN; i < NG_VERSIONS.length; i++) { + for (var i = 0, ii = NG_VERSIONS.length, minor = NaN; i < ii; i++) { var version = NG_VERSIONS[i]; // NaN will give false here if (minor <= version.minor) { @@ -13,17 +14,34 @@ angular.module('versions', []) minor = version.minor; } - $scope.docs_versions = NG_VERSIONS; - $scope.getGroupName = function(v) { - return v.isLatest ? 'Latest' : (v.isStable ? 'Stable' : 'Unstable'); - }; + $scope.getGroupName = getGroupName; + $scope.groupBy = groupBy; + $scope.jumpToDocsVersion = jumpToDocsVersion; + + function getGroupName(v) { + return v.isLatest ? 'Latest' : ('v' + v.major + '.' + v.minor + '.x'); + } + + // TODO(gkalpak): Do we really need this as a "public" function ? + // Would a one-time groupping (in JS) be sufficient ? + function groupBy(items, prop) { + var groupped = {}; + var getter = angular.isFunction(prop) ? prop : function(item) { return item[prop]; }; - $scope.jumpToDocsVersion = function(version) { + items.forEach(function(item) { + var groupName = getter(item); + var groupList = groupped[groupName] = (groupped[groupName] || []); + groupList.push(item); + }); + + return groupped; + } + + function jumpToDocsVersion(version) { var currentPagePath = $location.path().replace(/\/$/, ''); // TODO: We need to do some munging of the path for different versions of the API... - $window.location = version.docsUrl + currentPagePath; - }; + } }]); diff --git a/docs/app/src/view-utils.js b/docs/app/src/view-utils.js new file mode 100644 index 000000000000..2b70d5729ffb --- /dev/null +++ b/docs/app/src/view-utils.js @@ -0,0 +1,55 @@ +angular. + module('ViewUtils', ['ngMaterial']). + service('ViewUtils', ViewUtilsService); + +ViewUtilsService.$inject = ['$mdMedia', '$mdSidenav']; +function ViewUtilsService($mdMedia, $mdSidenav) { + this.closeSidenav = closeSidenav; + this.getFlex = getFlex; + this.getValueForSize = getValueForSize; + this.media = $mdMedia; + this.openSidenav = openSidenav; + + var flexMap = { + toc: { + 'gt-lg': '20', + 'lg': '25', + 'md': '33' + }, + search: { + 'gt-lg': '20' + } + }; + + function closeSidenav(id) { + $mdSidenav(id).close(); + } + + function getFlex(componentId) { + var flex; + + if (flexMap.hasOwnProperty(componentId)) { + var queriesMap = flexMap[componentId]; + flex = getValueForSize(queriesMap); + } + + return flex; + } + + function getValueForSize(queriesMap, defaultVal) { + var val = defaultVal; + + Object.keys(queriesMap).some(function(q) { + if ($mdMedia(q)) { + val= queriesMap[q]; + return true; + } + }); + + return val; + } + + function openSidenav(id) { + $mdSidenav(id).open(); + } +} diff --git a/docs/app/test/docsSpec.js b/docs/app/test/docsSpec.js index 477e6ddbca75..e7b638e9ebef 100644 --- a/docs/app/test/docsSpec.js +++ b/docs/app/test/docsSpec.js @@ -1,8 +1,14 @@ describe("DocsController", function() { var $scope; + // FIXME: Fake `ngMaterial` module to pass tests (because `ngMaterial` is not loaded by karma). + // PROPER FIX NEEDED !!! + angular. + module('ngMaterial', []). + value('$mdMedia', {}). + value('$mdSidenav', {}); + angular.module('fake', []) - .value('$cookies', {}) .value('openPlunkr', function() {}) .value('NG_PAGES', {}) .value('NG_NAVIGATION', {}) @@ -11,24 +17,28 @@ describe("DocsController", function() { beforeEach(module('fake', 'DocsController')); beforeEach(inject(function($rootScope, $controller) { $scope = $rootScope; - $controller('DocsController', { $scope: $scope }); + $controller('DocsController', {$scope: $scope}); })); describe('afterPartialLoaded', function() { - it("should update the Google Analytics with currentPage path if currentPage exists", inject(function($window) { - $window._gaq = []; - $scope.currentPage = { path: 'a/b/c' }; - $scope.$broadcast('$includeContentLoaded'); - expect($window._gaq.pop()).toEqual(['_trackPageview', 'a/b/c']); - })); + it('should update the Google Analytics with currentPage path if currentPage exists', inject( + function($window) { + $window._gaq = []; + $scope.currentPage = {path: 'a/b/c'}; + $scope.$broadcast('$includeContentLoaded'); + expect($window._gaq.pop()).toEqual(['_trackPageview', 'a/b/c']); + } + )); - it("should update the Google Analytics with $location.path if currentPage is missing", inject(function($window, $location) { - $window._gaq = []; - spyOn($location, 'path').andReturn('x/y/z'); - $scope.$broadcast('$includeContentLoaded'); - expect($window._gaq.pop()).toEqual(['_trackPageview', 'x/y/z']); - })); + it('should update the Google Analytics with $location.path if currentPage is missing', inject( + function($window, $location) { + $window._gaq = []; + spyOn($location, 'path').andReturn('x/y/z'); + $scope.$broadcast('$includeContentLoaded'); + expect($window._gaq.pop()).toEqual(['_trackPageview', 'x/y/z']); + } + )); }); }); diff --git a/docs/config/services/deployments/debug.js b/docs/config/services/deployments/debug.js index 3f2340eabea1..90e2ef343816 100644 --- a/docs/config/services/deployments/debug.js +++ b/docs/config/services/deployments/debug.js @@ -27,9 +27,12 @@ module.exports = function debugDeployment(getComponentPath) { ], stylesheets: [ getComponentPath('angular-material', 'angular-material.css'), + getComponentPath('angular-material', 'themes/grey-theme.css'), + getComponentPath('angular-material', 'themes/red-theme.css'), 'css/prettify-theme.css', 'css/docs.css', - 'css/animations.css' + 'css/animations.css', + 'font-awesome/css/font-awesome.css' ] }; -}; \ No newline at end of file +}; diff --git a/docs/config/services/deployments/default.js b/docs/config/services/deployments/default.js index 0355be8fb928..e730829a4442 100644 --- a/docs/config/services/deployments/default.js +++ b/docs/config/services/deployments/default.js @@ -27,9 +27,12 @@ module.exports = function defaultDeployment(getComponentPath) { ], stylesheets: [ getComponentPath('angular-material', 'angular-material.css'), + getComponentPath('angular-material', 'themes/grey-theme.css'), + getComponentPath('angular-material', 'themes/red-theme.css'), 'css/prettify-theme.css', 'css/docs.css', - 'css/animations.css' + 'css/animations.css', + 'font-awesome/css/font-awesome.css' ] }; -}; \ No newline at end of file +}; diff --git a/docs/config/services/deployments/jquery.js b/docs/config/services/deployments/jquery.js index 1b6650baa8a0..37a36d78d410 100644 --- a/docs/config/services/deployments/jquery.js +++ b/docs/config/services/deployments/jquery.js @@ -31,9 +31,12 @@ module.exports = function jqueryDeployment(getComponentPath) { ], stylesheets: [ getComponentPath('angular-material', 'angular-material.css'), + getComponentPath('angular-material', 'themes/grey-theme.css'), + getComponentPath('angular-material', 'themes/red-theme.css'), 'css/prettify-theme.css', 'css/docs.css', - 'css/animations.css' + 'css/animations.css', + 'font-awesome/css/font-awesome.css' ] }; -}; \ No newline at end of file +}; diff --git a/docs/config/templates/indexPage.template.html b/docs/config/templates/indexPage.template.html index b96494943c06..054177b77f6b 100644 --- a/docs/config/templates/indexPage.template.html +++ b/docs/config/templates/indexPage.template.html @@ -69,99 +69,8 @@ -