├── CHANGELOG.md
├── dist
└── scss
│ ├── layouts
│ ├── __documentation.scss
│ ├── _container.scss
│ ├── _grid-fallback-ie.scss
│ ├── _grid-fallback.scss
│ └── _grid.scss
│ ├── settings
│ ├── __documentation.scss
│ └── _atomic-bulldog-settings.scss
│ ├── functions
│ ├── __documentation.scss
│ ├── _map-deep-get.scss
│ └── _em.scss
│ ├── atomic-bulldog-grid-fallback.scss
│ ├── atomic-bulldog-grid-fallback-ie.scss
│ ├── variables
│ ├── _grid.scss
│ ├── _root-classes.scss
│ ├── __documentation.scss
│ ├── _container-sizes.scss
│ ├── _breakpoints.scss
│ └── _spacers.scss
│ ├── atomic-bulldog-grid.scss
│ ├── mixins
│ ├── __documentation.scss
│ └── _media-queries.scss
│ └── NO-USE-demo-style.scss
├── README.md
├── package.json
├── LICENSE
├── static
└── css
│ ├── NO-USE-demo-style.min.css
│ ├── NO-USE-demo-style.css
│ ├── atomic-bulldog-grid-fallback.min.css
│ ├── atomic-bulldog-grid-fallback-ie.min.css
│ ├── atomic-bulldog-grid.min.css
│ └── atomic-bulldog-grid-fallback-ie.css
├── gulpfile.js
├── .gitignore
└── index.html
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | http://keepachangelog.com/en/1.0.0/
4 |
5 | ## [1.0.0] - 2018-02-22
6 |
7 | Initial release of Atomic Bulldog Grid
8 |
9 |
--------------------------------------------------------------------------------
/dist/scss/layouts/__documentation.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // KSS Documentation
3 | // ------------------------------
4 |
5 | // Layouts
6 | //
7 | // weight: 4
8 | //
9 | // Styleguide Layout
--------------------------------------------------------------------------------
/dist/scss/settings/__documentation.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // KSS Documentation
3 | // ------------------------------
4 |
5 | // Project settings
6 | //
7 | // Global Atomic bulldog settings
8 | //
9 | // Weight: 11
10 | //
11 | // Styleguide Settings
--------------------------------------------------------------------------------
/dist/scss/functions/__documentation.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // KSS Documentation
3 | // ------------------------------
4 |
5 | // Sass Functions
6 | //
7 | // > It is possible to define your own functions in sass and use them in any value or script context
8 | //
9 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#function_directives
10 | //
11 | // weight: 8
12 | //
13 | // Styleguide Functions
--------------------------------------------------------------------------------
/dist/scss/atomic-bulldog-grid-fallback.scss:
--------------------------------------------------------------------------------
1 | //Global settings
2 | $use-css-var: false;
3 |
4 | //functions
5 | @import "functions/em";
6 | @import "functions/map-deep-get";
7 |
8 | //mixins
9 | @import "mixins/media-queries";
10 |
11 | //variables
12 | @import "variables/root-classes";
13 | @import "variables/breakpoints";
14 | @import "variables/grid";
15 | @import "variables/spacers";
16 |
17 | //layout
18 | @import "layouts/grid-fallback";
19 |
--------------------------------------------------------------------------------
/dist/scss/atomic-bulldog-grid-fallback-ie.scss:
--------------------------------------------------------------------------------
1 | //Global settings
2 | $use-css-var: false;
3 |
4 | //functions
5 | @import "functions/em";
6 | @import "functions/map-deep-get";
7 |
8 | //mixins
9 | @import "mixins/media-queries";
10 |
11 | //variables
12 | @import "variables/root-classes";
13 | @import "variables/breakpoints";
14 | @import "variables/grid";
15 | @import "variables/spacers";
16 |
17 | //layout
18 | @import "layouts/grid-fallback-ie";
19 |
--------------------------------------------------------------------------------
/dist/scss/variables/_grid.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // Sass Variables
3 | // ------------------------------
4 | $grid-columns: 12;
5 |
6 | // ------------------------------
7 | // KSS Documentation
8 | // ------------------------------
9 |
10 | // Grid
11 | //
12 | // This project use by default CSS grid layout `display: grid` for its grid with a fallback on flexbox for older browsers.
13 | // `$grid-columns` allow setting the number of columns we want per grid.
14 | //
15 | // Styleguide Variables.grid
--------------------------------------------------------------------------------
/dist/scss/atomic-bulldog-grid.scss:
--------------------------------------------------------------------------------
1 | /*Atomic Bulldog version 1.0.0*/
2 |
3 | //Global settings
4 | $use-css-var: true;
5 |
6 | //functions
7 | @import "functions/em";
8 | @import "functions/map-deep-get";
9 |
10 | //mixins
11 | @import "mixins/media-queries";
12 |
13 | //variables
14 | @import "variables/root-classes";
15 | @import "variables/breakpoints";
16 | @import "variables/container-sizes";
17 | @import "variables/grid";
18 | @import "variables/spacers";
19 |
20 | //layout
21 | @import "layouts/container";
22 | @import "layouts/grid";
--------------------------------------------------------------------------------
/dist/scss/variables/_root-classes.scss:
--------------------------------------------------------------------------------
1 | $root-default: "
2 | :root,
3 | .theme-default,
4 | .is-theme-default
5 | ";
6 |
7 | // ------------------------------
8 | // KSS Documentation
9 | // ------------------------------
10 |
11 | // Theme classes
12 | //
13 | // CSS Variables and theme classes are set in the variable files using this Sass variables:
14 | // * `$root-default` => :root, .theme-default, .is-theme-default
15 | // * `$root-invert-theme` => :root .theme-invert, :root .is-theme-invert
16 | //
17 | // Styleguide Variables.themeClasses
--------------------------------------------------------------------------------
/dist/scss/mixins/__documentation.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // KSS Documentation
3 | // ------------------------------
4 |
5 | // Sass Mixins
6 | //
7 | // > Mixins allow you to define styles that can be re-used throughout the stylesheet without needing to resort to non-semantic classes
8 | // like .float-left. Mixins can also contain full CSS rules, and anything else allowed elsewhere in a Sass document.
9 | // They can even take arguments which allows you to produce a wide variety of styles with very few mixins.
10 | //
11 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixins
12 | //
13 | // weight: 7
14 | //
15 | // Styleguide Mixins
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Atomic Bulldog Grid :collision: :dog:
2 |
3 |
4 |
5 |
6 |
7 | CSS (SCSS) grid, based on CSS grid layout with @supports fallback to flexbox (partial support).
8 |
9 | [**Grid Demo**](https://vinceumo.github.io/atomic-bulldog-grid/)
10 |
11 | -----
12 |
13 | Atomic Bulldog grid is the grid use in Atomic Bulldog.
14 |
15 | Atomic Bulldog is a Scss(Sass) boilerplate base on atomic design methodology. It integrates Node KSS to automatically generate a live styleguide/pattern library.
16 |
17 | [**Atomic Bulldog on Github**](https://github.com/vinceumo/atomic-bulldog)
18 |
--------------------------------------------------------------------------------
/dist/scss/functions/_map-deep-get.scss:
--------------------------------------------------------------------------------
1 | @function map-deep-get($map, $keys...) {
2 | @each $key in $keys {
3 | $map: map-get($map, $key);
4 | }
5 | @return $map;
6 | }
7 |
8 | // ------------------------------
9 | // KSS Documentation
10 | // ------------------------------
11 |
12 | // map-deep-get($map, $keys...)
13 | //
14 | // The map-deep-get function allows to get and set values from the nested tree.
15 | // This function is used to set the media queries with em value.
16 | //
17 | // Source:
18 | // - https://css-tricks.com/snippets/sass/deep-getset-maps/
19 | //
20 | // Parameters:
21 | // * `$map` - targeted map
22 | // * `$keys` - Keys to target
23 | //
24 | // Usage:
25 | // * `map-deep-get($aspect-ratios, 1x1, width)`
26 | //
27 | // Styleguide Functions.mapdeepget
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0.0",
3 | "name": "atomic.bulldog.grid",
4 | "private": true,
5 | "devDependencies": {
6 | "gulp": "^3.9.1",
7 | "gulp-autoprefixer": "^4.0.0",
8 | "gulp-bundle-assets": "^2.29.0",
9 | "gulp-clean-css": "^3.9.0",
10 | "gulp-purge-sourcemaps": "^1.0.0",
11 | "gulp-rename": "^1.2.2",
12 | "gulp-sass": "^3.1.0",
13 | "gulp-sourcemaps": "^2.6.1",
14 | "gulp-strip-comments": "^2.5.1",
15 | "gulp-util": "^3.0.8",
16 | "onchange": "^3.3.0",
17 | "browser-sync": "^2.18.13"
18 | },
19 | "scripts": {
20 | "startBrowserSync":
21 | "browser-sync start --server --files '**/*.css, **/*.html, **/*.js, !node_modules/**/*' --directory --port 7777 --browser \"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
22 | "gulp": "gulp"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/dist/scss/settings/_atomic-bulldog-settings.scss:
--------------------------------------------------------------------------------
1 | $use-css-var: false;
2 |
3 | // ------------------------------
4 | // KSS Documentation
5 | // ------------------------------
6 |
7 | // Use CSS variable Flag
8 | //
9 | // `$use-css-var`
10 | //
11 | // By default Atomic Bulldog use CSS variables. You can compile the real values by changing this flag to false. It is not recommended to do so as it will break some theming options.
12 | // Moreover postCSS can be used to compile CSS variables.
13 | //
14 | //
15 | // Can I Use css-variables? Data on support for the css-variables feature across the major browsers from caniuse.com.
16 | //
17 | //
18 | // Styleguide Settings.useCssVar
19 |
--------------------------------------------------------------------------------
/dist/scss/variables/__documentation.scss:
--------------------------------------------------------------------------------
1 | // Sass variables
2 | //
3 | // >The most straightforward way to use SassScript is to use variables. Variables begin with dollar signs, and are set like CSS properties
4 | //
5 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variables_
6 | //
7 | // > Maps represent an association between keys and values, where keys are used to look up values.
8 | // They make it easy to collect values into named groups and access those groups dynamically.
9 | // They have no direct parallel in CSS, although they're syntactically similar to media query expressions:
10 | //
11 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#maps
12 | //
13 | // Sass variables helps to define patterns in the project. They are the core of this project.
14 | // Most of this variables are define in maps and can be call using a function link to this map.
15 | //
16 | // weight: 6
17 | //
18 | // Styleguide Variables
--------------------------------------------------------------------------------
/dist/scss/functions/_em.scss:
--------------------------------------------------------------------------------
1 | // Used for "min" and "max" media query mixins
2 | @function em($size, $context: 16) {
3 | @return (($size/ 1px) / $context) + 0em;
4 | }
5 |
6 | // ------------------------------
7 | // KSS Documentation
8 | // ------------------------------
9 |
10 | // em($size, $context: 16)
11 | //
12 | // The em function converts px value into an em value. By default, the function uses the base 16px.
13 | // This function is used to set the media queries with em value.
14 | // Resources:
15 | // - https://css-tricks.com/em-based-media-queries-are-based-on/
16 | // - https://zellwk.com/blog/media-query-units/
17 | //
18 | // Parameters:
19 | // * `$size` - Size in px to be converted in em
20 | // * `$context` - Optional value. By default $context is equal to 16 as this function is mostly use for media queries
21 | //
22 | // Usage:
23 | // * `em(400px);`
24 | //
25 | // Output:
26 | // * `25em;`
27 | //
28 | // Styleguide Functions.em
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Vincent Humeau
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/static/css/NO-USE-demo-style.min.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Lato:300,400,700);html{font-size:20px}body{background-color:#2c303a;color:#fff;font-family:Lato,Arial,Helvetica,sans-serif}h1{font-size:2.5rem}h2{font-size:2rem}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:rgba(255,255,255,.15);border-radius:5px}code,span.highlight{background-color:rgba(255,255,255,.15)}span.alert{background-color:rgba(236,110,173,.58)}header{color:#fff;text-align:center;margin-top:8rem;margin-bottom:8rem}header>.grid{margin-top:3rem}header .sub-example .example--item{background:rgba(255,255,255,.6);color:#2c303a}.example--item{background:linear-gradient(45deg,#3494e6,#ec6ead);padding:1rem;border-radius:5px;text-align:center;width:100%;height:100%}.example--item p{font-size:1.2rem}.example--item.is-sticky{height:auto;position:-webkit-sticky;position:sticky;top:1rem}.example{margin-bottom:8rem}.example .grid{margin-bottom:1rem}blockquote{margin:0;background-color:rgba(255,255,255,.3);padding:1rem;border-left:.5rem solid #3494e6}a{color:#fff;border-bottom:3px solid #3494e6;box-shadow:inset 0 -5px 0 #3494e6;transition:background .3s ease-in-out;text-decoration:none}a:focus,a:hover{background:#3494e6}ul li{margin-bottom:.5rem}
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | var gulp = require('gulp');
2 | var sass = require("gulp-sass");
3 | var sourcemaps = require('gulp-sourcemaps');
4 | var autoprefixer = require('gulp-autoprefixer');
5 | var cleanCSS = require('gulp-clean-css');
6 | var gutil = require('gulp-util');
7 | var rename = require('gulp-rename');
8 | var purgeSourcemaps = require('gulp-purge-sourcemaps');
9 |
10 | var inputScss = "./dist/scss/**/*.scss"; /*watches sub folders inside sass folder */
11 | var output = "./static/css";
12 |
13 | var sassOptions = {
14 | errLogToConsole: true,
15 | outputStyle: 'expanded'
16 | };
17 |
18 | gulp.task('scss', function () {
19 | return gulp
20 | .src(inputScss)
21 | .pipe(sourcemaps.init())
22 | .pipe(sass(sassOptions).on('error', sass.logError))
23 | .pipe(autoprefixer({
24 | browsers: ['last 2 versions'],
25 | browsers: ['> 1%']
26 | }))
27 | .pipe(sourcemaps.write())
28 | .pipe(gulp.dest(output))
29 | .pipe(purgeSourcemaps())
30 | .pipe(rename({
31 | extname: '.min.css'
32 | }))
33 | .pipe(cleanCSS({
34 | keepSpecialComments: 0
35 | }))
36 | .pipe(gulp.dest(output));
37 | });
38 |
39 | gulp.task('watch-scss', function () {
40 | gulp.watch(inputScss, ['scss']);
41 | gutil.log(process.version);
42 | });
43 |
--------------------------------------------------------------------------------
/dist/scss/layouts/_container.scss:
--------------------------------------------------------------------------------
1 | .container {
2 | padding-right: 1rem;
3 | padding-left: 1rem;
4 |
5 | &:not(.is-fluid) {
6 | margin: 0 auto;
7 |
8 | @each $bp, $container-size in $container-sizes {
9 | @include min(#{bp(#{$bp})}) {
10 | width: container(#{$bp});
11 | }
12 | }
13 | }
14 | }
15 |
16 | // ------------------------------
17 | // KSS Documentation
18 | // ------------------------------
19 |
20 | // Container
21 | //
22 | // Atomic Bulldog comes with two containers classes that you can choose from. One fluid container, that will take all the available space.
23 | // One fixed width container (sizes are set in variables/_container-sizes.scss).
24 | //
25 | // Styleguide Layout.Container
26 |
27 | // Container Fluid
28 | //
29 | // `.container.is-fluid`
30 | //
31 | // markup:
32 | //
33 | //
34 | // Lorem ipsum dolor, sit amet consectetur adipisicing elit. Dolorem quisquam ea consequuntur nostrum sint. Explicabo
35 | // neque architecto sint voluptatibus ullam et ea recusandae nihil unde quos amet hic, ut iste?
36 | //
37 | //
38 | //
39 | // Styleguide Layout.Container.fluid
40 |
41 | // Container fixed
42 | //
43 | // `.container`
44 | //
45 | // Sizes are set in variables/_container-sizes.scss
46 | //
47 | // markup:
48 | //
49 | //
50 | // Lorem ipsum dolor, sit amet consectetur adipisicing elit. Dolorem quisquam ea consequuntur nostrum sint. Explicabo
51 | // neque architecto sint voluptatibus ullam et ea recusandae nihil unde quos amet hic, ut iste?
52 | //
53 | //
54 | //
55 | // Styleguide Layout.Container.fixed
--------------------------------------------------------------------------------
/dist/scss/variables/_container-sizes.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // Sass Variables
3 | // ------------------------------
4 | $container-size-prefix: --container-size-;
5 | $container-sizes: (
6 | sm: map-get($breakpoints, sm) - 30px,
7 | md: map-get($breakpoints, md) - 40px,
8 | lg: map-get($breakpoints, lg) - 50px,
9 | xl: map-get($breakpoints, xl) - 400px
10 | );
11 |
12 | // ------------------------------
13 | // Set container function
14 | // ------------------------------
15 | @function container($container-size, $true-val:false) {
16 | @if $use-css-var == true {
17 | @if $true-val == true {
18 | @return map-get($container-sizes, $container-size); //True Val
19 | } @else {
20 | @return var(#{$container-size-prefix}#{$container-size}); //CSS Var
21 | }
22 | } @else {
23 | @return map-get($container-sizes, $container-size); //Disabled CSS Var
24 | }
25 | }
26 |
27 | // ------------------------------
28 | // Set root variables
29 | // ------------------------------
30 | @if $use-css-var == true {
31 | #{$root-default} {
32 | @each $name, $container-size in $container-sizes {
33 | #{$container-size-prefix}#{$name}: $container-size;
34 | }
35 | }
36 | }
37 |
38 | // ------------------------------
39 | // KSS Documentation
40 | // ------------------------------
41 |
42 | // Container Sizes
43 | //
44 | // Container sizes are in the map `$container-sizes`
45 | //
46 | // --------
47 | // * `sm`
48 | // * `md`
49 | // * `lg`
50 | // * `xl`
51 | // --------
52 | //
53 | // Container Sizes can be called in the sass project using the function:
54 | //
55 | // `container($container-size, $true-val:false)`.
56 | //
57 | // Function examples to call the map:
58 | // * `container(md);` => `var(--container-size-sm);` If $use-css-var = true
59 | // * `container(md);` => `720px;` If $use-css-var = false
60 | // * `container(md, true)` => `720px;`
61 | //
62 | // Styleguide Variables.container
--------------------------------------------------------------------------------
/dist/scss/NO-USE-demo-style.scss:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Lato:300,400,700');
2 |
3 | $dark-blue: #2c303a;
4 | $blue: #3494e6;
5 | $pink: #ec6ead;
6 | $white: #ffffff;
7 |
8 |
9 | html{
10 | font-size: 20px;
11 | }
12 |
13 | body {
14 | background-color: $dark-blue;
15 | color: $white;
16 | font-family: 'Lato', Arial, Helvetica, sans-serif;
17 | }
18 |
19 | h1{
20 | font-size: 2.5rem;
21 | }
22 |
23 | h2{
24 | font-size: 2rem;
25 | }
26 |
27 | :not(pre)>code[class*=language-],
28 | pre[class*=language-] {
29 | background-color: transparentize($white, 0.85);
30 | border-radius: 5px;
31 | }
32 |
33 | code,
34 | span.highlight {
35 | background-color: transparentize($white, 0.85);
36 | }
37 |
38 | span.alert{
39 | background-color: transparentize($pink, 0.42);
40 | }
41 |
42 | header {
43 | color: $white;
44 | text-align: center;
45 | margin-top: 8rem;
46 | margin-bottom: 8rem;
47 |
48 | & > .grid{
49 | margin-top: 3rem;
50 | }
51 |
52 | .sub-example{
53 | .example--item{
54 | background: transparentize($white, 0.4);
55 | color: $dark-blue;
56 | }
57 | }
58 | }
59 |
60 | .example--item {
61 | background: linear-gradient(45deg, $blue, $pink );
62 | padding: 1rem;
63 | border-radius: 5px;
64 | text-align: center;
65 | width: 100%;
66 | height: 100%;
67 |
68 | p {
69 | font-size: 1.2rem;
70 | }
71 |
72 | &.is-sticky{
73 | height: auto;
74 | position: sticky;
75 | top: 1rem;
76 | }
77 | }
78 |
79 | .example{
80 | margin-bottom: 8rem;
81 | .grid{
82 | margin-bottom: 1rem;
83 | }
84 | }
85 |
86 | blockquote{
87 | margin: 0;
88 | background-color: transparentize($white, 0.7);
89 | padding: 1rem;
90 | border-left: 0.5rem solid $blue;
91 | }
92 |
93 | a { //[href*="//"]
94 | color: $white;
95 | border-bottom: 3px solid $blue;
96 | box-shadow: inset 0 -5px 0 $blue;
97 | transition: background .3s ease-in-out;
98 | text-decoration: none;
99 |
100 | &:hover, &:focus {
101 | background: $blue;
102 | }
103 | }
104 |
105 | ul{
106 | li{
107 | margin-bottom: 0.5rem;
108 | }
109 | }
--------------------------------------------------------------------------------
/dist/scss/variables/_breakpoints.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // Sass Variables
3 | // ------------------------------
4 | $bp-prefix: --bp-;
5 | $breakpoints: (
6 | xs: 320px, // Smartphone
7 | sm: 600px, // Tablets
8 | md: 900px, // Tablets Landscape and small desktops
9 | lg: 1200px, // Desktops
10 | xl: 1800px, // Large Desktop
11 | );
12 |
13 | // ------------------------------
14 | // Set bp function
15 | // ------------------------------
16 | //Can't use CSS variables in media queries the bp var only print the value the bp-var function will print the variable
17 | @function bp($bp) {
18 | @return em(map-get($breakpoints, $bp));
19 | }
20 |
21 | @function bp-var($bp, $true-val:false) {
22 | @if $use-css-var == true {
23 | @if $true-val == true {
24 | @return map-get($breakpoints, $bp); //True Val
25 | } @else {
26 | @return var(#{$bp-prefix}#{$bp}); //CSS Var
27 | }
28 | } @else {
29 | @return map-get($breakpoints, $bp); //Disabled CSS Var
30 | }
31 | }
32 |
33 | // ------------------------------
34 | // Set root variables
35 | // ------------------------------
36 | @if $use-css-var == true {
37 | #{$root-default} {
38 | @each $name, $bp in $breakpoints {
39 | #{$bp-prefix}#{$name}: $bp; //Not using em as not being use in media queries
40 | }
41 | }
42 | }
43 |
44 | // ------------------------------
45 | // KSS Documentation
46 | // ------------------------------
47 |
48 | // Breakpoints
49 | //
50 | // Breakpoints are in the map `$breakpoints`
51 | //
52 | // ---------------
53 | // * `xs`: 320px, // Smartphone
54 | // * `sm`: 600px, // Tablets
55 | // * `md`: 900px, // Tablets Landscape and small desktops
56 | // * `lg`: 1200px, // Desktops
57 | // * `xl`: 1800px, // Large Desktop
58 | // ---------------
59 | //
60 | // Breakpoints can be called in the sass project using the functions:
61 | //
62 | // `bp($bp)` which will output a value in em
63 | //
64 | // `bp-var($bp, $true-val:false)` which will output the CSS variable
65 | //
66 | // Usage of bp():
67 | // * `bp(sm);` => `36em`
68 | //
69 | // Usage of bp-var():
70 | // * `bp-var(sm);` => `var(--bp-sm);` If $use-css-var = true
71 | // * `bp-var(sm);` => `576px;` If $use-css-var = false
72 | // * `bp-var(sm, true)` => `576px;`
73 | //
74 | // Styleguide Variables.breakpoints
75 |
--------------------------------------------------------------------------------
/dist/scss/variables/_spacers.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // Sass Variables
3 | // ------------------------------
4 | $spacer-reference: 1rem;
5 | $spacer-prefix: --spacer-;
6 | $spacers: (
7 | 0: 0,
8 | 1: ($spacer-reference * 0.25),
9 | 2: ($spacer-reference * 0.5),
10 | 3: $spacer-reference,
11 | 4: ($spacer-reference * 1.25),
12 | 5: ($spacer-reference * 1.5),
13 | 6: ($spacer-reference * 3),
14 | 7: ($spacer-reference * 6),
15 | 8: ($spacer-reference * 9),
16 | 9: ($spacer-reference * 12)
17 | );
18 |
19 | // ------------------------------
20 | // Set spacer function
21 | // ------------------------------
22 | @function spacer($spacer, $true-val:false) {
23 | @if $use-css-var == true {
24 | @if $true-val == true {
25 | @return map-get($spacers, $spacer); //True Val
26 | } @else {
27 | @return var(#{$spacer-prefix}#{$spacer}); //CSS Var
28 | }
29 | } @else {
30 | @return map-get($spacers, $spacer); //Disabled CSS Var
31 | }
32 | }
33 |
34 | // ------------------------------
35 | // Set root variables
36 | // ------------------------------
37 | @if $use-css-var == true {
38 | #{$root-default} {
39 | @each $name, $spacer in $spacers {
40 | #{$spacer-prefix}#{$name}: $spacer;
41 | }
42 | }
43 | }
44 |
45 | // ------------------------------
46 | //KSS Documentation
47 | // ------------------------------
48 |
49 | // Spacers
50 | //
51 | // Spacers is use to for padding and margin grid-gap in the project. The base value is set with $spacer-reference (1rem)
52 | //
53 | // ---------------
54 | // * `0`: 0,
55 | // * `1`: ($spacer-reference * 0.25),
56 | // * `2`: ($spacer-reference * 0.5),
57 | // * `3`: $spacer-reference,
58 | // * `4`: ($spacer-reference * 1.25),
59 | // * `5`: ($spacer-reference * 1.5),
60 | // * `6`: ($spacer-reference * 3),
61 | // * `7`: ($spacer-reference * 6),
62 | // * `8`: ($spacer-reference * 9),
63 | // * `9`: ($spacer-reference * 12)
64 | // ---------------
65 | //
66 | // spacer sizes can be called in the sass project using the functions:
67 | //
68 | // `spacer($spacer, $true-val:false)` which will output by default the CSS variable
69 | //
70 | // Usage of grid-item-size():
71 | // * `spacer(4)` => `var(--spacer-4)` If $use-css-var = true
72 | // * `spacer(4)` => `1.25rem` If $use-css-var = false
73 | // * `spacer(4, true)` => `1.25rem`
74 | //
75 | // Styleguide Variables.Spacers
--------------------------------------------------------------------------------
/dist/scss/mixins/_media-queries.scss:
--------------------------------------------------------------------------------
1 | /*Min and Max mixins*/
2 | @mixin min($bp, $max: "null", $device: "screen") {
3 | @if $max == "null" {
4 | @media only #{$device} and (min-width: #{$bp}) {
5 | @content;
6 | }
7 | } @else {
8 | @media only #{$device} and (min-width: #{$bp}) and (max-width: #{$max}) {
9 | @content;
10 | }
11 | }
12 | }
13 |
14 | @mixin max($bp, $min: "null", $device: "screen") {
15 | @if $min == "null" {
16 | @media only #{$device} and (max-width: #{$bp}) {
17 | @content;
18 | }
19 | } @else {
20 | @media only #{$device} and (max-width: #{$bp}) and (min-width: #{$min}) {
21 | @content;
22 | }
23 | }
24 | }
25 |
26 | // ------------------------------
27 | // KSS Documentation
28 | // ------------------------------
29 |
30 | // min(#{bp(your bp)}){}
31 | //
32 | // `@include min($bp, $max: "null", $device: "screen"){}`
33 | //
34 | // Parameters:
35 | // * `$bp` - Breakpoints are defines in the map variables `$breakpoints`, breakpoints can be called with the function `bp()`. As we call a function
36 | // inside a mixin we will need to use sass interpolation, `#{bp()}`. This will return a value in em.
37 | // * `$max` - Optional max value, using $breakpoints map
38 | // * `$device` - Default screen
39 | //
40 | // Usage:
41 | // * `h2{@include min(#{bp(sm)}){font-size: font-size(2);}}`
42 | //
43 | // Output:
44 | // * `@media only screen and (min-width: 36em) {h2{font-size: 2.5rem;}`
45 | //
46 | // Styleguide Mixins.min
47 |
48 | // ------------------------------
49 | /////////////////////////////////
50 | // ------------------------------
51 |
52 | // max(#{bp(your bp)}){}
53 | //
54 | // `@include max($bp, $min: "null", $device: "screen"){}`
55 | //
56 | // /!\ Atomic Bulldog is mobile first, it is not recommended to use max media queries
57 | //
58 | // Parameters:
59 | // * `$bp` - Breakpoints are defines in the map variables `$breakpoints`, breakpoints can be called with the function `bp()`. As we call a function
60 | // inside a mixin we will need to use sass interpolation, `#{bp()}`. This will return a value in em.
61 | // * `$min` - Optional min value, using $breakpoints map
62 | // * `$device` - Default screen
63 | //
64 | // Usage:
65 | // * `h2{@include max(#{bp(sm)}){font-size: font-size(2);}}`
66 | //
67 | // Output:
68 | // * `@media only screen and (max-width: 36em) {h2{font-size: 2.5rem;}`
69 | //
70 | // Styleguide Mixins.max
--------------------------------------------------------------------------------
/dist/scss/layouts/_grid-fallback-ie.scss:
--------------------------------------------------------------------------------
1 | /* Progressive Enhancement for browsers not supporting grid except IE */
2 |
3 | *, *::before, *::after{
4 | box-sizing: border-box;
5 | }
6 |
7 | /* IE10 and 11 Fallback to be remove when < 1%*/
8 | @media screen and (-ms-high-contrast: active),
9 | screen and (-ms-high-contrast: none) {
10 | .grid {
11 | display: flex;
12 | flex-wrap: wrap;
13 | flex-direction: row;
14 | margin-right: (spacer(1, true) * -1) / 2;
15 | margin-left: (spacer(1, true) * -1) / 2;
16 |
17 | & > * {
18 | flex: 0 0 percentage(1 / $grid-columns);
19 | max-width: percentage(1 / $grid-columns);
20 | min-height: 1px;
21 | padding-right: spacer(1, true) / 2;
22 | padding-left: spacer(1, true) / 2;
23 | margin-bottom: spacer(1, true);
24 | }
25 |
26 | @each $key, $spacer in $spacers {
27 | &.has-grid-gap-#{$key} {
28 | margin-right: (spacer($key, true) * -1) / 2;
29 | margin-left: (spacer($key, true) * -1) / 2;
30 |
31 | & > * {
32 | padding-right: spacer($key, true) / 2;
33 | padding-left: spacer($key, true) / 2;
34 | margin-bottom: spacer($key, true);
35 | }
36 | }
37 | }
38 |
39 | @for $i from 1 through $grid-columns {
40 | &.has-cols-#{$i} {
41 | & > * {
42 | flex: 0 0 percentage(1 / $i);
43 | max-width: percentage(1 / $i);
44 | }
45 | }
46 | }
47 |
48 | @each $bp, $bpKey in $breakpoints {
49 | @include min(#{bp(#{$bp})}) {
50 | @each $key, $spacer in $spacers {
51 | &.has-grid-gap-#{$bp}-#{$key} {
52 | margin-right: (spacer($key, true) * -1) / 2;
53 | margin-left: (spacer($key, true) * -1) / 2;
54 |
55 | & > * {
56 | padding-right: spacer($key, true) / 2;
57 | padding-left: spacer($key, true) / 2;
58 | margin-bottom: spacer($key, true);
59 | }
60 | }
61 | }
62 |
63 | @for $i from 1 through $grid-columns {
64 | &.has-cols-#{$bp}-#{$i} {
65 | & > * {
66 | flex: 0 0 percentage(1 / $i);
67 | max-width: percentage(1 / $i);
68 | }
69 | }
70 | }
71 | }
72 | }
73 | }
74 | }
75 |
76 | // ------------------------------
77 | // KSS Documentation
78 | // ------------------------------
79 |
80 | // Doc in _grid-fallback.scss
--------------------------------------------------------------------------------
/dist/scss/layouts/_grid-fallback.scss:
--------------------------------------------------------------------------------
1 | /* Progressive Enhancement for browsers not supporting grid except IE */
2 |
3 | *, *::before, *::after{
4 | box-sizing: border-box;
5 | }
6 |
7 | @supports not (display: grid) {
8 | @supports (display: flex) {
9 | .grid {
10 | display: flex;
11 | flex-wrap: wrap;
12 | flex-direction: row;
13 | margin-right: (spacer(1, true) * -1) / 2;
14 | margin-left: (spacer(1, true) * -1) / 2;
15 |
16 | & > * {
17 | flex: 0 0 percentage(1 / $grid-columns);
18 | max-width: percentage(1 / $grid-columns);
19 | min-height: 1px;
20 | padding-right: spacer(1, true) / 2;
21 | padding-left: spacer(1, true) / 2;
22 | margin-bottom: spacer(1, true);
23 | }
24 |
25 | @each $key, $spacer in $spacers {
26 | &.has-grid-gap-#{$key} {
27 | margin-right: (spacer($key, true) * -1) / 2;
28 | margin-left: (spacer($key, true) * -1) / 2;
29 |
30 | & > * {
31 | padding-right: spacer($key, true) / 2;
32 | padding-left: spacer($key, true) / 2;
33 | margin-bottom: spacer($key, true);
34 | }
35 | }
36 | }
37 |
38 | @for $i from 1 through $grid-columns {
39 | &.has-cols-#{$i} {
40 | & > * {
41 | flex: 0 0 percentage(1 / $i);
42 | max-width: percentage(1 / $i);
43 | }
44 | }
45 | }
46 |
47 | @each $bp, $bpKey in $breakpoints {
48 | @include min(#{bp(#{$bp})}) {
49 | @each $key, $spacer in $spacers {
50 | &.has-grid-gap-#{$bp}-#{$key} {
51 | margin-right: (spacer($key, true) * -1) / 2;
52 | margin-left: (spacer($key, true) * -1) / 2;
53 |
54 | & > * {
55 | padding-right: spacer($key, true) / 2;
56 | padding-left: spacer($key, true) / 2;
57 | margin-bottom: spacer($key, true);
58 | }
59 | }
60 | }
61 |
62 | @for $i from 1 through $grid-columns {
63 | &.has-cols-#{$bp}-#{$i} {
64 | & > * {
65 | flex: 0 0 percentage(1 / $i);
66 | max-width: percentage(1 / $i);
67 | }
68 | }
69 | }
70 | }
71 | }
72 | }
73 | }
74 | }
75 |
76 | // ------------------------------
77 | // KSS Documentation
78 | // ------------------------------
79 |
80 | // Grid Fallback
81 | //
82 | // Atomic Bulldog grid use progressive enhancement for browsers not supporting CSS grid layout. It will use an alternative grid base on flexbox. Not all classes are supported.
83 | //
84 | // This grid will compile in screen-fallback.css
85 | //
86 | // For now the fallback grid only works with the following classes:
87 | // * `.grid`
88 | // * `.has-cols-{bp}-{num-of-col}`
89 | // * `.has-grid-gap-{num}`
90 | //
91 | //
92 | // Try to see this page on IE: 11.
93 | //
94 | //
95 | // Can I Use flexbox? Data on support for the flexbox feature across the major browsers from caniuse.com.
96 | //
97 | //
98 | // Styleguide Layout.Grid.z
99 |
--------------------------------------------------------------------------------
/static/css/NO-USE-demo-style.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Lato:300,400,700");
2 | html {
3 | font-size: 20px;
4 | }
5 |
6 | body {
7 | background-color: #2c303a;
8 | color: #ffffff;
9 | font-family: 'Lato', Arial, Helvetica, sans-serif;
10 | }
11 |
12 | h1 {
13 | font-size: 2.5rem;
14 | }
15 |
16 | h2 {
17 | font-size: 2rem;
18 | }
19 |
20 | :not(pre) > code[class*=language-],
21 | pre[class*=language-] {
22 | background-color: rgba(255, 255, 255, 0.15);
23 | border-radius: 5px;
24 | }
25 |
26 | code,
27 | span.highlight {
28 | background-color: rgba(255, 255, 255, 0.15);
29 | }
30 |
31 | span.alert {
32 | background-color: rgba(236, 110, 173, 0.58);
33 | }
34 |
35 | header {
36 | color: #ffffff;
37 | text-align: center;
38 | margin-top: 8rem;
39 | margin-bottom: 8rem;
40 | }
41 |
42 | header > .grid {
43 | margin-top: 3rem;
44 | }
45 |
46 | header .sub-example .example--item {
47 | background: rgba(255, 255, 255, 0.6);
48 | color: #2c303a;
49 | }
50 |
51 | .example--item {
52 | background: linear-gradient(45deg, #3494e6, #ec6ead);
53 | padding: 1rem;
54 | border-radius: 5px;
55 | text-align: center;
56 | width: 100%;
57 | height: 100%;
58 | }
59 |
60 | .example--item p {
61 | font-size: 1.2rem;
62 | }
63 |
64 | .example--item.is-sticky {
65 | height: auto;
66 | position: -webkit-sticky;
67 | position: sticky;
68 | top: 1rem;
69 | }
70 |
71 | .example {
72 | margin-bottom: 8rem;
73 | }
74 |
75 | .example .grid {
76 | margin-bottom: 1rem;
77 | }
78 |
79 | blockquote {
80 | margin: 0;
81 | background-color: rgba(255, 255, 255, 0.3);
82 | padding: 1rem;
83 | border-left: 0.5rem solid #3494e6;
84 | }
85 |
86 | a {
87 | color: #ffffff;
88 | border-bottom: 3px solid #3494e6;
89 | box-shadow: inset 0 -5px 0 #3494e6;
90 | transition: background .3s ease-in-out;
91 | text-decoration: none;
92 | }
93 |
94 | a:hover, a:focus {
95 | background: #3494e6;
96 | }
97 |
98 | ul li {
99 | margin-bottom: 0.5rem;
100 | }
101 |
102 | /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5PLVVTRS1kZW1vLXN0eWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0VBQVk7QUFRWjtFQUNFLGdCQUFlO0NBQ2hCOztBQUVEO0VBQ0UsMEJBWGlCO0VBWWpCLGVBVGE7RUFVYixrREFBaUQ7Q0FDbEQ7O0FBRUQ7RUFDRSxrQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSxnQkFBZTtDQUNoQjs7QUFFRDs7RUFFRSw0Q0FBOEM7RUFDOUMsbUJBQWtCO0NBQ25COztBQUVEOztFQUVFLDRDQUE4QztDQUMvQzs7QUFFRDtFQUNFLDRDQUE2QztDQUM5Qzs7QUFFRDtFQUNFLGVBckNhO0VBc0NiLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsb0JBQW1CO0NBWXBCOztBQWhCRDtFQU9JLGlCQUFnQjtDQUNqQjs7QUFSSDtFQVlNLHFDQUF1QztFQUN2QyxlQXBEYTtDQXFEZDs7QUFJTDtFQUNFLHFEQUFpRDtFQUNqRCxjQUFhO0VBQ2IsbUJBQWtCO0VBQ2xCLG1CQUFrQjtFQUNsQixZQUFXO0VBQ1gsYUFBWTtDQVdiOztBQWpCRDtFQVNJLGtCQUFpQjtDQUNsQjs7QUFWSDtFQWFJLGFBQVk7RUFDWix5QkFBZ0I7RUFBaEIsaUJBQWdCO0VBQ2hCLFVBQVM7Q0FDVjs7QUFHSDtFQUNFLG9CQUFtQjtDQUlwQjs7QUFMRDtFQUdJLG9CQUFtQjtDQUNwQjs7QUFHSDtFQUNFLFVBQVM7RUFDVCwyQ0FBNkM7RUFDN0MsY0FBYTtFQUNiLGtDQXRGWTtDQXVGYjs7QUFFRDtFQUNFLGVBeEZhO0VBeUZiLGlDQTNGWTtFQTRGWixtQ0E1Rlk7RUE2RlosdUNBQXNDO0VBQ3RDLHNCQUFxQjtDQUt0Qjs7QUFWRDtFQVFJLG9CQWpHVTtDQWtHWDs7QUFHSDtFQUVJLHNCQUFxQjtDQUN0QiIsImZpbGUiOiJOTy1VU0UtZGVtby1zdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PUxhdG86MzAwLDQwMCw3MDAnKTtcclxuXHJcbiRkYXJrLWJsdWU6ICMyYzMwM2E7XHJcbiRibHVlOiAjMzQ5NGU2O1xyXG4kcGluazogI2VjNmVhZDtcclxuJHdoaXRlOiAjZmZmZmZmO1xyXG5cclxuXHJcbmh0bWx7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG59XHJcblxyXG5ib2R5IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1ibHVlO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZm9udC1mYW1pbHk6ICdMYXRvJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuaDF7XHJcbiAgZm9udC1zaXplOiAyLjVyZW07XHJcbn1cclxuXHJcbmgye1xyXG4gIGZvbnQtc2l6ZTogMnJlbTtcclxufVxyXG5cclxuOm5vdChwcmUpPmNvZGVbY2xhc3MqPWxhbmd1YWdlLV0sXHJcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjg1KTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbmNvZGUsXHJcbnNwYW4uaGlnaGxpZ2h0IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuODUpO1xyXG59XHJcblxyXG5zcGFuLmFsZXJ0e1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRwaW5rLCAwLjQyKTtcclxufVxyXG5cclxuaGVhZGVyIHtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tdG9wOiA4cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDhyZW07XHJcblxyXG4gICYgPiAuZ3JpZHtcclxuICAgIG1hcmdpbi10b3A6IDNyZW07XHJcbiAgfVxyXG5cclxuICAuc3ViLWV4YW1wbGV7XHJcbiAgICAuZXhhbXBsZS0taXRlbXtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjQpO1xyXG4gICAgICBjb2xvcjogJGRhcmstYmx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5leGFtcGxlLS1pdGVtIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICRibHVlLCAkcGluayApO1xyXG4gIHBhZGRpbmc6IDFyZW07IFxyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICBwIHtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1zdGlja3l7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgdG9wOiAxcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmV4YW1wbGV7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHJlbTtcclxuICAuZ3JpZHtcclxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgfVxyXG59XHJcblxyXG5ibG9ja3F1b3Rle1xyXG4gIG1hcmdpbjogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuNyk7XHJcbiAgcGFkZGluZzogMXJlbTtcclxuICBib3JkZXItbGVmdDogMC41cmVtIHNvbGlkICRibHVlO1xyXG59XHJcblxyXG5hIHsgLy9baHJlZio9XCIvL1wiXVxyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRibHVlO1xyXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgLTVweCAwICRibHVlO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzIGVhc2UtaW4tb3V0O1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHJcbiAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICBiYWNrZ3JvdW5kOiAkYmx1ZTtcclxuICB9XHJcbn1cclxuXHJcbnVse1xyXG4gIGxpe1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gIH1cclxufSJdfQ== */
103 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Build results
16 | [Dd]ebug/
17 | [Dd]ebugPublic/
18 | [Rr]elease/
19 | [Rr]eleases/
20 | x64/
21 | x86/
22 | bld/
23 | [Bb]in/
24 | [Oo]bj/
25 | [Ll]og/
26 |
27 | # Visual Studio 2015 cache/options directory
28 | .vs/
29 | # Uncomment if you have tasks that create the project's static files in wwwroot
30 | #wwwroot/
31 |
32 | # MSTest test Results
33 | [Tt]est[Rr]esult*/
34 | [Bb]uild[Ll]og.*
35 |
36 | # NUNIT
37 | *.VisualState.xml
38 | TestResult.xml
39 |
40 | # Build Results of an ATL Project
41 | [Dd]ebugPS/
42 | [Rr]eleasePS/
43 | dlldata.c
44 |
45 | # .NET Core
46 | project.lock.json
47 | project.fragment.lock.json
48 | artifacts/
49 | **/Properties/launchSettings.json
50 |
51 | *_i.c
52 | *_p.c
53 | *_i.h
54 | *.ilk
55 | *.meta
56 | *.obj
57 | *.pch
58 | *.pdb
59 | *.pgc
60 | *.pgd
61 | *.rsp
62 | *.sbr
63 | *.tlb
64 | *.tli
65 | *.tlh
66 | *.tmp
67 | *.tmp_proj
68 | *.log
69 | *.vspscc
70 | *.vssscc
71 | .builds
72 | *.pidb
73 | *.svclog
74 | *.scc
75 |
76 | # Chutzpah Test files
77 | _Chutzpah*
78 |
79 | # Visual C++ cache files
80 | ipch/
81 | *.aps
82 | *.ncb
83 | *.opendb
84 | *.opensdf
85 | *.sdf
86 | *.cachefile
87 | *.VC.db
88 | *.VC.VC.opendb
89 |
90 | # Visual Studio profiler
91 | *.psess
92 | *.vsp
93 | *.vspx
94 | *.sap
95 |
96 | # TFS 2012 Local Workspace
97 | $tf/
98 |
99 | # Guidance Automation Toolkit
100 | *.gpState
101 |
102 | # ReSharper is a .NET coding add-in
103 | _ReSharper*/
104 | *.[Rr]e[Ss]harper
105 | *.DotSettings.user
106 |
107 | # JustCode is a .NET coding add-in
108 | .JustCode
109 |
110 | # TeamCity is a build add-in
111 | _TeamCity*
112 |
113 | # DotCover is a Code Coverage Tool
114 | *.dotCover
115 |
116 | # Visual Studio code coverage results
117 | *.coverage
118 | *.coveragexml
119 |
120 | # NCrunch
121 | _NCrunch_*
122 | .*crunch*.local.xml
123 | nCrunchTemp_*
124 |
125 | # MightyMoose
126 | *.mm.*
127 | AutoTest.Net/
128 |
129 | # Web workbench (sass)
130 | .sass-cache/
131 |
132 | # Installshield output folder
133 | [Ee]xpress/
134 |
135 | # DocProject is a documentation generator add-in
136 | DocProject/buildhelp/
137 | DocProject/Help/*.HxT
138 | DocProject/Help/*.HxC
139 | DocProject/Help/*.hhc
140 | DocProject/Help/*.hhk
141 | DocProject/Help/*.hhp
142 | DocProject/Help/Html2
143 | DocProject/Help/html
144 |
145 | # Click-Once directory
146 | publish/
147 |
148 | # Publish Web Output
149 | *.[Pp]ublish.xml
150 | *.azurePubxml
151 | # TODO: Comment the next line if you want to checkin your web deploy settings
152 | # but database connection strings (with potential passwords) will be unencrypted
153 | *.pubxml
154 | *.publishproj
155 |
156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
157 | # checkin your Azure Web App publish settings, but sensitive information contained
158 | # in these scripts will be unencrypted
159 | PublishScripts/
160 |
161 | # NuGet Packages
162 | *.nupkg
163 | # The packages folder can be ignored because of Package Restore
164 | **/packages/*
165 | # except build/, which is used as an MSBuild target.
166 | !**/packages/build/
167 | # Uncomment if necessary however generally it will be regenerated when needed
168 | #!**/packages/repositories.config
169 | # NuGet v3's project.json files produces more ignorable files
170 | *.nuget.props
171 | *.nuget.targets
172 |
173 | # Microsoft Azure Build Output
174 | csx/
175 | *.build.csdef
176 |
177 | # Microsoft Azure Emulator
178 | ecf/
179 | rcf/
180 |
181 | # Windows Store app package directories and files
182 | AppPackages/
183 | BundleArtifacts/
184 | Package.StoreAssociation.xml
185 | _pkginfo.txt
186 |
187 | # Visual Studio cache files
188 | # files ending in .cache can be ignored
189 | *.[Cc]ache
190 | # but keep track of directories ending in .cache
191 | !*.[Cc]ache/
192 |
193 | # Others
194 | ClientBin/
195 | ~$*
196 | *~
197 | *.dbmdl
198 | *.dbproj.schemaview
199 | *.jfm
200 | *.pfx
201 | *.publishsettings
202 | orleans.codegen.cs
203 |
204 | # Since there are multiple workflows, uncomment next line to ignore bower_components
205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
206 | #bower_components/
207 |
208 | # RIA/Silverlight projects
209 | Generated_Code/
210 |
211 | # Backup & report files from converting an old project file
212 | # to a newer Visual Studio version. Backup files are not needed,
213 | # because we have git ;-)
214 | _UpgradeReport_Files/
215 | Backup*/
216 | UpgradeLog*.XML
217 | UpgradeLog*.htm
218 |
219 | # SQL Server files
220 | *.mdf
221 | *.ldf
222 | *.ndf
223 |
224 | # Business Intelligence projects
225 | *.rdl.data
226 | *.bim.layout
227 | *.bim_*.settings
228 |
229 | # Microsoft Fakes
230 | FakesAssemblies/
231 |
232 | # GhostDoc plugin setting file
233 | *.GhostDoc.xml
234 |
235 | # Node.js Tools for Visual Studio
236 | .ntvs_analysis.dat
237 | node_modules/
238 |
239 | # Typescript v1 declaration files
240 | typings/
241 |
242 | # Visual Studio 6 build log
243 | *.plg
244 |
245 | # Visual Studio 6 workspace options file
246 | *.opt
247 |
248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
249 | *.vbw
250 |
251 | # Visual Studio LightSwitch build output
252 | **/*.HTMLClient/GeneratedArtifacts
253 | **/*.DesktopClient/GeneratedArtifacts
254 | **/*.DesktopClient/ModelManifest.xml
255 | **/*.Server/GeneratedArtifacts
256 | **/*.Server/ModelManifest.xml
257 | _Pvt_Extensions
258 |
259 | # Paket dependency manager
260 | .paket/paket.exe
261 | paket-files/
262 |
263 | # FAKE - F# Make
264 | .fake/
265 |
266 | # JetBrains Rider
267 | .idea/
268 | *.sln.iml
269 |
270 | # CodeRush
271 | .cr/
272 |
273 | # Python Tools for Visual Studio (PTVS)
274 | __pycache__/
275 | *.pyc
276 |
277 | # Cake - Uncomment if you are using it
278 | # tools/**
279 | # !tools/packages.config
280 |
281 | # Telerik's JustMock configuration file
282 | *.jmconfig
283 |
284 | # BizTalk build output
285 | *.btp.cs
286 | *.btm.cs
287 | *.odx.cs
288 | *.xsd.cs
289 |
--------------------------------------------------------------------------------
/dist/scss/layouts/_grid.scss:
--------------------------------------------------------------------------------
1 | // ------------------------------
2 | // Grid, using CSS Grid Layout
3 | // ------------------------------
4 | //Main Grid
5 | @supports (display: grid) {
6 | .grid {
7 | display: grid;
8 | grid-template-columns: repeat($grid-columns, minmax(0, 1fr));
9 | grid-gap: spacer(1);
10 |
11 | &.is-dense{
12 | grid-auto-flow: dense;
13 | }
14 |
15 | .has-col-all {
16 | grid-column: 1 / -1;
17 | }
18 |
19 | .has-row-all {
20 | grid-row: 1 / -1;
21 | }
22 |
23 | @for $i from 1 through $grid-columns {
24 | .has-col-#{$i} {
25 | grid-column: span $i;
26 | }
27 |
28 | &.has-cols-#{$i} {
29 | grid-template-columns: repeat($i, minmax(0, 1fr));
30 | }
31 | }
32 |
33 | @for $i from 1 through 10 {
34 | .has-row-#{$i} {
35 | grid-row: span $i;
36 | }
37 | }
38 |
39 | @each $key, $spacer in $spacers {
40 | &.has-grid-gap-#{$key} {
41 | grid-gap: spacer($key);
42 | }
43 | }
44 |
45 | // Set grid responsive classes
46 | @each $bp, $bpKey in $breakpoints {
47 | @include min(#{bp(#{$bp})}) {
48 | // Full col item
49 | .has-col-#{$bp}-all {
50 | grid-column: 1 / -1;
51 | }
52 |
53 | // Full row item
54 | .has-row-#{$bp}-all {
55 | grid-row: 1 / -1;
56 | }
57 |
58 | // Set number of col
59 | @for $i from 1 through $grid-columns {
60 | .has-col-#{$bp}-#{$i} {
61 | grid-column: span $i;
62 | }
63 |
64 | &.has-cols-#{$bp}-#{$i} {
65 | grid-template-columns: repeat($i, minmax(0, 1fr));
66 | }
67 | }
68 |
69 | // Set number of row
70 | @for $i from 1 through $grid-columns {
71 | .has-row-#{$bp}-#{$i} {
72 | grid-row: span $i;
73 | }
74 | }
75 |
76 | // Set grid gap
77 | @each $key, $spacer in $spacers {
78 | &.has-grid-gap-#{$bp}-#{$key} {
79 | grid-gap: spacer($key);
80 | }
81 | }
82 | }
83 | }
84 | }
85 | }
86 |
87 | // ------------------------------
88 | // KSS Documentation
89 | // ------------------------------
90 |
91 | // Grid
92 | //
93 | // Atomic Bulldog uses CSS grid layout for its grid. It only applies this grid to supported browsers using the [CSS `@supports`](https://developer.mozilla.org/en-US/docs/Web/CSS/%40supports) rule.
94 | //
95 | // See `Grid fallback` if you need to use the fallback grid.
96 | //
97 | //
98 | // Can I Use css-grid? Data on support for the css-grid feature across the major browsers from caniuse.com.
99 | //
100 | //
101 | // Can I Use css-supports-api? Data on support for the css-supports-api feature across the major browsers from caniuse.com.
102 | //
103 | //
104 | // The grid is by default 12 columns base, This grid is two dimensional, meaning grid items can grow in the horizontal axis (has-col-{breakpoint}-{size}) and on the vertical axis (has-row-{breakpoint}-{size}).
105 | //
106 | // {breakpoint} is set from the `$breakpoints` map (see variables), {size} is set as well in variables. It goes from 0 to 12 ($grid-columns) by default or 0 up to 12 base on the number of columns set using `.has-cols-{bp}-{size}`
107 | //
108 | // markup:
109 | //
110 | //
113 | //
116 | //
119 | //
122 | //
125 | //
128 | //
129 | //
130 | // Styleguide Layout.Grid
131 |
132 | // ------------------------------
133 | /////////////////////////////////
134 | // ------------------------------
135 |
136 | // Grid - Set number of columns
137 | //
138 | // The number of columns can be change by adding .has-cols-{bp}-{num-of-cols}. bp is optional, number of columns goes from 1 to 12.
139 | //
140 | // {breakpoint} is set from the `$breakpoints` map (see variables), {size} are set as well in variables. It goes from 0 to 12 ($grid-columns).
141 | //
142 | // Resize the window to see changes.
143 | //
144 | // markup:
145 | //
146 | //
149 | //
152 | //
155 | //
158 | //
161 | //
164 | //
167 | //
170 | //
173 | //
176 | //
177 | //
178 | // .has-cols-md-1 - 1 col layout
179 | // .has-cols-md-2 - 2 cols layout
180 | // .has-cols-md-3 - 3 cols layout
181 | // .has-cols-md-4 - 4 cols layout
182 | // .has-cols-md-5 - 5 cols layout
183 | // .has-cols-md-6 - 6 cols layout
184 | // .has-cols-md-7 - 7 cols layout
185 | // .has-cols-md-8 - 8 cols layout
186 | // .has-cols-md-9 - 9 cols layout
187 | // .has-cols-md-10 - 10 cols layout
188 | // .has-cols-md-11 - 11 cols layout
189 | // .has-cols-md-12 - 12 cols layout
190 | //
191 | // Styleguide Layout.Grid.b
192 |
193 | // ------------------------------
194 | /////////////////////////////////
195 | // ------------------------------
196 |
197 | // Grid Modifiers
198 | //
199 | // Styleguide Layout.Grid.modifiers
200 |
201 | // ------------------------------
202 | /////////////////////////////////
203 | // ------------------------------
204 |
205 | // Grid dense
206 | //
207 | // `.is-dense` with `grid` will make the grid dense.
208 |
209 | // > Is a keyword specifying that the auto-placement algorithm uses a “dense” packing algorithm, which attempts to fill in holes earlier in the grid, if smaller items come up later. This may cause items to appear out-of-order, when doing so would fill in holes left by larger items.
210 |
211 | // https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow
212 | //
213 | // Styleguide Layout.Grid.modifiers
214 |
215 | // Row
216 | //
217 | // Rows can be expended using the class `has-row-{breakpoint}-{size}`. Sizes go from 0 to 12. .has-row-all can be used as well but in this case, the grid needs to have
218 | //`grid-template-rows` set, so the can grow depending on the number of rows.
219 | //
220 | // There is no fallback for these classes.
221 | //
222 | // markup:
223 | //
224 | //
227 | //
230 | //
233 | //
236 | //
239 | //
242 | //
245 | //
248 | //
251 | //
254 | //
255 | //
256 | // Styleguide Layout.Grid.modifiers.row
257 |
258 | // ------------------------------
259 | /////////////////////////////////
260 | // ------------------------------
261 |
262 | // Col
263 | //
264 | // Columns can be expended using the class `has-col-{breakpoint}-{size}`. Sizes go from 0 to 12. .has-col-all can be used as well, grid item will then take the full width.
265 | //
266 | // markup:
267 | //
268 | //
271 | //
274 | //
277 | //
280 | //
283 | //
286 | //
289 | //
292 | //
295 | //
298 | //
299 | //
300 | // Styleguide Layout.Grid.modifiers.col
301 |
302 | // ------------------------------
303 | /////////////////////////////////
304 | // ------------------------------
305 |
306 | // Gaps
307 | //
308 | // Grid gap can be change using `.has-grid-gap-{size}` class. This class use the $spacers map variables
309 | //
310 | // markup:
311 | //
312 | //
315 | //
318 | //
321 | //
324 | //
327 | //
330 | //
333 | //
336 | //
339 | //
342 | //
343 | //
344 | // .has-grid-gap-0 - Grid Gap 0
345 | // .has-grid-gap-1 - Grid Gap 1
346 | // .has-grid-gap-2 - Grid Gap 2
347 | // .has-grid-gap-3 - Grid Gap 3
348 | // .has-grid-gap-4 - Grid Gap 4
349 | // .has-grid-gap-5 - Grid Gap 5
350 | // .has-grid-gap-6 - Grid Gap 6
351 | //
352 | // Styleguide Layout.Grid.modifiers.gap
353 |
--------------------------------------------------------------------------------
/static/css/atomic-bulldog-grid-fallback.min.css:
--------------------------------------------------------------------------------
1 | *,::after,::before{box-sizing:border-box}@supports not (display:grid){@supports (display:flex){.grid{display:flex;flex-wrap:wrap;flex-direction:row;margin-right:-.125rem;margin-left:-.125rem}.grid>*{flex:0 0 8.33333%;max-width:8.33333%;min-height:1px;padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-0{margin-right:0;margin-left:0}.grid.has-grid-gap-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-12>*{flex:0 0 8.33333%;max-width:8.33333%}@media only screen and (min-width:20em){.grid.has-grid-gap-xs-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xs-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xs-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xs-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xs-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xs-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xs-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xs-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xs-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xs-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xs-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xs-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xs-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xs-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xs-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xs-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xs-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xs-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xs-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xs-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xs-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xs-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xs-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xs-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xs-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xs-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xs-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xs-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xs-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xs-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xs-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xs-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:37.5em){.grid.has-grid-gap-sm-0{margin-right:0;margin-left:0}.grid.has-grid-gap-sm-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-sm-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-sm-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-sm-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-sm-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-sm-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-sm-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-sm-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-sm-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-sm-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-sm-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-sm-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-sm-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-sm-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-sm-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-sm-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-sm-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-sm-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-sm-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-sm-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-sm-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-sm-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-sm-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-sm-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-sm-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-sm-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-sm-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-sm-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-sm-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:56.25em){.grid.has-grid-gap-md-0{margin-right:0;margin-left:0}.grid.has-grid-gap-md-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-md-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-md-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-md-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-md-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-md-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-md-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-md-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-md-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-md-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-md-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-md-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-md-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-md-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-md-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-md-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-md-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-md-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-md-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-md-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-md-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-md-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-md-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-md-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-md-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-md-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-md-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-md-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-md-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:75em){.grid.has-grid-gap-lg-0{margin-right:0;margin-left:0}.grid.has-grid-gap-lg-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-lg-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-lg-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-lg-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-lg-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-lg-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-lg-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-lg-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-lg-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-lg-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-lg-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-lg-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-lg-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-lg-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-lg-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-lg-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-lg-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-lg-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-lg-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-lg-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-lg-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-lg-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-lg-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-lg-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-lg-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-lg-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-lg-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-lg-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-lg-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:112.5em){.grid.has-grid-gap-xl-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xl-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xl-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xl-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xl-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xl-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xl-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xl-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xl-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xl-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xl-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xl-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xl-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xl-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xl-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xl-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xl-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xl-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xl-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xl-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xl-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xl-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xl-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xl-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xl-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xl-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xl-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xl-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xl-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xl-12>*{flex:0 0 8.33333%;max-width:8.33333%}}}}
--------------------------------------------------------------------------------
/static/css/atomic-bulldog-grid-fallback-ie.min.css:
--------------------------------------------------------------------------------
1 | *,::after,::before{box-sizing:border-box}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){.grid{display:flex;flex-wrap:wrap;flex-direction:row;margin-right:-.125rem;margin-left:-.125rem}.grid>*{flex:0 0 8.33333%;max-width:8.33333%;min-height:1px;padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-0{margin-right:0;margin-left:0}.grid.has-grid-gap-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:20em),only screen and (-ms-high-contrast:none) and (min-width:20em){.grid.has-grid-gap-xs-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xs-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xs-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xs-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xs-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xs-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xs-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xs-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xs-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xs-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xs-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xs-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xs-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xs-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xs-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xs-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xs-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xs-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xs-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xs-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xs-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xs-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xs-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xs-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xs-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xs-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xs-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xs-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xs-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xs-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xs-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xs-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:37.5em),only screen and (-ms-high-contrast:none) and (min-width:37.5em){.grid.has-grid-gap-sm-0{margin-right:0;margin-left:0}.grid.has-grid-gap-sm-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-sm-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-sm-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-sm-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-sm-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-sm-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-sm-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-sm-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-sm-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-sm-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-sm-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-sm-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-sm-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-sm-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-sm-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-sm-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-sm-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-sm-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-sm-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-sm-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-sm-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-sm-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-sm-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-sm-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-sm-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-sm-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-sm-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-sm-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-sm-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:56.25em),only screen and (-ms-high-contrast:none) and (min-width:56.25em){.grid.has-grid-gap-md-0{margin-right:0;margin-left:0}.grid.has-grid-gap-md-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-md-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-md-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-md-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-md-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-md-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-md-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-md-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-md-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-md-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-md-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-md-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-md-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-md-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-md-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-md-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-md-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-md-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-md-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-md-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-md-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-md-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-md-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-md-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-md-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-md-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-md-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-md-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-md-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:75em),only screen and (-ms-high-contrast:none) and (min-width:75em){.grid.has-grid-gap-lg-0{margin-right:0;margin-left:0}.grid.has-grid-gap-lg-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-lg-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-lg-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-lg-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-lg-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-lg-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-lg-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-lg-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-lg-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-lg-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-lg-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-lg-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-lg-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-lg-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-lg-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-lg-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-lg-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-lg-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-lg-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-lg-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-lg-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-lg-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-lg-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-lg-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-lg-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-lg-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-lg-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-lg-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-lg-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:112.5em),only screen and (-ms-high-contrast:none) and (min-width:112.5em){.grid.has-grid-gap-xl-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xl-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xl-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xl-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xl-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xl-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xl-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xl-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xl-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xl-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xl-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xl-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xl-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xl-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xl-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xl-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xl-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xl-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xl-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xl-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xl-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xl-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xl-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xl-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xl-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xl-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xl-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xl-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xl-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xl-12>*{flex:0 0 8.33333%;max-width:8.33333%}}
--------------------------------------------------------------------------------
/static/css/atomic-bulldog-grid.min.css:
--------------------------------------------------------------------------------
1 | .is-theme-default,.theme-default,:root{--bp-xs:320px;--bp-sm:600px;--bp-md:900px;--bp-lg:1200px;--bp-xl:1800px}.is-theme-default,.theme-default,:root{--container-size-sm:570px;--container-size-md:860px;--container-size-lg:1150px;--container-size-xl:1400px}.is-theme-default,.theme-default,:root{--spacer-0:0;--spacer-1:0.25rem;--spacer-2:0.5rem;--spacer-3:1rem;--spacer-4:1.25rem;--spacer-5:1.5rem;--spacer-6:3rem;--spacer-7:6rem;--spacer-8:9rem;--spacer-9:12rem}.container{padding-right:1rem;padding-left:1rem}.container:not(.is-fluid){margin:0 auto}@media only screen and (min-width:37.5em){.container:not(.is-fluid){width:var(--container-size-sm)}}@media only screen and (min-width:56.25em){.container:not(.is-fluid){width:var(--container-size-md)}}@media only screen and (min-width:75em){.container:not(.is-fluid){width:var(--container-size-lg)}}@media only screen and (min-width:112.5em){.container:not(.is-fluid){width:var(--container-size-xl)}}@supports (display:grid){.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:var(--spacer-1)}.grid.is-dense{grid-auto-flow:dense}.grid .has-col-all{grid-column:1/-1}.grid .has-row-all{grid-row:1/-1}.grid .has-col-1{grid-column:span 1}.grid.has-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-2{grid-column:span 2}.grid.has-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-3{grid-column:span 3}.grid.has-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-4{grid-column:span 4}.grid.has-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-5{grid-column:span 5}.grid.has-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-6{grid-column:span 6}.grid.has-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-7{grid-column:span 7}.grid.has-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-8{grid-column:span 8}.grid.has-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-9{grid-column:span 9}.grid.has-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-10{grid-column:span 10}.grid.has-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-11{grid-column:span 11}.grid.has-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-12{grid-column:span 12}.grid.has-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-1{grid-row:span 1}.grid .has-row-2{grid-row:span 2}.grid .has-row-3{grid-row:span 3}.grid .has-row-4{grid-row:span 4}.grid .has-row-5{grid-row:span 5}.grid .has-row-6{grid-row:span 6}.grid .has-row-7{grid-row:span 7}.grid .has-row-8{grid-row:span 8}.grid .has-row-9{grid-row:span 9}.grid .has-row-10{grid-row:span 10}.grid.has-grid-gap-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-9{grid-gap:var(--spacer-9)}@media only screen and (min-width:20em){.grid .has-col-xs-all{grid-column:1/-1}.grid .has-row-xs-all{grid-row:1/-1}.grid .has-col-xs-1{grid-column:span 1}.grid.has-cols-xs-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-xs-2{grid-column:span 2}.grid.has-cols-xs-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-xs-3{grid-column:span 3}.grid.has-cols-xs-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-xs-4{grid-column:span 4}.grid.has-cols-xs-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-xs-5{grid-column:span 5}.grid.has-cols-xs-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-xs-6{grid-column:span 6}.grid.has-cols-xs-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-xs-7{grid-column:span 7}.grid.has-cols-xs-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-xs-8{grid-column:span 8}.grid.has-cols-xs-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-xs-9{grid-column:span 9}.grid.has-cols-xs-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-xs-10{grid-column:span 10}.grid.has-cols-xs-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-xs-11{grid-column:span 11}.grid.has-cols-xs-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-xs-12{grid-column:span 12}.grid.has-cols-xs-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-xs-1{grid-row:span 1}.grid .has-row-xs-2{grid-row:span 2}.grid .has-row-xs-3{grid-row:span 3}.grid .has-row-xs-4{grid-row:span 4}.grid .has-row-xs-5{grid-row:span 5}.grid .has-row-xs-6{grid-row:span 6}.grid .has-row-xs-7{grid-row:span 7}.grid .has-row-xs-8{grid-row:span 8}.grid .has-row-xs-9{grid-row:span 9}.grid .has-row-xs-10{grid-row:span 10}.grid .has-row-xs-11{grid-row:span 11}.grid .has-row-xs-12{grid-row:span 12}.grid.has-grid-gap-xs-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-xs-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-xs-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-xs-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-xs-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-xs-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-xs-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-xs-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-xs-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-xs-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:37.5em){.grid .has-col-sm-all{grid-column:1/-1}.grid .has-row-sm-all{grid-row:1/-1}.grid .has-col-sm-1{grid-column:span 1}.grid.has-cols-sm-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-sm-2{grid-column:span 2}.grid.has-cols-sm-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-sm-3{grid-column:span 3}.grid.has-cols-sm-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-sm-4{grid-column:span 4}.grid.has-cols-sm-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-sm-5{grid-column:span 5}.grid.has-cols-sm-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-sm-6{grid-column:span 6}.grid.has-cols-sm-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-sm-7{grid-column:span 7}.grid.has-cols-sm-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-sm-8{grid-column:span 8}.grid.has-cols-sm-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-sm-9{grid-column:span 9}.grid.has-cols-sm-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-sm-10{grid-column:span 10}.grid.has-cols-sm-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-sm-11{grid-column:span 11}.grid.has-cols-sm-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-sm-12{grid-column:span 12}.grid.has-cols-sm-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-sm-1{grid-row:span 1}.grid .has-row-sm-2{grid-row:span 2}.grid .has-row-sm-3{grid-row:span 3}.grid .has-row-sm-4{grid-row:span 4}.grid .has-row-sm-5{grid-row:span 5}.grid .has-row-sm-6{grid-row:span 6}.grid .has-row-sm-7{grid-row:span 7}.grid .has-row-sm-8{grid-row:span 8}.grid .has-row-sm-9{grid-row:span 9}.grid .has-row-sm-10{grid-row:span 10}.grid .has-row-sm-11{grid-row:span 11}.grid .has-row-sm-12{grid-row:span 12}.grid.has-grid-gap-sm-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-sm-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-sm-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-sm-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-sm-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-sm-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-sm-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-sm-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-sm-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-sm-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:56.25em){.grid .has-col-md-all{grid-column:1/-1}.grid .has-row-md-all{grid-row:1/-1}.grid .has-col-md-1{grid-column:span 1}.grid.has-cols-md-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-md-2{grid-column:span 2}.grid.has-cols-md-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-md-3{grid-column:span 3}.grid.has-cols-md-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-md-4{grid-column:span 4}.grid.has-cols-md-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-md-5{grid-column:span 5}.grid.has-cols-md-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-md-6{grid-column:span 6}.grid.has-cols-md-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-md-7{grid-column:span 7}.grid.has-cols-md-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-md-8{grid-column:span 8}.grid.has-cols-md-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-md-9{grid-column:span 9}.grid.has-cols-md-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-md-10{grid-column:span 10}.grid.has-cols-md-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-md-11{grid-column:span 11}.grid.has-cols-md-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-md-12{grid-column:span 12}.grid.has-cols-md-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-md-1{grid-row:span 1}.grid .has-row-md-2{grid-row:span 2}.grid .has-row-md-3{grid-row:span 3}.grid .has-row-md-4{grid-row:span 4}.grid .has-row-md-5{grid-row:span 5}.grid .has-row-md-6{grid-row:span 6}.grid .has-row-md-7{grid-row:span 7}.grid .has-row-md-8{grid-row:span 8}.grid .has-row-md-9{grid-row:span 9}.grid .has-row-md-10{grid-row:span 10}.grid .has-row-md-11{grid-row:span 11}.grid .has-row-md-12{grid-row:span 12}.grid.has-grid-gap-md-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-md-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-md-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-md-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-md-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-md-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-md-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-md-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-md-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-md-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:75em){.grid .has-col-lg-all{grid-column:1/-1}.grid .has-row-lg-all{grid-row:1/-1}.grid .has-col-lg-1{grid-column:span 1}.grid.has-cols-lg-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-lg-2{grid-column:span 2}.grid.has-cols-lg-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-lg-3{grid-column:span 3}.grid.has-cols-lg-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-lg-4{grid-column:span 4}.grid.has-cols-lg-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-lg-5{grid-column:span 5}.grid.has-cols-lg-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-lg-6{grid-column:span 6}.grid.has-cols-lg-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-lg-7{grid-column:span 7}.grid.has-cols-lg-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-lg-8{grid-column:span 8}.grid.has-cols-lg-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-lg-9{grid-column:span 9}.grid.has-cols-lg-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-lg-10{grid-column:span 10}.grid.has-cols-lg-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-lg-11{grid-column:span 11}.grid.has-cols-lg-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-lg-12{grid-column:span 12}.grid.has-cols-lg-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-lg-1{grid-row:span 1}.grid .has-row-lg-2{grid-row:span 2}.grid .has-row-lg-3{grid-row:span 3}.grid .has-row-lg-4{grid-row:span 4}.grid .has-row-lg-5{grid-row:span 5}.grid .has-row-lg-6{grid-row:span 6}.grid .has-row-lg-7{grid-row:span 7}.grid .has-row-lg-8{grid-row:span 8}.grid .has-row-lg-9{grid-row:span 9}.grid .has-row-lg-10{grid-row:span 10}.grid .has-row-lg-11{grid-row:span 11}.grid .has-row-lg-12{grid-row:span 12}.grid.has-grid-gap-lg-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-lg-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-lg-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-lg-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-lg-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-lg-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-lg-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-lg-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-lg-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-lg-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:112.5em){.grid .has-col-xl-all{grid-column:1/-1}.grid .has-row-xl-all{grid-row:1/-1}.grid .has-col-xl-1{grid-column:span 1}.grid.has-cols-xl-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-xl-2{grid-column:span 2}.grid.has-cols-xl-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-xl-3{grid-column:span 3}.grid.has-cols-xl-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-xl-4{grid-column:span 4}.grid.has-cols-xl-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-xl-5{grid-column:span 5}.grid.has-cols-xl-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-xl-6{grid-column:span 6}.grid.has-cols-xl-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-xl-7{grid-column:span 7}.grid.has-cols-xl-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-xl-8{grid-column:span 8}.grid.has-cols-xl-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-xl-9{grid-column:span 9}.grid.has-cols-xl-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-xl-10{grid-column:span 10}.grid.has-cols-xl-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-xl-11{grid-column:span 11}.grid.has-cols-xl-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-xl-12{grid-column:span 12}.grid.has-cols-xl-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-xl-1{grid-row:span 1}.grid .has-row-xl-2{grid-row:span 2}.grid .has-row-xl-3{grid-row:span 3}.grid .has-row-xl-4{grid-row:span 4}.grid .has-row-xl-5{grid-row:span 5}.grid .has-row-xl-6{grid-row:span 6}.grid .has-row-xl-7{grid-row:span 7}.grid .has-row-xl-8{grid-row:span 8}.grid .has-row-xl-9{grid-row:span 9}.grid .has-row-xl-10{grid-row:span 10}.grid .has-row-xl-11{grid-row:span 11}.grid .has-row-xl-12{grid-row:span 12}.grid.has-grid-gap-xl-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-xl-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-xl-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-xl-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-xl-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-xl-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-xl-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-xl-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-xl-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-xl-9{grid-gap:var(--spacer-9)}}}
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Atomic Bulldog Grid
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
99 |
100 |
101 |
Table of content
102 |
112 |
113 |
114 |
115 |
116 | .grid class
117 |
By default
118 | .grid will have the maximum of columns set in
119 | scss/variables/_grid.scss => $grid-columns . By default the grid have 12 columns
120 |
121 |
126 |
131 |
136 |
141 |
146 |
151 |
156 |
161 |
166 |
171 |
176 |
181 |
186 |
191 |
192 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 | .has-cols-{breakpoint}-{number of columns} class
220 |
The number of columns of the grid can be changed using the class
221 | .has-cols-{breakpoint}-{number of columns}
222 |
223 |
224 |
225 | {breakpoint} : optional breakpoint (See breakpoints) to change the number of columns
226 | from a breakpoint
227 |
228 | {number of columns} : From 0 to 12($grid-columns)
229 |
230 |
231 |
236 |
241 |
246 |
251 |
256 |
261 |
266 |
271 |
276 |
281 |
286 |
291 |
296 |
301 |
302 |
322 |
323 | .has-cols-1
324 |
325 |
332 |
333 |
334 | .has-cols-2
335 |
336 |
337 |
338 |
341 |
342 |
343 |
346 |
347 |
348 |
349 |
350 | .has-cols-3
351 |
352 |
353 |
354 |
357 |
358 |
359 |
362 |
363 |
364 |
367 |
368 |
369 |
370 |
371 | .has-cols-4
372 |
373 |
374 |
375 |
378 |
379 |
380 |
383 |
384 |
385 |
388 |
389 |
390 |
393 |
394 |
395 |
396 |
397 | .has-cols-5
398 |
399 |
400 |
401 |
404 |
405 |
406 |
409 |
410 |
411 |
414 |
415 |
416 |
419 |
420 |
421 |
424 |
425 |
426 |
427 |
428 | .has-cols-6
429 |
430 |
431 |
432 |
435 |
436 |
437 |
440 |
441 |
442 |
445 |
446 |
447 |
450 |
451 |
452 |
455 |
456 |
457 |
460 |
461 |
462 |
463 |
464 | .has-cols-7
465 |
466 |
467 |
468 |
471 |
472 |
473 |
476 |
477 |
478 |
481 |
482 |
483 |
486 |
487 |
488 |
491 |
492 |
493 |
496 |
497 |
498 |
501 |
502 |
503 |
504 |
etc. up to $grid-columns (12)
505 |
506 |
507 |
508 |
509 |
510 | .has-grid-gap-{breakpoint}-{spacer} class
511 |
The spacing between grid items can be changed using the class
512 | .has-cols-{breakpoint}-{number of columns}
513 |
514 |
515 |
516 | {breakpoint} : optional breakpoint (See breakpoints) to change spacing from a breakpoint
517 |
518 | {spacer} : From 0 to 9 they can be change in
519 | scss/variables/_spacers.scss => $spacers
520 |
521 |
522 |
523 |
524 |
527 |
528 |
529 |
532 |
533 |
534 |
537 |
538 |
539 |
542 |
543 |
544 |
547 |
548 |
549 |
569 |
570 |
571 |
572 |
573 | .has-grid-gap-0
574 |
575 |
576 |
577 |
580 |
581 |
582 |
585 |
586 |
587 |
590 |
591 |
592 |
595 |
596 |
597 |
600 |
601 |
602 |
605 |
606 |
607 |
608 |
609 |
610 | .has-grid-gap-1
611 |
612 |
613 |
614 |
617 |
618 |
619 |
622 |
623 |
624 |
627 |
628 |
629 |
632 |
633 |
634 |
637 |
638 |
639 |
642 |
643 |
644 |
645 |
646 |
647 |
648 | .has-grid-gap-2
649 |
650 |
651 |
652 |
655 |
656 |
657 |
660 |
661 |
662 |
665 |
666 |
667 |
670 |
671 |
672 |
675 |
676 |
677 |
680 |
681 |
682 |
683 |
684 |
685 |
686 | .has-grid-gap-3
687 |
688 |
689 |
690 |
693 |
694 |
695 |
698 |
699 |
700 |
703 |
704 |
705 |
708 |
709 |
710 |
713 |
714 |
715 |
718 |
719 |
720 |
721 |
722 |
723 |
724 | .has-grid-gap-4
725 |
726 |
727 |
728 |
731 |
732 |
733 |
736 |
737 |
738 |
741 |
742 |
743 |
746 |
747 |
748 |
751 |
752 |
753 |
756 |
757 |
758 |
759 |
760 |
761 |
762 | .has-grid-gap-5
763 |
764 |
765 |
766 |
769 |
770 |
771 |
774 |
775 |
776 |
779 |
780 |
781 |
784 |
785 |
786 |
789 |
790 |
791 |
794 |
795 |
796 |
797 |
798 |
799 |
800 | .has-grid-gap-6
801 |
802 |
803 |
804 |
807 |
808 |
809 |
812 |
813 |
814 |
817 |
818 |
819 |
822 |
823 |
824 |
827 |
828 |
829 |
832 |
833 |
834 |
835 |
836 |
837 |
838 | .has-grid-gap-7
839 |
840 |
841 |
842 |
845 |
846 |
847 |
850 |
851 |
852 |
855 |
856 |
857 |
860 |
861 |
862 |
865 |
866 |
867 |
870 |
871 |
872 |
873 |
874 |
875 |
876 | .has-grid-gap-8
877 |
878 |
879 |
880 |
883 |
884 |
885 |
888 |
889 |
890 |
893 |
894 |
895 |
898 |
899 |
900 |
903 |
904 |
905 |
908 |
909 |
910 |
911 |
912 |
913 |
914 | .has-grid-gap-9
915 |
916 |
917 |
918 |
921 |
922 |
923 |
926 |
927 |
928 |
931 |
932 |
933 |
936 |
937 |
938 |
941 |
942 |
943 |
946 |
947 |
948 |
949 |
950 |
951 |
952 |
953 |
954 | .has-col-{breakpoint}-{number of columns} class
955 | /!\ No fallback
956 |
957 |
The number of columns of a grid item can be changed using the class
958 | .has-col-{breakpoint}-{number of columns}
959 |
960 |
961 |
962 | {breakpoint} : optional breakpoint (See breakpoints) to change the number of columns
963 | of the item from a breakpoint
964 |
965 | {number of columns} : From 0 to 12($grid-columns) the word all can be used, the item
966 | will be full width in this case
967 |
968 |
969 |
970 |
971 |
974 |
975 |
976 |
979 |
980 |
981 |
984 |
985 |
986 |
989 |
990 |
991 |
994 |
995 |
996 |
999 |
1000 |
1001 |
1004 |
1005 |
1006 |
1009 |
1010 |
1011 |
1014 |
1015 |
1016 |
1019 |
1020 |
1021 |
1022 |
1076 |
1077 |
1078 |
1079 |
1080 | .has-row-{breakpoint}-{number of rows} class
1081 | /!\ No fallback
1082 |
1083 |
The number of row of a grid item can be changed using the class
1084 | .has-row-{breakpoint}-{number of columns}.
1085 |
1086 |
1087 |
1088 | {breakpoint} : optional breakpoint (See breakpoints) to change the number of rows. of
1089 | the item from a breakpoint
1090 |
1091 | {number of row} : Depend on your layout and the number of rows you end up with, But you
1092 | can set a number of rows using
1093 | grid-template-rows. The word all can be used the item will be full width in this case
1094 | only if the number of rows is set.
1095 |
1096 |
1097 |
1098 |
1101 |
1102 |
1103 |
1106 |
1107 |
1108 |
1111 |
1112 |
1113 |
1116 |
1117 |
1118 |
1121 |
1122 |
1123 |
1126 |
1127 |
1128 |
1131 |
1132 |
1133 |
1136 |
1137 |
1138 |
1141 |
1142 |
1143 |
1146 |
1147 |
1148 |
1202 |
1203 |
1204 |
1205 |
1206 | .is-dense class
1207 | /!\ No fallback
1208 |
1209 |
1210 | .is-dense with
1211 | .grid will make the grid dense.
1212 |
1213 |
Dense: Is a keyword specifying that the auto-placement algorithm uses a “dense” packing algorithm, which attempts
1214 | to fill in holes earlier in the grid, if smaller items come up later. This may cause items to appear
1215 | out-of-order, when doing so would fill in holes left by larger items.
1216 |
https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow
1217 |
1218 |
For example, here is the example from .has-col-{breakpoint}-{number of columns} if .is-dense:
1219 |
1220 |
1221 |
1222 |
1225 |
1226 |
1227 |
1230 |
1231 |
1232 |
1235 |
1236 |
1237 |
1240 |
1241 |
1242 |
1245 |
1246 |
1247 |
1250 |
1251 |
1252 |
1255 |
1256 |
1257 |
1260 |
1261 |
1262 |
1265 |
1266 |
1267 |
1270 |
1271 |
1272 |
1273 |
1327 |
1328 |
1329 |
1330 |
.container Class
1331 |
Atomic Bulldog grid comes with a container class to get even spacing in your project. This all page is in a container.
1332 |
1333 |
1334 |
1335 |
1336 |
Atomic Bulldog Grid is fully customizable:
1337 |
1338 | CSS variables : By default, the grid comes with CSS custom properties, and the fallback CSS not.
1339 | $use-css-var can be changed to suit you need in atomic-bulldog-grid.scss , atomic-bulldog-grid-fallback.scss , atomic-bulldog-grid-fallback-ie.scss .
1340 | Breakpoints : The map $breakpoints manage all the breakpoints in the project you can add, remove, rename so this grid can fit your needs.
1341 | Number of Columns : Change $grid-columns to the maximum of columns you need.
1342 | Spacers : The map $spacers manage all the spacing in the project you can add, remove, rename so this grid can fit your needs.
1343 | Container sizes : The map $container-sizes manage all the container sizes, it is linked to the $breakpoints map if you edit this one remember to change the container map as well.
1344 |
1345 |
1346 |
1347 |
1348 |
1349 |
1350 |
1351 |
1352 |
1353 |
--------------------------------------------------------------------------------
/static/css/atomic-bulldog-grid-fallback-ie.css:
--------------------------------------------------------------------------------
1 | /*Min and Max mixins*/
2 | /* Progressive Enhancement for browsers not supporting grid except IE */
3 | *, *::before, *::after {
4 | box-sizing: border-box;
5 | }
6 |
7 | /* IE10 and 11 Fallback to be remove when < 1%*/
8 | @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {
9 | .grid {
10 | display: flex;
11 | flex-wrap: wrap;
12 | flex-direction: row;
13 | margin-right: -0.125rem;
14 | margin-left: -0.125rem;
15 | }
16 | .grid > * {
17 | flex: 0 0 8.33333%;
18 | max-width: 8.33333%;
19 | min-height: 1px;
20 | padding-right: 0.125rem;
21 | padding-left: 0.125rem;
22 | margin-bottom: 0.25rem;
23 | }
24 | .grid.has-grid-gap-0 {
25 | margin-right: 0;
26 | margin-left: 0;
27 | }
28 | .grid.has-grid-gap-0 > * {
29 | padding-right: 0;
30 | padding-left: 0;
31 | margin-bottom: 0;
32 | }
33 | .grid.has-grid-gap-1 {
34 | margin-right: -0.125rem;
35 | margin-left: -0.125rem;
36 | }
37 | .grid.has-grid-gap-1 > * {
38 | padding-right: 0.125rem;
39 | padding-left: 0.125rem;
40 | margin-bottom: 0.25rem;
41 | }
42 | .grid.has-grid-gap-2 {
43 | margin-right: -0.25rem;
44 | margin-left: -0.25rem;
45 | }
46 | .grid.has-grid-gap-2 > * {
47 | padding-right: 0.25rem;
48 | padding-left: 0.25rem;
49 | margin-bottom: 0.5rem;
50 | }
51 | .grid.has-grid-gap-3 {
52 | margin-right: -0.5rem;
53 | margin-left: -0.5rem;
54 | }
55 | .grid.has-grid-gap-3 > * {
56 | padding-right: 0.5rem;
57 | padding-left: 0.5rem;
58 | margin-bottom: 1rem;
59 | }
60 | .grid.has-grid-gap-4 {
61 | margin-right: -0.625rem;
62 | margin-left: -0.625rem;
63 | }
64 | .grid.has-grid-gap-4 > * {
65 | padding-right: 0.625rem;
66 | padding-left: 0.625rem;
67 | margin-bottom: 1.25rem;
68 | }
69 | .grid.has-grid-gap-5 {
70 | margin-right: -0.75rem;
71 | margin-left: -0.75rem;
72 | }
73 | .grid.has-grid-gap-5 > * {
74 | padding-right: 0.75rem;
75 | padding-left: 0.75rem;
76 | margin-bottom: 1.5rem;
77 | }
78 | .grid.has-grid-gap-6 {
79 | margin-right: -1.5rem;
80 | margin-left: -1.5rem;
81 | }
82 | .grid.has-grid-gap-6 > * {
83 | padding-right: 1.5rem;
84 | padding-left: 1.5rem;
85 | margin-bottom: 3rem;
86 | }
87 | .grid.has-grid-gap-7 {
88 | margin-right: -3rem;
89 | margin-left: -3rem;
90 | }
91 | .grid.has-grid-gap-7 > * {
92 | padding-right: 3rem;
93 | padding-left: 3rem;
94 | margin-bottom: 6rem;
95 | }
96 | .grid.has-grid-gap-8 {
97 | margin-right: -4.5rem;
98 | margin-left: -4.5rem;
99 | }
100 | .grid.has-grid-gap-8 > * {
101 | padding-right: 4.5rem;
102 | padding-left: 4.5rem;
103 | margin-bottom: 9rem;
104 | }
105 | .grid.has-grid-gap-9 {
106 | margin-right: -6rem;
107 | margin-left: -6rem;
108 | }
109 | .grid.has-grid-gap-9 > * {
110 | padding-right: 6rem;
111 | padding-left: 6rem;
112 | margin-bottom: 12rem;
113 | }
114 | .grid.has-cols-1 > * {
115 | flex: 0 0 100%;
116 | max-width: 100%;
117 | }
118 | .grid.has-cols-2 > * {
119 | flex: 0 0 50%;
120 | max-width: 50%;
121 | }
122 | .grid.has-cols-3 > * {
123 | flex: 0 0 33.33333%;
124 | max-width: 33.33333%;
125 | }
126 | .grid.has-cols-4 > * {
127 | flex: 0 0 25%;
128 | max-width: 25%;
129 | }
130 | .grid.has-cols-5 > * {
131 | flex: 0 0 20%;
132 | max-width: 20%;
133 | }
134 | .grid.has-cols-6 > * {
135 | flex: 0 0 16.66667%;
136 | max-width: 16.66667%;
137 | }
138 | .grid.has-cols-7 > * {
139 | flex: 0 0 14.28571%;
140 | max-width: 14.28571%;
141 | }
142 | .grid.has-cols-8 > * {
143 | flex: 0 0 12.5%;
144 | max-width: 12.5%;
145 | }
146 | .grid.has-cols-9 > * {
147 | flex: 0 0 11.11111%;
148 | max-width: 11.11111%;
149 | }
150 | .grid.has-cols-10 > * {
151 | flex: 0 0 10%;
152 | max-width: 10%;
153 | }
154 | .grid.has-cols-11 > * {
155 | flex: 0 0 9.09091%;
156 | max-width: 9.09091%;
157 | }
158 | .grid.has-cols-12 > * {
159 | flex: 0 0 8.33333%;
160 | max-width: 8.33333%;
161 | }
162 | }
163 |
164 | @media only screen and (-ms-high-contrast: active) and (min-width: 20em), only screen and (-ms-high-contrast: none) and (min-width: 20em) {
165 | .grid.has-grid-gap-xs-0 {
166 | margin-right: 0;
167 | margin-left: 0;
168 | }
169 | .grid.has-grid-gap-xs-0 > * {
170 | padding-right: 0;
171 | padding-left: 0;
172 | margin-bottom: 0;
173 | }
174 | .grid.has-grid-gap-xs-1 {
175 | margin-right: -0.125rem;
176 | margin-left: -0.125rem;
177 | }
178 | .grid.has-grid-gap-xs-1 > * {
179 | padding-right: 0.125rem;
180 | padding-left: 0.125rem;
181 | margin-bottom: 0.25rem;
182 | }
183 | .grid.has-grid-gap-xs-2 {
184 | margin-right: -0.25rem;
185 | margin-left: -0.25rem;
186 | }
187 | .grid.has-grid-gap-xs-2 > * {
188 | padding-right: 0.25rem;
189 | padding-left: 0.25rem;
190 | margin-bottom: 0.5rem;
191 | }
192 | .grid.has-grid-gap-xs-3 {
193 | margin-right: -0.5rem;
194 | margin-left: -0.5rem;
195 | }
196 | .grid.has-grid-gap-xs-3 > * {
197 | padding-right: 0.5rem;
198 | padding-left: 0.5rem;
199 | margin-bottom: 1rem;
200 | }
201 | .grid.has-grid-gap-xs-4 {
202 | margin-right: -0.625rem;
203 | margin-left: -0.625rem;
204 | }
205 | .grid.has-grid-gap-xs-4 > * {
206 | padding-right: 0.625rem;
207 | padding-left: 0.625rem;
208 | margin-bottom: 1.25rem;
209 | }
210 | .grid.has-grid-gap-xs-5 {
211 | margin-right: -0.75rem;
212 | margin-left: -0.75rem;
213 | }
214 | .grid.has-grid-gap-xs-5 > * {
215 | padding-right: 0.75rem;
216 | padding-left: 0.75rem;
217 | margin-bottom: 1.5rem;
218 | }
219 | .grid.has-grid-gap-xs-6 {
220 | margin-right: -1.5rem;
221 | margin-left: -1.5rem;
222 | }
223 | .grid.has-grid-gap-xs-6 > * {
224 | padding-right: 1.5rem;
225 | padding-left: 1.5rem;
226 | margin-bottom: 3rem;
227 | }
228 | .grid.has-grid-gap-xs-7 {
229 | margin-right: -3rem;
230 | margin-left: -3rem;
231 | }
232 | .grid.has-grid-gap-xs-7 > * {
233 | padding-right: 3rem;
234 | padding-left: 3rem;
235 | margin-bottom: 6rem;
236 | }
237 | .grid.has-grid-gap-xs-8 {
238 | margin-right: -4.5rem;
239 | margin-left: -4.5rem;
240 | }
241 | .grid.has-grid-gap-xs-8 > * {
242 | padding-right: 4.5rem;
243 | padding-left: 4.5rem;
244 | margin-bottom: 9rem;
245 | }
246 | .grid.has-grid-gap-xs-9 {
247 | margin-right: -6rem;
248 | margin-left: -6rem;
249 | }
250 | .grid.has-grid-gap-xs-9 > * {
251 | padding-right: 6rem;
252 | padding-left: 6rem;
253 | margin-bottom: 12rem;
254 | }
255 | .grid.has-cols-xs-1 > * {
256 | flex: 0 0 100%;
257 | max-width: 100%;
258 | }
259 | .grid.has-cols-xs-2 > * {
260 | flex: 0 0 50%;
261 | max-width: 50%;
262 | }
263 | .grid.has-cols-xs-3 > * {
264 | flex: 0 0 33.33333%;
265 | max-width: 33.33333%;
266 | }
267 | .grid.has-cols-xs-4 > * {
268 | flex: 0 0 25%;
269 | max-width: 25%;
270 | }
271 | .grid.has-cols-xs-5 > * {
272 | flex: 0 0 20%;
273 | max-width: 20%;
274 | }
275 | .grid.has-cols-xs-6 > * {
276 | flex: 0 0 16.66667%;
277 | max-width: 16.66667%;
278 | }
279 | .grid.has-cols-xs-7 > * {
280 | flex: 0 0 14.28571%;
281 | max-width: 14.28571%;
282 | }
283 | .grid.has-cols-xs-8 > * {
284 | flex: 0 0 12.5%;
285 | max-width: 12.5%;
286 | }
287 | .grid.has-cols-xs-9 > * {
288 | flex: 0 0 11.11111%;
289 | max-width: 11.11111%;
290 | }
291 | .grid.has-cols-xs-10 > * {
292 | flex: 0 0 10%;
293 | max-width: 10%;
294 | }
295 | .grid.has-cols-xs-11 > * {
296 | flex: 0 0 9.09091%;
297 | max-width: 9.09091%;
298 | }
299 | .grid.has-cols-xs-12 > * {
300 | flex: 0 0 8.33333%;
301 | max-width: 8.33333%;
302 | }
303 | }
304 |
305 | @media only screen and (-ms-high-contrast: active) and (min-width: 37.5em), only screen and (-ms-high-contrast: none) and (min-width: 37.5em) {
306 | .grid.has-grid-gap-sm-0 {
307 | margin-right: 0;
308 | margin-left: 0;
309 | }
310 | .grid.has-grid-gap-sm-0 > * {
311 | padding-right: 0;
312 | padding-left: 0;
313 | margin-bottom: 0;
314 | }
315 | .grid.has-grid-gap-sm-1 {
316 | margin-right: -0.125rem;
317 | margin-left: -0.125rem;
318 | }
319 | .grid.has-grid-gap-sm-1 > * {
320 | padding-right: 0.125rem;
321 | padding-left: 0.125rem;
322 | margin-bottom: 0.25rem;
323 | }
324 | .grid.has-grid-gap-sm-2 {
325 | margin-right: -0.25rem;
326 | margin-left: -0.25rem;
327 | }
328 | .grid.has-grid-gap-sm-2 > * {
329 | padding-right: 0.25rem;
330 | padding-left: 0.25rem;
331 | margin-bottom: 0.5rem;
332 | }
333 | .grid.has-grid-gap-sm-3 {
334 | margin-right: -0.5rem;
335 | margin-left: -0.5rem;
336 | }
337 | .grid.has-grid-gap-sm-3 > * {
338 | padding-right: 0.5rem;
339 | padding-left: 0.5rem;
340 | margin-bottom: 1rem;
341 | }
342 | .grid.has-grid-gap-sm-4 {
343 | margin-right: -0.625rem;
344 | margin-left: -0.625rem;
345 | }
346 | .grid.has-grid-gap-sm-4 > * {
347 | padding-right: 0.625rem;
348 | padding-left: 0.625rem;
349 | margin-bottom: 1.25rem;
350 | }
351 | .grid.has-grid-gap-sm-5 {
352 | margin-right: -0.75rem;
353 | margin-left: -0.75rem;
354 | }
355 | .grid.has-grid-gap-sm-5 > * {
356 | padding-right: 0.75rem;
357 | padding-left: 0.75rem;
358 | margin-bottom: 1.5rem;
359 | }
360 | .grid.has-grid-gap-sm-6 {
361 | margin-right: -1.5rem;
362 | margin-left: -1.5rem;
363 | }
364 | .grid.has-grid-gap-sm-6 > * {
365 | padding-right: 1.5rem;
366 | padding-left: 1.5rem;
367 | margin-bottom: 3rem;
368 | }
369 | .grid.has-grid-gap-sm-7 {
370 | margin-right: -3rem;
371 | margin-left: -3rem;
372 | }
373 | .grid.has-grid-gap-sm-7 > * {
374 | padding-right: 3rem;
375 | padding-left: 3rem;
376 | margin-bottom: 6rem;
377 | }
378 | .grid.has-grid-gap-sm-8 {
379 | margin-right: -4.5rem;
380 | margin-left: -4.5rem;
381 | }
382 | .grid.has-grid-gap-sm-8 > * {
383 | padding-right: 4.5rem;
384 | padding-left: 4.5rem;
385 | margin-bottom: 9rem;
386 | }
387 | .grid.has-grid-gap-sm-9 {
388 | margin-right: -6rem;
389 | margin-left: -6rem;
390 | }
391 | .grid.has-grid-gap-sm-9 > * {
392 | padding-right: 6rem;
393 | padding-left: 6rem;
394 | margin-bottom: 12rem;
395 | }
396 | .grid.has-cols-sm-1 > * {
397 | flex: 0 0 100%;
398 | max-width: 100%;
399 | }
400 | .grid.has-cols-sm-2 > * {
401 | flex: 0 0 50%;
402 | max-width: 50%;
403 | }
404 | .grid.has-cols-sm-3 > * {
405 | flex: 0 0 33.33333%;
406 | max-width: 33.33333%;
407 | }
408 | .grid.has-cols-sm-4 > * {
409 | flex: 0 0 25%;
410 | max-width: 25%;
411 | }
412 | .grid.has-cols-sm-5 > * {
413 | flex: 0 0 20%;
414 | max-width: 20%;
415 | }
416 | .grid.has-cols-sm-6 > * {
417 | flex: 0 0 16.66667%;
418 | max-width: 16.66667%;
419 | }
420 | .grid.has-cols-sm-7 > * {
421 | flex: 0 0 14.28571%;
422 | max-width: 14.28571%;
423 | }
424 | .grid.has-cols-sm-8 > * {
425 | flex: 0 0 12.5%;
426 | max-width: 12.5%;
427 | }
428 | .grid.has-cols-sm-9 > * {
429 | flex: 0 0 11.11111%;
430 | max-width: 11.11111%;
431 | }
432 | .grid.has-cols-sm-10 > * {
433 | flex: 0 0 10%;
434 | max-width: 10%;
435 | }
436 | .grid.has-cols-sm-11 > * {
437 | flex: 0 0 9.09091%;
438 | max-width: 9.09091%;
439 | }
440 | .grid.has-cols-sm-12 > * {
441 | flex: 0 0 8.33333%;
442 | max-width: 8.33333%;
443 | }
444 | }
445 |
446 | @media only screen and (-ms-high-contrast: active) and (min-width: 56.25em), only screen and (-ms-high-contrast: none) and (min-width: 56.25em) {
447 | .grid.has-grid-gap-md-0 {
448 | margin-right: 0;
449 | margin-left: 0;
450 | }
451 | .grid.has-grid-gap-md-0 > * {
452 | padding-right: 0;
453 | padding-left: 0;
454 | margin-bottom: 0;
455 | }
456 | .grid.has-grid-gap-md-1 {
457 | margin-right: -0.125rem;
458 | margin-left: -0.125rem;
459 | }
460 | .grid.has-grid-gap-md-1 > * {
461 | padding-right: 0.125rem;
462 | padding-left: 0.125rem;
463 | margin-bottom: 0.25rem;
464 | }
465 | .grid.has-grid-gap-md-2 {
466 | margin-right: -0.25rem;
467 | margin-left: -0.25rem;
468 | }
469 | .grid.has-grid-gap-md-2 > * {
470 | padding-right: 0.25rem;
471 | padding-left: 0.25rem;
472 | margin-bottom: 0.5rem;
473 | }
474 | .grid.has-grid-gap-md-3 {
475 | margin-right: -0.5rem;
476 | margin-left: -0.5rem;
477 | }
478 | .grid.has-grid-gap-md-3 > * {
479 | padding-right: 0.5rem;
480 | padding-left: 0.5rem;
481 | margin-bottom: 1rem;
482 | }
483 | .grid.has-grid-gap-md-4 {
484 | margin-right: -0.625rem;
485 | margin-left: -0.625rem;
486 | }
487 | .grid.has-grid-gap-md-4 > * {
488 | padding-right: 0.625rem;
489 | padding-left: 0.625rem;
490 | margin-bottom: 1.25rem;
491 | }
492 | .grid.has-grid-gap-md-5 {
493 | margin-right: -0.75rem;
494 | margin-left: -0.75rem;
495 | }
496 | .grid.has-grid-gap-md-5 > * {
497 | padding-right: 0.75rem;
498 | padding-left: 0.75rem;
499 | margin-bottom: 1.5rem;
500 | }
501 | .grid.has-grid-gap-md-6 {
502 | margin-right: -1.5rem;
503 | margin-left: -1.5rem;
504 | }
505 | .grid.has-grid-gap-md-6 > * {
506 | padding-right: 1.5rem;
507 | padding-left: 1.5rem;
508 | margin-bottom: 3rem;
509 | }
510 | .grid.has-grid-gap-md-7 {
511 | margin-right: -3rem;
512 | margin-left: -3rem;
513 | }
514 | .grid.has-grid-gap-md-7 > * {
515 | padding-right: 3rem;
516 | padding-left: 3rem;
517 | margin-bottom: 6rem;
518 | }
519 | .grid.has-grid-gap-md-8 {
520 | margin-right: -4.5rem;
521 | margin-left: -4.5rem;
522 | }
523 | .grid.has-grid-gap-md-8 > * {
524 | padding-right: 4.5rem;
525 | padding-left: 4.5rem;
526 | margin-bottom: 9rem;
527 | }
528 | .grid.has-grid-gap-md-9 {
529 | margin-right: -6rem;
530 | margin-left: -6rem;
531 | }
532 | .grid.has-grid-gap-md-9 > * {
533 | padding-right: 6rem;
534 | padding-left: 6rem;
535 | margin-bottom: 12rem;
536 | }
537 | .grid.has-cols-md-1 > * {
538 | flex: 0 0 100%;
539 | max-width: 100%;
540 | }
541 | .grid.has-cols-md-2 > * {
542 | flex: 0 0 50%;
543 | max-width: 50%;
544 | }
545 | .grid.has-cols-md-3 > * {
546 | flex: 0 0 33.33333%;
547 | max-width: 33.33333%;
548 | }
549 | .grid.has-cols-md-4 > * {
550 | flex: 0 0 25%;
551 | max-width: 25%;
552 | }
553 | .grid.has-cols-md-5 > * {
554 | flex: 0 0 20%;
555 | max-width: 20%;
556 | }
557 | .grid.has-cols-md-6 > * {
558 | flex: 0 0 16.66667%;
559 | max-width: 16.66667%;
560 | }
561 | .grid.has-cols-md-7 > * {
562 | flex: 0 0 14.28571%;
563 | max-width: 14.28571%;
564 | }
565 | .grid.has-cols-md-8 > * {
566 | flex: 0 0 12.5%;
567 | max-width: 12.5%;
568 | }
569 | .grid.has-cols-md-9 > * {
570 | flex: 0 0 11.11111%;
571 | max-width: 11.11111%;
572 | }
573 | .grid.has-cols-md-10 > * {
574 | flex: 0 0 10%;
575 | max-width: 10%;
576 | }
577 | .grid.has-cols-md-11 > * {
578 | flex: 0 0 9.09091%;
579 | max-width: 9.09091%;
580 | }
581 | .grid.has-cols-md-12 > * {
582 | flex: 0 0 8.33333%;
583 | max-width: 8.33333%;
584 | }
585 | }
586 |
587 | @media only screen and (-ms-high-contrast: active) and (min-width: 75em), only screen and (-ms-high-contrast: none) and (min-width: 75em) {
588 | .grid.has-grid-gap-lg-0 {
589 | margin-right: 0;
590 | margin-left: 0;
591 | }
592 | .grid.has-grid-gap-lg-0 > * {
593 | padding-right: 0;
594 | padding-left: 0;
595 | margin-bottom: 0;
596 | }
597 | .grid.has-grid-gap-lg-1 {
598 | margin-right: -0.125rem;
599 | margin-left: -0.125rem;
600 | }
601 | .grid.has-grid-gap-lg-1 > * {
602 | padding-right: 0.125rem;
603 | padding-left: 0.125rem;
604 | margin-bottom: 0.25rem;
605 | }
606 | .grid.has-grid-gap-lg-2 {
607 | margin-right: -0.25rem;
608 | margin-left: -0.25rem;
609 | }
610 | .grid.has-grid-gap-lg-2 > * {
611 | padding-right: 0.25rem;
612 | padding-left: 0.25rem;
613 | margin-bottom: 0.5rem;
614 | }
615 | .grid.has-grid-gap-lg-3 {
616 | margin-right: -0.5rem;
617 | margin-left: -0.5rem;
618 | }
619 | .grid.has-grid-gap-lg-3 > * {
620 | padding-right: 0.5rem;
621 | padding-left: 0.5rem;
622 | margin-bottom: 1rem;
623 | }
624 | .grid.has-grid-gap-lg-4 {
625 | margin-right: -0.625rem;
626 | margin-left: -0.625rem;
627 | }
628 | .grid.has-grid-gap-lg-4 > * {
629 | padding-right: 0.625rem;
630 | padding-left: 0.625rem;
631 | margin-bottom: 1.25rem;
632 | }
633 | .grid.has-grid-gap-lg-5 {
634 | margin-right: -0.75rem;
635 | margin-left: -0.75rem;
636 | }
637 | .grid.has-grid-gap-lg-5 > * {
638 | padding-right: 0.75rem;
639 | padding-left: 0.75rem;
640 | margin-bottom: 1.5rem;
641 | }
642 | .grid.has-grid-gap-lg-6 {
643 | margin-right: -1.5rem;
644 | margin-left: -1.5rem;
645 | }
646 | .grid.has-grid-gap-lg-6 > * {
647 | padding-right: 1.5rem;
648 | padding-left: 1.5rem;
649 | margin-bottom: 3rem;
650 | }
651 | .grid.has-grid-gap-lg-7 {
652 | margin-right: -3rem;
653 | margin-left: -3rem;
654 | }
655 | .grid.has-grid-gap-lg-7 > * {
656 | padding-right: 3rem;
657 | padding-left: 3rem;
658 | margin-bottom: 6rem;
659 | }
660 | .grid.has-grid-gap-lg-8 {
661 | margin-right: -4.5rem;
662 | margin-left: -4.5rem;
663 | }
664 | .grid.has-grid-gap-lg-8 > * {
665 | padding-right: 4.5rem;
666 | padding-left: 4.5rem;
667 | margin-bottom: 9rem;
668 | }
669 | .grid.has-grid-gap-lg-9 {
670 | margin-right: -6rem;
671 | margin-left: -6rem;
672 | }
673 | .grid.has-grid-gap-lg-9 > * {
674 | padding-right: 6rem;
675 | padding-left: 6rem;
676 | margin-bottom: 12rem;
677 | }
678 | .grid.has-cols-lg-1 > * {
679 | flex: 0 0 100%;
680 | max-width: 100%;
681 | }
682 | .grid.has-cols-lg-2 > * {
683 | flex: 0 0 50%;
684 | max-width: 50%;
685 | }
686 | .grid.has-cols-lg-3 > * {
687 | flex: 0 0 33.33333%;
688 | max-width: 33.33333%;
689 | }
690 | .grid.has-cols-lg-4 > * {
691 | flex: 0 0 25%;
692 | max-width: 25%;
693 | }
694 | .grid.has-cols-lg-5 > * {
695 | flex: 0 0 20%;
696 | max-width: 20%;
697 | }
698 | .grid.has-cols-lg-6 > * {
699 | flex: 0 0 16.66667%;
700 | max-width: 16.66667%;
701 | }
702 | .grid.has-cols-lg-7 > * {
703 | flex: 0 0 14.28571%;
704 | max-width: 14.28571%;
705 | }
706 | .grid.has-cols-lg-8 > * {
707 | flex: 0 0 12.5%;
708 | max-width: 12.5%;
709 | }
710 | .grid.has-cols-lg-9 > * {
711 | flex: 0 0 11.11111%;
712 | max-width: 11.11111%;
713 | }
714 | .grid.has-cols-lg-10 > * {
715 | flex: 0 0 10%;
716 | max-width: 10%;
717 | }
718 | .grid.has-cols-lg-11 > * {
719 | flex: 0 0 9.09091%;
720 | max-width: 9.09091%;
721 | }
722 | .grid.has-cols-lg-12 > * {
723 | flex: 0 0 8.33333%;
724 | max-width: 8.33333%;
725 | }
726 | }
727 |
728 | @media only screen and (-ms-high-contrast: active) and (min-width: 112.5em), only screen and (-ms-high-contrast: none) and (min-width: 112.5em) {
729 | .grid.has-grid-gap-xl-0 {
730 | margin-right: 0;
731 | margin-left: 0;
732 | }
733 | .grid.has-grid-gap-xl-0 > * {
734 | padding-right: 0;
735 | padding-left: 0;
736 | margin-bottom: 0;
737 | }
738 | .grid.has-grid-gap-xl-1 {
739 | margin-right: -0.125rem;
740 | margin-left: -0.125rem;
741 | }
742 | .grid.has-grid-gap-xl-1 > * {
743 | padding-right: 0.125rem;
744 | padding-left: 0.125rem;
745 | margin-bottom: 0.25rem;
746 | }
747 | .grid.has-grid-gap-xl-2 {
748 | margin-right: -0.25rem;
749 | margin-left: -0.25rem;
750 | }
751 | .grid.has-grid-gap-xl-2 > * {
752 | padding-right: 0.25rem;
753 | padding-left: 0.25rem;
754 | margin-bottom: 0.5rem;
755 | }
756 | .grid.has-grid-gap-xl-3 {
757 | margin-right: -0.5rem;
758 | margin-left: -0.5rem;
759 | }
760 | .grid.has-grid-gap-xl-3 > * {
761 | padding-right: 0.5rem;
762 | padding-left: 0.5rem;
763 | margin-bottom: 1rem;
764 | }
765 | .grid.has-grid-gap-xl-4 {
766 | margin-right: -0.625rem;
767 | margin-left: -0.625rem;
768 | }
769 | .grid.has-grid-gap-xl-4 > * {
770 | padding-right: 0.625rem;
771 | padding-left: 0.625rem;
772 | margin-bottom: 1.25rem;
773 | }
774 | .grid.has-grid-gap-xl-5 {
775 | margin-right: -0.75rem;
776 | margin-left: -0.75rem;
777 | }
778 | .grid.has-grid-gap-xl-5 > * {
779 | padding-right: 0.75rem;
780 | padding-left: 0.75rem;
781 | margin-bottom: 1.5rem;
782 | }
783 | .grid.has-grid-gap-xl-6 {
784 | margin-right: -1.5rem;
785 | margin-left: -1.5rem;
786 | }
787 | .grid.has-grid-gap-xl-6 > * {
788 | padding-right: 1.5rem;
789 | padding-left: 1.5rem;
790 | margin-bottom: 3rem;
791 | }
792 | .grid.has-grid-gap-xl-7 {
793 | margin-right: -3rem;
794 | margin-left: -3rem;
795 | }
796 | .grid.has-grid-gap-xl-7 > * {
797 | padding-right: 3rem;
798 | padding-left: 3rem;
799 | margin-bottom: 6rem;
800 | }
801 | .grid.has-grid-gap-xl-8 {
802 | margin-right: -4.5rem;
803 | margin-left: -4.5rem;
804 | }
805 | .grid.has-grid-gap-xl-8 > * {
806 | padding-right: 4.5rem;
807 | padding-left: 4.5rem;
808 | margin-bottom: 9rem;
809 | }
810 | .grid.has-grid-gap-xl-9 {
811 | margin-right: -6rem;
812 | margin-left: -6rem;
813 | }
814 | .grid.has-grid-gap-xl-9 > * {
815 | padding-right: 6rem;
816 | padding-left: 6rem;
817 | margin-bottom: 12rem;
818 | }
819 | .grid.has-cols-xl-1 > * {
820 | flex: 0 0 100%;
821 | max-width: 100%;
822 | }
823 | .grid.has-cols-xl-2 > * {
824 | flex: 0 0 50%;
825 | max-width: 50%;
826 | }
827 | .grid.has-cols-xl-3 > * {
828 | flex: 0 0 33.33333%;
829 | max-width: 33.33333%;
830 | }
831 | .grid.has-cols-xl-4 > * {
832 | flex: 0 0 25%;
833 | max-width: 25%;
834 | }
835 | .grid.has-cols-xl-5 > * {
836 | flex: 0 0 20%;
837 | max-width: 20%;
838 | }
839 | .grid.has-cols-xl-6 > * {
840 | flex: 0 0 16.66667%;
841 | max-width: 16.66667%;
842 | }
843 | .grid.has-cols-xl-7 > * {
844 | flex: 0 0 14.28571%;
845 | max-width: 14.28571%;
846 | }
847 | .grid.has-cols-xl-8 > * {
848 | flex: 0 0 12.5%;
849 | max-width: 12.5%;
850 | }
851 | .grid.has-cols-xl-9 > * {
852 | flex: 0 0 11.11111%;
853 | max-width: 11.11111%;
854 | }
855 | .grid.has-cols-xl-10 > * {
856 | flex: 0 0 10%;
857 | max-width: 10%;
858 | }
859 | .grid.has-cols-xl-11 > * {
860 | flex: 0 0 9.09091%;
861 | max-width: 9.09091%;
862 | }
863 | .grid.has-cols-xl-12 > * {
864 | flex: 0 0 8.33333%;
865 | max-width: 8.33333%;
866 | }
867 | }
868 |
869 | /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1peGlucy9fbWVkaWEtcXVlcmllcy5zY3NzIiwibGF5b3V0cy9fZ3JpZC1mYWxsYmFjay1pZS5zY3NzIiwidmFyaWFibGVzL19zcGFjZXJzLnNjc3MiLCJhdG9taWMtYnVsbGRvZy1ncmlkLWZhbGxiYWNrLWllLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUNBdEIsd0VBQXdFO0FBRXhFO0VBQ0UsdUJBQXNCO0NBQ3ZCOztBQUVELGdEQUFnRDtBQUNoRDtFQUVFO0lBQ0UsY0FBYTtJQUNiLGdCQUFlO0lBQ2Ysb0JBQW1CO0lBQ25CLHdCQUF3QztJQUN4Qyx1QkFBdUM7R0EwRHhDO0VBL0REO0lBUUksbUJBQXVDO0lBQ3ZDLG9CQUF3QztJQUN4QyxnQkFBZTtJQUNmLHdCQUFrQztJQUNsQyx1QkFBaUM7SUFDakMsdUJDZnlCO0dEZ0IxQjtFQWRIO0lBa0JNLGdCQUEyQztJQUMzQyxlQUEwQztHQU8zQztFQTFCTDtJQXNCUSxpQkFBcUM7SUFDckMsZ0JBQW9DO0lBQ3BDLGlCQzNCSjtHRDRCRztFQXpCUDtJQWtCTSx3QkFBMkM7SUFDM0MsdUJBQTBDO0dBTzNDO0VBMUJMO0lBc0JRLHdCQUFxQztJQUNyQyx1QkFBb0M7SUFDcEMsdUJDMUJxQjtHRDJCdEI7RUF6QlA7SUFrQk0sdUJBQTJDO0lBQzNDLHNCQUEwQztHQU8zQztFQTFCTDtJQXNCUSx1QkFBcUM7SUFDckMsc0JBQW9DO0lBQ3BDLHNCQ3pCb0I7R0QwQnJCO0VBekJQO0lBa0JNLHNCQUEyQztJQUMzQyxxQkFBMEM7R0FPM0M7RUExQkw7SUFzQlEsc0JBQXFDO0lBQ3JDLHFCQUFvQztJQUNwQyxvQkM5QmE7R0QrQmQ7RUF6QlA7SUFrQk0sd0JBQTJDO0lBQzNDLHVCQUEwQztHQU8zQztFQTFCTDtJQXNCUSx3QkFBcUM7SUFDckMsdUJBQW9DO0lBQ3BDLHVCQ3ZCcUI7R0R3QnRCO0VBekJQO0lBa0JNLHVCQUEyQztJQUMzQyxzQkFBMEM7R0FPM0M7RUExQkw7SUFzQlEs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SUF3RFksZUFBNEI7SUFDNUIsZ0JBQTZCO0dBQzlCO0VBMURYO0lBd0RZLGNBQTRCO0lBQzVCLGVBQTZCO0dBQzlCO0VBMURYO0lBd0RZLG9CQUE0QjtJQUM1QixxQkFBNkI7R0FDOUI7RUExRFg7SUF3RFksY0FBNEI7SUFDNUIsZUFBNkI7R0FDOUI7RUExRFg7SUF3RFksY0FBNEI7SUFDNUIsZUFBNkI7R0FDOUI7RUExRFg7SUF3RFksb0JBQTRCO0lBQzVCLHFCQUE2QjtHQUM5QjtFQTFEWDtJQXdEWSxvQkFBNEI7SUFDNUIscUJBQTZCO0dBQzlCO0VBMURYO0lBd0RZLGdCQUE0QjtJQUM1QixpQkFBNkI7R0FDOUI7RUExRFg7SUF3RFksb0JBQTRCO0lBQzVCLHFCQUE2QjtHQUM5QjtFQTFEWDtJQXdEWSxjQUE0QjtJQUM1QixlQUE2QjtHQUM5QjtFQTFEWDtJQXdEWSxtQkFBNEI7SUFDNUIsb0JBQTZCO0dBQzlCO0VBMURYO0lBd0RZLG1CQUE0QjtJQUM1QixvQkFBNkI7R0FDOUI7Q0UreEJaIiwiZmlsZSI6ImF0b21pYy1idWxsZG9nLWdyaWQtZmFsbGJhY2staWUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLypNaW4gYW5kIE1heCBtaXhpbnMqL1xyXG5AbWl4aW4gbWluKCRicCwgJG1heDogXCJudWxsXCIsICRkZXZpY2U6IFwic2NyZWVuXCIpIHtcclxuICBAaWYgJG1heCA9PSBcIm51bGxcIiB7XHJcbiAgICBAbWVkaWEgb25seSAjeyRkZXZpY2V9IGFuZCAobWluLXdpZHRoOiAjeyRicH0pIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAbWVkaWEgb25seSAjeyRkZXZpY2V9IGFuZCAobWluLXdpZHRoOiAjeyRicH0pIGFuZCAobWF4LXdpZHRoOiAjeyRtYXh9KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG1heCgkYnAsICRtaW46IFwibnVsbFwiLCAkZGV2aWNlOiBcInNjcmVlblwiKSB7XHJcbiAgQGlmICRtaW4gPT0gXCJudWxsXCIge1xyXG4gICAgQG1lZGlhIG9ubHkgI3skZGV2aWNlfSBhbmQgKG1heC13aWR0aDogI3skYnB9KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgQG1lZGlhIG9ubHkgI3skZGV2aWNlfSBhbmQgKG1heC13aWR0aDogI3skYnB9KSBhbmQgKG1pbi13aWR0aDogI3skbWlufSkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyBLU1MgRG9jdW1lbnRhdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8vIG1pbigje2JwKHlvdXIgYnApfSl7fVxyXG4vL1xyXG4vLyBgQGluY2x1ZGUgbWluKCRicCwgJG1heDogXCJudWxsXCIsICRkZXZpY2U6IFwic2NyZWVuXCIpe31gXHJcbi8vXHJcbi8vIFBhcmFtZXRlcnM6XHJcbi8vICogYCRicGAgLSBCcmVha3BvaW50cyBhcmUgZGVmaW5lcyBpbiB0aGUgbWFwIHZhcmlhYmxlcyBgJGJyZWFrcG9pbnRzYCwgYnJlYWtwb2ludHMgY2FuIGJlIGNhbGxlZCB3aXRoIHRoZSBmdW5jdGlvbiBgYnAoKWAuIEFzIHdlIGNhbGwgYSBmdW5jdGlvblxyXG4vLyBpbnNpZGUgYSBtaXhpbiB3ZSB3aWxsIG5lZWQgdG8gdXNlIHNhc3MgaW50ZXJwb2xhdGlvbiwgYCN7YnAoKX1gLiBUaGlzIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gZW0uXHJcbi8vICogYCRtYXhgIC0gT3B0aW9uYWwgbWF4IHZhbHVlLCB1c2luZyAkYnJlYWtwb2ludHMgbWFwXHJcbi8vICogYCRkZXZpY2VgIC0gRGVmYXVsdCBzY3JlZW5cclxuLy9cclxuLy8gVXNhZ2U6XHJcbi8vICogYGgye0BpbmNsdWRlIG1pbigje2JwKHNtKX0pe2ZvbnQtc2l6ZTogZm9udC1zaXplKDIpO319YFxyXG4vLyBcclxuLy8gT3V0cHV0OlxyXG4vLyAqIGBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDM2ZW0pIHtoMntmb250LXNpemU6IDIuNXJlbTt9YFxyXG4vL1xyXG4vLyBTdHlsZWd1aWRlIE1peGlucy5taW5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4vLyBtYXgoI3ticCh5b3VyIGJwKX0pe31cclxuLy9cclxuLy8gYEBpbmNsdWRlIG1heCgkYnAsICRtaW46IFwibnVsbFwiLCAkZGV2aWNlOiBcInNjcmVlblwiKXt9YFxyXG4vL1xyXG4vLyAvIVxcIEF0b21pYyBCdWxsZG9nIGlzIG1vYmlsZSBmaXJzdCwgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBtYXggbWVkaWEgcXVlcmllc1xyXG4vL1xyXG4vLyBQYXJhbWV0ZXJzOlxyXG4vLyAqIGAkYnBgIC0gQnJlYWtwb2ludHMgYXJlIGRlZmluZXMgaW4gdGhlIG1hcCB2YXJpYWJsZXMgYCRicmVha3BvaW50c2AsIGJyZWFrcG9pbnRzIGNhbiBiZSBjYWxsZWQgd2l0aCB0aGUgZnVuY3Rpb24gYGJwKClgLiBBcyB3ZSBjYWxsIGEgZnVuY3Rpb25cclxuLy8gaW5zaWRlIGEgbWl4aW4gd2Ugd2lsbCBuZWVkIHRvIHVzZSBzYXNzIGludGVycG9sYXRpb24sIGAje2JwKCl9YC4gVGhpcyB3aWxsIHJldHVybiBhIHZhbHVlIGluIGVtLlxyXG4vLyAqIGAkbWluYCAtIE9wdGlvbmFsIG1pbiB2YWx1ZSwgdXNpbmcgJGJyZWFrcG9pbnRzIG1hcFxyXG4vLyAqIGAkZGV2aWNlYCAtIERlZmF1bHQgc2NyZWVuXHJcbi8vXHJcbi8vIFVzYWdlOlxyXG4vLyAqIGBoMntAaW5jbHVkZSBtYXgoI3ticChzbSl9KXtmb250LXNpemU6IGZvbnQtc2l6ZSgyKTt9fWBcclxuLy8gXHJcbi8vIE91dHB1dDpcclxuLy8gKiBgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNmVtKSB7aDJ7Zm9udC1zaXplOiAyLjVyZW07fWBcclxuLy9cclxuLy8gU3R5bGVndWlkZSBNaXhpbnMubWF4IiwiLyogUHJvZ3Jlc3NpdmUgRW5oYW5jZW1lbnQgZm9yIGJyb3dzZXJzIG5vdCBzdXBwb3J0aW5nIGdyaWQgZXhjZXB0IElFICovXHJcblxyXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVye1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbi8qIElFMTAgYW5kIDExIEZhbGxiYWNrIHRvIGJlIHJlbW92ZSB3aGVuIDwgMSUqL1xyXG5AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSksXHJcbiAgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIHtcclxuICAuZ3JpZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIG1hcmdpbi1yaWdodDogKHNwYWNlcigxLCB0cnVlKSAqIC0xKSAvIDI7XHJcbiAgICBtYXJnaW4tbGVmdDogKHNwYWNlcigxLCB0cnVlKSAqIC0xKSAvIDI7XHJcblxyXG4gICAgJiA+ICoge1xyXG4gICAgICBmbGV4OiAwIDAgcGVyY2VudGFnZSgxIC8gJGdyaWQtY29sdW1ucyk7XHJcbiAgICAgIG1heC13aWR0aDogcGVyY2VudGFnZSgxIC8gJGdyaWQtY29sdW1ucyk7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDFweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogc3BhY2VyKDEsIHRydWUpIC8gMjtcclxuICAgICAgcGFkZGluZy1sZWZ0OiBzcGFjZXIoMSwgdHJ1ZSkgLyAyO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiBzcGFjZXIoMSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQGVhY2ggJGtleSwgJHNwYWNlciBpbiAkc3BhY2VycyB7XHJcbiAgICAgICYuaGFzLWdyaWQtZ2FwLSN7JGtleX0ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogKHNwYWNlcigka2V5LCB0cnVlKSAqIC0xKSAvIDI7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IChzcGFjZXIoJGtleSwgdHJ1ZSkgKiAtMSkgLyAyO1xyXG5cclxuICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBzcGFjZXIoJGtleSwgdHJ1ZSkgLyAyO1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiBzcGFjZXIoJGtleSwgdHJ1ZSkgLyAyO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2VyKCRrZXksIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XHJcbiAgICAgICYuaGFzLWNvbHMtI3skaX0ge1xyXG4gICAgICAgICYgPiAqIHtcclxuICAgICAgICAgIGZsZXg6IDAgMCBwZXJjZW50YWdlKDEgLyAkaSk7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZWFjaCAkYnAsICRicEtleSBpbiAkYnJlYWtwb2ludHMge1xyXG4gICAgICBAaW5jbHVkZSBtaW4oI3ticCgjeyRicH0pfSkge1xyXG4gICAgICAgIEBlYWNoICRrZXksICRzcGFjZXIgaW4gJHNwYWNlcnMge1xyXG4gICAgICAgICAgJi5oYXMtZ3JpZC1nYXAtI3skYnB9LSN7JGtleX0ge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IChzcGFjZXIoJGtleSwgdHJ1ZSkgKiAtMSkgLyAyO1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogKHNwYWNlcigka2V5LCB0cnVlKSAqIC0xKSAvIDI7XHJcblxyXG4gICAgICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogc3BhY2VyKCRrZXksIHRydWUpIC8gMjtcclxuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHNwYWNlcigka2V5LCB0cnVlKSAvIDI7XHJcbiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2VyKCRrZXksIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAgICAgJi5oYXMtY29scy0jeyRicH0tI3skaX0ge1xyXG4gICAgICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICAgICAgZmxleDogMCAwIHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgICAgICAgICAgICBtYXgtd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIEtTUyBEb2N1bWVudGF0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy8gRG9jIGluIF9ncmlkLWZhbGxiYWNrLnNjc3MiLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gU2FzcyBWYXJpYWJsZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiRzcGFjZXItcmVmZXJlbmNlOiAxcmVtO1xyXG4kc3BhY2VyLXByZWZpeDogLS1zcGFjZXItO1xyXG4kc3BhY2VyczogKFxyXG4gIDA6IDAsXHJcbiAgMTogKCRzcGFjZXItcmVmZXJlbmNlICogMC4yNSksXHJcbiAgMjogKCRzcGFjZXItcmVmZXJlbmNlICogMC41KSxcclxuICAzOiAkc3BhY2VyLXJlZmVyZW5jZSxcclxuICA0OiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxLjI1KSxcclxuICA1OiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxLjUpLFxyXG4gIDY6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDMpLFxyXG4gIDc6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDYpLFxyXG4gIDg6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDkpLFxyXG4gIDk6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDEyKVxyXG4pO1xyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNldCBzcGFjZXIgZnVuY3Rpb25cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBmdW5jdGlvbiBzcGFjZXIoJHNwYWNlciwgJHRydWUtdmFsOmZhbHNlKSB7XHJcbiAgQGlmICR1c2UtY3NzLXZhciA9PSB0cnVlIHtcclxuICAgIEBpZiAkdHJ1ZS12YWwgPT0gdHJ1ZSB7XHJcbiAgICAgIEByZXR1cm4gbWFwLWdldCgkc3BhY2VycywgJHNwYWNlcik7IC8vVHJ1ZSBWYWxcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAcmV0dXJuIHZhcigjeyRzcGFjZXItcHJlZml4fSN7JHNwYWNlcn0pOyAvL0NTUyBWYXJcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIEByZXR1cm4gbWFwLWdldCgkc3BhY2VycywgJHNwYWNlcik7IC8vRGlzYWJsZWQgQ1NTIFZhclxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNldCByb290IHZhcmlhYmxlc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQGlmICR1c2UtY3NzLXZhciA9PSB0cnVlIHtcclxuICAjeyRyb290LWRlZmF1bHR9IHtcclxuICAgIEBlYWNoICRuYW1lLCAkc3BhY2VyIGluICRzcGFjZXJzIHtcclxuICAgICAgI3skc3BhY2VyLXByZWZpeH0jeyRuYW1lfTogJHNwYWNlcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vL0tTUyBEb2N1bWVudGF0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy8gU3BhY2Vyc1xyXG4vL1xyXG4vLyBTcGFjZXJzIGlzIHVzZSB0byBmb3IgcGFkZGluZyBhbmQgbWFyZ2luIGdyaWQtZ2FwIGluIHRoZSBwcm9qZWN0LiBUaGUgYmFzZSB2YWx1ZSBpcyBzZXQgd2l0aCAkc3BhY2VyLXJlZmVyZW5jZSAoMXJlbSlcclxuLy9cclxuLy8gLS0tLS0tLS0tLS0tLS0tXHJcbi8vICogYDBgOiAwLFxyXG4vLyAqIGAxYDogKCRzcGFjZXItcmVmZXJlbmNlICogMC4yNSksXHJcbi8vICogYDJgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAwLjUpLFxyXG4vLyAqIGAzYDogJHNwYWNlci1yZWZlcmVuY2UsXHJcbi8vICogYDRgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxLjI1KSxcclxuLy8gKiBgNWA6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDEuNSksXHJcbi8vICogYDZgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAzKSxcclxuLy8gKiBgN2A6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDYpLFxyXG4vLyAqIGA4YDogKCRzcGFjZXItcmVmZXJlbmNlICogOSksXHJcbi8vICogYDlgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxMilcclxuLy8gLS0tLS0tLS0tLS0tLS0tXHJcbi8vXHJcbi8vIHNwYWNlciBzaXplcyBjYW4gYmUgY2FsbGVkIGluIHRoZSBzYXNzIHByb2plY3QgdXNpbmcgdGhlIGZ1bmN0aW9uczpcclxuLy9cclxuLy8gYHNwYWNlcigkc3BhY2VyLCAkdHJ1ZS12YWw6ZmFsc2UpYCB3aGljaCB3aWxsIG91dHB1dCBieSBkZWZhdWx0IHRoZSBDU1MgdmFyaWFibGVcclxuLy9cclxuLy8gVXNhZ2Ugb2YgZ3JpZC1pdGVtLXNpemUoKTpcclxuLy8gKiBgc3BhY2VyKDQpYCA9PiBgdmFyKC0tc3BhY2VyLTQpYCBJZiAkdXNlLWNzcy12YXIgPSB0cnVlXHJcbi8vICogYHNwYWNlcig0KWAgPT4gYDEuMjVyZW1gIElmICR1c2UtY3NzLXZhciA9IGZhbHNlXHJcbi8vICogYHNwYWNlcig0LCB0cnVlKWAgPT4gYDEuMjVyZW1gXHJcbi8vXHJcbi8vIFN0eWxlZ3VpZGUgVmFyaWFibGVzLlNwYWNlcnMiLCIvKk1pbiBhbmQgTWF4IG1peGlucyovXG4vKiBQcm9ncmVzc2l2ZSBFbmhhbmNlbWVudCBmb3IgYnJvd3NlcnMgbm90IHN1cHBvcnRpbmcgZ3JpZCBleGNlcHQgSUUgKi9cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vKiBJRTEwIGFuZCAxMSBGYWxsYmFjayB0byBiZSByZW1vdmUgd2hlbiA8IDElKi9cbkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSwgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIHtcbiAgLmdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZCA+ICoge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlO1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjEyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTAge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtMCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMTI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4xMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTEgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjEyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC0yID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTMgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTUgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTYge1xuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNiA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC03IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDZyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTgge1xuICAgIG1hcmdpbi1yaWdodDogLTQuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTQuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtOCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDQuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA5cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC05IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC02cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtOSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiA2cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEycmVtO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtMiA+ICoge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtMyA+ICoge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNCA+ICoge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNiA+ICoge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNyA+ICoge1xuICAgIGZsZXg6IDAgMCAxNC4yODU3MSU7XG4gICAgbWF4LXdpZHRoOiAxNC4yODU3MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtOCA+ICoge1xuICAgIGZsZXg6IDAgMCAxMi41JTtcbiAgICBtYXgtd2lkdGg6IDEyLjUlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTkgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTEuMTExMTElO1xuICAgIG1heC13aWR0aDogMTEuMTExMTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTEwID4gKiB7XG4gICAgZmxleDogMCAwIDEwJTtcbiAgICBtYXgtd2lkdGg6IDEwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy0xMSA+ICoge1xuICAgIGZsZXg6IDAgMCA5LjA5MDkxJTtcbiAgICBtYXgtd2lkdGg6IDkuMDkwOTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTEyID4gKiB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgYW5kIChtaW4td2lkdGg6IDIwZW0pLCBvbmx5IHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSBhbmQgKG1pbi13aWR0aDogMjBlbSkge1xuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy0wID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTIgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTMge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy00ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC42MjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtNSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtNiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy02ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTcge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy03ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtOCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy04ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDlyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTkge1xuICAgIG1hcmdpbi1yaWdodDogLTZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC02cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy05ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMTJyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy03ID4gKiB7XG4gICAgZmxleDogMCAwIDE0LjI4NTcxJTtcbiAgICBtYXgtd2lkdGg6IDE0LjI4NTcxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy04ID4gKiB7XG4gICAgZmxleDogMCAwIDEyLjUlO1xuICAgIG1heC13aWR0aDogMTIuNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtOSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMS4xMTExMSU7XG4gICAgbWF4LXdpZHRoOiAxMS4xMTExMSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtMTAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAlO1xuICAgIG1heC13aWR0aDogMTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLXhzLTExID4gKiB7XG4gICAgZmxleDogMCAwIDkuMDkwOTElO1xuICAgIG1heC13aWR0aDogOS4wOTA5MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtMTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSBhbmQgKG1pbi13aWR0aDogMzcuNWVtKSwgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkgYW5kIChtaW4td2lkdGg6IDM3LjVlbSkge1xuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS0wID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTIgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTMge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS00ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC42MjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tNSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tNiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS02ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTcge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS03ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tOCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS04ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDlyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTkge1xuICAgIG1hcmdpbi1yaWdodDogLTZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC02cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS05ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMTJyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS03ID4gKiB7XG4gICAgZmxleDogMCAwIDE0LjI4NTcxJTtcbiAgICBtYXgtd2lkdGg6IDE0LjI4NTcxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS04ID4gKiB7XG4gICAgZmxleDogMCAwIDEyLjUlO1xuICAgIG1heC13aWR0aDogMTIuNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tOSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMS4xMTExMSU7XG4gICAgbWF4LXdpZHRoOiAxMS4xMTExMSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tMTAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAlO1xuICAgIG1heC13aWR0aDogMTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLXNtLTExID4gKiB7XG4gICAgZmxleDogMCAwIDkuMDkwOTElO1xuICAgIG1heC13aWR0aDogOS4wOTA5MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tMTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSBhbmQgKG1pbi13aWR0aDogNTYuMjVlbSksIG9ubHkgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIGFuZCAobWluLXdpZHRoOiA1Ni4yNWVtKSB7XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTAgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjEyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMTI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0xID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC4xMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjEyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtMiA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0zID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTQge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTQgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjYyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNjI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTUge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNzVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC01ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC02IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTYgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtNyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtM3JlbTtcbiAgICBtYXJnaW4tbGVmdDogLTNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTcgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xuICAgIHBhZGRpbmctbGVmdDogM3JlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA2cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC04IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC00LjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC00LjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTggPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0LjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiA0LjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogOXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtOSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNnJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTZyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTkgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC0xID4gKiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTMgPiAqIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTQgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTUgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjAlO1xuICAgIG1heC13aWR0aDogMjAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTYgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTcgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTQuMjg1NzElO1xuICAgIG1heC13aWR0aDogMTQuMjg1NzElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTggPiAqIHtcbiAgICBmbGV4OiAwIDAgMTIuNSU7XG4gICAgbWF4LXdpZHRoOiAxMi41JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC05ID4gKiB7XG4gICAgZmxleDogMCAwIDExLjExMTExJTtcbiAgICBtYXgtd2lkdGg6IDExLjExMTExJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC0xMCA+ICoge1xuICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgbWF4LXdpZHRoOiAxMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbWQtMTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgOS4wOTA5MSU7XG4gICAgbWF4LXdpZHRoOiA5LjA5MDkxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC0xMiA+ICoge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlO1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIGFuZCAobWluLXdpZHRoOiA3NWVtKSwgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkgYW5kIChtaW4td2lkdGg6IDc1ZW0pIHtcbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTAge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctMCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMTI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4xMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTEgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjEyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy0yID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTMgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTUgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTYge1xuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNiA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy03IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDZyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTgge1xuICAgIG1hcmdpbi1yaWdodDogLTQuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTQuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctOCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDQuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA5cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy05IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC02cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctOSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiA2cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEycmVtO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctMiA+ICoge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctMyA+ICoge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNCA+ICoge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNiA+ICoge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNyA+ICoge1xuICAgIGZsZXg6IDAgMCAxNC4yODU3MSU7XG4gICAgbWF4LXdpZHRoOiAxNC4yODU3MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctOCA+ICoge1xuICAgIGZsZXg6IDAgMCAxMi41JTtcbiAgICBtYXgtd2lkdGg6IDEyLjUlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTkgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTEuMTExMTElO1xuICAgIG1heC13aWR0aDogMTEuMTExMTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTEwID4gKiB7XG4gICAgZmxleDogMCAwIDEwJTtcbiAgICBtYXgtd2lkdGg6IDEwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1sZy0xMSA+ICoge1xuICAgIGZsZXg6IDAgMCA5LjA5MDkxJTtcbiAgICBtYXgtd2lkdGg6IDkuMDkwOTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTEyID4gKiB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgYW5kIChtaW4td2lkdGg6IDExMi41ZW0pLCBvbmx5IHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSBhbmQgKG1pbi13aWR0aDogMTEyLjVlbSkge1xuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC0wID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTIgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTMge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC00ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC42MjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtNSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtNiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC02ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTcge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC03ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtOCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC04ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDlyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTkge1xuICAgIG1hcmdpbi1yaWdodDogLTZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC02cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC05ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMTJyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC03ID4gKiB7XG4gICAgZmxleDogMCAwIDE0LjI4NTcxJTtcbiAgICBtYXgtd2lkdGg6IDE0LjI4NTcxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC04ID4gKiB7XG4gICAgZmxleDogMCAwIDEyLjUlO1xuICAgIG1heC13aWR0aDogMTIuNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtOSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMS4xMTExMSU7XG4gICAgbWF4LXdpZHRoOiAxMS4xMTExMSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtMTAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAlO1xuICAgIG1heC13aWR0aDogMTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLXhsLTExID4gKiB7XG4gICAgZmxleDogMCAwIDkuMDkwOTElO1xuICAgIG1heC13aWR0aDogOS4wOTA5MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtMTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTtcbiAgfVxufVxuIl19 */
870 |
--------------------------------------------------------------------------------