diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..bc42fd64 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +js \ No newline at end of file diff --git a/.gitignore b/.gitignore index b7f0a528..950aacbd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ DOCKER_ENV Dockerfile-php-build docker_tag output.log -.DS_Store \ No newline at end of file +.DS_Store +/.idea/ diff --git a/README.md b/README.md index 09452463..36d8adde 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,29 @@ -# Ash a layering of features on top of Frost by WP Engine +# Ash + +A layering of Linchpin specific features on top of Frost by WP Engine. ## About -With its clean, minimal design and powerful feature set, Frost enables agencies to build stylish and sophisticated WordPress websites. Frost is a masterpiece of design and functionality. It features a range of valuable elements, including hero and portfolio sections, prominent call-to-action buttons, and customer testimonials. In addition, Frost utilizes the potential of the editor to create link pages, serve as a powerful tool for building relationships with clients, sharing valuable content, and boosting social media engagement. So whether you’re building a website for your business, personal brand, or creative project, Frost is the perfect solution for anyone looking to launch a website quickly and efficiently. See the Frost theme in action at [frostwp.com](https://frostwp.com/). +With its clean, minimal design and powerful feature set, Ash enables agencies to build stylish and sophisticated WordPress websites. It features a range of valuable elements, including hero and portfolio sections, prominent call-to-action buttons, and customer testimonials. In addition, Frost utilizes the potential of the editor to create link pages, serve as a powerful tool for building relationships with clients, sharing valuable content, and boosting social media engagement. So whether you’re building a website for your business, personal brand, or creative project, Frost is the perfect solution for anyone looking to launch a website quickly and efficiently. See the Frost theme in action at [frostwp.com](https://frostwp.com/). -Download the latest stable release: [frost-1.0.1.zip](https://github.com/wpengine/frost/releases/download/v1.0.1/frost-1.0.1.zip) +Download the latest stable release: [ash.zip](https://github.com/linchpin/ash/releases/) ## Requirements - WordPress 6.2+ -- PHP 5.6+ +- PHP 7.4+ - License: [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html) or later +## Dependencies + +| Dependency | Version | License | Notes | +|------------|---------|----------------|-----------------------------------------------| +| Frost | 1.0.2 | GPLv2 or later | The base theme Ash was forked from | +| Husky | 7.0.2 | MIT | Used for commit linting for linchpin projects | + ## Getting Started -You can download the latest stable release of Frost using the link above. Alternatively, install the entire repository for development purposes: +You can download the latest stable release of Ash using the link above. Alternatively, install the entire repository for development purposes: 1. Set up a local WordPress development environment, we recommend using [Local](https://localwp.com/). 2. Ensure you are using WordPress 6.2+. diff --git a/assets/fonts/gilmer-bold.css b/assets/fonts/gilmer-bold.css deleted file mode 100755 index 9e1410aa..00000000 --- a/assets/fonts/gilmer-bold.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Bold -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Bold'; - src: url('gilmer-bold.eot'); - src: url('gilmer-bold.eot?#iefix') format('embedded-opentype'), - url('gilmer-bold.woff2') format('woff2'), - url('gilmer-bold.woff') format('woff'), - url('gilmer-bold.ttf') format('truetype'), - url('gilmer-bold.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-bold.eot b/assets/fonts/gilmer-bold.eot deleted file mode 100755 index 4066e7d5..00000000 Binary files a/assets/fonts/gilmer-bold.eot and /dev/null differ diff --git a/assets/fonts/gilmer-bold.svg b/assets/fonts/gilmer-bold.svg deleted file mode 100755 index 1d12cf95..00000000 --- a/assets/fonts/gilmer-bold.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-bold.ttf b/assets/fonts/gilmer-bold.ttf deleted file mode 100755 index 2dc04cf8..00000000 Binary files a/assets/fonts/gilmer-bold.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-bold.woff b/assets/fonts/gilmer-bold.woff deleted file mode 100755 index 9ac3a190..00000000 Binary files a/assets/fonts/gilmer-bold.woff and /dev/null differ diff --git a/assets/fonts/gilmer-bold.woff2 b/assets/fonts/gilmer-bold.woff2 deleted file mode 100755 index 22793f9a..00000000 Binary files a/assets/fonts/gilmer-bold.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.css b/assets/fonts/gilmer-heavy.css deleted file mode 100755 index 8e7ba3ee..00000000 --- a/assets/fonts/gilmer-heavy.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Heavy -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Heavy'; - src: url('gilmer-heavy.eot'); - src: url('gilmer-heavy.eot?#iefix') format('embedded-opentype'), - url('gilmer-heavy.woff2') format('woff2'), - url('gilmer-heavy.woff') format('woff'), - url('gilmer-heavy.ttf') format('truetype'), - url('gilmer-heavy.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-heavy.eot b/assets/fonts/gilmer-heavy.eot deleted file mode 100755 index aa39ed22..00000000 Binary files a/assets/fonts/gilmer-heavy.eot and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.svg b/assets/fonts/gilmer-heavy.svg deleted file mode 100755 index d3697365..00000000 --- a/assets/fonts/gilmer-heavy.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-heavy.ttf b/assets/fonts/gilmer-heavy.ttf deleted file mode 100755 index cd1aea95..00000000 Binary files a/assets/fonts/gilmer-heavy.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.woff b/assets/fonts/gilmer-heavy.woff deleted file mode 100755 index f28d8dcb..00000000 Binary files a/assets/fonts/gilmer-heavy.woff and /dev/null differ diff --git a/assets/fonts/gilmer-heavy.woff2 b/assets/fonts/gilmer-heavy.woff2 deleted file mode 100755 index 0c5991df..00000000 Binary files a/assets/fonts/gilmer-heavy.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-light.css b/assets/fonts/gilmer-light.css deleted file mode 100755 index 7fb4ae80..00000000 --- a/assets/fonts/gilmer-light.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Light -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Light'; - src: url('gilmer-light.eot'); - src: url('gilmer-light.eot?#iefix') format('embedded-opentype'), - url('gilmer-light.woff2') format('woff2'), - url('gilmer-light.woff') format('woff'), - url('gilmer-light.ttf') format('truetype'), - url('gilmer-light.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-light.eot b/assets/fonts/gilmer-light.eot deleted file mode 100755 index ef2a6743..00000000 Binary files a/assets/fonts/gilmer-light.eot and /dev/null differ diff --git a/assets/fonts/gilmer-light.svg b/assets/fonts/gilmer-light.svg deleted file mode 100755 index 04c81b65..00000000 --- a/assets/fonts/gilmer-light.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-light.ttf b/assets/fonts/gilmer-light.ttf deleted file mode 100755 index 65f5a08a..00000000 Binary files a/assets/fonts/gilmer-light.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-light.woff b/assets/fonts/gilmer-light.woff deleted file mode 100755 index c04be8c6..00000000 Binary files a/assets/fonts/gilmer-light.woff and /dev/null differ diff --git a/assets/fonts/gilmer-light.woff2 b/assets/fonts/gilmer-light.woff2 deleted file mode 100755 index 5dab907f..00000000 Binary files a/assets/fonts/gilmer-light.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-medium.css b/assets/fonts/gilmer-medium.css deleted file mode 100755 index a38fbf07..00000000 --- a/assets/fonts/gilmer-medium.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Medium -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Medium'; - src: url('gilmer-medium.eot'); - src: url('gilmer-medium.eot?#iefix') format('embedded-opentype'), - url('gilmer-medium.woff2') format('woff2'), - url('gilmer-medium.woff') format('woff'), - url('gilmer-medium.ttf') format('truetype'), - url('gilmer-medium.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-medium.eot b/assets/fonts/gilmer-medium.eot deleted file mode 100755 index bb048187..00000000 Binary files a/assets/fonts/gilmer-medium.eot and /dev/null differ diff --git a/assets/fonts/gilmer-medium.svg b/assets/fonts/gilmer-medium.svg deleted file mode 100755 index 8b09eac1..00000000 --- a/assets/fonts/gilmer-medium.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-medium.ttf b/assets/fonts/gilmer-medium.ttf deleted file mode 100755 index 615fdee7..00000000 Binary files a/assets/fonts/gilmer-medium.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-medium.woff b/assets/fonts/gilmer-medium.woff deleted file mode 100755 index e248e37d..00000000 Binary files a/assets/fonts/gilmer-medium.woff and /dev/null differ diff --git a/assets/fonts/gilmer-medium.woff2 b/assets/fonts/gilmer-medium.woff2 deleted file mode 100755 index 3ebe650a..00000000 Binary files a/assets/fonts/gilmer-medium.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-outline.css b/assets/fonts/gilmer-outline.css deleted file mode 100755 index b19288f9..00000000 --- a/assets/fonts/gilmer-outline.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Outline -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Outline'; - src: url('gilmer-outline.eot'); - src: url('gilmer-outline.eot?#iefix') format('embedded-opentype'), - url('gilmer-outline.woff2') format('woff2'), - url('gilmer-outline.woff') format('woff'), - url('gilmer-outline.ttf') format('truetype'), - url('gilmer-outline.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-outline.eot b/assets/fonts/gilmer-outline.eot deleted file mode 100755 index b5429553..00000000 Binary files a/assets/fonts/gilmer-outline.eot and /dev/null differ diff --git a/assets/fonts/gilmer-outline.svg b/assets/fonts/gilmer-outline.svg deleted file mode 100755 index 89507a41..00000000 --- a/assets/fonts/gilmer-outline.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-outline.ttf b/assets/fonts/gilmer-outline.ttf deleted file mode 100755 index 5d30aaa3..00000000 Binary files a/assets/fonts/gilmer-outline.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-outline.woff b/assets/fonts/gilmer-outline.woff deleted file mode 100755 index 787e81eb..00000000 Binary files a/assets/fonts/gilmer-outline.woff and /dev/null differ diff --git a/assets/fonts/gilmer-outline.woff2 b/assets/fonts/gilmer-outline.woff2 deleted file mode 100755 index fe165297..00000000 Binary files a/assets/fonts/gilmer-outline.woff2 and /dev/null differ diff --git a/assets/fonts/gilmer-regular.css b/assets/fonts/gilmer-regular.css deleted file mode 100755 index d4874ec9..00000000 --- a/assets/fonts/gilmer-regular.css +++ /dev/null @@ -1,27 +0,0 @@ -/* -Font: Gilmer -Style: Regular -URL: https://www.youworkforthem.com/font/T9758/gilmer -Foundry: Piotr Lapa -Foundry: https://www.youworkforthem.com/designer/1166/piotr-lapa -Copyright: Copyright © 2018 by Piotr _apa. All rights reserved. -Version: 17 -Created: August 17, 2018 -License: https://www.youworkforthem.com/font-license -License: The WebFont(s) listed in this document must follow the YouWorkForThem - WebFont license rules. All other parties are strictly restricted - from using the WebFonts(s) listed without a purchased license. - All details above must always remain unaltered and visible in your CSS. -*/ - -@font-face { - font-family: 'Gilmer-Regular'; - src: url('gilmer-regular.eot'); - src: url('gilmer-regular.eot?#iefix') format('embedded-opentype'), - url('gilmer-regular.woff2') format('woff2'), - url('gilmer-regular.woff') format('woff'), - url('gilmer-regular.ttf') format('truetype'), - url('gilmer-regular.svg#youworkforthem') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/assets/fonts/gilmer-regular.eot b/assets/fonts/gilmer-regular.eot deleted file mode 100755 index 6d528a51..00000000 Binary files a/assets/fonts/gilmer-regular.eot and /dev/null differ diff --git a/assets/fonts/gilmer-regular.svg b/assets/fonts/gilmer-regular.svg deleted file mode 100755 index 4053d6c1..00000000 --- a/assets/fonts/gilmer-regular.svg +++ /dev/null @@ -1,4 +0,0 @@ - - -This SVG WebFont was generated by YouWorkForThem. -Copyright © 2018 by Piotr _apa. All rights reserved. \ No newline at end of file diff --git a/assets/fonts/gilmer-regular.ttf b/assets/fonts/gilmer-regular.ttf deleted file mode 100755 index 679bf3e9..00000000 Binary files a/assets/fonts/gilmer-regular.ttf and /dev/null differ diff --git a/assets/fonts/gilmer-regular.woff b/assets/fonts/gilmer-regular.woff deleted file mode 100755 index c66fc561..00000000 Binary files a/assets/fonts/gilmer-regular.woff and /dev/null differ diff --git a/assets/fonts/gilmer-regular.woff2 b/assets/fonts/gilmer-regular.woff2 deleted file mode 100755 index e92be881..00000000 Binary files a/assets/fonts/gilmer-regular.woff2 and /dev/null differ diff --git a/assets/scss/_frost.scss b/assets/scss/_frost.scss index 85793899..5cc83e1f 100644 --- a/assets/scss/_frost.scss +++ b/assets/scss/_frost.scss @@ -1,16 +1,14 @@ /* Defaults ---------------------------------------------------------------------------- */ -html { - box-sizing: border-box; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; -} - *, *::before, *::after { - box-sizing: inherit; + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; } a, @@ -19,263 +17,115 @@ input:focus, input[type="button"], input[type="submit"], textarea:focus, -.wp-block-button__link { +.wp-element-button { transition: all 0.2s ease-in-out; } a, -a:not(.wp-element-button), a:focus, -a:hover { - text-decoration: underline; +a:hover, +a:not(.wp-element-button) { text-decoration-thickness: 1px; } -ol, -ul { - margin: 0; - padding: 0; -} - b, strong { font-weight: var(--wp--custom--font-weight--medium); } -blockquote { - margin: 0; -} - -/* - * Alignment Styles - Originally from TT2. - * These rules are temporary, and should not - * be relied on or modified too heavily by - * themes or plugins that build on Frost. - * These are meant to be a precursor to a - * global solution provided by the Block Editor. - * - * Relevant issues: - * https://github.com/WordPress/gutenberg/issues/35607 - * https://github.com/WordPress/gutenberg/issues/35884 ----------------------------------------------*/ - -body > .is-root-container, -.edit-post-visual-editor__post-title-wrapper, -.wp-block-cover.alignfull, -.wp-block-group.alignfull, -.wp-block-group.has-background, -.wp-site-blocks { - padding-left: var(--wp--custom--spacing--outer); - padding-right: var(--wp--custom--spacing--outer); -} - -.block-editor-block-list__layout.is-root-container > .alignfull, -.is-root-container > .wp-block-cover, -.is-root-container > .wp-block-group.has-background, -.is-root-container > .wp-block-template-part > .wp-block-cover, -.is-root-container > .wp-block-template-part > .wp-block-group.has-background, -.wp-site-blocks .alignfull, -.wp-site-blocks > .wp-block-cover, -.wp-site-blocks > .wp-block-group.has-background, -.wp-site-blocks > .wp-block-template-part > .wp-block-cover, -.wp-site-blocks > .wp-block-template-part > .wp-block-group.has-background { - margin-left: calc(-1 * var(--wp--custom--spacing--outer)) !important; - margin-right: calc(-1 * var(--wp--custom--spacing--outer)) !important; - width: unset; +mark { + background: linear-gradient(90deg, var(--wp--preset--color--primary) 0%, var(--wp--preset--color--primary) 100%); + background-position: 0 85%; + background-repeat: repeat-x; + background-size: 100% 15%; } /* Blocks ---------------------------------------------------------------------------- */ -/* Button ---------------------------------------------- */ - - /* Calendar --------------------------------------------- */ .wp-block-calendar table caption, .wp-block-calendar table tbody { - color: var(--wp--preset--color--foreground); + color: var(--wp--preset--color--contrast); } .wp-block-calendar table th { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); + background-color: var(--wp--preset--color--contrast); + color: var(--wp--preset--color--base); } .wp-block-calendar tbody td, .wp-block-calendar th { - border: 1px solid var(--wp--preset--color--foreground); + border: 1px solid var(--wp--preset--color--contrast); padding: 10px; } -/* Caption ---------------------------------------------- */ - -.wp-block-embed figcaption, -.wp-block-gallery figcaption, -.wp-block-image figcaption, -.wp-block-table figcaption { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - margin-bottom: 0; - margin-top: 10px; - text-align: center; -} - -.wp-block-gallery figcaption { - margin-top: 0; -} - /* Code --------------------------------------------- */ -.wp-block-code, -.wp-block-code code { - border: none; -} - -.wp-block-code code { - overflow-wrap: normal; - overflow-x: scroll; - tab-size: 4; - white-space: pre !important; -} - -*:not(.wp-block-code) > code, -kbd { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); +*:not(.wp-block-code) > code { + background-color: var(--wp--preset--color--neutral); font-size: var(--wp--preset--font-size--small); padding: 5px 8px; - position: relative; - top: -1px; -} - -/* - * When inline code is selected, the Editor applies contextual styling. Since - * our code color is near white, we need to reset to the default text color. - */ -.rich-text:focus > code[data-rich-text-format-boundary], -.rich-text:focus > kbd[data-rich-text-format-boundary] { - color: currentColor; } /* Comments --------------------------------------------- */ -.wp-block-comment-template li { - margin-left: 0; +.wp-block-post-comments-form .comment-reply-title { + margin-bottom: var(--wp--custom--spacing--gap); } -.wp-block-post-comments-form input:not([type=submit]), +.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]), .wp-block-post-comments-form textarea { - border-color: var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form input[type=submit] { - border: 1px solid var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form .form-submit { - margin-bottom: 0; + border-color: var(--wp--preset--color--contrast); + padding: 10px 15px; } -/* Group ---------------------------------------------- */ - -.wp-block-group.is-style-full-height { - align-items: center; - display: grid; - min-height: 100vh; -} - -.wp-block-group.is-style-shadow { - box-shadow: 0 0 50px rgb(0 0 0 / 10%); +.wp-block-post-comments-form p:not(.form-submit) { + margin-bottom: 20px; } -.wp-block-group.is-style-shadow-solid { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -/* Image ---------------------------------------------- */ - -.wp-block-image.aligncenter { - margin-left: auto !important; - margin-right: auto !important; -} - -.wp-block-image.alignleft { - margin-right: 30px !important; -} - -.wp-block-image.alignright { - margin-left: 30px !important; -} - -.wp-block-image.is-style-shadow { - box-shadow: 0 0 50px rgba(0, 0, 0, .1); +.wp-block-post-comments-form .comment-form-cookies-consent label { + font-size: var(--wp--preset--font-size--x-small); } /* List --------------------------------------------- */ -ol li:where(:not([class*='block'])), -ol li:where(.wp-block-list), -ul li:where(:not([class*='block'])), -ul li:where(.wp-block-list) { - margin-left: 30px; -} - -.is-style-no-disc li { +.is-style-no-disc { list-style-type: none; - margin-left: 0; -} - -/* Media & Text ---------------------------------------------- */ - -.wp-block-media-text.is-style-shadow-media img { - box-shadow: 0 0 50px rgb(0 0 0 / 10%); + padding-left: 0; } /* Navigation --------------------------------------------- */ .wp-block-navigation__responsive-container.is-menu-open { - padding: 30px var(--wp--custom--spacing--outer); + padding-bottom: 30px; + padding-top: 30px } .wp-block-navigation__responsive-container-close, .wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--foreground); + border: 1px solid currentColor; padding: 2px; } -.has-background .wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--background); -} - .has-background .wp-block-navigation__responsive-container-open:focus, .has-background .wp-block-navigation__responsive-container-open:hover { - color: var(--wp--preset--color--background); -} - -.wp-block-navigation:not([style*=text-decoration]) a, -.wp-block-navigation:not([style*=text-decoration]) a:focus, -.wp-block-navigation:not([style*=text-decoration]) a:hover { - text-decoration: none; + color: var(--wp--preset--color--base); } /* Navigation Submenu --------------------------------------------- */ .wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container { - background-color: var(--wp--preset--color--foreground); - border: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); + background-color: var(--wp--preset--color--contrast); + border: var(--wp--preset--color--contrast); + color: var(--wp--preset--color--base); padding: 10px; } @@ -283,74 +133,9 @@ ul li:where(.wp-block-list) { padding: 2px 10px; } -/* Paragraph ---------------------------------------------- */ - -p.has-background { - padding: 20px 30px; -} - -/* Preformatted ---------------------------------------------- */ - -.wp-block-preformatted { - overflow-wrap: normal; - overflow-x: scroll; - white-space: pre; -} - -/* Pullquote ---------------------------------------------- */ - -.wp-block-pullquote p, -.wp-block-pullquote.alignleft p, -.wp-block-pullquote.alignright p { - font-size: var(--wp--preset--font-size--large); - line-height: var(--wp--custom--line-height--medium); - margin-bottom: 0; -} - -.wp-block-pullquote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-transform: inherit; -} - -/* Quote ---------------------------------------------- */ - -.wp-block-quote { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -.wp-block-quote p:last-of-type { - margin-bottom: 0; -} - -.wp-block-quote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-align: inherit; -} - /* Separator --------------------------------------------- */ -.wp-block-separator, -.wp-block-separator.has-css-opacity { - opacity: 1; -} - -.wp-block-separator:not(.is-style-dots), -.wp-block-separator.has-background:not(.is-style-dots) { - border-bottom: 1px solid currentColor; - height: 1px; -} - .wp-block-separator.is-style-dots:before { font-family: inherit; font-size: var(--wp--preset--font-size--large); @@ -358,11 +143,15 @@ p.has-background { padding-left: 10px; } -/* Site Title ---------------------------------------------- */ +.wp-block-separator:not(.is-style-wide):not(.is-style-dots) { + width: 100px; +} -.wp-block-site-title a { - text-decoration: none; +.wp-block-separator:not(.is-style-dots), +.wp-block-separator.has-background:not(.is-style-dots) { + border-bottom: 1px solid currentColor; + border-top: none; + height: 1px; } /* Table @@ -377,11 +166,11 @@ p.has-background { } .wp-block-table thead { - border-bottom: 3px solid var(--wp--preset--color--foreground); + border-bottom: 3px solid var(--wp--preset--color--contrast); } .wp-block-table tfoot { - border-top: 3px solid var(--wp--preset--color--foreground); + border-top: 3px solid var(--wp--preset--color--contrast); } .wp-block-table td, @@ -390,11 +179,11 @@ p.has-background { .wp-block-table.is-style-stripes td, .wp-block-table.is-style-stripes th, .wp-block-table.is-style-stripes tr { - border: 1px solid var(--wp--preset--color--foreground); + border: 1px solid var(--wp--preset--color--contrast); } .wp-block-table th { - font-weight: var(--wp--custom--font-weight--medium); + font-weight: var(--wp--custom--font-weight--regular); } .wp-block-table td, @@ -403,7 +192,7 @@ p.has-background { } .wp-block-table.is-style-stripes tbody tr:nth-child(odd) { - background-color: #eee; + background-color: var(--wp--preset--color--neutral); } /* Custom @@ -416,18 +205,24 @@ input, select, textarea, .wp-block-search__input { - background-color: var(--wp--preset--color--background); - border: 1px solid var(--wp--preset--color--foreground); + background-color: var(--wp--preset--color--base); + border: 1px solid var(--wp--preset--color--contrast); border-radius: 0; - color: var(--wp--preset--color--foreground); + color: var(--wp--preset--color--contrast); font-family: var(--wp--preset--font-family--primary); font-size: var(--wp--preset--font-size--medium); - font-weight: var(--wp--custom--font-weight--regular); + font-weight: var(--wp--custom--font-weight--light); line-height: var(--wp--custom--line-height--body); padding: 10px 20px; width: 100%; } +input:focus, +textarea:focus { + background-color: var(--wp--preset--color--neutral); + outline: none; +} + input[type="checkbox"], input[type="image"], input[type="radio"] { @@ -444,119 +239,37 @@ textarea { } ::placeholder { - color: var(--wp--preset--color--foreground); + color: var(--wp--preset--color--contrast); font-size: var(--wp--preset--font-size--small); - opacity: 0.6; -} - -.nf-field-container { - margin-bottom: 10px; -} - -/* Experimental Styles ---------------------------------------------- */ - -/* - * Remove bottom margin when blocks are placed in container blocks that do not - * support blockGap (i.e. Column, Cover, Media & Text) - */ -h1:last-child, -h2:last-child, -h3:last-child, -h4:last-child, -h5:last-child, -h6:last-child, -p:last-child, -.wp-block-image:last-child { - margin-bottom: 0; -} - -.is-root-container h1 + *, -.is-root-container h2 + *, -.is-root-container h3 + *, -.is-root-container h4 + *, -.is-root-container h5 + *, -.is-root-container h6 + *, -.wp-block-post-content h1 + *, -.wp-block-post-content h2 + *, -.wp-block-post-content h3 + *, -.wp-block-post-content h4 + *, -.wp-block-post-content h5 + *, -.wp-block-post-content h6 + *, -.wp-block-query-title + * { - margin-top: 10px !important; -} - -.wp-block-spacer + * { - margin-top: 0 !important; + opacity: 0.5; } /* Media Queries ---------------------------------------------------------------------------- */ -@media only screen and (min-width: 800px) { - - /* Navigation - --------------------------------------------- */ - - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline a, - .wp-block-navigation-item.is-style-outline-background a { - padding: 5px 15px; - } +@media only screen and (max-width: 780px) { - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-outline a:focus, - .wp-block-navigation-item.is-style-outline a:hover { - background-color: var(--wp--preset--color--foreground); - } - - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline-background a:focus, - .wp-block-navigation-item.is-style-outline-background a:hover { - background-color: var(--wp--preset--color--background); - } + /* Columns + --------------------------------------------- */ - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-outline a { - border: 1px solid var(--wp--preset--color--foreground); + .is-style-columns-reverse { + flex-direction: column-reverse; } - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline-background a { - border: 1px solid var(--wp--preset--color--background); - } +} - .wp-block-navigation-item.is-style-fill a:focus, - .wp-block-navigation-item.is-style-fill a:hover, - .wp-block-navigation-item.is-style-fill-background a, - .wp-block-navigation-item.is-style-outline a, - .wp-block-navigation-item.is-style-outline-background a:focus, - .wp-block-navigation-item.is-style-outline-background a:hover { - color: var(--wp--preset--color--foreground); - } +@media only screen and (min-width: 800px) { - .wp-block-navigation-item.is-style-fill a, - .wp-block-navigation-item.is-style-fill-background a:focus, - .wp-block-navigation-item.is-style-fill-background a:hover, - .wp-block-navigation-item.is-style-outline a:focus, - .wp-block-navigation-item.is-style-outline a:hover, - .wp-block-navigation-item.is-style-outline-background a { - color: var(--wp--preset--color--background); - } + /* Navigation Link + --------------------------------------------- */ - .wp-block-navigation-item.is-style-fill a:focus, - .wp-block-navigation-item.is-style-fill a:hover, - .wp-block-navigation-item.is-style-fill-background a:focus, - .wp-block-navigation-item.is-style-fill-background a:hover, - .wp-block-navigation-item.is-style-outline a, - .wp-block-navigation-item.is-style-outline-background a { - background-color: transparent; + .wp-block-navigation-item.is-style-outline a { + border: 1px solid currentColor; + padding: 8px 15px; } /* Pullquote - --------------------------------------------- */ + --------------------------------------------- */ .wp-block-pullquote.alignleft, .wp-block-pullquote.alignright { @@ -564,12 +277,10 @@ p:last-child, } .wp-block-pullquote.alignleft { - float: left; margin-right: 30px !important; } .wp-block-pullquote.alignright { - float: right; margin-left: 30px !important; } diff --git a/assets/scss/ash.scss b/assets/scss/ash.scss index 4fb23a95..976a1000 100644 --- a/assets/scss/ash.scss +++ b/assets/scss/ash.scss @@ -8,12 +8,6 @@ // 01. Dependencies @import - '../fonts/gilmer-bold.css', - '../fonts/gilmer-heavy.css', - '../fonts/gilmer-light.css', - '../fonts/gilmer-medium.css', - '../fonts/gilmer-outline.css', - '../fonts/gilmer-regular.css', 'config/variables' ; diff --git a/css/ash.css b/css/ash.css index 61e6aa89..9a4b4df1 100644 --- a/css/ash.css +++ b/css/ash.css @@ -1,932 +1 @@ -@charset "UTF-8"; -/** - * 01. Dependencies - * 02. Frost Base - * 03. Ash Base - */ -@import '../fonts/gilmer-bold.css'; -@import '../fonts/gilmer-heavy.css'; -@import '../fonts/gilmer-light.css'; -@import '../fonts/gilmer-medium.css'; -@import '../fonts/gilmer-outline.css'; -@import '../fonts/gilmer-regular.css'; -/** - * 01. Fonts - * 02. Colors - */ -/* Defaults ----------------------------------------------------------------------------- */ -html { - box-sizing: border-box; - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -a, -button, -input:focus, -input[type=button], -input[type=submit], -textarea:focus, -.wp-block-button__link { - transition: all 0.2s ease-in-out; -} - -a, -a:not(.wp-element-button), -a:focus, -a:hover { - text-decoration: underline; - text-decoration-thickness: 1px; -} - -ol, -ul { - margin: 0; - padding: 0; -} - -b, -strong { - font-weight: var(--wp--custom--font-weight--medium); -} - -blockquote { - margin: 0; -} - -/* - * Alignment Styles - Originally from TT2. - * These rules are temporary, and should not - * be relied on or modified too heavily by - * themes or plugins that build on Frost. - * These are meant to be a precursor to a - * global solution provided by the Block Editor. - * - * Relevant issues: - * https://github.com/WordPress/gutenberg/issues/35607 - * https://github.com/WordPress/gutenberg/issues/35884 ----------------------------------------------*/ -body > .is-root-container, -.edit-post-visual-editor__post-title-wrapper, -.wp-block-cover.alignfull, -.wp-block-group.alignfull, -.wp-block-group.has-background, -.wp-site-blocks { - padding-left: var(--wp--custom--spacing--outer); - padding-right: var(--wp--custom--spacing--outer); -} - -.block-editor-block-list__layout.is-root-container > .alignfull, -.is-root-container > .wp-block-cover, -.is-root-container > .wp-block-group.has-background, -.is-root-container > .wp-block-template-part > .wp-block-cover, -.is-root-container > .wp-block-template-part > .wp-block-group.has-background, -.wp-site-blocks .alignfull, -.wp-site-blocks > .wp-block-cover, -.wp-site-blocks > .wp-block-group.has-background, -.wp-site-blocks > .wp-block-template-part > .wp-block-cover, -.wp-site-blocks > .wp-block-template-part > .wp-block-group.has-background { - margin-left: calc(-1 * var(--wp--custom--spacing--outer)) !important; - margin-right: calc(-1 * var(--wp--custom--spacing--outer)) !important; - width: unset; -} - -/* Blocks ----------------------------------------------------------------------------- */ -/* Button ---------------------------------------------- */ -/* Calendar ---------------------------------------------- */ -.wp-block-calendar table caption, -.wp-block-calendar table tbody { - color: var(--wp--preset--color--foreground); -} - -.wp-block-calendar table th { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); -} - -.wp-block-calendar tbody td, -.wp-block-calendar th { - border: 1px solid var(--wp--preset--color--foreground); - padding: 10px; -} - -/* Caption ---------------------------------------------- */ -.wp-block-embed figcaption, -.wp-block-gallery figcaption, -.wp-block-image figcaption, -.wp-block-table figcaption { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - margin-bottom: 0; - margin-top: 10px; - text-align: center; -} - -.wp-block-gallery figcaption { - margin-top: 0; -} - -/* Code ---------------------------------------------- */ -.wp-block-code, -.wp-block-code code { - border: none; -} - -.wp-block-code code { - overflow-wrap: normal; - overflow-x: scroll; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - white-space: pre !important; -} - -*:not(.wp-block-code) > code, -kbd { - background-color: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); - font-size: var(--wp--preset--font-size--small); - padding: 5px 8px; - position: relative; - top: -1px; -} - -/* - * When inline code is selected, the Editor applies contextual styling. Since - * our code color is near white, we need to reset to the default text color. - */ -.rich-text:focus > code[data-rich-text-format-boundary], -.rich-text:focus > kbd[data-rich-text-format-boundary] { - color: currentColor; -} - -/* Comments ---------------------------------------------- */ -.wp-block-comment-template li { - margin-left: 0; -} - -.wp-block-post-comments-form input:not([type=submit]), -.wp-block-post-comments-form textarea { - border-color: var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form input[type=submit] { - border: 1px solid var(--wp--preset--color--foreground); -} - -.wp-block-post-comments-form .form-submit { - margin-bottom: 0; -} - -/* Group ---------------------------------------------- */ -.wp-block-group.is-style-full-height { - align-items: center; - display: grid; - min-height: 100vh; -} - -.wp-block-group.is-style-shadow { - box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); -} - -.wp-block-group.is-style-shadow-solid { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -/* Image ---------------------------------------------- */ -.wp-block-image.aligncenter { - margin-left: auto !important; - margin-right: auto !important; -} - -.wp-block-image.alignleft { - margin-right: 30px !important; -} - -.wp-block-image.alignright { - margin-left: 30px !important; -} - -.wp-block-image.is-style-shadow { - box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); -} - -/* List ---------------------------------------------- */ -ol li:where(:not([class*=block])), -ol li:where(.wp-block-list), -ul li:where(:not([class*=block])), -ul li:where(.wp-block-list) { - margin-left: 30px; -} - -.is-style-no-disc li { - list-style-type: none; - margin-left: 0; -} - -/* Media & Text ---------------------------------------------- */ -.wp-block-media-text.is-style-shadow-media img { - box-shadow: 0 0 50px rgba(0, 0, 0, 0.1); -} - -/* Navigation ---------------------------------------------- */ -.wp-block-navigation__responsive-container.is-menu-open { - padding: 30px var(--wp--custom--spacing--outer); -} - -.wp-block-navigation__responsive-container-close, -.wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--foreground); - padding: 2px; -} - -.has-background .wp-block-navigation__responsive-container-open { - border: 1px solid var(--wp--preset--color--background); -} - -.has-background .wp-block-navigation__responsive-container-open:focus, -.has-background .wp-block-navigation__responsive-container-open:hover { - color: var(--wp--preset--color--background); -} - -.wp-block-navigation:not([style*=text-decoration]) a, -.wp-block-navigation:not([style*=text-decoration]) a:focus, -.wp-block-navigation:not([style*=text-decoration]) a:hover { - text-decoration: none; -} - -/* Navigation Submenu ---------------------------------------------- */ -.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container { - background-color: var(--wp--preset--color--foreground); - border: var(--wp--preset--color--foreground); - color: var(--wp--preset--color--background); - padding: 10px; -} - -.wp-block-navigation :where(.wp-block-navigation__submenu-container) a { - padding: 2px 10px; -} - -/* Paragraph ---------------------------------------------- */ -p.has-background { - padding: 20px 30px; -} - -/* Preformatted ---------------------------------------------- */ -.wp-block-preformatted { - overflow-wrap: normal; - overflow-x: scroll; - white-space: pre; -} - -/* Pullquote ---------------------------------------------- */ -.wp-block-pullquote p, -.wp-block-pullquote.alignleft p, -.wp-block-pullquote.alignright p { - font-size: var(--wp--preset--font-size--large); - line-height: var(--wp--custom--line-height--medium); - margin-bottom: 0; -} - -.wp-block-pullquote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-transform: inherit; -} - -/* Quote ---------------------------------------------- */ -.wp-block-quote { - box-shadow: 5px 5px var(--wp--preset--color--foreground); -} - -.wp-block-quote p:last-of-type { - margin-bottom: 0; -} - -.wp-block-quote cite { - display: block; - font-size: var(--wp--preset--font-size--small); - font-style: inherit; - margin-top: 10px; - text-align: inherit; -} - -/* Separator ---------------------------------------------- */ -.wp-block-separator, -.wp-block-separator.has-css-opacity { - opacity: 1; -} - -.wp-block-separator:not(.is-style-dots), -.wp-block-separator.has-background:not(.is-style-dots) { - border-bottom: 1px solid currentColor; - height: 1px; -} - -.wp-block-separator.is-style-dots:before { - font-family: inherit; - font-size: var(--wp--preset--font-size--large); - letter-spacing: 10px; - padding-left: 10px; -} - -/* Site Title ---------------------------------------------- */ -.wp-block-site-title a { - text-decoration: none; -} - -/* Table ---------------------------------------------- */ -.wp-block-table.is-style-stripes { - border-bottom: none; -} - -.wp-block-table table { - border-collapse: collapse; -} - -.wp-block-table thead { - border-bottom: 3px solid var(--wp--preset--color--foreground); -} - -.wp-block-table tfoot { - border-top: 3px solid var(--wp--preset--color--foreground); -} - -.wp-block-table td, -.wp-block-table th, -.wp-block-table tr, -.wp-block-table.is-style-stripes td, -.wp-block-table.is-style-stripes th, -.wp-block-table.is-style-stripes tr { - border: 1px solid var(--wp--preset--color--foreground); -} - -.wp-block-table th { - font-weight: var(--wp--custom--font-weight--medium); -} - -.wp-block-table td, -.wp-block-table th { - padding: 5px; -} - -.wp-block-table.is-style-stripes tbody tr:nth-child(odd) { - background-color: #eee; -} - -/* Custom ----------------------------------------------------------------------------- */ -/* Forms ---------------------------------------------- */ -input, -select, -textarea, -.wp-block-search__input { - background-color: var(--wp--preset--color--background); - border: 1px solid var(--wp--preset--color--foreground); - border-radius: 0; - color: var(--wp--preset--color--foreground); - font-family: var(--wp--preset--font-family--primary); - font-size: var(--wp--preset--font-size--medium); - font-weight: var(--wp--custom--font-weight--regular); - line-height: var(--wp--custom--line-height--body); - padding: 10px 20px; - width: 100%; -} - -input[type=checkbox], -input[type=image], -input[type=radio] { - width: auto; -} - -input[type=button], -input[type=email], -input[type=search], -input[type=submit], -input[type=text], -textarea { - -webkit-appearance: none; -} - -::-moz-placeholder { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - opacity: 0.6; -} - -::placeholder { - color: var(--wp--preset--color--foreground); - font-size: var(--wp--preset--font-size--small); - opacity: 0.6; -} - -.nf-field-container { - margin-bottom: 10px; -} - -/* Experimental Styles ---------------------------------------------- */ -/* - * Remove bottom margin when blocks are placed in container blocks that do not - * support blockGap (i.e. Column, Cover, Media & Text) - */ -h1:last-child, -h2:last-child, -h3:last-child, -h4:last-child, -h5:last-child, -h6:last-child, -p:last-child, -.wp-block-image:last-child { - margin-bottom: 0; -} - -.is-root-container h1 + *, -.is-root-container h2 + *, -.is-root-container h3 + *, -.is-root-container h4 + *, -.is-root-container h5 + *, -.is-root-container h6 + *, -.wp-block-post-content h1 + *, -.wp-block-post-content h2 + *, -.wp-block-post-content h3 + *, -.wp-block-post-content h4 + *, -.wp-block-post-content h5 + *, -.wp-block-post-content h6 + *, -.wp-block-query-title + * { - margin-top: 10px !important; -} - -.wp-block-spacer + * { - margin-top: 0 !important; -} - -/* Media Queries ----------------------------------------------------------------------------- */ -@media only screen and (min-width: 800px) { - /* Navigation - --------------------------------------------- */ - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline a, -.wp-block-navigation-item.is-style-outline-background a { - padding: 5px 15px; - } - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-outline a:focus, -.wp-block-navigation-item.is-style-outline a:hover { - background-color: var(--wp--preset--color--foreground); - } - .wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline-background a:focus, -.wp-block-navigation-item.is-style-outline-background a:hover { - background-color: var(--wp--preset--color--background); - } - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-outline a { - border: 1px solid var(--wp--preset--color--foreground); - } - .wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline-background a { - border: 1px solid var(--wp--preset--color--background); - } - .wp-block-navigation-item.is-style-fill a:focus, -.wp-block-navigation-item.is-style-fill a:hover, -.wp-block-navigation-item.is-style-fill-background a, -.wp-block-navigation-item.is-style-outline a, -.wp-block-navigation-item.is-style-outline-background a:focus, -.wp-block-navigation-item.is-style-outline-background a:hover { - color: var(--wp--preset--color--foreground); - } - .wp-block-navigation-item.is-style-fill a, -.wp-block-navigation-item.is-style-fill-background a:focus, -.wp-block-navigation-item.is-style-fill-background a:hover, -.wp-block-navigation-item.is-style-outline a:focus, -.wp-block-navigation-item.is-style-outline a:hover, -.wp-block-navigation-item.is-style-outline-background a { - color: var(--wp--preset--color--background); - } - .wp-block-navigation-item.is-style-fill a:focus, -.wp-block-navigation-item.is-style-fill a:hover, -.wp-block-navigation-item.is-style-fill-background a:focus, -.wp-block-navigation-item.is-style-fill-background a:hover, -.wp-block-navigation-item.is-style-outline a, -.wp-block-navigation-item.is-style-outline-background a { - background-color: transparent; - } - /* Pullquote - --------------------------------------------- */ - .wp-block-pullquote.alignleft, -.wp-block-pullquote.alignright { - max-width: 300px; - } - .wp-block-pullquote.alignleft { - float: left; - margin-right: 30px !important; - } - .wp-block-pullquote.alignright { - float: right; - margin-left: 30px !important; - } -} -.wp-block-post-title { - max-width: clamp(80%, 90vh, 100%); -} - -.has-eyebrow-font-size { - font-family: Gilmer-Heavy, sans-serif; - line-height: 16px; -} - -ul.has-eyebrow-font-size { - line-height: 1.25em; -} -ul.has-eyebrow-font-size li + li { - margin-top: 0.375rem; -} - -.has-large-font-size { - line-height: 28px; -} - -.wp-block-post-terms [rel=tag] { - font-family: Gilmer-Regular, sans-serif; - font-size: 14px; - letter-spacing: 0.35px; - line-height: 1; - text-decoration: none; - white-space: nowrap; -} -.wp-block-post-terms.taxonomy-lp_solution [rel=tag] { - background: #fff; - border-radius: 5px; - margin-right: 12px; - padding: 5px 9px; -} -.wp-block-post-terms.taxonomy-lp_solution .wp-block-post-terms__separator { - display: none; -} - -.wp-block-button .wp-block-button__link { - font-size: 14px; - line-height: 16px; - letter-spacing: 1.05px; - text-transform: uppercase; - padding: 1.375rem 1.5rem; -} -.wp-block-button .wp-block-button__link:hover { - text-decoration: none; -} -.wp-block-button.is-style-fill .wp-block-button__link { - background: #3fc1d0; - border: 2px solid #3fc1d0; - color: #fff; -} -.wp-block-button.is-style-fill .wp-block-button__link:hover { - background: #fff; - border-color: #fff; - color: #3fc1d0; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color) { - background: var(--wp--preset--color--base); - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color):hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color { - border-color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-base-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-main-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-primary-color:hover { - background: var(--wp--preset--color--primary) !important; - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color) { - background: var(--wp--preset--color--main); - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color):hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color { - border-color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-base-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-main-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-primary-color:hover { - background: var(--wp--preset--color--primary) !important; - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color) { - background: var(--wp--preset--color--primary); - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color):hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--primary); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color { - border-color: var(--wp--preset--color--primary); -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-base-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); - color: var(--wp--preset--color--main) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-main-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-primary-color:hover { - background: var(--wp--preset--color--primary) !important; - border-color: var(--wp--preset--color--primary); - color: var(--wp--preset--color--base) !important; -} -.wp-block-button.is-style-outline .wp-block-button__link:hover { - background: #fff; - border-color: #fff; -} -.wp-block-button.is-style-outline .wp-block-button__link.has-base-color:hover { - background: var(--wp--preset--color--main) !important; - border-color: var(--wp--preset--color--main); -} -.wp-block-button.is-style-outline .wp-block-button__link.has-main-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); -} -.wp-block-button.is-style-outline .wp-block-button__link.has-primary-color:hover { - background: var(--wp--preset--color--base) !important; - border-color: var(--wp--preset--color--base); -} - -@media screen and (min-width: 1024px) { - .wp-block-group.flex-auto { - flex: 1 1 auto; - } - .wp-block-group.flex-sidebar { - flex: 0 0 400px; - } -} -@media screen and (max-width: 1023px) { - .wp-block-group.medium-flex-wrap { - flex-wrap: wrap !important; - } - .wp-block-group.medium-flex-wrap.flex-sidebar { - flex: 0 0 100%; - } -} - -/** - * 01. Layout - * 02. Dashboard Navigation - */ -.single-proposal .wp-site-blocks { - min-height: 100vh; - padding-left: 0; -} -.single-proposal .wp-site-blocks .site-content { - min-height: 100vh; - padding-top: 0 !important; - padding-bottom: 0 !important; -} -.single-proposal .wp-site-blocks .site-footer { - margin: 0; -} -.single-proposal .site-content > .wp-block-page-list { - background: #fafafa; - min-height: 100vh; - width: 300px; - overflow: scroll; - padding: 1rem 0; - list-style: none; - position: -webkit-sticky; - position: sticky; - top: 0; -} -.single-proposal .site-content > .wp-block-page-list .wp-block-pages-list__item__link { - display: block; - padding: 0.5rem 1rem; -} - -/** - * 01. Headings - * 02. Weights - * 03. Paragraph - * 04. Link - */ -h1, h2, h3, h4, h5, h6 { - font-weight: 400; -} - -h1, h2, h3, h5 { - font-family: Gilmer-Heavy, sans-serif; -} - -h1.wp-block-post-title { - font-size: clamp(50px, 8vw, 90px); -} - -h1 { - font-size: clamp(50px, 8vw, 90px); - line-height: 1.125em; -} - -h2 { - font-size: clamp(36px, 7vw, 48px); - line-height: 1.2em; -} - -h3 { - font-size: clamp(30px, 6vw, 40px); - line-height: 1.2em; -} - -h4 { - font-size: clamp(24px, 5vw, 32px); - line-height: 1.3125em; -} - -h5 { - font-size: clamp(20px, 4vw, 24px); - line-height: 1.4em; -} - -h6 { - font-size: 16px; - line-height: 1.375em; -} - -.font-weight-light { - font-family: Gilmer-Light, sans-serif; -} - -.font-weight-regular { - font-family: Gilmer-Regular, sans-serif; -} - -.font-weight-medium { - font-family: Gilmer-Medium, sans-serif; -} - -.font-weight-bold { - font-family: Gilmer-Bold, sans-serif; -} - -.font-weight-heavy { - font-family: Gilmer-Heavy, sans-serif; -} - -strong { - font-family: Gilmer-Bold, sans-serif; - font-weight: 400; -} - -.heavy { - font-family: Gilmer-Heavy, sans-serif; -} - -p { - font-family: Gilmer-Regular, sans-serif; - font-size: 16px; - line-height: 24px; -} -p.small, -p small { - font-size: 14px; - line-height: 18px; -} -p.cta { - font-family: Gilmer-Heavy, sans-serif; - font-size: 14px; - line-height: 28px; -} - -.entry-content a { - color: #3fc1d0; - font-family: Gilmer-Heavy, sans-serif; - font-size: 18px; - line-height: 28px; -} - -.post-type-proposal-page h1.block-editor-block-list__block.editor-post-title.editor-post-title__input.rich-text.wp-block.wp-block-post-title { - font-size: 24px !important; - text-align: left; - width: 100%; -} - -.post-type-proposal-page #editor div.edit-post-visual-editor__post-title-wrapper > h1.block-editor-block-list__block { - font-size: 24px !important; - text-align: left; - width: 100%; -} - -.cd-accordion { - list-style: none; - width: 300px; -} -.cd-accordion__item { - margin: 0; -} -.cd-accordion__item a, -.cd-accordion__item .cd-accordion__label { - display: block; - padding: 0.25rem 1rem; - color: #001e1e; - font-family: Gilmer-Light, sans-serif; - font-size: 0.8rem; - letter-spacing: 0.05rem; - text-decoration: none; - position: relative; -} -.cd-accordion__item .cd-accordion__label { - padding-right: 1.5rem; -} -.cd-accordion__item--has-children .cd-accordion__label:after { - content: "▾"; - display: inline-block; - margin: 0 0.5rem 0 0; - position: absolute; - right: 0; - top: 0; - transform: translateY(0.25rem); -} -.cd-accordion__item--has-children .children { - display: none; - list-style: none; - margin: 0 0 2rem; - padding: 0 0 0 0.25rem; -} -.cd-accordion__item--has-children .cd-accordion__input { - display: none; -} -.cd-accordion__item--has-children .cd-accordion__input:checked ~ .cd-accordion__label:after { - transform: translateY(0.25rem) rotate(180deg); -} -.cd-accordion__item--has-children .cd-accordion__input:checked ~ .children { - display: block; -} -.cd-accordion__item.active > a, -.cd-accordion__item.active > .cd-accordion__label, .cd-accordion__item:hover > a, -.cd-accordion__item:hover > .cd-accordion__label { - background: rgba(63, 193, 208, 0.1); - color: #3fc1d0; -} -/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzaC5jc3MiLCJhc2guc2NzcyIsImNvbmZpZy9fdmFyaWFibGVzLnNjc3MiLCJfZnJvc3Quc2NzcyIsImJsb2Nrcy9fdHlwb2dyYXBoeS5zY3NzIiwiYmxvY2tzL19wb3N0LXRlcm1zLnNjc3MiLCJibG9ja3MvX2J1dHRvbi5zY3NzIiwiYmxvY2tzL19ncm91cC5zY3NzIiwicGFnZXMvX3Byb3Bvc2FsLnNjc3MiLCJjb21wb25lbnRzL190eXBvZ3JhcGh5LnNjc3MiLCJjb21wb25lbnRzL19lZGl0b3Iuc2NzcyIsImNvbXBvbmVudHMvX2NkLWFjY29yZGlvbi5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQ0FoQjs7OztFQUFBO0FBVUMsa0NBQUE7QUFDQSxtQ0FBQTtBQUNBLG1DQUFBO0FBQ0Esb0NBQUE7QUFDQSxxQ0FBQTtBQUNBLHFDQUFBO0FDZkQ7OztFQUFBO0FDQUE7OEVBQUE7QUFHQTtFQUNJLHNCQUFBO0VBQ0Esa0NBQUE7RUFDQSxtQ0FBQTtBSGdCSjs7QUdiQTs7O0VBR0ksbUJBQUE7QUhnQko7O0FHYkE7Ozs7Ozs7RUFPSSxnQ0FBQTtBSGdCSjs7QUdiQTs7OztFQUlJLDBCQUFBO0VBQ0EsOEJBQUE7QUhnQko7O0FHYkE7O0VBRUksU0FBQTtFQUNBLFVBQUE7QUhnQko7O0FHYkE7O0VBRUksbURBQUE7QUhnQko7O0FHYkE7RUFDSSxTQUFBO0FIZ0JKOztBR2JBOzs7Ozs7Ozs7Ozs4Q0FBQTtBQWFBOzs7Ozs7RUFNSSwrQ0FBQTtFQUNBLGdEQUFBO0FIZUo7O0FHWkE7Ozs7Ozs7Ozs7RUFVSSxvRUFBQTtFQUNBLHFFQUFBO0VBQ0EsWUFBQTtBSGVKOztBR1pBOzhFQUFBO0FBR0E7K0NBQUE7QUFJQTsrQ0FBQTtBQUdBOztFQUVJLDJDQUFBO0FIV0o7O0FHUkE7RUFDSSxzREFBQTtFQUNBLDJDQUFBO0FIV0o7O0FHUkE7O0VBRUksc0RBQUE7RUFDQSxhQUFBO0FIV0o7O0FHUkE7K0NBQUE7QUFHQTs7OztFQUlJLDJDQUFBO0VBQ0EsOENBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7QUhVSjs7QUdQQTtFQUNJLGFBQUE7QUhVSjs7QUdQQTsrQ0FBQTtBQUdBOztFQUVJLFlBQUE7QUhTSjs7QUdOQTtFQUNJLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtJQUFBLGNBQUE7T0FBQSxXQUFBO0VBQ0EsMkJBQUE7QUhTSjs7QUdOQTs7RUFFSSxzREFBQTtFQUNBLDJDQUFBO0VBQ0EsOENBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtBSFNKOztBR05BOzs7RUFBQTtBQUlBOztFQUVJLG1CQUFBO0FIU0o7O0FHTkE7K0NBQUE7QUFHQTtFQUNJLGNBQUE7QUhRSjs7QUdMQTs7RUFFSSxrREFBQTtBSFFKOztBR0xBO0VBQ0ksc0RBQUE7QUhRSjs7QUdMQTtFQUNJLGdCQUFBO0FIUUo7O0FHTEE7K0NBQUE7QUFHQTtFQUNJLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLGlCQUFBO0FIT0o7O0FHSkE7RUFDSSx1Q0FBQTtBSE9KOztBR0pBO0VBQ0ksd0RBQUE7QUhPSjs7QUdKQTsrQ0FBQTtBQUdBO0VBQ0ksNEJBQUE7RUFDQSw2QkFBQTtBSE1KOztBR0hBO0VBQ0ksNkJBQUE7QUhNSjs7QUdIQTtFQUNJLDRCQUFBO0FITUo7O0FHSEE7RUFDSSx1Q0FBQTtBSE1KOztBR0hBOytDQUFBO0FBR0E7Ozs7RUFJSSxpQkFBQTtBSEtKOztBR0ZBO0VBQ0kscUJBQUE7RUFDQSxjQUFBO0FIS0o7O0FHRkE7K0NBQUE7QUFHQTtFQUNJLHVDQUFBO0FISUo7O0FHREE7K0NBQUE7QUFHQTtFQUNJLCtDQUFBO0FIR0o7O0FHQUE7O0VBRUksc0RBQUE7RUFDQSxZQUFBO0FIR0o7O0FHQUE7RUFDSSxzREFBQTtBSEdKOztBR0FBOztFQUVJLDJDQUFBO0FIR0o7O0FHQUE7OztFQUdJLHFCQUFBO0FIR0o7O0FHQUE7K0NBQUE7QUFHQTtFQUNJLHNEQUFBO0VBQ0EsNENBQUE7RUFDQSwyQ0FBQTtFQUNBLGFBQUE7QUhFSjs7QUdDQTtFQUNJLGlCQUFBO0FIRUo7O0FHQ0E7K0NBQUE7QUFHQTtFQUNJLGtCQUFBO0FIQ0o7O0FHRUE7K0NBQUE7QUFHQTtFQUNJLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtBSEFKOztBR0dBOytDQUFBO0FBR0E7OztFQUdJLDhDQUFBO0VBQ0EsbURBQUE7RUFDQSxnQkFBQTtBSERKOztBR0lBO0VBQ0ksY0FBQTtFQUNBLDhDQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FIREo7O0FHSUE7K0NBQUE7QUFHQTtFQUNJLHdEQUFBO0FIRko7O0FHS0E7RUFDSSxnQkFBQTtBSEZKOztBR0tBO0VBQ0ksY0FBQTtFQUNBLDhDQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0FIRko7O0FHS0E7K0NBQUE7QUFHQTs7RUFFSSxVQUFBO0FISEo7O0FHTUE7O0VBRUkscUNBQUE7RUFDQSxXQUFBO0FISEo7O0FHTUE7RUFDSSxvQkFBQTtFQUNBLDhDQUFBO0VBQ0Esb0JBQUE7RUFDQSxrQkFBQTtBSEhKOztBR01BOytDQUFBO0FBR0E7RUFDSSxxQkFBQTtBSEpKOztBR09BOytDQUFBO0FBR0E7RUFDSSxtQkFBQTtBSExKOztBR1FBO0VBQ0kseUJBQUE7QUhMSjs7QUdRQTtFQUNJLDZEQUFBO0FITEo7O0FHUUE7RUFDSSwwREFBQTtBSExKOztBR1FBOzs7Ozs7RUFNSSxzREFBQTtBSExKOztBR1FBO0VBQ0ksbURBQUE7QUhMSjs7QUdRQTs7RUFFSSxZQUFBO0FITEo7O0FHUUE7RUFDSSxzQkFBQTtBSExKOztBR1FBOzhFQUFBO0FBR0E7K0NBQUE7QUFHQTs7OztFQUlJLHNEQUFBO0VBQ0Esc0RBQUE7RUFDQSxnQkFBQTtFQUNBLDJDQUFBO0VBQ0Esb0RBQUE7RUFDQSwrQ0FBQTtFQUNBLG9EQUFBO0VBQ0EsaURBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7QUhQSjs7QUdVQTs7O0VBR0ksV0FBQTtBSFBKOztBR1VBOzs7Ozs7RUFNSSx3QkFBQTtBSFBKOztBR1VBO0VBQ0ksMkNBQUE7RUFDQSw4Q0FBQTtFQUNBLFlBQUE7QUhQSjs7QUdJQTtFQUNJLDJDQUFBO0VBQ0EsOENBQUE7RUFDQSxZQUFBO0FIUEo7O0FHVUE7RUFDSSxtQkFBQTtBSFBKOztBR1VBOytDQUFBO0FBR0E7OztFQUFBO0FBSUE7Ozs7Ozs7O0VBUUksZ0JBQUE7QUhSSjs7QUdXQTs7Ozs7Ozs7Ozs7OztFQWFJLDJCQUFBO0FIUko7O0FHV0E7RUFDSSx3QkFBQTtBSFJKOztBR1dBOzhFQUFBO0FBR0E7RUFFSTtpREFBQTtFQUdBOzs7O0lBSUksaUJBQUE7RUhYTjtFR2NFOzs7SUFHSSxzREFBQTtFSFpOO0VHZUU7OztJQUdJLHNEQUFBO0VIYk47RUdnQkU7O0lBRUksc0RBQUE7RUhkTjtFR2lCRTs7SUFFSSxzREFBQTtFSGZOO0VHa0JFOzs7Ozs7SUFNSSwyQ0FBQTtFSGhCTjtFR21CRTs7Ozs7O0lBTUksMkNBQUE7RUhqQk47RUdvQkU7Ozs7OztJQU1JLDZCQUFBO0VIbEJOO0VHcUJFO2lEQUFBO0VBR0E7O0lBRUksZ0JBQUE7RUhwQk47RUd1QkU7SUFDSSxXQUFBO0lBQ0EsNkJBQUE7RUhyQk47RUd3QkU7SUFDSSxZQUFBO0lBQ0EsNEJBQUE7RUh0Qk47QUFDRjtBSXZpQkE7RUFDQyxpQ0FBQTtBSnlpQkQ7O0FJdGlCQTtFQUNDLHFDRk9jO0VFTmQsaUJBQUE7QUp5aUJEOztBSXRpQkE7RUFDQyxtQkFBQTtBSnlpQkQ7QUl0aUJFO0VBQ0Msb0JBQUE7QUp3aUJIOztBSW5pQkE7RUFDQyxpQkFBQTtBSnNpQkQ7O0FLempCQztFQUVFLHVDSE1jO0VHTGQsZUFBQTtFQUVELHNCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsbUJBQUE7QUwwakJGO0FLdGpCRTtFQUNDLGdCSDhDSztFRzdDTCxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7QUx3akJIO0FLcmpCRTtFQUNDLGFBQUE7QUx1akJIOztBTW5rQkM7RUFDQyxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQUNBLHlCQUFBO0VBQ0Esd0JBQUE7QU5za0JGO0FNcGtCRTtFQUNDLHFCQUFBO0FOc2tCSDtBTWhrQkU7RUFDQyxtQkowQkk7RUl6QkoseUJBQUE7RUFDQSxXSmtDSztBRmdpQlI7QU1oa0JHO0VBQ0MsZ0JKK0JJO0VJOUJKLGtCSjhCSTtFSTdCSixjSm1CRztBRitpQlA7QU16akJJO0VBQ0MsMENBSk07RUFLTiw0Q0FMTTtFQU1OLHFDQUxNO0FOZ2tCWDtBTXpqQks7RUFDQyxxREFBQTtFQUNBLDRDQVRLO0VBVUwscUNBWEs7QU5za0JYO0FNdmpCSTtFQUNDLDRDQWhCTTtBTnlrQlg7QU1qakJPO0VBQ0MscURBQUE7RUFDQSw0Q0FOTTtFQU9OLGdEQUFBO0FObWpCUjtBTXRqQk87RUFDQyxxREFBQTtFQUNBLDRDQU5NO0VBT04sZ0RBQUE7QU53akJSO0FNM2pCTztFQUNDLHdEQUFBO0VBQ0EsK0NBTk07RUFPTixnREFBQTtBTjZqQlI7QU1ybEJJO0VBQ0MsMENBSk07RUFLTiw0Q0FMTTtFQU1OLHFDQUxNO0FONGxCWDtBTXJsQks7RUFDQyxxREFBQTtFQUNBLDRDQVRLO0VBVUwscUNBWEs7QU5rbUJYO0FNbmxCSTtFQUNDLDRDQWhCTTtBTnFtQlg7QU03a0JPO0VBQ0MscURBQUE7RUFDQSw0Q0FOTTtFQU9OLGdEQUFBO0FOK2tCUjtBTWxsQk87RUFDQyxxREFBQTtFQUNBLDRDQU5NO0VBT04sZ0RBQUE7QU5vbEJSO0FNdmxCTztFQUNDLHdEQUFBO0VBQ0EsK0NBTk07RUFPTixnREFBQTtBTnlsQlI7QU1qbkJJO0VBQ0MsNkNBSk07RUFLTiwrQ0FMTTtFQU1OLHFDQUxNO0FOd25CWDtBTWpuQks7RUFDQyxxREFBQTtFQUNBLDRDQVRLO0VBVUwsd0NBWEs7QU44bkJYO0FNL21CSTtFQUNDLCtDQWhCTTtBTmlvQlg7QU16bUJPO0VBQ0MscURBQUE7RUFDQSw0Q0FOTTtFQU9OLGdEQUFBO0FOMm1CUjtBTTltQk87RUFDQyxxREFBQTtFQUNBLDRDQU5NO0VBT04sZ0RBQUE7QU5nbkJSO0FNbm5CTztFQUNDLHdEQUFBO0VBQ0EsK0NBTk07RUFPTixnREFBQTtBTnFuQlI7QU16bUJHO0VBQ0MsZ0JKakJJO0VJa0JKLGtCSmxCSTtBRjZuQlI7QU1ubUJLO0VBQ0MscURBQUE7RUFDQSw0Q0FKWTtBTnltQmxCO0FNdm1CSztFQUNDLHFEQUFBO0VBQ0EsNENBSlk7QU42bUJsQjtBTTNtQks7RUFDQyxxREFBQTtFQUNBLDRDQUpZO0FOaW5CbEI7O0FPcHNCQztFQUNDO0lBQ0MsY0FBQTtFUHVzQkQ7RU9wc0JBO0lBQ0MsZUFBQTtFUHNzQkQ7QUFDRjtBT25zQkM7RUFDQztJQUNDLDBCQUFBO0VQcXNCRDtFT25zQkM7SUFDQyxjQUFBO0VQcXNCRjtBQUNGOztBUXR0QkE7OztFQUFBO0FBT0M7RUFDQyxpQkFBQTtFQUNBLGVBQUE7QVJzdEJGO0FRcHRCRTtFQUNDLGlCQUFBO0VBRUMseUJBQUE7RUFDQSw0QkFBQTtBUnF0Qko7QVFqdEJFO0VBQ0MsU0FBQTtBUm10Qkg7QVEzc0JFO0VBQ0MsbUJOOEJVO0VNN0JWLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBRUEsd0JBQUE7RUFBQSxnQkFBQTtFQUNBLE1BQUE7QVI0c0JIO0FRenNCSTtFQUNDLGNBQUE7RUFDQSxvQkFBQTtBUjJzQkw7O0FTcnZCQTs7Ozs7RUFBQTtBQVVBO0VBQ0MsZ0JBQUE7QVRvdkJEOztBU2p2QkE7RUFDQyxxQ1BIYztBRnV2QmY7O0FTanZCQTtFQUNDLGlDQUFBO0FUb3ZCRDs7QVNodkJDO0VBQ0MsaUNQRGlCO0VPRWpCLG9CQUFBO0FUbXZCRjs7QVNydkJDO0VBQ0MsaUNQRGlCO0VPRWpCLGtCQUFBO0FUd3ZCRjs7QVMxdkJDO0VBQ0MsaUNQRGlCO0VPRWpCLGtCQUFBO0FUNnZCRjs7QVMvdkJDO0VBQ0MsaUNQRGlCO0VPRWpCLHFCQUFBO0FUa3dCRjs7QVNwd0JDO0VBQ0MsaUNQRGlCO0VPRWpCLGtCQUFBO0FUdXdCRjs7QVN6d0JDO0VBQ0MsZVBEaUI7RU9FakIsb0JBQUE7QVQ0d0JGOztBU3B3QkM7RUFDQyxxQ1BuQmdCO0FGMHhCbEI7O0FTeHdCQztFQUNDLHVDUG5CZ0I7QUY4eEJsQjs7QVM1d0JDO0VBQ0Msc0NQbkJnQjtBRmt5QmxCOztBU2h4QkM7RUFDQyxvQ1BuQmdCO0FGc3lCbEI7O0FTcHhCQztFQUNDLHFDUG5CZ0I7QUYweUJsQjs7QVNueEJBO0VBRUUsb0NQN0JZO0VPOEJaLGdCQUFBO0FUcXhCRjs7QVNqeEJBO0VBQ0MscUNQbENjO0FGc3pCZjs7QVM5d0JBO0VBRUUsdUNQN0NlO0VPOENmLGVBQUE7RUFFRCxpQkFBQTtBVCt3QkQ7QVM3d0JDOztFQUVDLGVBQUE7RUFDQSxpQkFBQTtBVCt3QkY7QVM1d0JDO0VBRUUscUNQdkRZO0VPd0RaLGVBQUE7RUFFRCxpQkFBQTtBVDR3QkY7O0FTcndCQTtFQUNDLGNQNUJNO0VPOEJMLHFDUHBFYTtFT3FFYixlQUFBO0VBRUQsaUJBQUE7QVRzd0JEOztBVXoxQkE7RUFDRSwwQkFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtBVjQxQkY7O0FVejFCQTtFQUNFLDBCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBO0FWNDFCRjs7QVdwMkJBO0VBQ0MsZ0JBQUE7RUFDQSxZQUFBO0FYdTJCRDtBV3IyQkM7RUFDQyxTQUFBO0FYdTJCRjtBV3IyQkU7O0VBRUMsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsY1Q0Q0s7RVMxQ0gscUNUTlU7RVNPVixpQkFBQTtFQUVBLHVCQUFBO0VBQ0YscUJBQUE7RUFFQSxrQkFBQTtBWG8yQkg7QVdqMkJFO0VBQ0MscUJBQUE7QVhtMkJIO0FXOTFCSTtFQUNDLFlBQUE7RUFFQSxxQkFBQTtFQUNBLG9CQUFBO0VBRUEsa0JBQUE7RUFDQSxRQUFBO0VBQ0EsTUFBQTtFQUNBLDhCQUFBO0FYODFCTDtBVzExQkc7RUFDQyxhQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLHNCQUFBO0FYNDFCSjtBV3oxQkc7RUFDQyxhQUFBO0FYMjFCSjtBV3YxQk07RUFDQyw2Q0FBQTtBWHkxQlA7QVdyMUJLO0VBQ0MsY0FBQTtBWHUxQk47QVcvMEJHOzs7RUFFQyxtQ0FBQTtFQUNBLGNUckJHO0FGdTJCUCIsImZpbGUiOiJhc2guY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLyoqXG4gKiAwMS4gRGVwZW5kZW5jaWVzXG4gKiAwMi4gRnJvc3QgQmFzZVxuICogMDMuIEFzaCBCYXNlXG4gKi9cbkBpbXBvcnQgJy4uL2ZvbnRzL2dpbG1lci1ib2xkLmNzcyc7XG5AaW1wb3J0ICcuLi9mb250cy9naWxtZXItaGVhdnkuY3NzJztcbkBpbXBvcnQgJy4uL2ZvbnRzL2dpbG1lci1saWdodC5jc3MnO1xuQGltcG9ydCAnLi4vZm9udHMvZ2lsbWVyLW1lZGl1bS5jc3MnO1xuQGltcG9ydCAnLi4vZm9udHMvZ2lsbWVyLW91dGxpbmUuY3NzJztcbkBpbXBvcnQgJy4uL2ZvbnRzL2dpbG1lci1yZWd1bGFyLmNzcyc7XG4vKipcbiAqIDAxLiBGb250c1xuICogMDIuIENvbG9yc1xuICovXG4vKiBEZWZhdWx0c1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5hLFxuYnV0dG9uLFxuaW5wdXQ6Zm9jdXMsXG5pbnB1dFt0eXBlPWJ1dHRvbl0sXG5pbnB1dFt0eXBlPXN1Ym1pdF0sXG50ZXh0YXJlYTpmb2N1cyxcbi53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuYSxcbmE6bm90KC53cC1lbGVtZW50LWJ1dHRvbiksXG5hOmZvY3VzLFxuYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAxcHg7XG59XG5cbm9sLFxudWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tZm9udC13ZWlnaHQtLW1lZGl1bSk7XG59XG5cbmJsb2NrcXVvdGUge1xuICBtYXJnaW46IDA7XG59XG5cbi8qXG4gKiBBbGlnbm1lbnQgU3R5bGVzIC0gT3JpZ2luYWxseSBmcm9tIFRUMi5cbiAqIFRoZXNlIHJ1bGVzIGFyZSB0ZW1wb3JhcnksIGFuZCBzaG91bGQgbm90XG4gKiBiZSByZWxpZWQgb24gb3IgbW9kaWZpZWQgdG9vIGhlYXZpbHkgYnlcbiAqIHRoZW1lcyBvciBwbHVnaW5zIHRoYXQgYnVpbGQgb24gRnJvc3QuXG4gKiBUaGVzZSBhcmUgbWVhbnQgdG8gYmUgYSBwcmVjdXJzb3IgdG8gYVxuICogZ2xvYmFsIHNvbHV0aW9uIHByb3ZpZGVkIGJ5IHRoZSBCbG9jayBFZGl0b3IuXG4gKlxuICogUmVsZXZhbnQgaXNzdWVzOlxuICogaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvaXNzdWVzLzM1NjA3XG4gKiBodHRwczovL2dpdGh1Yi5jb20vV29yZFByZXNzL2d1dGVuYmVyZy9pc3N1ZXMvMzU4ODRcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5ib2R5ID4gLmlzLXJvb3QtY29udGFpbmVyLFxuLmVkaXQtcG9zdC12aXN1YWwtZWRpdG9yX19wb3N0LXRpdGxlLXdyYXBwZXIsXG4ud3AtYmxvY2stY292ZXIuYWxpZ25mdWxsLFxuLndwLWJsb2NrLWdyb3VwLmFsaWduZnVsbCxcbi53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi53cC1zaXRlLWJsb2NrcyB7XG4gIHBhZGRpbmctbGVmdDogdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS13cC0tY3VzdG9tLS1zcGFjaW5nLS1vdXRlcik7XG59XG5cbi5ibG9jay1lZGl0b3ItYmxvY2stbGlzdF9fbGF5b3V0LmlzLXJvb3QtY29udGFpbmVyID4gLmFsaWduZnVsbCxcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay1jb3Zlcixcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWNvdmVyLFxuLmlzLXJvb3QtY29udGFpbmVyID4gLndwLWJsb2NrLXRlbXBsYXRlLXBhcnQgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQsXG4ud3Atc2l0ZS1ibG9ja3MgLmFsaWduZnVsbCxcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay1jb3Zlcixcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWNvdmVyLFxuLndwLXNpdGUtYmxvY2tzID4gLndwLWJsb2NrLXRlbXBsYXRlLXBhcnQgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQge1xuICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLXdwLS1jdXN0b20tLXNwYWNpbmctLW91dGVyKSkgIWltcG9ydGFudDtcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0xICogdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpKSAhaW1wb3J0YW50O1xuICB3aWR0aDogdW5zZXQ7XG59XG5cbi8qIEJsb2Nrc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLyogQnV0dG9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIENhbGVuZGFyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1jYWxlbmRhciB0YWJsZSBjYXB0aW9uLFxuLndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRib2R5IHtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xufVxuXG4ud3AtYmxvY2stY2FsZW5kYXIgdGJvZHkgdGQsXG4ud3AtYmxvY2stY2FsZW5kYXIgdGgge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbi8qIENhcHRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLWVtYmVkIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stZ2FsbGVyeSBmaWdjYXB0aW9uLFxuLndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stdGFibGUgZmlnY2FwdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLndwLWJsb2NrLWdhbGxlcnkgZmlnY2FwdGlvbiB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi8qIENvZGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLWNvZGUsXG4ud3AtYmxvY2stY29kZSBjb2RlIHtcbiAgYm9yZGVyOiBub25lO1xufVxuXG4ud3AtYmxvY2stY29kZSBjb2RlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gIHRhYi1zaXplOiA0O1xuICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7XG59XG5cbio6bm90KC53cC1ibG9jay1jb2RlKSA+IGNvZGUsXG5rYmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gIHBhZGRpbmc6IDVweCA4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtMXB4O1xufVxuXG4vKlxuICogV2hlbiBpbmxpbmUgY29kZSBpcyBzZWxlY3RlZCwgdGhlIEVkaXRvciBhcHBsaWVzIGNvbnRleHR1YWwgc3R5bGluZy4gU2luY2VcbiAqIG91ciBjb2RlIGNvbG9yIGlzIG5lYXIgd2hpdGUsIHdlIG5lZWQgdG8gcmVzZXQgdG8gdGhlIGRlZmF1bHQgdGV4dCBjb2xvci5cbiAqL1xuLnJpY2gtdGV4dDpmb2N1cyA+IGNvZGVbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSxcbi5yaWNoLXRleHQ6Zm9jdXMgPiBrYmRbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSB7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG59XG5cbi8qIENvbW1lbnRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1jb21tZW50LXRlbXBsYXRlIGxpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLFxuLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSB0ZXh0YXJlYSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stcG9zdC1jb21tZW50cy1mb3JtIGlucHV0W3R5cGU9c3VibWl0XSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSAuZm9ybS1zdWJtaXQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBHcm91cFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stZ3JvdXAuaXMtc3R5bGUtZnVsbC1oZWlnaHQge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBkaXNwbGF5OiBncmlkO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbn1cblxuLndwLWJsb2NrLWdyb3VwLmlzLXN0eWxlLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCA1MHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLndwLWJsb2NrLWdyb3VwLmlzLXN0eWxlLXNoYWRvdy1zb2xpZCB7XG4gIGJveC1zaGFkb3c6IDVweCA1cHggdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4vKiBJbWFnZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25jZW50ZXIge1xuICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLndwLWJsb2NrLWltYWdlLmFsaWdubGVmdCB7XG4gIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25yaWdodCB7XG4gIG1hcmdpbi1sZWZ0OiAzMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi53cC1ibG9jay1pbWFnZS5pcy1zdHlsZS1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgNTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIExpc3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xub2wgbGk6d2hlcmUoOm5vdChbY2xhc3MqPWJsb2NrXSkpLFxub2wgbGk6d2hlcmUoLndwLWJsb2NrLWxpc3QpLFxudWwgbGk6d2hlcmUoOm5vdChbY2xhc3MqPWJsb2NrXSkpLFxudWwgbGk6d2hlcmUoLndwLWJsb2NrLWxpc3QpIHtcbiAgbWFyZ2luLWxlZnQ6IDMwcHg7XG59XG5cbi5pcy1zdHlsZS1uby1kaXNjIGxpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLyogTWVkaWEgJiBUZXh0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1tZWRpYS10ZXh0LmlzLXN0eWxlLXNoYWRvdy1tZWRpYSBpbWcge1xuICBib3gtc2hhZG93OiAwIDAgNTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIE5hdmlnYXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLmlzLW1lbnUtb3BlbiB7XG4gIHBhZGRpbmc6IDMwcHggdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xufVxuXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2UsXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3BlbiB7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgcGFkZGluZzogMnB4O1xufVxuXG4uaGFzLWJhY2tncm91bmQgLndwLWJsb2NrLW5hdmlnYXRpb25fX3Jlc3BvbnNpdmUtY29udGFpbmVyLW9wZW4ge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG59XG5cbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpmb2N1cyxcbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG59XG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdChbc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0pIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb246bm90KFtzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSkgYTpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLyogTmF2aWdhdGlvbiBTdWJtZW51XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdCguaGFzLWJhY2tncm91bmQpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgYm9yZGVyOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uIDp3aGVyZSgud3AtYmxvY2stbmF2aWdhdGlvbl9fc3VibWVudS1jb250YWluZXIpIGEge1xuICBwYWRkaW5nOiAycHggMTBweDtcbn1cblxuLyogUGFyYWdyYXBoXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbnAuaGFzLWJhY2tncm91bmQge1xuICBwYWRkaW5nOiAyMHB4IDMwcHg7XG59XG5cbi8qIFByZWZvcm1hdHRlZFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stcHJlZm9ybWF0dGVkIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG59XG5cbi8qIFB1bGxxdW90ZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stcHVsbHF1b3RlIHAsXG4ud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCBwLFxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHAge1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbGFyZ2UpO1xuICBsaW5lLWhlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tbGluZS1oZWlnaHQtLW1lZGl1bSk7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICBmb250LXN0eWxlOiBpbmhlcml0O1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdDtcbn1cblxuLyogUXVvdGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLndwLWJsb2NrLXF1b3RlIHtcbiAgYm94LXNoYWRvdzogNXB4IDVweCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG59XG5cbi53cC1ibG9jay1xdW90ZSBwOmxhc3Qtb2YtdHlwZSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cC1ibG9jay1xdW90ZSBjaXRlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gIGZvbnQtc3R5bGU6IGluaGVyaXQ7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG5cbi8qIFNlcGFyYXRvclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4ud3AtYmxvY2stc2VwYXJhdG9yLFxuLndwLWJsb2NrLXNlcGFyYXRvci5oYXMtY3NzLW9wYWNpdHkge1xuICBvcGFjaXR5OiAxO1xufVxuXG4ud3AtYmxvY2stc2VwYXJhdG9yOm5vdCguaXMtc3R5bGUtZG90cyksXG4ud3AtYmxvY2stc2VwYXJhdG9yLmhhcy1iYWNrZ3JvdW5kOm5vdCguaXMtc3R5bGUtZG90cykge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuICBoZWlnaHQ6IDFweDtcbn1cblxuLndwLWJsb2NrLXNlcGFyYXRvci5pcy1zdHlsZS1kb3RzOmJlZm9yZSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbGFyZ2UpO1xuICBsZXR0ZXItc3BhY2luZzogMTBweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4vKiBTaXRlIFRpdGxlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay1zaXRlLXRpdGxlIGEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIFRhYmxlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRoZWFkIHtcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRmb290IHtcbiAgYm9yZGVyLXRvcDogM3B4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRkLFxuLndwLWJsb2NrLXRhYmxlIHRoLFxuLndwLWJsb2NrLXRhYmxlIHRyLFxuLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGQsXG4ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcyB0aCxcbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHRyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stdGFibGUgdGgge1xuICBmb250LXdlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tZm9udC13ZWlnaHQtLW1lZGl1bSk7XG59XG5cbi53cC1ibG9jay10YWJsZSB0ZCxcbi53cC1ibG9jay10YWJsZSB0aCB7XG4gIHBhZGRpbmc6IDVweDtcbn1cblxuLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuXG4vKiBDdXN0b21cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIEZvcm1zXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEsXG4ud3AtYmxvY2stc2VhcmNoX19pbnB1dCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYWNrZ3JvdW5kKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICBmb250LWZhbWlseTogdmFyKC0td3AtLXByZXNldC0tZm9udC1mYW1pbHktLXByaW1hcnkpO1xuICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tbWVkaXVtKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWZvbnQtd2VpZ2h0LS1yZWd1bGFyKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWxpbmUtaGVpZ2h0LS1ib2R5KTtcbiAgcGFkZGluZzogMTBweCAyMHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuaW5wdXRbdHlwZT1jaGVja2JveF0sXG5pbnB1dFt0eXBlPWltYWdlXSxcbmlucHV0W3R5cGU9cmFkaW9dIHtcbiAgd2lkdGg6IGF1dG87XG59XG5cbmlucHV0W3R5cGU9YnV0dG9uXSxcbmlucHV0W3R5cGU9ZW1haWxdLFxuaW5wdXRbdHlwZT1zZWFyY2hdLFxuaW5wdXRbdHlwZT1zdWJtaXRdLFxuaW5wdXRbdHlwZT10ZXh0XSxcbnRleHRhcmVhIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG46OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgb3BhY2l0eTogMC42O1xufVxuXG4ubmYtZmllbGQtY29udGFpbmVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLyogRXhwZXJpbWVudGFsIFN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKlxuICogUmVtb3ZlIGJvdHRvbSBtYXJnaW4gd2hlbiBibG9ja3MgYXJlIHBsYWNlZCBpbiBjb250YWluZXIgYmxvY2tzIHRoYXQgZG8gbm90XG4gKiBzdXBwb3J0IGJsb2NrR2FwIChpLmUuIENvbHVtbiwgQ292ZXIsIE1lZGlhICYgVGV4dClcbiAqL1xuaDE6bGFzdC1jaGlsZCxcbmgyOmxhc3QtY2hpbGQsXG5oMzpsYXN0LWNoaWxkLFxuaDQ6bGFzdC1jaGlsZCxcbmg1Omxhc3QtY2hpbGQsXG5oNjpsYXN0LWNoaWxkLFxucDpsYXN0LWNoaWxkLFxuLndwLWJsb2NrLWltYWdlOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uaXMtcm9vdC1jb250YWluZXIgaDEgKyAqLFxuLmlzLXJvb3QtY29udGFpbmVyIGgyICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoMyArICosXG4uaXMtcm9vdC1jb250YWluZXIgaDQgKyAqLFxuLmlzLXJvb3QtY29udGFpbmVyIGg1ICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoNiArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGgxICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDIgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoMyArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGg0ICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDUgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoNiArICosXG4ud3AtYmxvY2stcXVlcnktdGl0bGUgKyAqIHtcbiAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2stc3BhY2VyICsgKiB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLyogTWVkaWEgUXVlcmllc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4MDBweCkge1xuICAvKiBOYXZpZ2F0aW9uXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGEge1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgfVxuICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICB9XG4gIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsIGE6aG92ZXIsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhOmZvY3VzLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgfVxuICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhOmhvdmVyLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYTpob3Zlcixcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGEge1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gIH1cbiAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYTpob3Zlcixcbi53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhOmhvdmVyLFxuLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEsXG4ud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAvKiBQdWxscXVvdGVcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0LFxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICB9XG4gIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDMwcHggIWltcG9ydGFudDtcbiAgfVxuICAud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tbGVmdDogMzBweCAhaW1wb3J0YW50O1xuICB9XG59XG4ud3AtYmxvY2stcG9zdC10aXRsZSB7XG4gIG1heC13aWR0aDogY2xhbXAoODAlLCA5MHZoLCAxMDAlKTtcbn1cblxuLmhhcy1leWVicm93LWZvbnQtc2l6ZSB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItSGVhdnksIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xufVxuXG51bC5oYXMtZXllYnJvdy1mb250LXNpemUge1xuICBsaW5lLWhlaWdodDogMS4yNWVtO1xufVxudWwuaGFzLWV5ZWJyb3ctZm9udC1zaXplIGxpICsgbGkge1xuICBtYXJnaW4tdG9wOiAwLjM3NXJlbTtcbn1cblxuLmhhcy1sYXJnZS1mb250LXNpemUge1xuICBsaW5lLWhlaWdodDogMjhweDtcbn1cblxuLndwLWJsb2NrLXBvc3QtdGVybXMgW3JlbD10YWddIHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1SZWd1bGFyLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjM1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ud3AtYmxvY2stcG9zdC10ZXJtcy50YXhvbm9teS1scF9zb2x1dGlvbiBbcmVsPXRhZ10ge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIG1hcmdpbi1yaWdodDogMTJweDtcbiAgcGFkZGluZzogNXB4IDlweDtcbn1cbi53cC1ibG9jay1wb3N0LXRlcm1zLnRheG9ub215LWxwX3NvbHV0aW9uIC53cC1ibG9jay1wb3N0LXRlcm1zX19zZXBhcmF0b3Ige1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ud3AtYmxvY2stYnV0dG9uIC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBsZXR0ZXItc3BhY2luZzogMS4wNXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBwYWRkaW5nOiAxLjM3NXJlbSAxLjVyZW07XG59XG4ud3AtYmxvY2stYnV0dG9uIC53cC1ibG9jay1idXR0b25fX2xpbms6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gIGJhY2tncm91bmQ6ICMzZmMxZDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICMzZmMxZDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjM2ZjMWQwO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvcjpub3QoLmhhcy10ZXh0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbik7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtYmFzZS1iYWNrZ3JvdW5kLWNvbG9yOm5vdCguaGFzLXRleHQtY29sb3IpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtbWFpbi1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLWJhc2UtYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtcHJpbWFyeS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvcjpub3QoLmhhcy10ZXh0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tbWFpbik7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtbWFpbi1iYWNrZ3JvdW5kLWNvbG9yOm5vdCguaGFzLXRleHQtY29sb3IpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLW1haW4pO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtbWFpbi1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLW1haW4tYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtcHJpbWFyeS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjpub3QoLmhhcy10ZXh0LWNvbG9yKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tcHJpbWFyeSk7XG4gIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLWZpbGwgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOm5vdCguaGFzLXRleHQtY29sb3IpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xuICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvciB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLXByaW1hcnkpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtbWFpbi1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1maWxsIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktYmFja2dyb3VuZC1jb2xvci5oYXMtdGV4dC1jb2xvci5oYXMtcHJpbWFyeS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1wcmltYXJ5KTtcbiAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYXNlKSAhaW1wb3J0YW50O1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1vdXRsaW5lIC53cC1ibG9jay1idXR0b25fX2xpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItY29sb3I6ICNmZmY7XG59XG4ud3AtYmxvY2stYnV0dG9uLmlzLXN0eWxlLW91dGxpbmUgLndwLWJsb2NrLWJ1dHRvbl9fbGluay5oYXMtYmFzZS1jb2xvcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKSAhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1tYWluKTtcbn1cbi53cC1ibG9jay1idXR0b24uaXMtc3R5bGUtb3V0bGluZSAud3AtYmxvY2stYnV0dG9uX19saW5rLmhhcy1tYWluLWNvbG9yOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhc2UpO1xufVxuLndwLWJsb2NrLWJ1dHRvbi5pcy1zdHlsZS1vdXRsaW5lIC53cC1ibG9jay1idXR0b25fX2xpbmsuaGFzLXByaW1hcnktY29sb3I6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSkgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFzZSk7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAud3AtYmxvY2stZ3JvdXAuZmxleC1hdXRvIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuICAud3AtYmxvY2stZ3JvdXAuZmxleC1zaWRlYmFyIHtcbiAgICBmbGV4OiAwIDAgNDAwcHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xuICAud3AtYmxvY2stZ3JvdXAubWVkaXVtLWZsZXgtd3JhcCB7XG4gICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLndwLWJsb2NrLWdyb3VwLm1lZGl1bS1mbGV4LXdyYXAuZmxleC1zaWRlYmFyIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgfVxufVxuXG4vKipcbiAqIDAxLiBMYXlvdXRcbiAqIDAyLiBEYXNoYm9hcmQgTmF2aWdhdGlvblxuICovXG4uc2luZ2xlLXByb3Bvc2FsIC53cC1zaXRlLWJsb2NrcyB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC53cC1zaXRlLWJsb2NrcyAuc2l0ZS1jb250ZW50IHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC53cC1zaXRlLWJsb2NrcyAuc2l0ZS1mb290ZXIge1xuICBtYXJnaW46IDA7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC5zaXRlLWNvbnRlbnQgPiAud3AtYmxvY2stcGFnZS1saXN0IHtcbiAgYmFja2dyb3VuZDogI2ZhZmFmYTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAzMDBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbiAgcGFkZGluZzogMXJlbSAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG59XG4uc2luZ2xlLXByb3Bvc2FsIC5zaXRlLWNvbnRlbnQgPiAud3AtYmxvY2stcGFnZS1saXN0IC53cC1ibG9jay1wYWdlcy1saXN0X19pdGVtX19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xufVxuXG4vKipcbiAqIDAxLiBIZWFkaW5nc1xuICogMDIuIFdlaWdodHNcbiAqIDAzLiBQYXJhZ3JhcGhcbiAqIDA0LiBMaW5rXG4gKi9cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG5oMSwgaDIsIGgzLCBoNSB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItSGVhdnksIHNhbnMtc2VyaWY7XG59XG5cbmgxLndwLWJsb2NrLXBvc3QtdGl0bGUge1xuICBmb250LXNpemU6IGNsYW1wKDUwcHgsIDh2dywgOTBweCk7XG59XG5cbmgxIHtcbiAgZm9udC1zaXplOiBjbGFtcCg1MHB4LCA4dncsIDkwcHgpO1xuICBsaW5lLWhlaWdodDogMS4xMjVlbTtcbn1cblxuaDIge1xuICBmb250LXNpemU6IGNsYW1wKDM2cHgsIDd2dywgNDhweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbn1cblxuaDMge1xuICBmb250LXNpemU6IGNsYW1wKDMwcHgsIDZ2dywgNDBweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbn1cblxuaDQge1xuICBmb250LXNpemU6IGNsYW1wKDI0cHgsIDV2dywgMzJweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjMxMjVlbTtcbn1cblxuaDUge1xuICBmb250LXNpemU6IGNsYW1wKDIwcHgsIDR2dywgMjRweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbn1cblxuaDYge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjM3NWVtO1xufVxuXG4uZm9udC13ZWlnaHQtbGlnaHQge1xuICBmb250LWZhbWlseTogR2lsbWVyLUxpZ2h0LCBzYW5zLXNlcmlmO1xufVxuXG4uZm9udC13ZWlnaHQtcmVndWxhciB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItUmVndWxhciwgc2Fucy1zZXJpZjtcbn1cblxuLmZvbnQtd2VpZ2h0LW1lZGl1bSB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItTWVkaXVtLCBzYW5zLXNlcmlmO1xufVxuXG4uZm9udC13ZWlnaHQtYm9sZCB7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItQm9sZCwgc2Fucy1zZXJpZjtcbn1cblxuLmZvbnQtd2VpZ2h0LWhlYXZ5IHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1IZWF2eSwgc2Fucy1zZXJpZjtcbn1cblxuc3Ryb25nIHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1Cb2xkLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4uaGVhdnkge1xuICBmb250LWZhbWlseTogR2lsbWVyLUhlYXZ5LCBzYW5zLXNlcmlmO1xufVxuXG5wIHtcbiAgZm9udC1mYW1pbHk6IEdpbG1lci1SZWd1bGFyLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxucC5zbWFsbCxcbnAgc21hbGwge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xufVxucC5jdGEge1xuICBmb250LWZhbWlseTogR2lsbWVyLUhlYXZ5LCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xufVxuXG4uZW50cnktY29udGVudCBhIHtcbiAgY29sb3I6ICMzZmMxZDA7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItSGVhdnksIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG59XG5cbi5wb3N0LXR5cGUtcHJvcG9zYWwtcGFnZSBoMS5ibG9jay1lZGl0b3ItYmxvY2stbGlzdF9fYmxvY2suZWRpdG9yLXBvc3QtdGl0bGUuZWRpdG9yLXBvc3QtdGl0bGVfX2lucHV0LnJpY2gtdGV4dC53cC1ibG9jay53cC1ibG9jay1wb3N0LXRpdGxlIHtcbiAgZm9udC1zaXplOiAyNHB4ICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ucG9zdC10eXBlLXByb3Bvc2FsLXBhZ2UgI2VkaXRvciBkaXYuZWRpdC1wb3N0LXZpc3VhbC1lZGl0b3JfX3Bvc3QtdGl0bGUtd3JhcHBlciA+IGgxLmJsb2NrLWVkaXRvci1ibG9jay1saXN0X19ibG9jayB7XG4gIGZvbnQtc2l6ZTogMjRweCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmNkLWFjY29yZGlvbiB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHdpZHRoOiAzMDBweDtcbn1cbi5jZC1hY2NvcmRpb25fX2l0ZW0ge1xuICBtYXJnaW46IDA7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtIGEsXG4uY2QtYWNjb3JkaW9uX19pdGVtIC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDAuMjVyZW0gMXJlbTtcbiAgY29sb3I6ICMwMDFlMWU7XG4gIGZvbnQtZmFtaWx5OiBHaWxtZXItTGlnaHQsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtIC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcbiAgcGFkZGluZy1yaWdodDogMS41cmVtO1xufVxuLmNkLWFjY29yZGlvbl9faXRlbS0taGFzLWNoaWxkcmVuIC5jZC1hY2NvcmRpb25fX2xhYmVsOmFmdGVyIHtcbiAgY29udGVudDogXCLilr5cIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgMC41cmVtIDAgMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC4yNXJlbSk7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtLS1oYXMtY2hpbGRyZW4gLmNoaWxkcmVuIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwIDAgMnJlbTtcbiAgcGFkZGluZzogMCAwIDAgMC4yNXJlbTtcbn1cbi5jZC1hY2NvcmRpb25fX2l0ZW0tLWhhcy1jaGlsZHJlbiAuY2QtYWNjb3JkaW9uX19pbnB1dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY2QtYWNjb3JkaW9uX19pdGVtLS1oYXMtY2hpbGRyZW4gLmNkLWFjY29yZGlvbl9faW5wdXQ6Y2hlY2tlZCB+IC5jZC1hY2NvcmRpb25fX2xhYmVsOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAuMjVyZW0pIHJvdGF0ZSgxODBkZWcpO1xufVxuLmNkLWFjY29yZGlvbl9faXRlbS0taGFzLWNoaWxkcmVuIC5jZC1hY2NvcmRpb25fX2lucHV0OmNoZWNrZWQgfiAuY2hpbGRyZW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5jZC1hY2NvcmRpb25fX2l0ZW0uYWN0aXZlID4gYSxcbi5jZC1hY2NvcmRpb25fX2l0ZW0uYWN0aXZlID4gLmNkLWFjY29yZGlvbl9fbGFiZWwsIC5jZC1hY2NvcmRpb25fX2l0ZW06aG92ZXIgPiBhLFxuLmNkLWFjY29yZGlvbl9faXRlbTpob3ZlciA+IC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcbiAgYmFja2dyb3VuZDogcmdiYSg2MywgMTkzLCAyMDgsIDAuMSk7XG4gIGNvbG9yOiAjM2ZjMWQwO1xufSIsIi8qKlxuICogMDEuIERlcGVuZGVuY2llc1xuICogMDIuIEZyb3N0IEJhc2VcbiAqIDAzLiBBc2ggQmFzZVxuICovXG5cblxuLy8gMDEuIERlcGVuZGVuY2llc1xuXG5AaW1wb3J0XG5cdCcuLi9mb250cy9naWxtZXItYm9sZC5jc3MnLFxuXHQnLi4vZm9udHMvZ2lsbWVyLWhlYXZ5LmNzcycsXG5cdCcuLi9mb250cy9naWxtZXItbGlnaHQuY3NzJyxcblx0Jy4uL2ZvbnRzL2dpbG1lci1tZWRpdW0uY3NzJyxcblx0Jy4uL2ZvbnRzL2dpbG1lci1vdXRsaW5lLmNzcycsXG5cdCcuLi9mb250cy9naWxtZXItcmVndWxhci5jc3MnLFxuXHQnY29uZmlnL3ZhcmlhYmxlcydcbjtcblxuXG4vLyAwMi4gRnJvc3QgQmFzZVxuXG5AaW1wb3J0ICdmcm9zdCc7XG5cblxuLy8gMDMuIEFzaCBCYXNlXG5cbkBpbXBvcnRcblx0J2Jsb2Nrcy90eXBvZ3JhcGh5Jyxcblx0J2Jsb2Nrcy9wb3N0LXRlcm1zJyxcblx0J2Jsb2Nrcy9idXR0b24nLFxuXHQnYmxvY2tzL2dyb3VwJyxcblx0J3BhZ2VzL3Byb3Bvc2FsJyxcblx0J2NvbXBvbmVudHMvdHlwb2dyYXBoeScsXG5cdCdjb21wb25lbnRzL2VkaXRvcicsXG5cdCdjb21wb25lbnRzL2NkLWFjY29yZGlvbidcbjtcbiIsIi8qKlxuICogMDEuIEZvbnRzXG4gKiAwMi4gQ29sb3JzXG4gKi9cblxuXG4vLyAwMS4gRm9udHNcblxuJGdpbG1lci1saWdodDogR2lsbWVyLUxpZ2h0LCBzYW5zLXNlcmlmO1xuJGdpbG1lci1yZWd1bGFyOiBHaWxtZXItUmVndWxhciwgc2Fucy1zZXJpZjtcbiRnaWxtZXItbWVkaXVtOiBHaWxtZXItTWVkaXVtLCBzYW5zLXNlcmlmO1xuJGdpbG1lci1ib2xkOiBHaWxtZXItQm9sZCwgc2Fucy1zZXJpZjtcbiRnaWxtZXItaGVhdnk6IEdpbG1lci1IZWF2eSwgc2Fucy1zZXJpZjtcbiRnaWxtZXItb3V0bGluZTogR2lsbWVyLU91dGxpbmUsIHNhbnMtc2VyaWY7XG5cbiRmb250LXdlaWdodC1tYXA6IChcblx0J2xpZ2h0JzogJGdpbG1lci1saWdodCxcblx0J3JlZ3VsYXInOiAkZ2lsbWVyLXJlZ3VsYXIsXG5cdCdtZWRpdW0nOiAkZ2lsbWVyLW1lZGl1bSxcblx0J2JvbGQnOiAkZ2lsbWVyLWJvbGQsXG5cdCdoZWF2eSc6ICRnaWxtZXItaGVhdnlcbik7XG5cbiRoZWFkaW5nLXNpemUtbWFwOiAoXG5cdGgxOiBjbGFtcCg1MHB4LCA4dncsIDkwcHgpLFxuXHRoMjogY2xhbXAoMzZweCwgN3Z3LCA0OHB4KSxcblx0aDM6IGNsYW1wKDMwcHgsIDZ2dywgNDBweCksXG5cdGg0OiBjbGFtcCgyNHB4LCA1dncsIDMycHgpLFxuXHRoNTogY2xhbXAoMjBweCwgNHZ3LCAyNHB4KSxcblx0aDY6IDE2cHhcbik7XG5cbiRsaW5lLWhlaWdodC1tYXA6IChcblx0aDE6IDEuMTI1ZW0sXG5cdGgyOiAxLjJlbSxcblx0aDM6IDEuMmVtLFxuXHRoNDogMS4zMTI1ZW0sXG5cdGg1OiAxLjRlbSxcblx0aDY6IDEuMzc1ZW0sXG5cdHBzbWFsbDogMThweCxcblx0cGxhcmdlOiAyOHB4LFxuXHRwOiAyNHB4LFxuXHRhOiAyOHB4LFxuXHRleWVicm93OiAxNnB4LFxuXHRjdGE6IDI4cHhcbik7XG5cblxuLy8gMDIuIENvbG9yc1xuXG4kYmx1ZTogIzNmYzFkMDtcbiRtYWdlbnRhOiAjZTUzMzZhO1xuJGdyZWVuOiAjOGZjYTUyO1xuJHZpb2xldDogIzdkNThjNjtcbiRsaWdodC12aW9sZXQ6ICNmNmYyZmY7XG4kZGFyay1ibHVlOiAjM2FhMWNlO1xuJGJsYWNrOiAjMDAxZTFlO1xuJGJsYWNrLTUwOiByZ2JhKDMsIDMwLCAzMCwgLjUpO1xuJGJsYWNrLTI1OiByZ2JhKDMsIDMwLCAzMCwgLjI1KTtcbiRsaWdodC1ncmF5OiAjZmFmYWZhO1xuJHdoaXRlOiAjZmZmO1xuJHdoaXRlLTc1OiByZ2JhKCR3aGl0ZSwgLjc1KTtcbiR3aGl0ZS01MDogcmdiYSgkd2hpdGUsIC41KTtcbiIsIi8qIERlZmF1bHRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbmh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cblxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5hLFxuYnV0dG9uLFxuaW5wdXQ6Zm9jdXMsXG5pbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbnRleHRhcmVhOmZvY3VzLFxuLndwLWJsb2NrLWJ1dHRvbl9fbGluayB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG59XG5cbmEsXG5hOm5vdCgud3AtZWxlbWVudC1idXR0b24pLFxuYTpmb2N1cyxcbmE6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweDtcbn1cblxub2wsXG51bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbmIsXG5zdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS13cC0tY3VzdG9tLS1mb250LXdlaWdodC0tbWVkaXVtKTtcbn1cblxuYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKlxuICogQWxpZ25tZW50IFN0eWxlcyAtIE9yaWdpbmFsbHkgZnJvbSBUVDIuXG4gKiBUaGVzZSBydWxlcyBhcmUgdGVtcG9yYXJ5LCBhbmQgc2hvdWxkIG5vdFxuICogYmUgcmVsaWVkIG9uIG9yIG1vZGlmaWVkIHRvbyBoZWF2aWx5IGJ5XG4gKiB0aGVtZXMgb3IgcGx1Z2lucyB0aGF0IGJ1aWxkIG9uIEZyb3N0LlxuICogVGhlc2UgYXJlIG1lYW50IHRvIGJlIGEgcHJlY3Vyc29yIHRvIGFcbiAqIGdsb2JhbCBzb2x1dGlvbiBwcm92aWRlZCBieSB0aGUgQmxvY2sgRWRpdG9yLlxuICpcbiAqIFJlbGV2YW50IGlzc3VlczpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Xb3JkUHJlc3MvZ3V0ZW5iZXJnL2lzc3Vlcy8zNTYwN1xuICogaHR0cHM6Ly9naXRodWIuY29tL1dvcmRQcmVzcy9ndXRlbmJlcmcvaXNzdWVzLzM1ODg0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5ib2R5ID4gLmlzLXJvb3QtY29udGFpbmVyLFxuLmVkaXQtcG9zdC12aXN1YWwtZWRpdG9yX19wb3N0LXRpdGxlLXdyYXBwZXIsXG4ud3AtYmxvY2stY292ZXIuYWxpZ25mdWxsLFxuLndwLWJsb2NrLWdyb3VwLmFsaWduZnVsbCxcbi53cC1ibG9jay1ncm91cC5oYXMtYmFja2dyb3VuZCxcbi53cC1zaXRlLWJsb2NrcyB7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS13cC0tY3VzdG9tLS1zcGFjaW5nLS1vdXRlcik7XG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xufVxuXG4uYmxvY2stZWRpdG9yLWJsb2NrLWxpc3RfX2xheW91dC5pcy1yb290LWNvbnRhaW5lciA+IC5hbGlnbmZ1bGwsXG4uaXMtcm9vdC1jb250YWluZXIgPiAud3AtYmxvY2stY292ZXIsXG4uaXMtcm9vdC1jb250YWluZXIgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQsXG4uaXMtcm9vdC1jb250YWluZXIgPiAud3AtYmxvY2stdGVtcGxhdGUtcGFydCA+IC53cC1ibG9jay1jb3Zlcixcbi5pcy1yb290LWNvbnRhaW5lciA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWdyb3VwLmhhcy1iYWNrZ3JvdW5kLFxuLndwLXNpdGUtYmxvY2tzIC5hbGlnbmZ1bGwsXG4ud3Atc2l0ZS1ibG9ja3MgPiAud3AtYmxvY2stY292ZXIsXG4ud3Atc2l0ZS1ibG9ja3MgPiAud3AtYmxvY2stZ3JvdXAuaGFzLWJhY2tncm91bmQsXG4ud3Atc2l0ZS1ibG9ja3MgPiAud3AtYmxvY2stdGVtcGxhdGUtcGFydCA+IC53cC1ibG9jay1jb3Zlcixcbi53cC1zaXRlLWJsb2NrcyA+IC53cC1ibG9jay10ZW1wbGF0ZS1wYXJ0ID4gLndwLWJsb2NrLWdyb3VwLmhhcy1iYWNrZ3JvdW5kIHtcbiAgICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLXdwLS1jdXN0b20tLXNwYWNpbmctLW91dGVyKSkgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTEgKiB2YXIoLS13cC0tY3VzdG9tLS1zcGFjaW5nLS1vdXRlcikpICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IHVuc2V0O1xufVxuXG4vKiBCbG9ja3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyogQnV0dG9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXG4vKiBDYWxlbmRhclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1jYWxlbmRhciB0YWJsZSBjYXB0aW9uLFxuLndwLWJsb2NrLWNhbGVuZGFyIHRhYmxlIHRib2R5IHtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stY2FsZW5kYXIgdGFibGUgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xufVxuXG4ud3AtYmxvY2stY2FsZW5kYXIgdGJvZHkgdGQsXG4ud3AtYmxvY2stY2FsZW5kYXIgdGgge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBwYWRkaW5nOiAxMHB4O1xufVxuXG4vKiBDYXB0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLWVtYmVkIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stZ2FsbGVyeSBmaWdjYXB0aW9uLFxuLndwLWJsb2NrLWltYWdlIGZpZ2NhcHRpb24sXG4ud3AtYmxvY2stdGFibGUgZmlnY2FwdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi53cC1ibG9jay1nYWxsZXJ5IGZpZ2NhcHRpb24ge1xuICAgIG1hcmdpbi10b3A6IDA7XG59XG5cbi8qIENvZGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2stY29kZSxcbi53cC1ibG9jay1jb2RlIGNvZGUge1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuLndwLWJsb2NrLWNvZGUgY29kZSB7XG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgICB0YWItc2l6ZTogNDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7XG59XG5cbio6bm90KC53cC1ibG9jay1jb2RlKSA+IGNvZGUsXG5rYmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1zbWFsbCk7XG4gICAgcGFkZGluZzogNXB4IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMXB4O1xufVxuXG4vKlxuICogV2hlbiBpbmxpbmUgY29kZSBpcyBzZWxlY3RlZCwgdGhlIEVkaXRvciBhcHBsaWVzIGNvbnRleHR1YWwgc3R5bGluZy4gU2luY2VcbiAqIG91ciBjb2RlIGNvbG9yIGlzIG5lYXIgd2hpdGUsIHdlIG5lZWQgdG8gcmVzZXQgdG8gdGhlIGRlZmF1bHQgdGV4dCBjb2xvci5cbiAqL1xuLnJpY2gtdGV4dDpmb2N1cyA+IGNvZGVbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSxcbi5yaWNoLXRleHQ6Zm9jdXMgPiBrYmRbZGF0YS1yaWNoLXRleHQtZm9ybWF0LWJvdW5kYXJ5XSB7XG4gICAgY29sb3I6IGN1cnJlbnRDb2xvcjtcbn1cblxuLyogQ29tbWVudHNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2stY29tbWVudC10ZW1wbGF0ZSBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLFxuLndwLWJsb2NrLXBvc3QtY29tbWVudHMtZm9ybSB0ZXh0YXJlYSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gaW5wdXRbdHlwZT1zdWJtaXRdIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG59XG5cbi53cC1ibG9jay1wb3N0LWNvbW1lbnRzLWZvcm0gLmZvcm0tc3VibWl0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4vKiBHcm91cFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1ncm91cC5pcy1zdHlsZS1mdWxsLWhlaWdodCB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuXG4ud3AtYmxvY2stZ3JvdXAuaXMtc3R5bGUtc2hhZG93IHtcbiAgICBib3gtc2hhZG93OiAwIDAgNTBweCByZ2IoMCAwIDAgLyAxMCUpO1xufVxuXG4ud3AtYmxvY2stZ3JvdXAuaXMtc3R5bGUtc2hhZG93LXNvbGlkIHtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLyogSW1hZ2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25jZW50ZXIge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi53cC1ibG9jay1pbWFnZS5hbGlnbmxlZnQge1xuICAgIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2staW1hZ2UuYWxpZ25yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDMwcHggIWltcG9ydGFudDtcbn1cblxuLndwLWJsb2NrLWltYWdlLmlzLXN0eWxlLXNoYWRvdyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDUwcHggcmdiYSgwLCAwLCAwLCAuMSk7XG59XG5cbi8qIExpc3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5vbCBsaTp3aGVyZSg6bm90KFtjbGFzcyo9J2Jsb2NrJ10pKSxcbm9sIGxpOndoZXJlKC53cC1ibG9jay1saXN0KSxcbnVsIGxpOndoZXJlKDpub3QoW2NsYXNzKj0nYmxvY2snXSkpLFxudWwgbGk6d2hlcmUoLndwLWJsb2NrLWxpc3QpIHtcbiAgICBtYXJnaW4tbGVmdDogMzBweDtcbn1cblxuLmlzLXN0eWxlLW5vLWRpc2MgbGkge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLyogTWVkaWEgJiBUZXh0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLW1lZGlhLXRleHQuaXMtc3R5bGUtc2hhZG93LW1lZGlhIGltZyB7XG4gICAgYm94LXNoYWRvdzogMCAwIDUwcHggcmdiKDAgMCAwIC8gMTAlKTtcbn1cblxuLyogTmF2aWdhdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci5pcy1tZW51LW9wZW4ge1xuICAgIHBhZGRpbmc6IDMwcHggdmFyKC0td3AtLWN1c3RvbS0tc3BhY2luZy0tb3V0ZXIpO1xufVxuXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItY2xvc2UsXG4ud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3BlbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIHBhZGRpbmc6IDJweDtcbn1cblxuLmhhcy1iYWNrZ3JvdW5kIC53cC1ibG9jay1uYXZpZ2F0aW9uX19yZXNwb25zaXZlLWNvbnRhaW5lci1vcGVuIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG59XG5cbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpmb2N1cyxcbi5oYXMtYmFja2dyb3VuZCAud3AtYmxvY2stbmF2aWdhdGlvbl9fcmVzcG9uc2l2ZS1jb250YWluZXItb3Blbjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYWNrZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLW5hdmlnYXRpb246bm90KFtzdHlsZSo9dGV4dC1kZWNvcmF0aW9uXSkgYSxcbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdChbc3R5bGUqPXRleHQtZGVjb3JhdGlvbl0pIGE6Zm9jdXMsXG4ud3AtYmxvY2stbmF2aWdhdGlvbjpub3QoW3N0eWxlKj10ZXh0LWRlY29yYXRpb25dKSBhOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIE5hdmlnYXRpb24gU3VibWVudVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay1uYXZpZ2F0aW9uOm5vdCguaGFzLWJhY2tncm91bmQpIC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIGJvcmRlcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gICAgcGFkZGluZzogMTBweDtcbn1cblxuLndwLWJsb2NrLW5hdmlnYXRpb24gOndoZXJlKC53cC1ibG9jay1uYXZpZ2F0aW9uX19zdWJtZW51LWNvbnRhaW5lcikgYSB7XG4gICAgcGFkZGluZzogMnB4IDEwcHg7XG59XG5cbi8qIFBhcmFncmFwaFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnAuaGFzLWJhY2tncm91bmQge1xuICAgIHBhZGRpbmc6IDIwcHggMzBweDtcbn1cblxuLyogUHJlZm9ybWF0dGVkXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXByZWZvcm1hdHRlZCB7XG4gICAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xufVxuXG4vKiBQdWxscXVvdGVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ud3AtYmxvY2stcHVsbHF1b3RlIHAsXG4ud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCBwLFxuLndwLWJsb2NrLXB1bGxxdW90ZS5hbGlnbnJpZ2h0IHAge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1sYXJnZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWxpbmUtaGVpZ2h0LS1tZWRpdW0pO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi53cC1ibG9jay1wdWxscXVvdGUgY2l0ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXN0eWxlOiBpbmhlcml0O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQ7XG59XG5cbi8qIFF1b3RlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXF1b3RlIHtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXF1b3RlIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ud3AtYmxvY2stcXVvdGUgY2l0ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS13cC0tcHJlc2V0LS1mb250LXNpemUtLXNtYWxsKTtcbiAgICBmb250LXN0eWxlOiBpbmhlcml0O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbn1cblxuLyogU2VwYXJhdG9yXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXNlcGFyYXRvcixcbi53cC1ibG9jay1zZXBhcmF0b3IuaGFzLWNzcy1vcGFjaXR5IHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ud3AtYmxvY2stc2VwYXJhdG9yOm5vdCguaXMtc3R5bGUtZG90cyksXG4ud3AtYmxvY2stc2VwYXJhdG9yLmhhcy1iYWNrZ3JvdW5kOm5vdCguaXMtc3R5bGUtZG90cykge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgaGVpZ2h0OiAxcHg7XG59XG5cbi53cC1ibG9jay1zZXBhcmF0b3IuaXMtc3R5bGUtZG90czpiZWZvcmUge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1sYXJnZSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDEwcHg7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4vKiBTaXRlIFRpdGxlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLndwLWJsb2NrLXNpdGUtdGl0bGUgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4vKiBUYWJsZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4ud3AtYmxvY2stdGFibGUgdGFibGUge1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbi53cC1ibG9jay10YWJsZSB0aGVhZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRmb290IHtcbiAgICBib3JkZXItdG9wOiAzcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xufVxuXG4ud3AtYmxvY2stdGFibGUgdGQsXG4ud3AtYmxvY2stdGFibGUgdGgsXG4ud3AtYmxvY2stdGFibGUgdHIsXG4ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcyB0ZCxcbi53cC1ibG9jay10YWJsZS5pcy1zdHlsZS1zdHJpcGVzIHRoLFxuLndwLWJsb2NrLXRhYmxlLmlzLXN0eWxlLXN0cmlwZXMgdHIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbn1cblxuLndwLWJsb2NrLXRhYmxlIHRoIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0td3AtLWN1c3RvbS0tZm9udC13ZWlnaHQtLW1lZGl1bSk7XG59XG5cbi53cC1ibG9jay10YWJsZSB0ZCxcbi53cC1ibG9jay10YWJsZSB0aCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuXG4ud3AtYmxvY2stdGFibGUuaXMtc3R5bGUtc3RyaXBlcyB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbn1cblxuLyogQ3VzdG9tXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIEZvcm1zXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSxcbi53cC1ibG9jay1zZWFyY2hfX2lucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tYmFja2dyb3VuZCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0td3AtLXByZXNldC0tZm9udC1mYW1pbHktLXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0td3AtLXByZXNldC0tZm9udC1zaXplLS1tZWRpdW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS13cC0tY3VzdG9tLS1mb250LXdlaWdodC0tcmVndWxhcik7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXdwLS1jdXN0b20tLWxpbmUtaGVpZ2h0LS1ib2R5KTtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJpbWFnZVwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgd2lkdGg6IGF1dG87XG59XG5cbmlucHV0W3R5cGU9XCJidXR0b25cIl0sXG5pbnB1dFt0eXBlPVwiZW1haWxcIl0sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSxcbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxudGV4dGFyZWEge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1mb3JlZ3JvdW5kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXdwLS1wcmVzZXQtLWZvbnQtc2l6ZS0tc21hbGwpO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLm5mLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLyogRXhwZXJpbWVudGFsIFN0eWxlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qXG4gKiBSZW1vdmUgYm90dG9tIG1hcmdpbiB3aGVuIGJsb2NrcyBhcmUgcGxhY2VkIGluIGNvbnRhaW5lciBibG9ja3MgdGhhdCBkbyBub3RcbiAqIHN1cHBvcnQgYmxvY2tHYXAgKGkuZS4gQ29sdW1uLCBDb3ZlciwgTWVkaWEgJiBUZXh0KVxuICovXG5oMTpsYXN0LWNoaWxkLFxuaDI6bGFzdC1jaGlsZCxcbmgzOmxhc3QtY2hpbGQsXG5oNDpsYXN0LWNoaWxkLFxuaDU6bGFzdC1jaGlsZCxcbmg2Omxhc3QtY2hpbGQsXG5wOmxhc3QtY2hpbGQsXG4ud3AtYmxvY2staW1hZ2U6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmlzLXJvb3QtY29udGFpbmVyIGgxICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoMiArICosXG4uaXMtcm9vdC1jb250YWluZXIgaDMgKyAqLFxuLmlzLXJvb3QtY29udGFpbmVyIGg0ICsgKixcbi5pcy1yb290LWNvbnRhaW5lciBoNSArICosXG4uaXMtcm9vdC1jb250YWluZXIgaDYgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoMSArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGgyICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDMgKyAqLFxuLndwLWJsb2NrLXBvc3QtY29udGVudCBoNCArICosXG4ud3AtYmxvY2stcG9zdC1jb250ZW50IGg1ICsgKixcbi53cC1ibG9jay1wb3N0LWNvbnRlbnQgaDYgKyAqLFxuLndwLWJsb2NrLXF1ZXJ5LXRpdGxlICsgKiB7XG4gICAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ud3AtYmxvY2stc3BhY2VyICsgKiB7XG4gICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4vKiBNZWRpYSBRdWVyaWVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogODAwcHgpIHtcblxuICAgIC8qIE5hdmlnYXRpb25cbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYSB7XG4gICAgICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmZvY3VzLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpmb2N1cyxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWZvcmVncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXdwLS1wcmVzZXQtLWNvbG9yLS1iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYTpmb2N1cyxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwgYTpob3ZlcixcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1vdXRsaW5lLWJhY2tncm91bmQgYTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tZm9yZWdyb3VuZCk7XG4gICAgfVxuXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsIGEsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsLWJhY2tncm91bmQgYTpmb2N1cyxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLWZpbGwtYmFja2dyb3VuZCBhOmhvdmVyLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmZvY3VzLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZSBhOmhvdmVyLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtb3V0bGluZS1iYWNrZ3JvdW5kIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLWJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhOmZvY3VzLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbCBhOmhvdmVyLFxuICAgIC53cC1ibG9jay1uYXZpZ2F0aW9uLWl0ZW0uaXMtc3R5bGUtZmlsbC1iYWNrZ3JvdW5kIGE6Zm9jdXMsXG4gICAgLndwLWJsb2NrLW5hdmlnYXRpb24taXRlbS5pcy1zdHlsZS1maWxsLWJhY2tncm91bmQgYTpob3ZlcixcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUgYSxcbiAgICAud3AtYmxvY2stbmF2aWdhdGlvbi1pdGVtLmlzLXN0eWxlLW91dGxpbmUtYmFja2dyb3VuZCBhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgLyogUHVsbHF1b3RlXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbiAgICAud3AtYmxvY2stcHVsbHF1b3RlLmFsaWdubGVmdCxcbiAgICAud3AtYmxvY2stcHVsbHF1b3RlLmFsaWducmlnaHQge1xuICAgICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIH1cblxuICAgIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25sZWZ0IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC53cC1ibG9jay1wdWxscXVvdGUuYWxpZ25yaWdodCB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDMwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbn1cbiIsIi53cC1ibG9jay1wb3N0LXRpdGxlIHtcblx0bWF4LXdpZHRoOiBjbGFtcCg4MCUsIDkwdmgsIDEwMCUpO1xufVxuXG4uaGFzLWV5ZWJyb3ctZm9udC1zaXplIHtcblx0Zm9udC1mYW1pbHk6ICRnaWxtZXItaGVhdnk7XG5cdGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHQtbWFwLCBleWVicm93ICk7XG59XG5cbnVsLmhhcy1leWVicm93LWZvbnQtc2l6ZSB7XG5cdGxpbmUtaGVpZ2h0OiAxLjI1ZW07XG5cblx0bGkge1xuXHRcdCsgbGkge1xuXHRcdFx0bWFyZ2luLXRvcDogLjM3NXJlbTtcblx0XHR9XG5cdH1cbn1cblxuLmhhcy1sYXJnZS1mb250LXNpemUge1xuXHRsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0LW1hcCwgcGxhcmdlICk7XG59XG4iLCIud3AtYmxvY2stcG9zdC10ZXJtcyB7XG5cdFtyZWw9XCJ0YWdcIl0ge1xuXHRcdGZvbnQ6IHtcblx0XHRcdGZhbWlseTogJGdpbG1lci1yZWd1bGFyO1xuXHRcdFx0c2l6ZTogMTRweDtcblx0XHR9O1xuXHRcdGxldHRlci1zcGFjaW5nOiAuMzVweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdCYudGF4b25vbXktbHBfc29sdXRpb24ge1xuXHRcdFtyZWw9XCJ0YWdcIl0ge1xuXHRcdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxMnB4O1xuXHRcdFx0cGFkZGluZzogNXB4IDlweDtcblx0XHR9XG5cblx0XHQud3AtYmxvY2stcG9zdC10ZXJtc19fc2VwYXJhdG9yIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHR9XG59XG4iLCIkZmlsbC10eXBlczogYmFzZSwgbWFpbiwgcHJpbWFyeTtcbiR0ZXh0LW1hcDogKFxuXHRiYXNlOiBtYWluLFxuXHRtYWluOiBiYXNlLFxuXHRwcmltYXJ5OiBiYXNlXG4pO1xuXG4vLyAgR2xvYmFsIGJsb2NrIGJ1dHRvbiBzZXR0aW5nc1xuLndwLWJsb2NrLWJ1dHRvbiB7XG5cdC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsaW5lLWhlaWdodDogMTZweDtcblx0XHRsZXR0ZXItc3BhY2luZzogMS4wNXB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0cGFkZGluZzogMS4zNzVyZW0gMS41cmVtO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQnV0dG9uIHN0eWxlIGZpbGxcblx0Ji5pcy1zdHlsZS1maWxsIHtcblx0XHQud3AtYmxvY2stYnV0dG9uX19saW5rIHtcblx0XHRcdGJhY2tncm91bmQ6ICRibHVlO1xuXHRcdFx0Ym9yZGVyOiAycHggc29saWQgJGJsdWU7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0Y29sb3I6ICRibHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRAZWFjaCAkZmlsbC10eXBlIGluICRmaWxsLXR5cGVzIHtcblx0XHRcdFx0JHRleHQtY29sb3I6IG1hcC1nZXQoJHRleHQtbWFwLCAkZmlsbC10eXBlKTtcblxuXHRcdFx0XHQkZmlsbDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JGZpbGwtdHlwZX0pO1xuXHRcdFx0XHQkdGV4dDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JHRleHQtY29sb3J9KTtcblxuXHRcdFx0XHQmLmhhcy0jeyRmaWxsLXR5cGV9LWJhY2tncm91bmQtY29sb3I6bm90KC5oYXMtdGV4dC1jb2xvcikge1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICRmaWxsO1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGZpbGw7XG5cdFx0XHRcdFx0Y29sb3I6ICR0ZXh0O1xuXG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkdGV4dCAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkdGV4dDtcblx0XHRcdFx0XHRcdGNvbG9yOiAkZmlsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmhhcy0jeyRmaWxsLXR5cGV9LWJhY2tncm91bmQtY29sb3IuaGFzLXRleHQtY29sb3Ige1xuXHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGZpbGw7XG5cblx0XHRcdFx0XHRAZWFjaCAkZmlsbC10eXBlIGluICRmaWxsLXR5cGVzIHtcblx0XHRcdFx0XHRcdCYuaGFzLSN7JGZpbGwtdHlwZX0tY29sb3Ige1xuXHRcdFx0XHRcdFx0XHQkZmlsbDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JGZpbGwtdHlwZX0pO1xuXHRcdFx0XHRcdFx0XHQkdGV4dC1jb2xvcjogbWFwLWdldCgkdGV4dC1tYXAsICRmaWxsLXR5cGUpO1xuXHRcdFx0XHRcdFx0XHQkdGV4dDogdmFyKC0td3AtLXByZXNldC0tY29sb3ItLSN7JHRleHQtY29sb3J9KTtcblxuXHRcdFx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkZmlsbCAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0XHRcdGJvcmRlci1jb2xvcjogJGZpbGw7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3I6ICR0ZXh0ICFpbXBvcnRhbnQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBCdXR0b24gc3R5bGUgb3V0bGluZVxuXHQmLmlzLXN0eWxlLW91dGxpbmUge1xuXHRcdC53cC1ibG9jay1idXR0b25fX2xpbmsge1xuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cblx0XHRcdEBlYWNoICRmaWxsLXR5cGUgaW4gJGZpbGwtdHlwZXMge1xuXHRcdFx0XHQmLmhhcy0jeyRmaWxsLXR5cGV9LWNvbG9yIHtcblx0XHRcdFx0XHQkZmlsbC1ob3Zlci1jb2xvcjogbWFwLWdldCgkdGV4dC1tYXAsICRmaWxsLXR5cGUpO1xuXHRcdFx0XHRcdCRmaWxsLWhvdmVyOiB2YXIoLS13cC0tcHJlc2V0LS1jb2xvci0tI3skZmlsbC1ob3Zlci1jb2xvcn0pO1xuXG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkZmlsbC1ob3ZlciAhaW1wb3J0YW50O1xuXHRcdFx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZmlsbC1ob3Zlcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi53cC1ibG9jay1ncm91cCB7XG5cdEBtZWRpYSBzY3JlZW4gYW5kICggbWluLXdpZHRoOiAxMDI0cHggKSB7XG5cdFx0Ji5mbGV4LWF1dG8ge1xuXHRcdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0fVxuXG5cdFx0Ji5mbGV4LXNpZGViYXIge1xuXHRcdFx0ZmxleDogMCAwIDQwMHB4O1xuXHRcdH1cblx0fVxuXG5cdEBtZWRpYSBzY3JlZW4gYW5kICggbWF4LXdpZHRoOiAxMDIzcHggKSB7XG5cdFx0Ji5tZWRpdW0tZmxleC13cmFwIHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50O1xuXG5cdFx0XHQmLmZsZXgtc2lkZWJhciB7XG5cdFx0XHRcdGZsZXg6IDAgMCAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLyoqXG4gKiAwMS4gTGF5b3V0XG4gKiAwMi4gRGFzaGJvYXJkIE5hdmlnYXRpb25cbiAqL1xuXG4uc2luZ2xlLXByb3Bvc2FsIHtcblx0Ly8gMDEuIExheW91dFxuXHQud3Atc2l0ZS1ibG9ja3Mge1xuXHRcdG1pbi1oZWlnaHQ6IDEwMHZoO1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblxuXHRcdC5zaXRlLWNvbnRlbnQge1xuXHRcdFx0bWluLWhlaWdodDogMTAwdmg7XG5cdFx0XHRwYWRkaW5nOiB7XG5cdFx0XHRcdHRvcDogMCAhaW1wb3J0YW50O1xuXHRcdFx0XHRib3R0b206IDAgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuc2l0ZS1mb290ZXIge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cblx0LnNpdGUtY29udGVudCB7XG5cdFx0Ly8gMDEuIERhc2hib2FyZCBOYXZpZ2F0aW9uXG5cblx0XHQ+IC53cC1ibG9jay1wYWdlLWxpc3Qge1xuXHRcdFx0YmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG5cdFx0XHRtaW4taGVpZ2h0OiAxMDB2aDtcblx0XHRcdHdpZHRoOiAzMDBweDtcblx0XHRcdG92ZXJmbG93OiBzY3JvbGw7XG5cdFx0XHRwYWRkaW5nOiAxcmVtIDA7XG5cdFx0XHRsaXN0LXN0eWxlOiBub25lO1xuXG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdFx0dG9wOiAwO1xuXG5cdFx0XHQud3AtYmxvY2stcGFnZXMtbGlzdF9faXRlbSB7XG5cdFx0XHRcdCZfX2xpbmsge1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmc6IC41cmVtIDFyZW07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8qKlxuICogMDEuIEhlYWRpbmdzXG4gKiAwMi4gV2VpZ2h0c1xuICogMDMuIFBhcmFncmFwaFxuICogMDQuIExpbmtcbiAqL1xuXG5cbi8vIDAxLiBIZWFkaW5nc1xuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcblx0Zm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuaDEsIGgyLCBoMywgaDUge1xuXHRmb250LWZhbWlseTogJGdpbG1lci1oZWF2eTtcbn1cblxuaDEud3AtYmxvY2stcG9zdC10aXRsZSB7XG5cdGZvbnQtc2l6ZTogbWFwLWdldCggJGhlYWRpbmctc2l6ZS1tYXAsIGgxICk7XG59XG5cbkBlYWNoICR0YWcsICRzaXplIGluICRoZWFkaW5nLXNpemUtbWFwIHtcblx0I3skdGFnfSB7XG5cdFx0Zm9udC1zaXplOiAkc2l6ZTtcblx0XHRsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0LW1hcCwgJHRhZyApO1xuXHR9XG59XG5cblxuLy8gMDIuIFdlaWdodHNcblxuQGVhY2ggJG5hbWUsICR3ZWlnaHQgaW4gJGZvbnQtd2VpZ2h0LW1hcCB7XG5cdC5mb250LXdlaWdodC0jeyRuYW1lfSB7XG5cdFx0Zm9udC1mYW1pbHk6ICR3ZWlnaHQ7XG5cdH1cbn1cblxuc3Ryb25nIHtcblx0Zm9udDoge1xuXHRcdGZhbWlseTogJGdpbG1lci1ib2xkO1xuXHRcdHdlaWdodDogNDAwO1xuXHR9O1xufVxuXG4uaGVhdnkge1xuXHRmb250LWZhbWlseTogJGdpbG1lci1oZWF2eTtcbn1cblxuXG4vLyAwMy4gUGFyYWdyYXBoXG5cbnAge1xuXHRmb250OiB7XG5cdFx0ZmFtaWx5OiAkZ2lsbWVyLXJlZ3VsYXI7XG5cdFx0c2l6ZTogMTZweDtcblx0fTtcblx0bGluZS1oZWlnaHQ6IG1hcC1nZXQoICRsaW5lLWhlaWdodC1tYXAsIHAgKTtcblxuXHQmLnNtYWxsLFxuXHRzbWFsbCB7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHQtbWFwLCBwc21hbGwgKTtcblx0fVxuXG5cdCYuY3RhIHtcblx0XHRmb250OiB7XG5cdFx0XHRmYW1pbHk6ICRnaWxtZXItaGVhdnk7XG5cdFx0XHRzaXplOiAxNHB4O1xuXHRcdH07XG5cdFx0bGluZS1oZWlnaHQ6IG1hcC1nZXQoICRsaW5lLWhlaWdodC1tYXAsIGN0YSApO1xuXHR9XG59XG5cblxuLy8gMDQuIExpbmtcblxuLmVudHJ5LWNvbnRlbnQgYSB7XG5cdGNvbG9yOiAkYmx1ZTtcblx0Zm9udDoge1xuXHRcdGZhbWlseTogJGdpbG1lci1oZWF2eTtcblx0XHRzaXplOiAxOHB4O1xuXHR9O1xuXHRsaW5lLWhlaWdodDogbWFwLWdldCggJGxpbmUtaGVpZ2h0LW1hcCwgYSApO1xufVxuIiwiLnBvc3QtdHlwZS1wcm9wb3NhbC1wYWdlIGgxLmJsb2NrLWVkaXRvci1ibG9jay1saXN0X19ibG9jay5lZGl0b3ItcG9zdC10aXRsZS5lZGl0b3ItcG9zdC10aXRsZV9faW5wdXQucmljaC10ZXh0LndwLWJsb2NrLndwLWJsb2NrLXBvc3QtdGl0bGUge1xuICBmb250LXNpemU6IDI0cHghaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOmxlZnQ7XG4gIHdpZHRoOjEwMCU7XG59XG5cbi5wb3N0LXR5cGUtcHJvcG9zYWwtcGFnZSAjZWRpdG9yIGRpdi5lZGl0LXBvc3QtdmlzdWFsLWVkaXRvcl9fcG9zdC10aXRsZS13cmFwcGVyID4gaDEuYmxvY2stZWRpdG9yLWJsb2NrLWxpc3RfX2Jsb2NrIHtcbiAgZm9udC1zaXplOiAyNHB4IWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICB3aWR0aDoxMDAlO1xufVxuIiwiXG4uY2QtYWNjb3JkaW9uIHtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0d2lkdGg6IDMwMHB4O1xuXG5cdCZfX2l0ZW0ge1xuXHRcdG1hcmdpbjogMDtcblxuXHRcdGEsXG5cdFx0LmNkLWFjY29yZGlvbl9fbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOiAuMjVyZW0gMXJlbTtcblx0XHRcdGNvbG9yOiAkYmxhY2s7XG5cdFx0XHRmb250OiB7XG5cdFx0XHQgIGZhbWlseTogJGdpbG1lci1saWdodDtcblx0XHRcdCAgc2l6ZTogLjhyZW07XG5cdFx0XHR9O1xuXHRcdCAgXHRsZXR0ZXItc3BhY2luZzogLjA1cmVtO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0fVxuXG5cdFx0LmNkLWFjY29yZGlvbl9fbGFiZWwge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMS41cmVtO1xuXHRcdH1cblxuXHRcdCYtLWhhcy1jaGlsZHJlbiB7XG5cdFx0XHQuY2QtYWNjb3JkaW9uX19sYWJlbCB7XG5cdFx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRcdGNvbnRlbnQ6ICdcXDI1YmUnO1xuXG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdG1hcmdpbjogMCAuNXJlbSAwIDA7XG5cblx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRcdFx0dG9wOiAwO1xuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSguMjVyZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5jaGlsZHJlbiB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDJyZW07XG5cdFx0XHRcdHBhZGRpbmc6IDAgMCAwIC4yNXJlbTtcblx0XHRcdH1cblxuXHRcdFx0LmNkLWFjY29yZGlvbl9faW5wdXQge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0XHRcdCY6Y2hlY2tlZCB7XG5cdFx0XHRcdFx0fiAuY2QtYWNjb3JkaW9uX19sYWJlbCB7XG5cdFx0XHRcdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC4yNXJlbSkgcm90YXRlKDE4MGRlZyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0fiAuY2hpbGRyZW4ge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUsXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHQ+IGEsXG5cdFx0XHQ+IC5jZC1hY2NvcmRpb25fX2xhYmVsIHtcblx0XHRcdFx0YmFja2dyb3VuZDogcmdiYSgkYmx1ZSwgLjEpO1xuXHRcdFx0XHRjb2xvcjogJGJsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG4iXX0= */ +*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}.wp-element-button,a,button,input:focus,input[type=button],input[type=submit],textarea:focus{transition:all .2s ease-in-out}a,a:focus,a:hover,a:not(.wp-element-button){text-decoration-thickness:1px}b,strong{font-weight:var(--wp--custom--font-weight--medium)}mark{background:linear-gradient(90deg,var(--wp--preset--color--primary) 0,var(--wp--preset--color--primary) 100%);background-position:0 85%;background-repeat:repeat-x;background-size:100% 15%}.wp-block-calendar table caption,.wp-block-calendar table tbody{color:var(--wp--preset--color--contrast)}.wp-block-calendar table th{background-color:var(--wp--preset--color--contrast);color:var(--wp--preset--color--base)}.wp-block-calendar tbody td,.wp-block-calendar th{border:1px solid var(--wp--preset--color--contrast);padding:10px}:not(.wp-block-code)>code{background-color:var(--wp--preset--color--neutral);font-size:var(--wp--preset--font-size--small);padding:5px 8px}.wp-block-post-comments-form .comment-reply-title{margin-bottom:var(--wp--custom--spacing--gap)}.wp-block-post-comments-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments-form textarea{border-color:var(--wp--preset--color--contrast);padding:10px 15px}.wp-block-post-comments-form p:not(.form-submit){margin-bottom:20px}.wp-block-post-comments-form .comment-form-cookies-consent label{font-size:var(--wp--preset--font-size--x-small)}.is-style-no-disc{list-style-type:none;padding-left:0}.wp-block-navigation__responsive-container.is-menu-open{padding-bottom:30px;padding-top:30px}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{border:1px solid;padding:2px}.has-background .wp-block-navigation__responsive-container-open:focus,.has-background .wp-block-navigation__responsive-container-open:hover{color:var(--wp--preset--color--base)}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:var(--wp--preset--color--contrast);border:var(--wp--preset--color--contrast);color:var(--wp--preset--color--base);padding:10px}.wp-block-navigation :where(.wp-block-navigation__submenu-container) a{padding:2px 10px}.wp-block-separator.is-style-dots:before{font-family:inherit;font-size:var(--wp--preset--font-size--large);letter-spacing:10px;padding-left:10px}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots),.wp-block-separator:not(.is-style-dots){border-bottom:1px solid;border-top:none;height:1px}.wp-block-table.is-style-stripes{border-bottom:none}.wp-block-table table{border-collapse:collapse}.wp-block-table thead{border-bottom:3px solid var(--wp--preset--color--contrast)}.wp-block-table tfoot{border-top:3px solid var(--wp--preset--color--contrast)}.wp-block-table td,.wp-block-table th,.wp-block-table tr,.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th,.wp-block-table.is-style-stripes tr{border:1px solid var(--wp--preset--color--contrast)}.wp-block-table th{font-weight:var(--wp--custom--font-weight--regular)}.wp-block-table td,.wp-block-table th{padding:5px}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:var(--wp--preset--color--neutral)}.wp-block-search__input,input,select,textarea{background-color:var(--wp--preset--color--base);border:1px solid var(--wp--preset--color--contrast);border-radius:0;color:var(--wp--preset--color--contrast);font-family:var(--wp--preset--font-family--primary);font-size:var(--wp--preset--font-size--medium);font-weight:var(--wp--custom--font-weight--light);line-height:var(--wp--custom--line-height--body);padding:10px 20px;width:100%}input:focus,textarea:focus{background-color:var(--wp--preset--color--neutral);outline:none}input[type=checkbox],input[type=image],input[type=radio]{width:auto}input[type=button],input[type=email],input[type=search],input[type=submit],input[type=text],textarea{-webkit-appearance:none}::-moz-placeholder{color:var(--wp--preset--color--contrast);font-size:var(--wp--preset--font-size--small);opacity:.5}::placeholder{color:var(--wp--preset--color--contrast);font-size:var(--wp--preset--font-size--small);opacity:.5}@media only screen and (max-width:780px){.is-style-columns-reverse{flex-direction:column-reverse}}@media only screen and (min-width:800px){.wp-block-navigation-item.is-style-outline a{border:1px solid;padding:8px 15px}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:300px}.wp-block-pullquote.alignleft{margin-right:30px!important}.wp-block-pullquote.alignright{margin-left:30px!important}}.wp-block-post-title{max-width:clamp(80%,90vh,100%)}.has-eyebrow-font-size{font-family:Gilmer-Heavy,sans-serif;line-height:16px}ul.has-eyebrow-font-size{line-height:1.25em}ul.has-eyebrow-font-size li+li{margin-top:.375rem}.has-large-font-size{line-height:28px}.wp-block-post-terms [rel=tag]{font-family:Gilmer-Regular,sans-serif;font-size:14px;letter-spacing:.35px;line-height:1;text-decoration:none;white-space:nowrap}.wp-block-post-terms.taxonomy-lp_solution [rel=tag]{background:#fff;border-radius:5px;margin-right:12px;padding:5px 9px}.wp-block-post-terms.taxonomy-lp_solution .wp-block-post-terms__separator{display:none}.wp-block-button .wp-block-button__link{font-size:14px;letter-spacing:1.05px;line-height:16px;padding:1.375rem 1.5rem;text-transform:uppercase}.wp-block-button .wp-block-button__link:hover{text-decoration:none}.wp-block-button.is-style-fill .wp-block-button__link{background:#3fc1d0;border:2px solid #3fc1d0;color:#fff}.wp-block-button.is-style-fill .wp-block-button__link:hover{background:#fff;border-color:#fff;color:#3fc1d0}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color){background:var(--wp--preset--color--base);border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color:not(.has-text-color):hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color{border-color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-base-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-main-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-base-background-color.has-text-color.has-primary-color:hover{background:var(--wp--preset--color--primary)!important;border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color){background:var(--wp--preset--color--main);border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color:not(.has-text-color):hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color{border-color:var(--wp--preset--color--main)}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-base-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-main-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-main-background-color.has-text-color.has-primary-color:hover{background:var(--wp--preset--color--primary)!important;border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color){background:var(--wp--preset--color--primary);border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color:not(.has-text-color):hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--primary)}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color{border-color:var(--wp--preset--color--primary)}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-base-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base);color:var(--wp--preset--color--main)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-main-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-fill .wp-block-button__link.has-primary-background-color.has-text-color.has-primary-color:hover{background:var(--wp--preset--color--primary)!important;border-color:var(--wp--preset--color--primary);color:var(--wp--preset--color--base)!important}.wp-block-button.is-style-outline .wp-block-button__link:hover{background:#fff;border-color:#fff}.wp-block-button.is-style-outline .wp-block-button__link.has-base-color:hover{background:var(--wp--preset--color--main)!important;border-color:var(--wp--preset--color--main)}.wp-block-button.is-style-outline .wp-block-button__link.has-main-color:hover,.wp-block-button.is-style-outline .wp-block-button__link.has-primary-color:hover{background:var(--wp--preset--color--base)!important;border-color:var(--wp--preset--color--base)}@media screen and (min-width:1024px){.wp-block-group.flex-auto{flex:1 1 auto}.wp-block-group.flex-sidebar{flex:0 0 400px}}@media screen and (max-width:1023px){.wp-block-group.medium-flex-wrap{flex-wrap:wrap!important}.wp-block-group.medium-flex-wrap.flex-sidebar{flex:0 0 100%}}.single-proposal .wp-site-blocks{min-height:100vh;padding-left:0}.single-proposal .wp-site-blocks .site-content{min-height:100vh;padding-bottom:0!important;padding-top:0!important}.single-proposal .wp-site-blocks .site-footer{margin:0}.single-proposal .site-content>.wp-block-page-list{background:#fafafa;list-style:none;min-height:100vh;overflow:scroll;padding:1rem 0;position:sticky;top:0;width:300px}.single-proposal .site-content>.wp-block-page-list .wp-block-pages-list__item__link{display:block;padding:.5rem 1rem}h1,h2,h3,h4,h5,h6{font-weight:400}h1,h2,h3,h5{font-family:Gilmer-Heavy,sans-serif}h1,h1.wp-block-post-title{font-size:clamp(50px,8vw,90px)}h1{line-height:1.125em}h2{font-size:clamp(36px,7vw,48px)}h2,h3{line-height:1.2em}h3{font-size:clamp(30px,6vw,40px)}h4{font-size:clamp(24px,5vw,32px);line-height:1.3125em}h5{font-size:clamp(20px,4vw,24px);line-height:1.4em}h6{font-size:16px;line-height:1.375em}.font-weight-light{font-family:Gilmer-Light,sans-serif}.font-weight-regular{font-family:Gilmer-Regular,sans-serif}.font-weight-medium{font-family:Gilmer-Medium,sans-serif}.font-weight-bold{font-family:Gilmer-Bold,sans-serif}.font-weight-heavy{font-family:Gilmer-Heavy,sans-serif}strong{font-family:Gilmer-Bold,sans-serif;font-weight:400}.heavy{font-family:Gilmer-Heavy,sans-serif}p{font-family:Gilmer-Regular,sans-serif;font-size:16px;line-height:24px}p small,p.small{font-size:14px;line-height:18px}p.cta{font-size:14px}.entry-content a,p.cta{font-family:Gilmer-Heavy,sans-serif;line-height:28px}.entry-content a{color:#3fc1d0;font-size:18px}.post-type-proposal-page #editor div.edit-post-visual-editor__post-title-wrapper>h1.block-editor-block-list__block,.post-type-proposal-page h1.block-editor-block-list__block.editor-post-title.editor-post-title__input.rich-text.wp-block.wp-block-post-title{font-size:24px!important;text-align:left;width:100%}.cd-accordion{list-style:none;width:300px}.cd-accordion__item{margin:0}.cd-accordion__item .cd-accordion__label,.cd-accordion__item a{color:#001e1e;display:block;font-family:Gilmer-Light,sans-serif;font-size:.8rem;letter-spacing:.05rem;padding:.25rem 1rem;position:relative;text-decoration:none}.cd-accordion__item .cd-accordion__label{padding-right:1.5rem}.cd-accordion__item--has-children .cd-accordion__label:after{content:"▾";display:inline-block;margin:0 .5rem 0 0;position:absolute;right:0;top:0;transform:translateY(.25rem)}.cd-accordion__item--has-children .children{display:none;list-style:none;margin:0 0 2rem;padding:0 0 0 .25rem}.cd-accordion__item--has-children .cd-accordion__input{display:none}.cd-accordion__item--has-children .cd-accordion__input:checked~.cd-accordion__label:after{transform:translateY(.25rem) rotate(180deg)}.cd-accordion__item--has-children .cd-accordion__input:checked~.children{display:block}.cd-accordion__item.active>.cd-accordion__label,.cd-accordion__item.active>a,.cd-accordion__item:hover>.cd-accordion__label,.cd-accordion__item:hover>a{background:rgba(63,193,208,.1);color:#3fc1d0} \ No newline at end of file diff --git a/fonts/OFL.txt b/fonts/OFL.txt deleted file mode 100644 index 723cd447..00000000 --- a/fonts/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2021 The Outfit Project Authors (https://github.com/Outfitio/Outfit-Fonts) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -https://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/Outfit-Variable.woff2 b/fonts/Outfit-Variable.woff2 deleted file mode 100644 index ff1bdd13..00000000 Binary files a/fonts/Outfit-Variable.woff2 and /dev/null differ diff --git a/fonts/README.txt b/fonts/README.txt deleted file mode 100644 index 702665a2..00000000 --- a/fonts/README.txt +++ /dev/null @@ -1,71 +0,0 @@ -Outfit Variable Font -==================== - -This download contains Outfit as both a variable font and static fonts. - -Outfit is a variable font with this axis: - wght - -This means all the styles are contained in a single file: - Outfit-VariableFont_wght.ttf - -If your app fully supports variable fonts, you can now pick intermediate styles -that aren’t available as static fonts. Not all apps support variable fonts, and -in those cases you can use the static font files for Outfit: - static/Outfit-Thin.ttf - static/Outfit-ExtraLight.ttf - static/Outfit-Light.ttf - static/Outfit-Regular.ttf - static/Outfit-Medium.ttf - static/Outfit-SemiBold.ttf - static/Outfit-Bold.ttf - static/Outfit-ExtraBold.ttf - static/Outfit-Black.ttf - -Get started ------------ - -1. Install the font files you want to use - -2. Use your app's font picker to view the font family and all the -available styles - -Learn more about variable fonts -------------------------------- - - https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts - https://variablefonts.typenetwork.com - https://medium.com/variable-fonts - -In desktop apps - - https://theblog.adobe.com/can-variable-fonts-illustrator-cc - https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts - -Online - - https://developers.google.com/fonts/docs/getting_started - https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide - https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts - -Installing fonts - - MacOS: https://support.apple.com/en-us/HT201749 - Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux - Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows - -Android Apps - - https://developers.google.com/fonts/docs/android - https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts - -License -------- -Please read the full license text (OFL.txt) to understand the permissions, -restrictions and requirements for usage, redistribution, and modification. - -You can use them in your products & projects – print or digital, -commercial or otherwise. - -This isn't legal advice, please consider consulting a lawyer and see the full -license for all details. diff --git a/functions.php b/functions.php index 9dfe73f4..74b2a526 100644 --- a/functions.php +++ b/functions.php @@ -1,15 +1,34 @@ get( 'Version' ) ); } @@ -50,79 +73,72 @@ function frost_enqueue_style_sheet() { * * @since 0.9.2 */ -function frost_register_block_styles() { +function ash_register_block_styles() { $block_styles = array( 'core/button' => array( - 'fill-base' => __( 'Fill Base', 'frost' ), - 'outline-base' => __( 'Outline Base', 'frost' ), + 'fill-base' => __( 'Fill Base', 'ash' ), + 'outline-base' => __( 'Outline Base', 'ash' ), ), 'core/columns' => array( - 'columns-reverse' => __( 'Reverse', 'frost' ), + 'columns-reverse' => __( 'Reverse', 'ash' ), ), 'core/group' => array( - 'shadow' => __( 'Shadow', 'frost' ), - 'shadow-solid' => __( 'Shadow Solid', 'frost' ), + 'shadow' => __( 'Shadow', 'ash' ), + 'shadow-solid' => __( 'Shadow Solid', 'ash' ), ), 'core/list' => array( - 'no-disc' => __( 'No Disc', 'frost' ), + 'no-disc' => __( 'No Disc', 'ash' ), ), 'core/navigation-link' => array( - 'outline' => __( 'Outline', 'frost' ), + 'outline' => __( 'Outline', 'ash' ), ), 'core/social-links' => array( - 'outline' => __( 'Outline', 'frost' ), + 'outline' => __( 'Outline', 'ash' ), ), ); +} - foreach ( $block_styles as $block => $styles ) { - foreach ( $styles as $style_name => $style_label ) { - register_block_style( - $block, - array( - 'name' => $style_name, - 'label' => $style_label, - ) - ); - } - } +// Require Composer autoloader if it exists. +if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) { + require_once __DIR__ . '/vendor/autoload.php'; } -add_action( 'init', 'frost_register_block_styles' ); +add_action( 'init', 'ash_register_block_styles' ); /** * Registers block categories, and type. * * @since 0.9.2 */ -function frost_register_block_pattern_categories() { +function ash_register_block_pattern_categories() { /* Functionality specific to the Block Pattern Explorer plugin. */ if ( function_exists( 'register_block_pattern_category_type' ) ) { - register_block_pattern_category_type( 'frost', array( 'label' => __( 'Frost', 'frost' ) ) ); + register_block_pattern_category_type( 'ash', array( 'label' => __( 'Ash', 'ash' ) ) ); } $block_pattern_categories = array( - 'frost-footer' => array( - 'label' => __( 'Footer', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-footer' => array( + 'label' => __( 'Footer', 'ash' ), + 'categoryTypes' => array( 'ash' ), ), - 'frost-general' => array( - 'label' => __( 'General', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-general' => array( + 'label' => __( 'General', 'ash' ), + 'categoryTypes' => array( 'ash' ), ), - 'frost-header' => array( - 'label' => __( 'Header', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-header' => array( + 'label' => __( 'Header', 'ash' ), + 'categoryTypes' => array( 'ash' ), ), - 'frost-page' => array( - 'label' => __( 'Page', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-page' => array( + 'label' => __( 'Page', 'ash' ), + 'categoryTypes' => array( 'ash' ), ), - 'frost-query' => array( - 'label' => __( 'Query', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-query' => array( + 'label' => __( 'Query', 'ash' ), + 'categoryTypes' => array( 'ash' ), ), - 'frost-proposals' => array( - 'label' => __( 'Proposals', 'frost' ), - 'categoryTypes' => array( 'frost' ), + 'ash-proposals' => array( + 'label' => __( 'Proposals', 'ash' ), + 'categoryTypes' => array( 'ash' ), ), ); @@ -130,4 +146,17 @@ function frost_register_block_pattern_categories() { register_block_pattern_category( $name, $properties ); } } -add_action( 'init', 'frost_register_block_pattern_categories', 9 ); + +add_action( 'init', 'ash_register_block_pattern_categories', 9 ); + +if ( ! function_exists( 'wp_body_open' ) ) { + do_action( 'wp_body_open' ); +} + +// Kick everything off when plugins are loaded. +try { + Ash\Core\setup(); + Ash\Blocks\setup(); +} catch ( Exception $e ) { + wp_die( esc_html( $e->getMessage() ) ); +} diff --git a/includes/blocks.php b/includes/blocks.php new file mode 100644 index 00000000..20c5e8a5 --- /dev/null +++ b/includes/blocks.php @@ -0,0 +1,116 @@ + array( + 'fill-base' => __( 'Fill Base', 'ash' ), + 'outline-base' => __( 'Outline Base', 'ash' ), + ), + 'core/columns' => array( + 'columns-reverse' => __( 'Reverse', 'ash' ), + ), + 'core/group' => array( + 'shadow' => __( 'Shadow', 'ash' ), + 'shadow-solid' => __( 'Shadow Solid', 'ash' ), + ), + 'core/list' => array( + 'no-disc' => __( 'No Disc', 'ash' ), + ), + 'core/navigation-link' => array( + 'outline' => __( 'Outline', 'ash' ), + ), + 'core/social-links' => array( + 'outline' => __( 'Outline', 'ash' ), + ), + ); + + foreach ( $block_styles as $block => $styles ) { + foreach ( $styles as $style_name => $style_label ) { + register_block_style( + $block, + array( + 'name' => $style_name, + 'label' => $style_label, + ) + ); + } + } +} + +/** + * Registers block categories, and type. + * + * @since 0.9.2 + */ +function register_block_pattern_categories() { + /* Functionality specific to the Block Pattern Explorer plugin. */ + if ( function_exists( 'register_block_pattern_category_type' ) ) { + register_block_pattern_category_type( 'frost', array( 'label' => __( 'Ash', 'ash' ) ) ); + } + + $block_pattern_categories = array( + 'frost-footer' => array( + 'label' => __( 'Ash', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-general' => array( + 'label' => __( 'General', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-header' => array( + 'label' => __( 'Header', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-page' => array( + 'label' => __( 'Page', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-query' => array( + 'label' => __( 'Query', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + 'frost-proposals' => array( + 'label' => __( 'Proposals', 'ash' ), + 'categoryTypes' => array( 'ash' ), + ), + ); + + foreach ( $block_pattern_categories as $name => $properties ) { + register_block_pattern_category( $name, $properties ); + } + +} diff --git a/includes/classes/SVG_Icons.php b/includes/classes/SVG_Icons.php new file mode 100644 index 00000000..04488eff --- /dev/null +++ b/includes/classes/SVG_Icons.php @@ -0,0 +1,246 @@ + source on its own array key, without adding either + * the `width` or `height` attributes, since these are added dynamically, + * before rendering the SVG code. + * + * All icons are assumed to have equal width and height, hence the option + * to only specify a `$size` parameter in the svg methods. + */ +class SVG_Icons { + + /** + * User Interface icons – svg sources. + * + * @access protected + * + * @since 1.0 + * + * @var array + */ + protected static $icons = array( + 'arrow_right' => '', + 'arrow_left' => '', + 'close' => '', + 'menu' => '', + 'plus' => '', + 'minus' => '', + 'fish' => '', + 'footer_email' => '', + 'footer_location' => '', + 'footer_support' => '', + 'header_location' => '', + 'header_search' => '', + 'header_support' => '', + ); + + /** + * Social Icons – svg sources. + * + * @access protected + * + * @since 1.1.0 + * + * @var array + */ + protected static $social_icons = array( + '500px' => '', + 'amazon' => '', + 'bandcamp' => '', + 'behance' => '', + 'codepen' => '', + 'deviantart' => '', + 'dribbble' => '', + 'dropbox' => '', + 'etsy' => '', + 'facebook' => '', + 'feed' => '', + 'flickr' => '', + 'foursquare' => '', + 'goodreads' => '', + 'google' => '', + 'github' => '', + 'instagram' => '', + 'lastfm' => '', + 'linkedin' => '', + 'mail' => '', + 'mastodon' => '', + 'medium' => '', + 'meetup' => '', + 'pinterest' => '', + 'pocket' => '', + 'reddit' => '', + 'skype' => '', + 'snapchat' => '', + 'soundcloud' => '', + 'spotify' => '', + 'tumblr' => '', + 'twitch' => '', + 'twitter' => '', + 'vimeo' => '', + 'vk' => '', + 'wordpress' => '', + 'yelp' => '', + 'youtube' => '', + ); + + /** + * Social Icons – domain mappings. + * + * By default, each Icon ID is matched against a .com TLD. To override this behavior, + * specify all the domains it covers (including the .com TLD too, if applicable). + * + * @since 1.1.0 + * + * @var array + */ + protected static $social_icons_map = array( + 'amazon' => array( + 'amazon.com', + 'amazon.cn', + 'amazon.in', + 'amazon.fr', + 'amazon.de', + 'amazon.it', + 'amazon.nl', + 'amazon.es', + 'amazon.co', + 'amazon.ca', + ), + 'behance' => array( + 'behance.net', + ), + 'codepen' => array( + 'codepen.io', + ), + 'facebook' => array( + 'facebook.com', + 'fb.me', + ), + 'feed' => array( + 'feed', + ), + 'lastfm' => array( + 'last.fm', + ), + 'mail' => array( + 'mailto:', + ), + 'pocket' => array( + 'getpocket.com', + ), + 'twitch' => array( + 'twitch.tv', + ), + 'wordpress' => array( + 'wordpress.com', + 'wordpress.org', + ), + ); + + /** + * Gets the SVG code for a given icon. + * + * @param string $group the icon group. + * @param string $icon The icon. + * @param int $size The icon-size in pixels. + * + * @return string + * @since 1.1.0 + */ + public static function get_svg( string $group, string $icon, int $size ): string { + + if ( 'ui' === $group ) { + $arr = self::$icons; + } elseif ( 'social' === $group ) { + $arr = self::$social_icons; + } else { + $arr = array(); + } + + /** + * Filters the array of icons. + * + * The dynamic portion of the hook name, `$group`, refers to + * the name of the group of icons, either "ui" or "social". + * + * @since 1.1.0 + * + * @param array $arr Array of icons. + */ + $arr = apply_filters( "ashl_svg_icons_{$group}", $arr ); + + $svg = ''; + if ( array_key_exists( $icon, $arr ) ) { + $repl = sprintf( ''; + } + } + return null; + } +} diff --git a/includes/core.php b/includes/core.php new file mode 100644 index 00000000..17123217 --- /dev/null +++ b/includes/core.php @@ -0,0 +1,219 @@ +get( 'Version' ), true ); +} + +/** + * Enqueue scripts for front-end. + * + * @return void + */ +function styles() { + wp_enqueue_style( 'ash', get_stylesheet_directory_uri() . '/css/ash.css', array(), wp_get_theme()->get( 'Version' ) ); +} + +/** + * Enqueue scripts for admin + * + * @return void + */ +function admin_scripts() { + wp_enqueue_style( 'ash-admin-css', get_stylesheet_directory_uri() . '/css/admin.css', array(), wp_get_theme()->get( 'Version' ) ); +} + +/** + * Handles JavaScript detection. + * + * Adds a `js` class to the root `` element when JavaScript is detected. + * + * @since 1.1.0 + * + * @return void + */ +function js_detection() { + echo "\n"; +} + + +/** + * Add async/defer attributes to enqueued scripts that have the specified script_execution flag. + * + * @link https://core.trac.wordpress.org/ticket/12009 + * @param string $tag The script tag. + * @param string $handle The script handle. + * @return string + */ +function script_loader_tag( $tag, $handle ) { + $script_execution = wp_scripts()->get_data( $handle, 'script_execution' ); + + if ( ! $script_execution ) { + return $tag; + } + + if ( 'async' !== $script_execution && 'defer' !== $script_execution ) { + return $tag; + } + + // Abort adding async/defer for scripts that have this script as a dependency. _doing_it_wrong()? + foreach ( wp_scripts()->registered as $script ) { + if ( in_array( $handle, $script->deps, true ) ) { + return $tag; + } + } + + // Add the attribute if it hasn't already been added. + if ( ! preg_match( ":\s$script_execution(=|>|\s):", $tag ) ) { + $tag = preg_replace( ':(?=>):', " $script_execution", $tag, 1 ); + } + + return $tag; + +} + +/** + * Appends a link tag used to add a manifest.json to the head + * + * @return void + */ +function add_manifest() { + echo ""; +} + +function jetpack_scroll_settings() { + + $n = function ( $function ) { + return __NAMESPACE__ . "\\$function"; + }; + + add_theme_support( + 'infinite-scroll', + array( + 'container' => 'infinite', + 'type' => 'click', + 'footer' => false, + 'wrapper' => false, + 'render' => $n( 'infinite_post_render' ), + ) + ); + +} + +function jetpack_scroll_button( $settings ) { + $settings['text'] = esc_html__( 'Load More', 'ash' ); + return $settings; +} + + +/** + * Infinite Scroll render function + * + * @since 1.1.0 + * + * @return void + */ +function infinite_post_render() { + + while ( have_posts() ) { + the_post(); + + get_template_part( 'partials/loop' ); + } +} diff --git a/includes/utilities.php b/includes/utilities.php new file mode 100644 index 00000000..5f1ee8be --- /dev/null +++ b/includes/utilities.php @@ -0,0 +1,381 @@ + 'product', + 'tax_query' => array( + 'relation' => 'AND', + array( + 'taxonomy' => 'product_type', + 'field' => 'slug', + 'terms' => 'grouped', + ), + array( + 'taxonomy' => 'product_cat', + 'field' => 'term_id', + 'terms' => get_queried_object_id(), + ), + ), + ); + + $grouped_products = new \WP_Query( $grouped_products_args ); + + if ( $grouped_products->have_posts() ) { + return $grouped_products; + } else { + return ''; + } +} + +/** + * Display related posts and videos slider from a specified category. + * + * @param int $category_id + * @param int $count + * + * @return void|\WP_Query + * @since Fluval 1.0 + */ +function related_videos_articles( int $term_id = 0, int $count = 6 ) { + global $post; + + if ( empty( $post ) ) { + return; + } + + $current_post = $post->ID; + + if ( ! $term_id ) { + $term_id = get_primary_term_id(); + } + + $related_posts_args = array( + 'post_type' => 'post', + 'posts_per_page' => $count, + 'tax_query' => array( + array( + 'taxonomy' => 'category', + 'field' => 'term_id', + 'terms' => $term_id, + ), + ), + 'post__not_in' => array( $current_post ), + ); + + $related_posts = new \WP_Query( $related_posts_args ); + + if ( $related_posts->have_posts() ) { + get_template_part( 'partials/swiper/related-slider', null, array( 'posts' => $related_posts->posts ) ); + } +} + +/** + * Get the primary term ID of a given post. + * + * @param string $category + * @param int $post_id + * + * @return bool|int + * @since Fluval 1.0 + */ +function get_primary_term_id( string $category = 'category', int $post_id = 0 ) { + if ( ! $post_id ) { + global $post; + $post_id = $post->ID; + } + + if ( ! $post_id ) { + return false; + } + + $primary_term_id = false; + + // Attempt to get ID of the primary term from Yoast + if ( function_exists( 'yoast_get_primary_term_id' ) ) { + $primary_term_id = yoast_get_primary_term_id( $category, (int) $post_id ); + } + + if ( ! $primary_term_id || 1 === $primary_term_id ) { + // Yoast didnt have what we want, try get all the categories + $post_terms = get_the_terms( $post_id, $category ); + + if ( ! is_wp_error( $post_terms ) && false !== $post_terms ) { + // Grab the first term to return + $primary_term_id = $post_terms[0]->term_id; + + // Dont return Uncategorized + if ( 1 === $primary_term_id ) { + // Grab the next or reset the return value to false + if ( isset( $post_terms[1] ) ) { + $primary_term_id = $post_terms[1]->term_id; + } else { + $primary_term_id = false; + } + } + } + } + + return $primary_term_id; +} + +/** + * Get the primary term name of a given post. + * + * @param string $category + * @param int $post_id + * + * @return mixed + * @since Fluval 1.0 + */ +function get_primary_term_name( string $category = 'category', int $post_id = 0 ) { + $primary_term_id = get_primary_term_id( $category, $post_id ); + + if ( $primary_term_id ) { + $primary_term = get_term( $primary_term_id ); + $primary_term = $primary_term->name; + + return '' . $primary_term . ''; + } else { + return ''; + } +} + + +function get_paginated_links( $prev_text = '«', $next_text = '»' ) { + + global $wp_query; + + $big = 999999999; // Need an unlikely integer. + $pagination = ''; + $current = max( 1, get_query_var( 'paged' ) ); + + $pages = paginate_links( + array( + 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), + 'format' => '?paged=%#%', + 'current' => $current, + 'total' => $wp_query->max_num_pages, + 'type' => 'array', + 'prev_next' => true, + 'prev_text' => esc_html( $prev_text ), + 'next_text' => esc_html( $next_text ), + ) + ); + + if ( is_array( $pages ) ) { + $paged = ( get_query_var( 'paged' ) === 0 ) ? 1 : get_query_var( 'paged' ); + + $pagination .= ''; + } + + return $pagination; +} + +function fluval_cart_link() { + $off_canvas_trigger = ( ! is_cart() && ! is_checkout() ) ? 'off-canvas-trigger' : ''; + ?> + + title=""> + + + %d)', 'fluval' ), wp_kses_data( WC()->cart->get_cart_contents_count() ) ); ?> + + ID; + } + + if ( $duration = get_post_meta( $post_id, 'video_duration', true ) ) { + return $duration; + } + + $google_feed = wp_remote_get( "https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$videoID&key=" . YT_KEY ); + + if ( is_wp_error( $google_feed ) ) { + return ''; + } + + $video_duration = json_decode( wp_remote_retrieve_body( $google_feed ), true ); + + // If no duration can be found in the json die early. + if ( empty( $video_duration ) ) { + return ''; + } + + foreach ( $video_duration['items'] as $vidTime ) { + $video_duration = $vidTime['contentDetails']['duration']; + } + + if ( is_string( $video_duration ) ) { + preg_match_all( '/(\d+)/', $video_duration, $parts ); + } + + if ( empty( $parts ) ) { + return ''; + } + + $duration_parts = $parts[0]; + $duration_parts = array_filter( $duration_parts ); + + if ( $duration_parts[1] < 10 ) { + $duration_parts[1] = '0' . $duration_parts[1]; + } + + $duration = implode( ':', $duration_parts ); + + add_post_meta( $post_id, 'video_duration', $duration ); + + return $duration; + +} + +/** + * Get the product images for use on PDP primarily. + * + * @param \WC_Product|null $product The WooCommerce Product. + * + * @return array + */ +function fluval_get_products_images( $product = null ) { + + if ( ! $product ) { + global $product; + } + + $image_ids = array(); + $variations = array(); + + if ( ! $product ) { + return $image_ids; + } + + $attachment_ids = $product->get_gallery_image_ids(); + + if ( $product->is_type( 'variable' ) ) { + $variations = $product->get_available_variations(); + } + + if ( ! empty( wp_get_attachment_image( $product->get_image_id() ) ) ) { + $default_img_id = $product->get_image_id(); + $image_ids[ $default_img_id ] = 'default'; + } + + if ( ! empty( $variations ) ) { + foreach ( $variations as $variation ) { + $attribute_tag = array_key_first( $variation['attributes'] ); + + if ( empty( $attribute_tag ) ) { + continue; + } + + $variation_name = $variation['attributes'][ $attribute_tag ]; + + // If no label fall back to the key? + if ( empty( $variation_name ) ) { + $variation_name = $attribute_tag; + } + + $variation_image = $variation['image_id']; + + // Don't show hidden variations. + if ( $variation['variation_is_visible'] !== true ) { + continue; + } + + if ( array_key_exists( $variation_image, $image_ids ) ) { + $image_ids[ $variation_image ] = $image_ids[ $variation_image ] . ' img-for-' . $variation_name; + } else { + $image_ids[ $variation_image ] = 'img-for-' . $variation_name; + } + } + } + + foreach ( $attachment_ids as $attachment_id ) { + if ( ! array_key_exists( $attachment_id, $image_ids ) ) { + $image_ids[ $attachment_id ] = 'attachment'; + } + } + + return $image_ids; + +} diff --git a/js/ash.js b/js/ash.js deleted file mode 100644 index 193765b6..00000000 --- a/js/ash.js +++ /dev/null @@ -1,8 +0,0 @@ -/******/ (function() { // webpackBootstrap -var __webpack_exports__ = {}; -/*!**************************!*\ - !*** ./assets/js/ash.js ***! - \**************************/ - -/******/ })() -; \ No newline at end of file diff --git a/js/core.js b/js/core.js new file mode 100644 index 00000000..e0e76bf9 --- /dev/null +++ b/js/core.js @@ -0,0 +1 @@ +(function(){var __webpack_modules__={918:function(){eval("//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOTE4LmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGxpbmNocGluL2FzaC8uL2Fzc2V0cy9qcy9hc2guanM/ZGNiMSJdLCJzb3VyY2VzQ29udGVudCI6WyIiXSwibWFwcGluZ3MiOiIifQ==\n//# sourceURL=webpack-internal:///918\n")}},__webpack_exports__={};__webpack_modules__[918]()})(); \ No newline at end of file diff --git a/package.json b/package.json index cfb55d54..7294aba6 100755 --- a/package.json +++ b/package.json @@ -28,10 +28,10 @@ }, "repository": { "type": "git", - "url": "https://github.com/linchpin/linchpin-mmxxiii.git" + "url": "https://github.com/linchpin/ash.git" }, "bugs": { - "url": "https://github.com/linchpin/linchpin-mmxxiii/issues", + "url": "https://github.com/linchpin/ash/issues", "email": "dev@linchpin.com" }, "engines": { diff --git a/parts/footer.html b/parts/footer.html index bbf4643c..88a359ce 100644 --- a/parts/footer.html +++ b/parts/footer.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/parts/header.html b/parts/header.html index c6cfbb62..50c2e5bd 100644 --- a/parts/header.html +++ b/parts/header.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/patterns/404.php b/patterns/404.php index 77aa1a00..d9510503 100644 --- a/patterns/404.php +++ b/patterns/404.php @@ -1,14 +1,14 @@ -

+

-

+

diff --git a/patterns/footer-default-contrast-background.php b/patterns/footer-default-contrast-background.php index 82dad959..839a7ff4 100644 --- a/patterns/footer-default-contrast-background.php +++ b/patterns/footer-default-contrast-background.php @@ -1,7 +1,7 @@