/*
Also please follow this
Do your project have diferent charset languages to account with?
      - Yes -> follow https://projects.netcentric.biz/wiki/display/FRONTEND/CSS+-+Font+Normalization
      - No -> You can still use it, there are tons of advantages, but its create some extra css and layout rendering
*/
/*
  * Design spec:
  * https://www.figma.com/file/SR4rvQlNnCmPMrQ9WYaIqv/branch/TJqkFymq09wf8KwmY1WNcj/Volvo-AEM-Design-system?type=design&node-id=7-26&t=pAm916VRiqCOD2I1-0
*/
/**
 * z-indexes from lower to -> higher
 */
/* doc
---
title: Pixel to em
name: nn-px-to-em
category: functions
---

Calculate the em with a given pixel with the given base font size
If you don't set a $base the $base-font-size is used as the context

## Live Template abbreviations
---
-ptu

## Parameters
---
@parameter $value = pixel based number (without unit)
@parameter $base = pixel based number (without unit)

## Dependencies
---
nn-strip-unit

## Example
---
```html_example
nn-px-to-em(5) // Output: 0.3125em
nn-px-to-em(5, 10) // Output: 0.5em
nn-px-to-em(5, 20) // Output: 0.25em
```
*/
/* doc
---
title: Pixel to rem
name: nn-px-to-rem
category: functions
---

Calculate the rem with a given pixel with the given base font size

In:  5px
Out: 0.3125rem

## Live Template abbreviations
---
-rem

## Parameters
---
@parameter $value = pixel based number (without unit)

## Dependencies
---
nn-strip-unit

## Example
---
```html_example
nn-px-to-rem(5) // Output 0.3125rem
```

*/
/* doc
---
title: Pixel to unit
name: px-to-unit
category: mixins
---

Set a property and value (pixel based without unit)

Calculates rem / em / % from given pixel and base (default base is the
base-font-size, 16px)
If rtl is true, this mixin handles all the direction stuff:
- Switching the values, when we have exactly 4 values
- Switching left and right in properties (padding and margin)

## Live Template abbreviations
---
-ptu (for em or % to pixel - with base parameter)
-rem (for rem to pixel - without base parameter)

## Parameters
---
@parameter $property = padding | margin | font-size | width | height
@parameter $value = Pixel based number - add px to keep the px for a value
@parameter $base = px based number, Default: 16px
@parameter $unit = Set unit: px | em | rem | percent

## Dependencies
---
abstract/functions/swap-left-right
abstract/functions/strip-unit

## Example
---

```html_example
@include nn-px-to-unit(padding, 0 10px 20 0); => padding: 0 10px 1.25rem 0;
@include nn-px-to-unit(padding, 0 10 20 0); => padding: 0 0.625rem 1.25rem 0;
@include nn-px-to-unit(padding-left, 10);
@include nn-px-to-unit(padding-right, 10);
@include nn-px-to-unit(margin, 0 10 20 0);
@include nn-px-to-unit(margin-left, 10);
@include nn-px-to-unit(margin-right, 10);
@include nn-px-to-unit(font-size, 20);
@include nn-px-to-unit(width, 100);
@include nn-px-to-unit(min-width, 100);
@include nn-px-to-unit(mann-width, 100);
@include nn-px-to-unit(height, 100);
@include nn-px-to-unit(min-height, 100);
@include nn-px-to-unit(mann-height, 100);
```

## Source
---
http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/

*/
/* doc
---
title: Pixel to unitless
name: nn-px-to-unitless
category: functions
---

This makes the same calculation as px to em. But it don't print out the unit.

Use this for line-heights.

## Live Template abbreviations
---

## Parameters
---
@parameter $value = pixel based number (without unit)
@parameter $base = pixel based number (without unit)

## Dependencies
---

## Example
---

```html_example
line-height: nn-px-to-unitless(5) // Output: 0.3125
```

## Source
---

*/
/* doc
---
title: Strip unit
name: nn-strip-unit
category: functions
---

Strips of the unit of a number

## Parameters
---
@parameter $num = number with unit (5px, 5em, 5rem)

## Example
---

```html_example
nn-strip-unit(5px) //Output: 5
nn-strip-unit(10em) // Output: 10
nn-strip-unit(15rem) // Output: 15
```

*/
/* doc
---
title: z-index
name: nn-z-index
category: functions
---

Because z-indices can get tricky we manage them in the theme.scss globally.

Always use this mixin to set set a z-index.

Read the Best Practice to get an full documentation:
https://projects.netcentric.biz/wiki/display/FRONTEND/How+to+set+a+z-index

## Live Template abbreviations
---
-z

## Parameters
---
@parameter $element = Name of the element (normally this will be the module name for the main stack)
@parameter $list = Name of the list (default $z-indices). Must be only set for stack context
@parameter $min = Set a minimum z-index which will be added to the list.

## Dependencies
---
$z-indices variable in the theme.scss

## Example
---

```html_example

// In the SASS theme file

$z-indices: slider, modal, dialog, navigation;

// In the SASS module file

.modal {
    &__base {
        position: absolute;
        z-index: nn-z-index(modal);
    }
}
```

## Source
---
http://www.smashingmagazine.com/2014/06/12/sassy-z-index-management-for-complex-layouts/

*/
/* doc
---
title: remove every unit
name: strip-unit
category: functions
---
remove all units

## Parameters
---
@parameter $number = number with unit

## Example
---
```html_example
strip-unit(5px) // Output: 5
```
*/
/*
    This mixin converts any unitless number (for example 40) to the correct unit, according to the given axis.

    Parameters:
    - $value: unitless number to be converted. A unit in $value will correspond to a px in the browser,
        no matter if it's output as px or rem

    Returns
    - Horizontal: will convert the number to pixels (40px)
    - Vertical: will convert the number to rem (if rem === 16px, then 40 will be converted to 2.5 rem)
*/
/*
    Converts a unitless number to the corresponding unit on the horizontal axis.
    By default will convert the value to px.
*/
/*
    Converts a unitless number to the corresponding unit on the vertical axis.
    By default will convert the value to rem.
*/
/* stylelint-disable */
/* doc
---
title: Swap left right values
name: swap-left-right-values
category: functions
---

Swap the values for right and left when $rtl is set to true:

In:  0 5px 8px 12px
Out: 0 12px 8px 5px (in rtl)

## Parameters
---
@parameter $values = 4 numbers (works with all units)

## Example
---

```html_example
swap-left-right-values(0 1px 8px 12px) // 0 12px 8px 1px
swap-left-right-values(0 1em 8em 12em) // 0 12em 8em 1em
wap-left-right-values(0 1rem 8rem 12rem) // 0 12rem 8rem 1rem
```

## Source
---
http://stackoverflow.com/questions/14199323/right-to-left-rtl-support-in-sass-project

*/
/* stylelint-disable */
/* doc
---
title: Swap left right names
name: swap-left-right-names
category: functions
---

Swap the names right and left when $rtl is set to true.
If the value is not right or left it returns the original value.

In:  right
Out: left (in rtl), right (in ltr)

## Live Template abbreviations
---

## Parameters
---
@parameter $origin = right | left

## Example
---

```html_example
swap-left-right-name(left)
swap-left-right-name(right)
```

## Source
---
http://stackoverflow.com/questions/14199323/right-to-left-rtl-support-in-sass-project

*/
/*  List of CSS properties that will always be output at least as 2 different values
    in order to be able to convert each one to the correct axis unit */
/*
    Mixin for automatically handling spacings around/between elements.

    This mixin will automatically invert the lef/right directions in RTL languages.
    Also, the unitless values will be converted to the proper unit according to the axis

    Parameters:
    - $property-name: name of the CSS property that should be output. Supported properties are:
        margin, margin-top, margin-right, margin-bottom, margin-left
        padding, padding-top, padding-right, padding-bottom, padding-left
        width, height, min-width, max-width, min-height, min-height
    - $value: value that will be output as part of the given property. Supported values are:
        Unitless number (40): this should be used most of the times. It will automatically be converted
            to the correct unit depending on the axis where it's used (horizontal axis => px, vertical axis => rem).
            Each unit in $value will correspond to a px in the browser, no matter to which unit it will be converted.
        Number with unit (40px, 40%...): the number and the unit will be preserved and only the left/right inversion
            will be done for RTL languages
        List of values (40 30% 20 10): margin and padding shorthands whith multiple values are supported.
            The left/right values will be automatically swapped in RTL and the unitless numbers will be converted
            to the corresponding unit. Unitless and numbers with units can be mixed in the same call.
        Using calc() in any of the previous examples is supported, although no unit conversion will be done

 ## Example
---

```html_example
@include spacing(padding, 0 10px 20 0); => padding: 0 10px 2rem 0;
@include spacing(padding, 0 10 20 0); => padding: 0 10px 2rem 0;
@include spacing(padding-left, 10);
@include spacing(padding-right, 10);
@include spacing(margin, 0 10 20 0);
@include spacing(margin-left, 10);
@include spacing(margin-right, 10);
@include spacing(width, 100);
@include spacing(min-width, 100);
@include spacing(max-width, 100);
@include spacing(height, 100);
@include spacing(min-height, 100);
@include spacing(max-height, 100);
```
*/
/* doc
---
title: Clearfix
name: clearfix
category: mixins
---

Clears after floating element

Use this mixin only inside media queries where you can't use the
abstract/extends/utils/_clearfix version, which adds less code to css

## Live Template abbreviations
---

## Example
---

```html_example
@include clearfix;
```

## Source
---
https://css-tricks.com/snippets/css/clear-fix/
*/
/* stylelint-disable string-no-newline */
/* doc
---
title: focus color
name: focus color
category: mixins
---

Add a focus color when keyboard-focus is activated
## Parameters
---
@param $number

*/
/* doc
---
title: ignore-container
name: ignore-container
category: mixins
---

Set full page width for something inside a container

## Parameters
---
@param $container-size
@param $gutter

*/
/* Generates all the rules for the grid columns up to the given amount of column */
/* Generates all the rules for the grid column offset up to the given amount of column */
/* Generates all the rules for the grid and columns for the given break point and total of columns */
/* API function to be called to generate a grid config */
/* doc
---
type: button type
state: state button
---

Button styles

Use this mixin for button styles: color text, background, border

## Example
---

```html_example
@include button(primary);
```
*/
/* doc
---
lineLimit: This value specifies the number of lines after which the content will be clamped. It must be greater than 0.
---

Truncates text at a specific number of lines.

Use this mixin to hide long text.

## Example
---

```html_example
@include line-clamp($lineLimit: 4);
```
*/
/* typography
---
title: typography
name: Typography
category: mixins
---

Adds font CSS properties by a map provided

## Parameters
---
@param $t-style
@param $is-important: false

* $t-style is expected to be a map with 'default' and 'breakpoint[s]' submaps with a property
for every css property to be set.
* $is-important parameter allows to force typography properties to be set as !important
Try to avoid its use, but it might be needed for situations where styles for a component
are very specific and to overwrite the generic ones is too complex (if they have a lot of specificity)

*/
/* doc
---
title: hidden
name: hidden
category: mixins
---

Hide from both screenreaders and browsers: h5bp.com/u
## Parameters
---

*/
/* doc
---
title: overlay
name: overlay
category: mixins
---

Creates an overlay with the provided background color
## Parameters
---
@param $bgColor

*/
/**
 * @mixin top-bottom-border
 * @desc Creates a dynamic and customizable border at the specified position on an element.
 *
 * @param {string} $position - Optional, Default: 'bottom'. Defines the position of the border. Accepts values 'top' or 'bottom'.
 * @param {color} $color - Optional, Default: '$c-black'. Specifies the color of the border. Accepts any valid CSS color value.
 * @param {length} $width - Optional, Default: '2px'. Sets the width of the border. Accepts any valid CSS length value.
 * @param {length} $margin - Optional, Default: '0'. Adds margin to the border. Accepts any valid CSS length value.
 *
 * @example
 *   .example-element {
 *       @include top-bottom-border($position: top, $color: $c-grey-two, $width: 3px, $margin: 10px);
 *   }
 */
/* doc
---
title: reset-fullwidth-margins
name: reset-fullwidth-margins
category: mixins
---

Reset margins for full width components inside a Container or a Column Control
*/
/* doc
---
title: visually hidden
name: visually hidden
category: mixins
---

Hidden from browsers but accessible to screen readers
## Parameters
---

*/
.teaser:not(.teaser--hero):not(.teaser--layout-top) {
  --teaser-height: 300px;
}
@media (min-width: 960px) {
  .teaser:not(.teaser--hero):not(.teaser--layout-top) {
    --teaser-height: 440px;
  }
}

.cmp-teaser {
  position: relative;
  display: flex;
  align-items: center;
  min-height: var(--teaser-height);
}
@media (min-width: 960px) {
  .cmp-teaser {
    margin: 0;
  }
}
.cmp-teaser__content {
  padding-block: 3.75rem;
  padding-inline: 30px;
  pointer-events: none;
  z-index: 2;
  position: relative;
}
.cmp-teaser__content.is-hidden {
  display: none;
}
@media (max-width: 767px) {
  .cmp-carousel__item .cmp-teaser__content {
    padding-block: 0;
    padding-inline: 56px;
  }
}
.cmp-teaser__title {
  margin-block-end: 25px;
}
[data-dealer-private] .cmp-teaser__title {
  letter-spacing: -0.1px;
}
.cmp-teaser__description {
  font-family: var(--ff-regular);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: var(--ls-default);
  color: #53565a;
  margin-block-start: 1em;
}
.cmp-teaser__description a {
  color: #004fbc;
}
.cmp-teaser__description a:hover, .cmp-teaser__description a:focus {
  color: #0056d6;
}
.cmp-teaser__description ul,
.cmp-teaser__description ol {
  padding-inline-start: 32px;
}
.cmp-teaser__description ul {
  list-style: disc;
}
.cmp-teaser__description ol {
  list-style: decimal;
}
.cmp-teaser__description h1,
.cmp-teaser__description h2,
.cmp-teaser__description h3,
.cmp-teaser__description h4,
.cmp-teaser__description h5,
.cmp-teaser__description h6 {
  color: #53565a;
}
.cmp-teaser__action-container {
  margin-block-start: 1em;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.teaser__cta--link .cmp-teaser__action-container {
  flex-direction: column;
}
.cmp-teaser__action-link {
  pointer-events: all;
  border-radius: 4px;
}
.cmp-teaser__action-link::after {
  margin-inline-start: 10px;
  display: inline-block;
  position: relative;
  inset-block-start: -2px;
  width: 24px !important;
  height: 24px !important;
  vertical-align: middle;
  pointer-events: all !important;
}
.teaser__cta--link .cmp-teaser__action-link::after {
  margin-inline-end: -34px;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding-block: 12px;
  padding-inline: 32px;
  background: #004fbc;
  border: 1px solid #004fbc;
  color: #fff;
  transition: background 1s;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:hover, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:focus {
  color: #fff;
  background: #0056d6;
  border: 1px solid #0056d6;
  text-decoration: none;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:hover::after, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:focus::after {
  transform: var(--button-icon-transform-hover);
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child::after {
  transform: var(--button-icon-transform);
  transition: transform 0.3s ease-out;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:active {
  background: #0041a3;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:active, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:focus, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:focus-visible {
  outline: 2px solid #0041a3;
  outline-offset: 3px;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:disabled, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child.disabled {
  background: #8dc9bf;
  border: 1px solid #8dc9bf;
  cursor: not-allowed;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child[target=_blank]:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child[target=_blank]:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child[target=_blank]::after {
  background-color: #fff;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser__cta--video) .cmp-teaser__action-link:first-child::after {
  background-color: #fff;
}
.cmp-teaser__action-link:not(:first-child) {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding-block: 12px;
  padding-inline: 32px;
  background: #fff;
  border: 1px solid #53565a;
  color: #53565a;
  transition: background 1s;
  padding-inline-end: 1.3125rem;
}
.cmp-teaser__action-link:not(:first-child):hover, .cmp-teaser__action-link:not(:first-child):focus {
  background: #f7f7f7;
  text-decoration: none;
  color: #53565a;
}
.cmp-teaser__action-link:not(:first-child):hover::after, .cmp-teaser__action-link:not(:first-child):focus::after {
  transform: var(--button-icon-transform-hover);
}
.cmp-teaser__action-link:not(:first-child):active {
  background: #e1dfdd;
}
.cmp-teaser__action-link:not(:first-child):active, .cmp-teaser__action-link:not(:first-child):focus, .cmp-teaser__action-link:not(:first-child):focus-visible {
  outline: 2px solid #0041a3;
  outline-offset: 3px;
}
.cmp-teaser__action-link:not(:first-child)::after {
  transform: var(--button-icon-transform);
  transition: transform 0.3s ease-out;
}
.cmp-teaser__action-link:not(:first-child):disabled, .cmp-teaser__action-link:not(:first-child).disabled {
  border: 1px solid #888b8d;
  color: #888b8d;
}
.cmp-teaser__action-link:not(:first-child):after {
  background-color: #53565a;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .cmp-teaser__action-link:not(:first-child):after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.cmp-teaser__action-link:not(:first-child)[target=_blank]:after {
  background-color: #53565a;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .cmp-teaser__action-link:not(:first-child)[target=_blank]:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser--layout-top) .cmp-teaser__action-link:not(:first-child) {
  color: #53565a;
}
.teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser--layout-top) .cmp-teaser__action-link:not(:first-child)::after, .teaser:not(.teaser__cta--secondary):not(.teaser__cta--link):not(.teaser--layout-top) .cmp-teaser__action-link:not(:first-child)[target=_blank]::after {
  background-color: #53565a;
}
.cmp-teaser__embed, .cmp-teaser__image {
  position: absolute;
  inset: 0;
}
.cmp-teaser__embed .embed__youtube:not(.embed__youtube--withThumbnail) {
  aspect-ratio: auto;
}
.cmp-teaser__embed .embed__youtube__thumbnail {
  min-height: var(--teaser-height);
  max-height: var(--teaser-height);
}
.cmp-teaser__embed .embed__youtube iframe,
.cmp-teaser__embed iframe {
  max-width: 100%;
  height: var(--teaser-height);
}
.cmp-teaser__embed + .cmp-teaser__content {
  pointer-events: none;
}
.cmp-teaser__embed .cmp-embed > * {
  margin: 0;
}
.cmp-teaser__image img,
.cmp-teaser__image .cmp-image,
.cmp-teaser__image .cmp-image__image {
  object-fit: cover;
  object-position: center;
  width: 100%;
  height: 100%;
}
.cmp-teaser__image .cmp-image video, .cmp-teaser__image .cmp-image__image video {
  height: 100%;
}
.cmp-teaser__image .cmp-image .s7dm-dynamic-media video, .cmp-teaser__image .cmp-image__image .s7dm-dynamic-media video {
  inset-block-start: 0 !important;
  inset-inline-start: 0 !important;
  min-width: 100% !important;
  min-height: 100% !important;
}
.cmp-teaser__image .cmp-image .img__link {
  width: 100%;
}

.teaser:not(.teaser--layout-top):not(.stage).teaser__text--center .cmp-teaser__content {
  max-width: 820px;
}
.teaser:not(.teaser--layout-top):not(.stage) .cmp-teaser__content {
  max-width: 620px;
}
@media (min-width: 960px) {
  .carousel .teaser:not(.teaser--layout-top):not(.stage) .cmp-teaser__content {
    width: 50%;
    max-width: none;
  }
}
.collage .teaser:not(.teaser--layout-top):not(.stage) .cmp-teaser__content {
  width: 100%;
  max-width: none;
}

.teaser:not(.teaser__cta--link) .cmp-teaser__action-container {
  margin-block-start: 25px;
}

.teaser--hero {
  --teaser-height: 440px;
}
@media (min-width: 960px) {
  .teaser--hero {
    --teaser-height: 600px;
  }
}

.teaser--layout-top .cmp-teaser {
  display: block;
}
.teaser--layout-top .cmp-teaser__content {
  position: static;
  transform: none;
  pointer-events: all;
  padding-block: 1em;
  padding-inline: 0;
}
.teaser--layout-top .cmp-teaser__image, .teaser--layout-top .cmp-teaser__embed {
  position: relative;
  aspect-ratio: 16/9;
}
.teaser--layout-top .cmp-teaser__embed iframe {
  aspect-ratio: 16/9;
  height: auto;
}
.teaser--layout-top.teaser__cta--video .cmp-teaser__action-container {
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  margin-block-start: 0;
  height: 0;
  padding-block-start: 57%;
}
.teaser--layout-top.teaser__cta--video .cmp-teaser__action-container .cmp-teaser__action-link {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  width: 75px;
  height: 75px;
  margin-block: -25px 0;
  margin-inline: -40px 0;
}
.teaser--layout-top.teaser__cta--video .cmp-teaser__action-container .cmp-teaser__action-link::before {
  font-size: 34px;
}

.teaser__cta--secondary .cmp-teaser__action-link {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding-block: 12px;
  padding-inline: 32px;
  background: #fff;
  border: 1px solid #53565a;
  color: #53565a;
  transition: background 1s;
  padding-inline-end: 1.3125rem;
}
.teaser__cta--secondary .cmp-teaser__action-link:hover, .teaser__cta--secondary .cmp-teaser__action-link:focus {
  background: #f7f7f7;
  text-decoration: none;
  color: #53565a;
}
.teaser__cta--secondary .cmp-teaser__action-link:hover::after, .teaser__cta--secondary .cmp-teaser__action-link:focus::after {
  transform: var(--button-icon-transform-hover);
}
.teaser__cta--secondary .cmp-teaser__action-link:active {
  background: #e1dfdd;
}
.teaser__cta--secondary .cmp-teaser__action-link:active, .teaser__cta--secondary .cmp-teaser__action-link:focus, .teaser__cta--secondary .cmp-teaser__action-link:focus-visible {
  outline: 2px solid #0041a3;
  outline-offset: 3px;
}
.teaser__cta--secondary .cmp-teaser__action-link::after {
  transform: var(--button-icon-transform);
  transition: transform 0.3s ease-out;
}
.teaser__cta--secondary .cmp-teaser__action-link:disabled, .teaser__cta--secondary .cmp-teaser__action-link.disabled {
  border: 1px solid #888b8d;
  color: #888b8d;
}
.teaser__cta--secondary .cmp-teaser__action-link:after {
  background-color: #53565a;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .teaser__cta--secondary .cmp-teaser__action-link:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaser__cta--secondary .cmp-teaser__action-link[target=_blank]:after {
  background-color: #53565a;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .teaser__cta--secondary .cmp-teaser__action-link[target=_blank]:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}
.teaser__cta--video .cmp-teaser {
  position: relative;
}
.teaser__cta--video .cmp-teaser__action-link {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  width: 75px;
  height: 75px;
  font-size: 0;
  text-align: center;
  color: #53565a;
  background-color: #e1dfdd;
  border-radius: 50%;
  box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.3);
  transition: background-color 0.3s;
  padding: 0;
  border: 0;
  width: 50px;
  height: 50px;
  color: #fff;
}
.teaser__cta--video .cmp-teaser__action-link:before {
  font-family: "VolvoIcons";
  content: "\e911";
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  vertical-align: baseline;
  display: inline-block;
  line-height: 0;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
@media (min-width: 960px) {
  .teaser__cta--video .cmp-teaser__action-link {
    width: 50px;
    height: 50px;
  }
}
.teaser__cta--video .cmp-teaser__action-link:hover, .teaser__cta--video .cmp-teaser__action-link:focus {
  color: #53565a;
  background-color: #e1dfdd;
  border: 0;
}
.teaser__cta--video .cmp-teaser__action-link:hover::before, .teaser__cta--video .cmp-teaser__action-link:focus::before {
  transform: scale(1.1);
}
.teaser__cta--video .cmp-teaser__action-link::before {
  margin-inline-start: 4px;
  font-size: 34px;
  line-height: 2.2;
  transition: transform 0.3s ease-in-out;
}
@media (min-width: 960px) {
  .teaser__cta--video .cmp-teaser__action-link::before {
    font-size: 23px;
  }
}
html[dir=rtl] .teaser__cta--video .cmp-teaser__action-link::before {
  margin-inline-start: -4px;
}
.teaser__cta--video .cmp-teaser__action-link::before {
  font-size: 23px;
  margin-inline-start: 4px;
}
.teaser__cta--video .cmp-teaser__action-link::after {
  content: none;
  opacity: 0;
}
.teaser__cta--video .cmp-teaser__action-container {
  text-align: center;
}
.teaser__cta--video:not(.teaser--layout-top) .cmp-teaser__action-container {
  margin-block-start: 25px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}
.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link {
  font-family: var(--ff-regular);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: var(--ls-default);
  padding: 0;
  color: #004fbc;
  background: transparent;
  border: 0;
}
.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link::after {
  font-size: 16px;
  transition: transform 0.3s ease-out;
  display: inline-block;
  content: "";
  transform: var(--button-icon-transform);
}
.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link:hover::after {
  transform: var(--button-icon-transform-hover);
}
.teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link[target=_blank]:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaser__cta--link:not(.teaser__cta--secondary) .cmp-teaser__action-link[target=_blank]:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}

.teaser__img--full .cmp-teaser__image {
  margin-block: 0;
  margin-inline: -15px;
}
@media (min-width: 960px) {
  .teaser__img--full .cmp-teaser__image {
    margin-block: 0;
    margin-inline: -15px;
  }
}
@media (min-width: 1200px) {
  .teaser__img--full .cmp-teaser__image {
    width: auto;
    margin-block: 0;
    margin-inline: calc((100vw - 1200px) / -2);
  }
}
@media (min-width: 2048px) {
  .teaser__img--full .cmp-teaser__image {
    width: auto;
    margin-block: 0;
    margin-inline: calc((2048px - 1200px) / -2);
  }
  .container--fullWidth .teaser__img--full .cmp-teaser__image {
    margin: 0;
  }
  .columncontrol__column:first-child .teaser__img--full .cmp-teaser__image {
    margin-inline-end: 0;
  }
  .columncontrol__column:last-child .teaser__img--full .cmp-teaser__image {
    margin-inline-start: 0;
  }
}

.teaser__overlay--dark.teaser .cmp-image img, .teaser__overlay--dark.teaser--hero .cmp-image img {
  filter: brightness(50%);
}
.teaser__overlay--lighter-dark.teaser .cmp-image img, .teaser__overlay--lighter-dark.teaser--hero .cmp-image img {
  filter: brightness(80%);
}

.teaser {
  --teaser-kicker-bg-color: transparent;
  --teaser-kicker-padding: 0;
}
.teaser__kicker--bg-white, .teaser__kicker--bg-black {
  --teaser-kicker-padding: 8px;
}
.teaser__kicker--bg-white {
  --teaser-kicker-bg-color: #fff;
}
.teaser__kicker--bg-black {
  --teaser-kicker-bg-color: #141414;
}
.teaser__text--right:not(.teaser--layout-top) .cmp-teaser {
  justify-content: flex-end;
}
.teaser__text--right .cmp-teaser__content {
  text-align: start;
}
.teaser__text--center .cmp-teaser {
  justify-content: center;
}
.teaser__text--center .cmp-teaser__content {
  text-align: center;
}
@media (min-width: 768px) {
  .teaser__text--center .cmp-teaser__content .cmp-teaser__description {
    max-width: 500px;
    margin-block: 0;
    margin-inline: auto;
  }
}
@media (min-width: 960px) {
  .teaser__text--center .cmp-teaser__content .cmp-teaser__description {
    max-width: 820px;
    margin-block: 0;
    margin-inline: auto;
  }
}
.teaser__text--center .cmp-teaser__content .cmp-teaser__action-container {
  justify-content: center;
}
.teaser__text--white .cmp-teaser__description {
  color: #fff;
}
.teaser__text--white .cmp-teaser__description h1,
.teaser__text--white .cmp-teaser__description h2,
.teaser__text--white .cmp-teaser__description h3,
.teaser__text--white .cmp-teaser__description h4,
.teaser__text--white .cmp-teaser__description h5,
.teaser__text--white .cmp-teaser__description h6 {
  color: #fff;
}
.teaser__text--white .cmp-teaser__title {
  color: #fff;
}
.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:not(.img__link) {
  color: #fff;
}
.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:not(.img__link):after {
  background-color: #fff;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:not(.img__link):after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:not(.img__link)[target=_blank]:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser a:not(.img__link)[target=_blank]:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/link-external.svg#link-external-icon-w16-view");
  }
}
.teaser__text--white:not(.teaser__cta--secondary):not(.teaser--layout-top) .cmp-teaser .video__link {
  position: absolute;
}
.teaser__text--white.teaser--layout-top .cmp-teaser__description {
  color: #53565a;
}
.teaser__text--white.teaser--layout-top .cmp-teaser__description h1,
.teaser__text--white.teaser--layout-top .cmp-teaser__description h2,
.teaser__text--white.teaser--layout-top .cmp-teaser__description h3,
.teaser__text--white.teaser--layout-top .cmp-teaser__description h4,
.teaser__text--white.teaser--layout-top .cmp-teaser__description h5,
.teaser__text--white.teaser--layout-top .cmp-teaser__description h6 {
  color: #141414;
}
.teaser__text--white.teaser--layout-top .cmp-teaser__title {
  color: #141414;
}
.teaser .cmp-teaser__title {
  font-family: var(--ff-broad);
  font-size: 48px;
  font-weight: 500;
  line-height: 0.95;
  letter-spacing: var(--ls-volvo);
  margin-block-end: 25px;
}
.teaser .cmp-teaser__title-kicker {
  font-family: var(--ff-medium);
  font-size: 20px;
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: var(--ls-default);
  background-color: var(--teaser-kicker-bg-color);
  padding: var(--teaser-kicker-padding);
  display: inline-block;
  margin-block-end: 12px;
}
.teaser__title--volvonovum .cmp-teaser__title, .teaser--layout-top:not(.teaserlist) .cmp-teaser__title {
  font-family: var(--ff-medium);
  font-size: 27px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--ls-default);
}
@media (min-width: 768px) {
  .teaser__title--volvonovum .cmp-teaser__title, .teaser--layout-top:not(.teaserlist) .cmp-teaser__title {
    font-size: 32px;
  }
}

.teaser.aem-GridColumn {
  --component-margin-block-start: 30px;
  --component-margin-block-end: 30px;
}
.teaser.aem-GridColumn.margin-top--none {
  --component-margin-block-start: 0;
}
.teaser.aem-GridColumn.margin-top--single {
  --component-margin-block-start: 30px;
}
.teaser.aem-GridColumn.margin-top--double {
  --component-margin-block-start: 30px;
}
@media (min-width: 768px) {
  .teaser.aem-GridColumn.margin-top--double {
    --component-margin-block-start: calc(30px * 2);
  }
}
.teaser.aem-GridColumn.margin-bottom--none {
  --component-margin-block-end: 0;
}
.teaser.aem-GridColumn.margin-bottom--single {
  --component-margin-block-end: 30px;
}
.teaser.aem-GridColumn.margin-bottom--double {
  --component-margin-block-end: 30px;
}
@media (min-width: 768px) {
  .teaser.aem-GridColumn.margin-bottom--double {
    --component-margin-block-end: calc(30px * 2);
  }
}
.teaser.aem-GridColumn .cmp-teaser {
  margin-block: var(--component-margin-block-start) var(--component-margin-block-end);
}
.aem-Grid > .teaser.aem-GridColumn:first-child:not(.margin-top--single):not(.margin-top--double) .cmp-teaser {
  margin-block-start: 0;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9faW1wb3J0X3ZhcmlhYmxlcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvdmFyaWFibGVzL190eXBvZ3JhcGhpZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9fel9pbmRleC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by1lbS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by1yZW0uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fbm4tcHgtdG8tdW5pdC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by11bml0bGVzcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1zdHJpcC11bml0LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX25uLXotaW5kZXguc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3RyaXAtdW5pdC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19weC10by1heGlzLXVuaXQuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3dhcC1sZWZ0LXJpZ2h0LXZhbHVlcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19zd2FwLWxlZnQtcmlnaHQtbmFtZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3BhY2luZy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19jbGVhcmZpeC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19mb250LWljb24uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fZm9jdXMtY29sb3Iuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9faWdub3JlLWNvbnRhaW5lci5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19nZW5lcmF0ZS1hZW0tZ3JpZC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19idXR0b24uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fbGluZS1jbGFtcC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL190eXBvZ3JhcGh5LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2hpZGRlbi5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19vdmVybGF5LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX3RvcC1ib3R0b20tYm9yZGVyLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX3Jlc2V0LWZ1bGx3aWR0aC1tYXJnaW5zLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX3Zpc3VhbGx5LWhpZGRlbi5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3N0eWxlcy9fbGF5b3V0LWRlZmF1bHQuc2NzcyIsIi4uL3RhcmdldC92YXVsdC13b3JrL2pjcl9yb290L2FwcHMvdm9sdm8vY2xpZW50bGlicy9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L3RlYXNlci90ZWFzZXIuYnVuZGxlLmNzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9idWlsZC9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy92YXJpYWJsZXMvX3R5cG9ncmFwaHktc2V0dGluZ3Muc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9fY29sb3JzLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy92YXJpYWJsZXMvX21pc2Muc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2xpYi92b2x2b2ljb25zL192YXJpYWJsZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L3RlYXNlci9zdHlsZXMvX21peGlucy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3N0eWxlcy9fbGF5b3V0LWhlcm9zdGFuZGFyZC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3N0eWxlcy9fbGF5b3V0LXRvcC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3N0eWxlcy9fY3Rhc3R5bGUuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L3RlYXNlci9zdHlsZXMvX21lZGlhc2l6ZS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3N0eWxlcy9fb3ZlcmxheS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VyL3N0eWxlcy9fdGV4dC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19jb21wb25lbnQtdG9wLWJvdHRvbS1tYXJnaW4uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Q0FBQTtBQ0ZBOzs7Q0FBQTtBQ0VBOztFQUFBO0FDRkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7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OXVDSTtFWWhESTtJQUlRLDhDQUFBO0ViOHhDZDtBQUNGO0FhM3hDUTtFQUNJLCtCQUFBO0FiNnhDWjtBYTF4Q1E7RUFDSSxrQ0FBQTtBYjR4Q1o7QWF6eENRO0VBQ0ksa0NBQUE7QWIyeENaO0FDNXZDSTtFWWhDSTtJQUlRLDRDQUFBO0ViNHhDZDtBQUNGO0FhenhDUTtFQUNJLG1GQUFBO0FiMnhDWjtBYW54Q2dCO0VBQ0kscUJBQUE7QWJxeENwQiIsImZpbGUiOiIuLi90YXJnZXQvdmF1bHQtd29yay9qY3Jfcm9vdC9hcHBzL3ZvbHZvL2NsaWVudGxpYnMvc2hhcmVkL2NvbXBvbmVudHMvY29udGVudC90ZWFzZXIvdGVhc2VyLmJ1bmRsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIi8qXG5BbHNvIHBsZWFzZSBmb2xsb3cgdGhpc1xuRG8geW91ciBwcm9qZWN0IGhhdmUgZGlmZXJlbnQgY2hhcnNldCBsYW5ndWFnZXMgdG8gYWNjb3VudCB3aXRoP1xuICAgICAgLSBZZXMgLT4gZm9sbG93IGh0dHBzOi8vcHJvamVjdHMubmV0Y2VudHJpYy5iaXovd2lraS9kaXNwbGF5L0ZST05URU5EL0NTUystK0ZvbnQrTm9ybWFsaXphdGlvblxuICAgICAgLSBObyAtPiBZb3UgY2FuIHN0aWxsIHVzZSBpdCwgdGhlcmUgYXJlIHRvbnMgb2YgYWR2YW50YWdlcywgYnV0IGl0cyBjcmVhdGUgc29tZSBleHRyYSBjc3MgYW5kIGxheW91dCByZW5kZXJpbmdcbiovXG4vKlxuICAqIERlc2lnbiBzcGVjOlxuICAqIGh0dHBzOi8vd3d3LmZpZ21hLmNvbS9maWxlL1NSNHJ2UWxObkNtUE1yUTlXWWFJcXYvYnJhbmNoL1RKcWtGeW1xMDl3ZjhLd21ZMVdOY2ovVm9sdm8tQUVNLURlc2lnbi1zeXN0ZW0/dHlwZT1kZXNpZ24mbm9kZS1pZD03LTI2JnQ9cEFtOTE2VlJpcUNPRDJJMS0wXG4qL1xuLyoqXG4gKiB6LWluZGV4ZXMgZnJvbSBsb3dlciB0byAtPiBoaWdoZXJcbiAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBQaXhlbCB0byBlbVxubmFtZTogbm4tcHgtdG8tZW1cbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5DYWxjdWxhdGUgdGhlIGVtIHdpdGggYSBnaXZlbiBwaXhlbCB3aXRoIHRoZSBnaXZlbiBiYXNlIGZvbnQgc2l6ZVxuSWYgeW91IGRvbid0IHNldCBhICRiYXNlIHRoZSAkYmFzZS1mb250LXNpemUgaXMgdXNlZCBhcyB0aGUgY29udGV4dFxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXB0dVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5AcGFyYW1ldGVyICRiYXNlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5ubi1zdHJpcC11bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5ubi1weC10by1lbSg1KSAvLyBPdXRwdXQ6IDAuMzEyNWVtXG5ubi1weC10by1lbSg1LCAxMCkgLy8gT3V0cHV0OiAwLjVlbVxubm4tcHgtdG8tZW0oNSwgMjApIC8vIE91dHB1dDogMC4yNWVtXG5gYGBcbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHJlbVxubmFtZTogbm4tcHgtdG8tcmVtXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuQ2FsY3VsYXRlIHRoZSByZW0gd2l0aCBhIGdpdmVuIHBpeGVsIHdpdGggdGhlIGdpdmVuIGJhc2UgZm9udCBzaXplXG5cbkluOiAgNXB4XG5PdXQ6IDAuMzEyNXJlbVxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXJlbVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5ubi1zdHJpcC11bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5ubi1weC10by1yZW0oNSkgLy8gT3V0cHV0IDAuMzEyNXJlbVxuYGBgXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHVuaXRcbm5hbWU6IHB4LXRvLXVuaXRcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5TZXQgYSBwcm9wZXJ0eSBhbmQgdmFsdWUgKHBpeGVsIGJhc2VkIHdpdGhvdXQgdW5pdClcblxuQ2FsY3VsYXRlcyByZW0gLyBlbSAvICUgZnJvbSBnaXZlbiBwaXhlbCBhbmQgYmFzZSAoZGVmYXVsdCBiYXNlIGlzIHRoZVxuYmFzZS1mb250LXNpemUsIDE2cHgpXG5JZiBydGwgaXMgdHJ1ZSwgdGhpcyBtaXhpbiBoYW5kbGVzIGFsbCB0aGUgZGlyZWN0aW9uIHN0dWZmOlxuLSBTd2l0Y2hpbmcgdGhlIHZhbHVlcywgd2hlbiB3ZSBoYXZlIGV4YWN0bHkgNCB2YWx1ZXNcbi0gU3dpdGNoaW5nIGxlZnQgYW5kIHJpZ2h0IGluIHByb3BlcnRpZXMgKHBhZGRpbmcgYW5kIG1hcmdpbilcblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cbi1wdHUgKGZvciBlbSBvciAlIHRvIHBpeGVsIC0gd2l0aCBiYXNlIHBhcmFtZXRlcilcbi1yZW0gKGZvciByZW0gdG8gcGl4ZWwgLSB3aXRob3V0IGJhc2UgcGFyYW1ldGVyKVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHByb3BlcnR5ID0gcGFkZGluZyB8IG1hcmdpbiB8IGZvbnQtc2l6ZSB8IHdpZHRoIHwgaGVpZ2h0XG5AcGFyYW1ldGVyICR2YWx1ZSA9IFBpeGVsIGJhc2VkIG51bWJlciAtIGFkZCBweCB0byBrZWVwIHRoZSBweCBmb3IgYSB2YWx1ZVxuQHBhcmFtZXRlciAkYmFzZSA9IHB4IGJhc2VkIG51bWJlciwgRGVmYXVsdDogMTZweFxuQHBhcmFtZXRlciAkdW5pdCA9IFNldCB1bml0OiBweCB8IGVtIHwgcmVtIHwgcGVyY2VudFxuXG4jIyBEZXBlbmRlbmNpZXNcbi0tLVxuYWJzdHJhY3QvZnVuY3Rpb25zL3N3YXAtbGVmdC1yaWdodFxuYWJzdHJhY3QvZnVuY3Rpb25zL3N0cmlwLXVuaXRcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLCAwIDEwcHggMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAxLjI1cmVtIDA7XG5AaW5jbHVkZSBubi1weC10by11bml0KHBhZGRpbmcsIDAgMTAgMjAgMCk7ID0+IHBhZGRpbmc6IDAgMC42MjVyZW0gMS4yNXJlbSAwO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLWxlZnQsIDEwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQocGFkZGluZy1yaWdodCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYXJnaW4sIDAgMTAgMjAgMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbi1sZWZ0LCAxMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbi1yaWdodCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChmb250LXNpemUsIDIwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQod2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1pbi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFubi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQoaGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtaW4taGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYW5uLWhlaWdodCwgMTAwKTtcbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9sZXNzLW1peGluLWZvci1yZW0tZm9udC1zaXppbmcvXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHVuaXRsZXNzXG5uYW1lOiBubi1weC10by11bml0bGVzc1xuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblRoaXMgbWFrZXMgdGhlIHNhbWUgY2FsY3VsYXRpb24gYXMgcHggdG8gZW0uIEJ1dCBpdCBkb24ndCBwcmludCBvdXQgdGhlIHVuaXQuXG5cblVzZSB0aGlzIGZvciBsaW5lLWhlaWdodHMuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkdmFsdWUgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcbkBwYXJhbWV0ZXIgJGJhc2UgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxubGluZS1oZWlnaHQ6IG5uLXB4LXRvLXVuaXRsZXNzKDUpIC8vIE91dHB1dDogMC4zMTI1XG5gYGBcblxuIyMgU291cmNlXG4tLS1cblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogU3RyaXAgdW5pdFxubmFtZTogbm4tc3RyaXAtdW5pdFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblN0cmlwcyBvZiB0aGUgdW5pdCBvZiBhIG51bWJlclxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG51bSA9IG51bWJlciB3aXRoIHVuaXQgKDVweCwgNWVtLCA1cmVtKVxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5ubi1zdHJpcC11bml0KDVweCkgLy9PdXRwdXQ6IDVcbm5uLXN0cmlwLXVuaXQoMTBlbSkgLy8gT3V0cHV0OiAxMFxubm4tc3RyaXAtdW5pdCgxNXJlbSkgLy8gT3V0cHV0OiAxNVxuYGBgXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHotaW5kZXhcbm5hbWU6IG5uLXotaW5kZXhcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5CZWNhdXNlIHotaW5kaWNlcyBjYW4gZ2V0IHRyaWNreSB3ZSBtYW5hZ2UgdGhlbSBpbiB0aGUgdGhlbWUuc2NzcyBnbG9iYWxseS5cblxuQWx3YXlzIHVzZSB0aGlzIG1peGluIHRvIHNldCBzZXQgYSB6LWluZGV4LlxuXG5SZWFkIHRoZSBCZXN0IFByYWN0aWNlIHRvIGdldCBhbiBmdWxsIGRvY3VtZW50YXRpb246XG5odHRwczovL3Byb2plY3RzLm5ldGNlbnRyaWMuYml6L3dpa2kvZGlzcGxheS9GUk9OVEVORC9Ib3crdG8rc2V0K2Erei1pbmRleFxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXpcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRlbGVtZW50ID0gTmFtZSBvZiB0aGUgZWxlbWVudCAobm9ybWFsbHkgdGhpcyB3aWxsIGJlIHRoZSBtb2R1bGUgbmFtZSBmb3IgdGhlIG1haW4gc3RhY2spXG5AcGFyYW1ldGVyICRsaXN0ID0gTmFtZSBvZiB0aGUgbGlzdCAoZGVmYXVsdCAkei1pbmRpY2VzKS4gTXVzdCBiZSBvbmx5IHNldCBmb3Igc3RhY2sgY29udGV4dFxuQHBhcmFtZXRlciAkbWluID0gU2V0IGEgbWluaW11bSB6LWluZGV4IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3QuXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG4kei1pbmRpY2VzIHZhcmlhYmxlIGluIHRoZSB0aGVtZS5zY3NzXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcblxuLy8gSW4gdGhlIFNBU1MgdGhlbWUgZmlsZVxuXG4kei1pbmRpY2VzOiBzbGlkZXIsIG1vZGFsLCBkaWFsb2csIG5hdmlnYXRpb247XG5cbi8vIEluIHRoZSBTQVNTIG1vZHVsZSBmaWxlXG5cbi5tb2RhbCB7XG4gICAgJl9fYmFzZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogbm4tei1pbmRleChtb2RhbCk7XG4gICAgfVxufVxuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTQvMDYvMTIvc2Fzc3ktei1pbmRleC1tYW5hZ2VtZW50LWZvci1jb21wbGV4LWxheW91dHMvXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHJlbW92ZSBldmVyeSB1bml0XG5uYW1lOiBzdHJpcC11bml0XG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cbnJlbW92ZSBhbGwgdW5pdHNcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRudW1iZXIgPSBudW1iZXIgd2l0aCB1bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5zdHJpcC11bml0KDVweCkgLy8gT3V0cHV0OiA1XG5gYGBcbiovXG4vKlxuICAgIFRoaXMgbWl4aW4gY29udmVydHMgYW55IHVuaXRsZXNzIG51bWJlciAoZm9yIGV4YW1wbGUgNDApIHRvIHRoZSBjb3JyZWN0IHVuaXQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYXhpcy5cblxuICAgIFBhcmFtZXRlcnM6XG4gICAgLSAkdmFsdWU6IHVuaXRsZXNzIG51bWJlciB0byBiZSBjb252ZXJ0ZWQuIEEgdW5pdCBpbiAkdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIGEgcHggaW4gdGhlIGJyb3dzZXIsXG4gICAgICAgIG5vIG1hdHRlciBpZiBpdCdzIG91dHB1dCBhcyBweCBvciByZW1cblxuICAgIFJldHVybnNcbiAgICAtIEhvcml6b250YWw6IHdpbGwgY29udmVydCB0aGUgbnVtYmVyIHRvIHBpeGVscyAoNDBweClcbiAgICAtIFZlcnRpY2FsOiB3aWxsIGNvbnZlcnQgdGhlIG51bWJlciB0byByZW0gKGlmIHJlbSA9PT0gMTZweCwgdGhlbiA0MCB3aWxsIGJlIGNvbnZlcnRlZCB0byAyLjUgcmVtKVxuKi9cbi8qXG4gICAgQ29udmVydHMgYSB1bml0bGVzcyBudW1iZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCBvbiB0aGUgaG9yaXpvbnRhbCBheGlzLlxuICAgIEJ5IGRlZmF1bHQgd2lsbCBjb252ZXJ0IHRoZSB2YWx1ZSB0byBweC5cbiovXG4vKlxuICAgIENvbnZlcnRzIGEgdW5pdGxlc3MgbnVtYmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQgb24gdGhlIHZlcnRpY2FsIGF4aXMuXG4gICAgQnkgZGVmYXVsdCB3aWxsIGNvbnZlcnQgdGhlIHZhbHVlIHRvIHJlbS5cbiovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBTd2FwIGxlZnQgcmlnaHQgdmFsdWVzXG5uYW1lOiBzd2FwLWxlZnQtcmlnaHQtdmFsdWVzXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3dhcCB0aGUgdmFsdWVzIGZvciByaWdodCBhbmQgbGVmdCB3aGVuICRydGwgaXMgc2V0IHRvIHRydWU6XG5cbkluOiAgMCA1cHggOHB4IDEycHhcbk91dDogMCAxMnB4IDhweCA1cHggKGluIHJ0bClcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICR2YWx1ZXMgPSA0IG51bWJlcnMgKHdvcmtzIHdpdGggYWxsIHVuaXRzKVxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5zd2FwLWxlZnQtcmlnaHQtdmFsdWVzKDAgMXB4IDhweCAxMnB4KSAvLyAwIDEycHggOHB4IDFweFxuc3dhcC1sZWZ0LXJpZ2h0LXZhbHVlcygwIDFlbSA4ZW0gMTJlbSkgLy8gMCAxMmVtIDhlbSAxZW1cbndhcC1sZWZ0LXJpZ2h0LXZhbHVlcygwIDFyZW0gOHJlbSAxMnJlbSkgLy8gMCAxMnJlbSA4cmVtIDFyZW1cbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNDE5OTMyMy9yaWdodC10by1sZWZ0LXJ0bC1zdXBwb3J0LWluLXNhc3MtcHJvamVjdFxuXG4qL1xuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogU3dhcCBsZWZ0IHJpZ2h0IG5hbWVzXG5uYW1lOiBzd2FwLWxlZnQtcmlnaHQtbmFtZXNcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5Td2FwIHRoZSBuYW1lcyByaWdodCBhbmQgbGVmdCB3aGVuICRydGwgaXMgc2V0IHRvIHRydWUuXG5JZiB0aGUgdmFsdWUgaXMgbm90IHJpZ2h0IG9yIGxlZnQgaXQgcmV0dXJucyB0aGUgb3JpZ2luYWwgdmFsdWUuXG5cbkluOiAgcmlnaHRcbk91dDogbGVmdCAoaW4gcnRsKSwgcmlnaHQgKGluIGx0cilcblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRvcmlnaW4gPSByaWdodCB8IGxlZnRcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuc3dhcC1sZWZ0LXJpZ2h0LW5hbWUobGVmdClcbnN3YXAtbGVmdC1yaWdodC1uYW1lKHJpZ2h0KVxuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE0MTk5MzIzL3JpZ2h0LXRvLWxlZnQtcnRsLXN1cHBvcnQtaW4tc2Fzcy1wcm9qZWN0XG5cbiovXG4vKiAgTGlzdCBvZiBDU1MgcHJvcGVydGllcyB0aGF0IHdpbGwgYWx3YXlzIGJlIG91dHB1dCBhdCBsZWFzdCBhcyAyIGRpZmZlcmVudCB2YWx1ZXNcbiAgICBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNvbnZlcnQgZWFjaCBvbmUgdG8gdGhlIGNvcnJlY3QgYXhpcyB1bml0ICovXG4vKlxuICAgIE1peGluIGZvciBhdXRvbWF0aWNhbGx5IGhhbmRsaW5nIHNwYWNpbmdzIGFyb3VuZC9iZXR3ZWVuIGVsZW1lbnRzLlxuXG4gICAgVGhpcyBtaXhpbiB3aWxsIGF1dG9tYXRpY2FsbHkgaW52ZXJ0IHRoZSBsZWYvcmlnaHQgZGlyZWN0aW9ucyBpbiBSVEwgbGFuZ3VhZ2VzLlxuICAgIEFsc28sIHRoZSB1bml0bGVzcyB2YWx1ZXMgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIHByb3BlciB1bml0IGFjY29yZGluZyB0byB0aGUgYXhpc1xuXG4gICAgUGFyYW1ldGVyczpcbiAgICAtICRwcm9wZXJ0eS1uYW1lOiBuYW1lIG9mIHRoZSBDU1MgcHJvcGVydHkgdGhhdCBzaG91bGQgYmUgb3V0cHV0LiBTdXBwb3J0ZWQgcHJvcGVydGllcyBhcmU6XG4gICAgICAgIG1hcmdpbiwgbWFyZ2luLXRvcCwgbWFyZ2luLXJpZ2h0LCBtYXJnaW4tYm90dG9tLCBtYXJnaW4tbGVmdFxuICAgICAgICBwYWRkaW5nLCBwYWRkaW5nLXRvcCwgcGFkZGluZy1yaWdodCwgcGFkZGluZy1ib3R0b20sIHBhZGRpbmctbGVmdFxuICAgICAgICB3aWR0aCwgaGVpZ2h0LCBtaW4td2lkdGgsIG1heC13aWR0aCwgbWluLWhlaWdodCwgbWluLWhlaWdodFxuICAgIC0gJHZhbHVlOiB2YWx1ZSB0aGF0IHdpbGwgYmUgb3V0cHV0IGFzIHBhcnQgb2YgdGhlIGdpdmVuIHByb3BlcnR5LiBTdXBwb3J0ZWQgdmFsdWVzIGFyZTpcbiAgICAgICAgVW5pdGxlc3MgbnVtYmVyICg0MCk6IHRoaXMgc2hvdWxkIGJlIHVzZWQgbW9zdCBvZiB0aGUgdGltZXMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjb252ZXJ0ZWRcbiAgICAgICAgICAgIHRvIHRoZSBjb3JyZWN0IHVuaXQgZGVwZW5kaW5nIG9uIHRoZSBheGlzIHdoZXJlIGl0J3MgdXNlZCAoaG9yaXpvbnRhbCBheGlzID0+IHB4LCB2ZXJ0aWNhbCBheGlzID0+IHJlbSkuXG4gICAgICAgICAgICBFYWNoIHVuaXQgaW4gJHZhbHVlIHdpbGwgY29ycmVzcG9uZCB0byBhIHB4IGluIHRoZSBicm93c2VyLCBubyBtYXR0ZXIgdG8gd2hpY2ggdW5pdCBpdCB3aWxsIGJlIGNvbnZlcnRlZC5cbiAgICAgICAgTnVtYmVyIHdpdGggdW5pdCAoNDBweCwgNDAlLi4uKTogdGhlIG51bWJlciBhbmQgdGhlIHVuaXQgd2lsbCBiZSBwcmVzZXJ2ZWQgYW5kIG9ubHkgdGhlIGxlZnQvcmlnaHQgaW52ZXJzaW9uXG4gICAgICAgICAgICB3aWxsIGJlIGRvbmUgZm9yIFJUTCBsYW5ndWFnZXNcbiAgICAgICAgTGlzdCBvZiB2YWx1ZXMgKDQwIDMwJSAyMCAxMCk6IG1hcmdpbiBhbmQgcGFkZGluZyBzaG9ydGhhbmRzIHdoaXRoIG11bHRpcGxlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLlxuICAgICAgICAgICAgVGhlIGxlZnQvcmlnaHQgdmFsdWVzIHdpbGwgYmUgYXV0b21hdGljYWxseSBzd2FwcGVkIGluIFJUTCBhbmQgdGhlIHVuaXRsZXNzIG51bWJlcnMgd2lsbCBiZSBjb252ZXJ0ZWRcbiAgICAgICAgICAgIHRvIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQuIFVuaXRsZXNzIGFuZCBudW1iZXJzIHdpdGggdW5pdHMgY2FuIGJlIG1peGVkIGluIHRoZSBzYW1lIGNhbGwuXG4gICAgICAgIFVzaW5nIGNhbGMoKSBpbiBhbnkgb2YgdGhlIHByZXZpb3VzIGV4YW1wbGVzIGlzIHN1cHBvcnRlZCwgYWx0aG91Z2ggbm8gdW5pdCBjb252ZXJzaW9uIHdpbGwgYmUgZG9uZVxuXG4gIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgc3BhY2luZyhwYWRkaW5nLCAwIDEwcHggMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAycmVtIDA7XG5AaW5jbHVkZSBzcGFjaW5nKHBhZGRpbmcsIDAgMTAgMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAycmVtIDA7XG5AaW5jbHVkZSBzcGFjaW5nKHBhZGRpbmctbGVmdCwgMTApO1xuQGluY2x1ZGUgc3BhY2luZyhwYWRkaW5nLXJpZ2h0LCAxMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1hcmdpbiwgMCAxMCAyMCAwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWFyZ2luLWxlZnQsIDEwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWFyZ2luLXJpZ2h0LCAxMCk7XG5AaW5jbHVkZSBzcGFjaW5nKHdpZHRoLCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtaW4td2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1heC13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIHNwYWNpbmcoaGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtaW4taGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtYXgtaGVpZ2h0LCAxMDApO1xuYGBgXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBDbGVhcmZpeFxubmFtZTogY2xlYXJmaXhcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5DbGVhcnMgYWZ0ZXIgZmxvYXRpbmcgZWxlbWVudFxuXG5Vc2UgdGhpcyBtaXhpbiBvbmx5IGluc2lkZSBtZWRpYSBxdWVyaWVzIHdoZXJlIHlvdSBjYW4ndCB1c2UgdGhlXG5hYnN0cmFjdC9leHRlbmRzL3V0aWxzL19jbGVhcmZpeCB2ZXJzaW9uLCB3aGljaCBhZGRzIGxlc3MgY29kZSB0byBjc3NcblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgY2xlYXJmaXg7XG5gYGBcblxuIyMgU291cmNlXG4tLS1cbmh0dHBzOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2NsZWFyLWZpeC9cbiovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzdHJpbmctbm8tbmV3bGluZSAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBmb2N1cyBjb2xvclxubmFtZTogZm9jdXMgY29sb3JcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5BZGQgYSBmb2N1cyBjb2xvciB3aGVuIGtleWJvYXJkLWZvY3VzIGlzIGFjdGl2YXRlZFxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJG51bWJlclxuXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBpZ25vcmUtY29udGFpbmVyXG5uYW1lOiBpZ25vcmUtY29udGFpbmVyXG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuU2V0IGZ1bGwgcGFnZSB3aWR0aCBmb3Igc29tZXRoaW5nIGluc2lkZSBhIGNvbnRhaW5lclxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkY29udGFpbmVyLXNpemVcbkBwYXJhbSAkZ3V0dGVyXG5cbiovXG4vKiBHZW5lcmF0ZXMgYWxsIHRoZSBydWxlcyBmb3IgdGhlIGdyaWQgY29sdW1ucyB1cCB0byB0aGUgZ2l2ZW4gYW1vdW50IG9mIGNvbHVtbiAqL1xuLyogR2VuZXJhdGVzIGFsbCB0aGUgcnVsZXMgZm9yIHRoZSBncmlkIGNvbHVtbiBvZmZzZXQgdXAgdG8gdGhlIGdpdmVuIGFtb3VudCBvZiBjb2x1bW4gKi9cbi8qIEdlbmVyYXRlcyBhbGwgdGhlIHJ1bGVzIGZvciB0aGUgZ3JpZCBhbmQgY29sdW1ucyBmb3IgdGhlIGdpdmVuIGJyZWFrIHBvaW50IGFuZCB0b3RhbCBvZiBjb2x1bW5zICovXG4vKiBBUEkgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHRvIGdlbmVyYXRlIGEgZ3JpZCBjb25maWcgKi9cbi8qIGRvY1xuLS0tXG50eXBlOiBidXR0b24gdHlwZVxuc3RhdGU6IHN0YXRlIGJ1dHRvblxuLS0tXG5cbkJ1dHRvbiBzdHlsZXNcblxuVXNlIHRoaXMgbWl4aW4gZm9yIGJ1dHRvbiBzdHlsZXM6IGNvbG9yIHRleHQsIGJhY2tncm91bmQsIGJvcmRlclxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBidXR0b24ocHJpbWFyeSk7XG5gYGBcbiovXG4vKiBkb2Ncbi0tLVxubGluZUxpbWl0OiBUaGlzIHZhbHVlIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGxpbmVzIGFmdGVyIHdoaWNoIHRoZSBjb250ZW50IHdpbGwgYmUgY2xhbXBlZC4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC5cbi0tLVxuXG5UcnVuY2F0ZXMgdGV4dCBhdCBhIHNwZWNpZmljIG51bWJlciBvZiBsaW5lcy5cblxuVXNlIHRoaXMgbWl4aW4gdG8gaGlkZSBsb25nIHRleHQuXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbkBpbmNsdWRlIGxpbmUtY2xhbXAoJGxpbmVMaW1pdDogNCk7XG5gYGBcbiovXG4vKiB0eXBvZ3JhcGh5XG4tLS1cbnRpdGxlOiB0eXBvZ3JhcGh5XG5uYW1lOiBUeXBvZ3JhcGh5XG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuQWRkcyBmb250IENTUyBwcm9wZXJ0aWVzIGJ5IGEgbWFwIHByb3ZpZGVkXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtICR0LXN0eWxlXG5AcGFyYW0gJGlzLWltcG9ydGFudDogZmFsc2VcblxuKiAkdC1zdHlsZSBpcyBleHBlY3RlZCB0byBiZSBhIG1hcCB3aXRoICdkZWZhdWx0JyBhbmQgJ2JyZWFrcG9pbnRbc10nIHN1Ym1hcHMgd2l0aCBhIHByb3BlcnR5XG5mb3IgZXZlcnkgY3NzIHByb3BlcnR5IHRvIGJlIHNldC5cbiogJGlzLWltcG9ydGFudCBwYXJhbWV0ZXIgYWxsb3dzIHRvIGZvcmNlIHR5cG9ncmFwaHkgcHJvcGVydGllcyB0byBiZSBzZXQgYXMgIWltcG9ydGFudFxuVHJ5IHRvIGF2b2lkIGl0cyB1c2UsIGJ1dCBpdCBtaWdodCBiZSBuZWVkZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgc3R5bGVzIGZvciBhIGNvbXBvbmVudFxuYXJlIHZlcnkgc3BlY2lmaWMgYW5kIHRvIG92ZXJ3cml0ZSB0aGUgZ2VuZXJpYyBvbmVzIGlzIHRvbyBjb21wbGV4IChpZiB0aGV5IGhhdmUgYSBsb3Qgb2Ygc3BlY2lmaWNpdHkpXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IGhpZGRlblxubmFtZTogaGlkZGVuXG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuSGlkZSBmcm9tIGJvdGggc2NyZWVucmVhZGVycyBhbmQgYnJvd3NlcnM6IGg1YnAuY29tL3VcbiMjIFBhcmFtZXRlcnNcbi0tLVxuXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBvdmVybGF5XG5uYW1lOiBvdmVybGF5XG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuQ3JlYXRlcyBhbiBvdmVybGF5IHdpdGggdGhlIHByb3ZpZGVkIGJhY2tncm91bmQgY29sb3JcbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtICRiZ0NvbG9yXG5cbiovXG4vKipcbiAqIEBtaXhpbiB0b3AtYm90dG9tLWJvcmRlclxuICogQGRlc2MgQ3JlYXRlcyBhIGR5bmFtaWMgYW5kIGN1c3RvbWl6YWJsZSBib3JkZXIgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBvbiBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSAkcG9zaXRpb24gLSBPcHRpb25hbCwgRGVmYXVsdDogJ2JvdHRvbScuIERlZmluZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBib3JkZXIuIEFjY2VwdHMgdmFsdWVzICd0b3AnIG9yICdib3R0b20nLlxuICogQHBhcmFtIHtjb2xvcn0gJGNvbG9yIC0gT3B0aW9uYWwsIERlZmF1bHQ6ICckYy1ibGFjaycuIFNwZWNpZmllcyB0aGUgY29sb3Igb2YgdGhlIGJvcmRlci4gQWNjZXB0cyBhbnkgdmFsaWQgQ1NTIGNvbG9yIHZhbHVlLlxuICogQHBhcmFtIHtsZW5ndGh9ICR3aWR0aCAtIE9wdGlvbmFsLCBEZWZhdWx0OiAnMnB4Jy4gU2V0cyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlci4gQWNjZXB0cyBhbnkgdmFsaWQgQ1NTIGxlbmd0aCB2YWx1ZS5cbiAqIEBwYXJhbSB7bGVuZ3RofSAkbWFyZ2luIC0gT3B0aW9uYWwsIERlZmF1bHQ6ICcwJy4gQWRkcyBtYXJnaW4gdG8gdGhlIGJvcmRlci4gQWNjZXB0cyBhbnkgdmFsaWQgQ1NTIGxlbmd0aCB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogICAuZXhhbXBsZS1lbGVtZW50IHtcbiAqICAgICAgIEBpbmNsdWRlIHRvcC1ib3R0b20tYm9yZGVyKCRwb3NpdGlvbjogdG9wLCAkY29sb3I6ICRjLWdyZXktdHdvLCAkd2lkdGg6IDNweCwgJG1hcmdpbjogMTBweCk7XG4gKiAgIH1cbiAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiByZXNldC1mdWxsd2lkdGgtbWFyZ2luc1xubmFtZTogcmVzZXQtZnVsbHdpZHRoLW1hcmdpbnNcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5SZXNldCBtYXJnaW5zIGZvciBmdWxsIHdpZHRoIGNvbXBvbmVudHMgaW5zaWRlIGEgQ29udGFpbmVyIG9yIGEgQ29sdW1uIENvbnRyb2xcbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHZpc3VhbGx5IGhpZGRlblxubmFtZTogdmlzdWFsbHkgaGlkZGVuXG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuSGlkZGVuIGZyb20gYnJvd3NlcnMgYnV0IGFjY2Vzc2libGUgdG8gc2NyZWVuIHJlYWRlcnNcbiMjIFBhcmFtZXRlcnNcbi0tLVxuXG4qL1xuLnRlYXNlcjpub3QoLnRlYXNlci0taGVybyk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIHtcbiAgLS10ZWFzZXItaGVpZ2h0OiAzMDBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyOm5vdCgudGVhc2VyLS1oZXJvKTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkge1xuICAgIC0tdGVhc2VyLWhlaWdodDogNDQwcHg7XG4gIH1cbn1cblxuLmNtcC10ZWFzZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXRlYXNlci1oZWlnaHQpO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5jbXAtdGVhc2VyIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cbi5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgcGFkZGluZy1ibG9jazogMy43NXJlbTtcbiAgcGFkZGluZy1pbmxpbmU6IDMwcHg7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB6LWluZGV4OiAyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uY21wLXRlYXNlcl9fY29udGVudC5pcy1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5jbXAtY2Fyb3VzZWxfX2l0ZW0gLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgcGFkZGluZy1pbmxpbmU6IDU2cHg7XG4gIH1cbn1cbi5jbXAtdGVhc2VyX190aXRsZSB7XG4gIG1hcmdpbi1ibG9jay1lbmQ6IDI1cHg7XG59XG5bZGF0YS1kZWFsZXItcHJpdmF0ZV0gLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjFweDtcbn1cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1yZWd1bGFyKTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbHMtZGVmYXVsdCk7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDFlbTtcbn1cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBhIHtcbiAgY29sb3I6ICMwMDRmYmM7XG59XG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gYTpob3ZlciwgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGE6Zm9jdXMge1xuICBjb2xvcjogIzAwNTZkNjtcbn1cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB1bCxcbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBvbCB7XG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAzMnB4O1xufVxuLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHVsIHtcbiAgbGlzdC1zdHlsZTogZGlzYztcbn1cbi5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBvbCB7XG4gIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG59XG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDEsXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDIsXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDMsXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDQsXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDUsXG4uY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDYge1xuICBjb2xvcjogIzUzNTY1YTtcbn1cbi5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAxZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAxMHB4O1xufVxuLnRlYXNlcl9fY3RhLS1saW5rIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAxMHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IC0ycHg7XG4gIHdpZHRoOiAyNHB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMjRweCAhaW1wb3J0YW50O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBwb2ludGVyLWV2ZW50czogYWxsICFpbXBvcnRhbnQ7XG59XG4udGVhc2VyX19jdGEtLWxpbmsgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjphZnRlciB7XG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAtMzRweDtcbn1cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nLWJsb2NrOiAxMnB4O1xuICBwYWRkaW5nLWlubGluZTogMzJweDtcbiAgYmFja2dyb3VuZDogIzAwNGZiYztcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwNGZiYztcbiAgY29sb3I6ICNmZmY7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXM7XG59XG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDpob3ZlciwgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogIzAwNTZkNjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwNTZkNjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6aG92ZXI6OmFmdGVyLCAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDpmb2N1czo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHZhcigtLWJ1dHRvbi1pY29uLXRyYW5zZm9ybS1ob3Zlcik7XG59XG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHZhcigtLWJ1dHRvbi1pY29uLXRyYW5zZm9ybSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O1xufVxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogIzAwNDFhMztcbn1cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmFjdGl2ZSwgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6Zm9jdXMsIC50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgIzAwNDFhMztcbiAgb3V0bGluZS1vZmZzZXQ6IDNweDtcbn1cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkOmRpc2FibGVkLCAudGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZC5kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQ6ICM4ZGM5YmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ZGM5YmY7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGQ6YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyX19jdGEtLXZpZGVvKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6Zmlyc3QtY2hpbGRbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MjQtdmlld1wiKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1zaXplOiBjb3ZlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlcl9fY3RhLS12aWRlbykgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZpcnN0LWNoaWxkW3RhcmdldD1fYmxhbmtdOjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG4udGVhc2VyOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXJfX2N0YS0tbGluayk6bm90KC50ZWFzZXJfX2N0YS0tdmlkZW8pIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmaXJzdC1jaGlsZDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nLWJsb2NrOiAxMnB4O1xuICBwYWRkaW5nLWlubGluZTogMzJweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzUzNTY1YTtcbiAgY29sb3I6ICM1MzU2NWE7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXM7XG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS4zMTI1cmVtO1xufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmhvdmVyLCAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmhvdmVyOjphZnRlciwgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmZvY3VzOjphZnRlciB7XG4gIHRyYW5zZm9ybTogdmFyKC0tYnV0dG9uLWljb24tdHJhbnNmb3JtLWhvdmVyKTtcbn1cbi5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpub3QoOmZpcnN0LWNoaWxkKTphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAjZTFkZmRkO1xufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmFjdGl2ZSwgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmZvY3VzLCAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCAjMDA0MWEzO1xuICBvdXRsaW5lLW9mZnNldDogM3B4O1xufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOjphZnRlciB7XG4gIHRyYW5zZm9ybTogdmFyKC0tYnV0dG9uLWljb24tdHJhbnNmb3JtKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7XG59XG4uY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6ZGlzYWJsZWQsIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpub3QoOmZpcnN0LWNoaWxkKS5kaXNhYmxlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ODhiOGQ7XG4gIGNvbG9yOiAjODg4YjhkO1xufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUzNTY1YTtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCk6YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUzNTY1YTtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZClbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZCkge1xuICBjb2xvcjogIzUzNTY1YTtcbn1cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlcl9fY3RhLS1saW5rKTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOm5vdCg6Zmlyc3QtY2hpbGQpOjphZnRlciwgLnRlYXNlcjpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyX19jdGEtLWxpbmspOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6bm90KDpmaXJzdC1jaGlsZClbdGFyZ2V0PV9ibGFua106OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUzNTY1YTtcbn1cbi5jbXAtdGVhc2VyX19lbWJlZCwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbn1cbi5jbXAtdGVhc2VyX19lbWJlZCAuZW1iZWRfX3lvdXR1YmU6bm90KC5lbWJlZF9feW91dHViZS0td2l0aFRodW1ibmFpbCkge1xuICBhc3BlY3QtcmF0aW86IGF1dG87XG59XG4uY21wLXRlYXNlcl9fZW1iZWQgLmVtYmVkX195b3V0dWJlX190aHVtYm5haWwge1xuICBtaW4taGVpZ2h0OiB2YXIoLS10ZWFzZXItaGVpZ2h0KTtcbiAgbWF4LWhlaWdodDogdmFyKC0tdGVhc2VyLWhlaWdodCk7XG59XG4uY21wLXRlYXNlcl9fZW1iZWQgLmVtYmVkX195b3V0dWJlIGlmcmFtZSxcbi5jbXAtdGVhc2VyX19lbWJlZCBpZnJhbWUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogdmFyKC0tdGVhc2VyLWhlaWdodCk7XG59XG4uY21wLXRlYXNlcl9fZW1iZWQgKyAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLmNtcC10ZWFzZXJfX2VtYmVkIC5jbXAtZW1iZWQgPiAqIHtcbiAgbWFyZ2luOiAwO1xufVxuLmNtcC10ZWFzZXJfX2ltYWdlIGltZyxcbi5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlLFxuLmNtcC10ZWFzZXJfX2ltYWdlIC5jbXAtaW1hZ2VfX2ltYWdlIHtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIG9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmNtcC10ZWFzZXJfX2ltYWdlIC5jbXAtaW1hZ2UgdmlkZW8sIC5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlX19pbWFnZSB2aWRlbyB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlIC5zN2RtLWR5bmFtaWMtbWVkaWEgdmlkZW8sIC5jbXAtdGVhc2VyX19pbWFnZSAuY21wLWltYWdlX19pbWFnZSAuczdkbS1keW5hbWljLW1lZGlhIHZpZGVvIHtcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IDAgIWltcG9ydGFudDtcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwICFpbXBvcnRhbnQ7XG4gIG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICBtaW4taGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uY21wLXRlYXNlcl9faW1hZ2UgLmNtcC1pbWFnZSAuaW1nX19saW5rIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApOm5vdCguc3RhZ2UpLnRlYXNlcl9fdGV4dC0tY2VudGVyIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgbWF4LXdpZHRoOiA4MjBweDtcbn1cbi50ZWFzZXI6bm90KC50ZWFzZXItLWxheW91dC10b3ApOm5vdCguc3RhZ2UpIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgbWF4LXdpZHRoOiA2MjBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY2Fyb3VzZWwgLnRlYXNlcjpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCk6bm90KC5zdGFnZSkgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG59XG4uY29sbGFnZSAudGVhc2VyOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKTpub3QoLnN0YWdlKSAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IG5vbmU7XG59XG5cbi50ZWFzZXI6bm90KC50ZWFzZXJfX2N0YS0tbGluaykgLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDI1cHg7XG59XG5cbi50ZWFzZXItLWhlcm8ge1xuICAtLXRlYXNlci1oZWlnaHQ6IDQ0MHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXItLWhlcm8ge1xuICAgIC0tdGVhc2VyLWhlaWdodDogNjAwcHg7XG4gIH1cbn1cblxuLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgcGFkZGluZy1ibG9jazogMWVtO1xuICBwYWRkaW5nLWlubGluZTogMDtcbn1cbi50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2ltYWdlLCAudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19lbWJlZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYXNwZWN0LXJhdGlvOiAxNi85O1xufVxuLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fZW1iZWQgaWZyYW1lIHtcbiAgYXNwZWN0LXJhdGlvOiAxNi85O1xuICBoZWlnaHQ6IGF1dG87XG59XG4udGVhc2VyLS1sYXlvdXQtdG9wLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gIGluc2V0LWlubGluZS1zdGFydDogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ibG9jay1zdGFydDogNTclO1xufVxuLnRlYXNlci0tbGF5b3V0LXRvcC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldC1ibG9jay1zdGFydDogNTAlO1xuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUwJTtcbiAgd2lkdGg6IDc1cHg7XG4gIGhlaWdodDogNzVweDtcbiAgbWFyZ2luLWJsb2NrOiAtMjVweCAwO1xuICBtYXJnaW4taW5saW5lOiAtNDBweCAwO1xufVxuLnRlYXNlci0tbGF5b3V0LXRvcC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjpiZWZvcmUge1xuICBmb250LXNpemU6IDM0cHg7XG59XG5cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtbWVkaXVtKTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZy1ibG9jazogMTJweDtcbiAgcGFkZGluZy1pbmxpbmU6IDMycHg7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM1MzU2NWE7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDFzO1xuICBwYWRkaW5nLWlubGluZS1lbmQ6IDEuMzEyNXJlbTtcbn1cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3ZlciwgLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZvY3VzIHtcbiAgYmFja2dyb3VuZDogI2Y3ZjdmNztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogIzUzNTY1YTtcbn1cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3Zlcjo6YWZ0ZXIsIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmb2N1czo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHZhcigtLWJ1dHRvbi1pY29uLXRyYW5zZm9ybS1ob3Zlcik7XG59XG4udGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogI2UxZGZkZDtcbn1cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazphY3RpdmUsIC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpmb2N1cywgLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZvY3VzLXZpc2libGUge1xuICBvdXRsaW5lOiAycHggc29saWQgIzAwNDFhMztcbiAgb3V0bGluZS1vZmZzZXQ6IDNweDtcbn1cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHZhcigtLWJ1dHRvbi1pY29uLXRyYW5zZm9ybSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O1xufVxuLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmRpc2FibGVkLCAudGVhc2VyX19jdGEtLXNlY29uZGFyeSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsuZGlzYWJsZWQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjODg4YjhkO1xuICBjb2xvcjogIzg4OGI4ZDtcbn1cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MzU2NWE7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5IC5jbXAtdGVhc2VyX19hY3Rpb24tbGlua1t0YXJnZXQ9X2JsYW5rXTphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MzU2NWE7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvbGluay1leHRlcm5hbC5zdmcjbGluay1leHRlcm5hbC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtbWVkaXVtKTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDc1cHg7XG4gIGhlaWdodDogNzVweDtcbiAgZm9udC1zaXplOiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjNTM1NjVhO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFkZmRkO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJveC1zaGFkb3c6IDAgMCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjMpO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgY29sb3I6ICNmZmY7XG59XG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpiZWZvcmUge1xuICBmb250LWZhbWlseTogXCJWb2x2b0ljb25zXCI7XG4gIGNvbnRlbnQ6IFwiXFxlOTExXCI7XG4gIHNwZWFrOiBub25lO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICAvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi9cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmsge1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgfVxufVxuLnRlYXNlcl9fY3RhLS12aWRlbyAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbms6aG92ZXIsIC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZvY3VzIHtcbiAgY29sb3I6ICM1MzU2NWE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMWRmZGQ7XG4gIGJvcmRlcjogMDtcbn1cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmhvdmVyOjpiZWZvcmUsIC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmZvY3VzOjpiZWZvcmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YmVmb3JlIHtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogNHB4O1xuICBmb250LXNpemU6IDM0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyLjI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMjNweDtcbiAgfVxufVxuaHRtbFtkaXI9cnRsXSAudGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YmVmb3JlIHtcbiAgbWFyZ2luLWlubGluZS1zdGFydDogLTRweDtcbn1cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjpiZWZvcmUge1xuICBmb250LXNpemU6IDIzcHg7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDRweDtcbn1cbi50ZWFzZXJfX2N0YS0tdmlkZW8gLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOjphZnRlciB7XG4gIGNvbnRlbnQ6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG59XG4udGVhc2VyX19jdGEtLXZpZGVvIC5jbXAtdGVhc2VyX19hY3Rpb24tY29udGFpbmVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnRlYXNlcl9fY3RhLS12aWRlbzpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDI1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1yZWd1bGFyKTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbHMtZGVmYXVsdCk7XG4gIHBhZGRpbmc6IDA7XG4gIGNvbG9yOiAjMDA0ZmJjO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xufVxuLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGZiYztcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9fY3RhLS1saW5rOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSkgLmNtcC10ZWFzZXJfX2FjdGlvbi1saW5rOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazo6YWZ0ZXIge1xuICBmb250LXNpemU6IDE2cHg7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHRyYW5zZm9ybTogdmFyKC0tYnV0dG9uLWljb24tdHJhbnNmb3JtKTtcbn1cbi50ZWFzZXJfX2N0YS0tbGluazpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpIC5jbXAtdGVhc2VyX19hY3Rpb24tbGluazpob3Zlcjo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHZhcigtLWJ1dHRvbi1pY29uLXRyYW5zZm9ybS1ob3Zlcik7XG59XG4udGVhc2VyX19jdGEtLWxpbms6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmtbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0ZmJjO1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MjQtdmlld1wiKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1zaXplOiBjb3ZlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHdpZHRoOiB2YXIoLS12LWljb24tc2l6ZSk7XG4gIGhlaWdodDogdmFyKC0tdi1pY29uLXNpemUpO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAudGVhc2VyX19jdGEtLWxpbms6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KSAuY21wLXRlYXNlcl9fYWN0aW9uLWxpbmtbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuXG4udGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgbWFyZ2luLWJsb2NrOiAwO1xuICBtYXJnaW4taW5saW5lOiAtMTVweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgICBtYXJnaW4tYmxvY2s6IDA7XG4gICAgbWFyZ2luLWlubGluZTogLTE1cHg7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9faW1nLS1mdWxsIC5jbXAtdGVhc2VyX19pbWFnZSB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWFyZ2luLWJsb2NrOiAwO1xuICAgIG1hcmdpbi1pbmxpbmU6IGNhbGMoKDEwMHZ3IC0gMTIwMHB4KSAvIC0yKTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDIwNDhweCkge1xuICAudGVhc2VyX19pbWctLWZ1bGwgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW4tYmxvY2s6IDA7XG4gICAgbWFyZ2luLWlubGluZTogY2FsYygoMjA0OHB4IC0gMTIwMHB4KSAvIC0yKTtcbiAgfVxuICAuY29udGFpbmVyLS1mdWxsV2lkdGggLnRlYXNlcl9faW1nLS1mdWxsIC5jbXAtdGVhc2VyX19pbWFnZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIC5jb2x1bW5jb250cm9sX19jb2x1bW46Zmlyc3QtY2hpbGQgLnRlYXNlcl9faW1nLS1mdWxsIC5jbXAtdGVhc2VyX19pbWFnZSB7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IDA7XG4gIH1cbiAgLmNvbHVtbmNvbnRyb2xfX2NvbHVtbjpsYXN0LWNoaWxkIC50ZWFzZXJfX2ltZy0tZnVsbCAuY21wLXRlYXNlcl9faW1hZ2Uge1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7XG4gIH1cbn1cblxuLnRlYXNlcl9fb3ZlcmxheS0tZGFyay50ZWFzZXIgLmNtcC1pbWFnZSBpbWcsIC50ZWFzZXJfX292ZXJsYXktLWRhcmsudGVhc2VyLS1oZXJvIC5jbXAtaW1hZ2UgaW1nIHtcbiAgZmlsdGVyOiBicmlnaHRuZXNzKDUwJSk7XG59XG4udGVhc2VyX19vdmVybGF5LS1saWdodGVyLWRhcmsudGVhc2VyIC5jbXAtaW1hZ2UgaW1nLCAudGVhc2VyX19vdmVybGF5LS1saWdodGVyLWRhcmsudGVhc2VyLS1oZXJvIC5jbXAtaW1hZ2UgaW1nIHtcbiAgZmlsdGVyOiBicmlnaHRuZXNzKDgwJSk7XG59XG5cbi50ZWFzZXIge1xuICAtLXRlYXNlci1raWNrZXItYmctY29sb3I6IHRyYW5zcGFyZW50O1xuICAtLXRlYXNlci1raWNrZXItcGFkZGluZzogMDtcbn1cbi50ZWFzZXJfX2tpY2tlci0tYmctd2hpdGUsIC50ZWFzZXJfX2tpY2tlci0tYmctYmxhY2sge1xuICAtLXRlYXNlci1raWNrZXItcGFkZGluZzogOHB4O1xufVxuLnRlYXNlcl9fa2lja2VyLS1iZy13aGl0ZSB7XG4gIC0tdGVhc2VyLWtpY2tlci1iZy1jb2xvcjogI2ZmZjtcbn1cbi50ZWFzZXJfX2tpY2tlci0tYmctYmxhY2sge1xuICAtLXRlYXNlci1raWNrZXItYmctY29sb3I6ICMxNDE0MTQ7XG59XG4udGVhc2VyX190ZXh0LS1yaWdodDpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuLnRlYXNlcl9fdGV4dC0tcmlnaHQgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICB0ZXh0LWFsaWduOiBzdGFydDtcbn1cbi50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLnRlYXNlcl9fdGV4dC0tY2VudGVyIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLWNlbnRlciAuY21wLXRlYXNlcl9fY29udGVudCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgbWFyZ2luLWJsb2NrOiAwO1xuICAgIG1hcmdpbi1pbmxpbmU6IGF1dG87XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VyX190ZXh0LS1jZW50ZXIgLmNtcC10ZWFzZXJfX2NvbnRlbnQgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHtcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xuICAgIG1hcmdpbi1ibG9jazogMDtcbiAgICBtYXJnaW4taW5saW5lOiBhdXRvO1xuICB9XG59XG4udGVhc2VyX190ZXh0LS1jZW50ZXIgLmNtcC10ZWFzZXJfX2NvbnRlbnQgLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi50ZWFzZXJfX3RleHQtLXdoaXRlIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLnRlYXNlcl9fdGV4dC0td2hpdGUgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGgxLFxuLnRlYXNlcl9fdGV4dC0td2hpdGUgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGgyLFxuLnRlYXNlcl9fdGV4dC0td2hpdGUgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGgzLFxuLnRlYXNlcl9fdGV4dC0td2hpdGUgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGg0LFxuLnRlYXNlcl9fdGV4dC0td2hpdGUgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGg1LFxuLnRlYXNlcl9fdGV4dC0td2hpdGUgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGg2IHtcbiAgY29sb3I6ICNmZmY7XG59XG4udGVhc2VyX190ZXh0LS13aGl0ZSAuY21wLXRlYXNlcl9fdGl0bGUge1xuICBjb2xvcjogI2ZmZjtcbn1cbi50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6bm90KC5pbWdfX2xpbmspIHtcbiAgY29sb3I6ICNmZmY7XG59XG4udGVhc2VyX190ZXh0LS13aGl0ZTpub3QoLnRlYXNlcl9fY3RhLS1zZWNvbmRhcnkpOm5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKSAuY21wLXRlYXNlciBhOm5vdCguaW1nX19saW5rKTphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6bm90KC5pbWdfX2xpbmspOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXJfX3RleHQtLXdoaXRlOm5vdCgudGVhc2VyX19jdGEtLXNlY29uZGFyeSk6bm90KC50ZWFzZXItLWxheW91dC10b3ApIC5jbXAtdGVhc2VyIGE6bm90KC5pbWdfX2xpbmspW3RhcmdldD1fYmxhbmtdOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9saW5rLWV4dGVybmFsLnN2ZyNsaW5rLWV4dGVybmFsLWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcl9fdGV4dC0td2hpdGU6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIgYTpub3QoLmltZ19fbGluaylbdGFyZ2V0PV9ibGFua106YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2xpbmstZXh0ZXJuYWwuc3ZnI2xpbmstZXh0ZXJuYWwtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLnRlYXNlcl9fdGV4dC0td2hpdGU6bm90KC50ZWFzZXJfX2N0YS0tc2Vjb25kYXJ5KTpub3QoLnRlYXNlci0tbGF5b3V0LXRvcCkgLmNtcC10ZWFzZXIgLnZpZGVvX19saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnRlYXNlcl9fdGV4dC0td2hpdGUudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuLnRlYXNlcl9fdGV4dC0td2hpdGUudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBoMSxcbi50ZWFzZXJfX3RleHQtLXdoaXRlLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDIsXG4udGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGgzLFxuLnRlYXNlcl9fdGV4dC0td2hpdGUudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBoNCxcbi50ZWFzZXJfX3RleHQtLXdoaXRlLnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gaDUsXG4udGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIGg2IHtcbiAgY29sb3I6ICMxNDE0MTQ7XG59XG4udGVhc2VyX190ZXh0LS13aGl0ZS50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgY29sb3I6ICMxNDE0MTQ7XG59XG4udGVhc2VyIC5jbXAtdGVhc2VyX190aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1icm9hZCk7XG4gIGZvbnQtc2l6ZTogNDhweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDAuOTU7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1scy12b2x2byk7XG4gIG1hcmdpbi1ibG9jay1lbmQ6IDI1cHg7XG59XG4udGVhc2VyIC5jbXAtdGVhc2VyX190aXRsZS1raWNrZXIge1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtbWVkaXVtKTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbHMtZGVmYXVsdCk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRlYXNlci1raWNrZXItYmctY29sb3IpO1xuICBwYWRkaW5nOiB2YXIoLS10ZWFzZXIta2lja2VyLXBhZGRpbmcpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ibG9jay1lbmQ6IDEycHg7XG59XG4udGVhc2VyX190aXRsZS0tdm9sdm9ub3Z1bSAuY21wLXRlYXNlcl9fdGl0bGUsIC50ZWFzZXItLWxheW91dC10b3A6bm90KC50ZWFzZXJsaXN0KSAuY21wLXRlYXNlcl9fdGl0bGUge1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtbWVkaXVtKTtcbiAgZm9udC1zaXplOiAyN3B4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS4yO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbHMtZGVmYXVsdCk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcl9fdGl0bGUtLXZvbHZvbm92dW0gLmNtcC10ZWFzZXJfX3RpdGxlLCAudGVhc2VyLS1sYXlvdXQtdG9wOm5vdCgudGVhc2VybGlzdCkgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDMycHg7XG4gIH1cbn1cblxuLnRlYXNlci5hZW0tR3JpZENvbHVtbiB7XG4gIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1zdGFydDogMzBweDtcbiAgLS1jb21wb25lbnQtbWFyZ2luLWJsb2NrLWVuZDogMzBweDtcbn1cbi50ZWFzZXIuYWVtLUdyaWRDb2x1bW4ubWFyZ2luLXRvcC0tbm9uZSB7XG4gIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1zdGFydDogMDtcbn1cbi50ZWFzZXIuYWVtLUdyaWRDb2x1bW4ubWFyZ2luLXRvcC0tc2luZ2xlIHtcbiAgLS1jb21wb25lbnQtbWFyZ2luLWJsb2NrLXN0YXJ0OiAzMHB4O1xufVxuLnRlYXNlci5hZW0tR3JpZENvbHVtbi5tYXJnaW4tdG9wLS1kb3VibGUge1xuICAtLWNvbXBvbmVudC1tYXJnaW4tYmxvY2stc3RhcnQ6IDMwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlci5hZW0tR3JpZENvbHVtbi5tYXJnaW4tdG9wLS1kb3VibGUge1xuICAgIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1zdGFydDogY2FsYygzMHB4ICogMik7XG4gIH1cbn1cbi50ZWFzZXIuYWVtLUdyaWRDb2x1bW4ubWFyZ2luLWJvdHRvbS0tbm9uZSB7XG4gIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1lbmQ6IDA7XG59XG4udGVhc2VyLmFlbS1HcmlkQ29sdW1uLm1hcmdpbi1ib3R0b20tLXNpbmdsZSB7XG4gIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1lbmQ6IDMwcHg7XG59XG4udGVhc2VyLmFlbS1HcmlkQ29sdW1uLm1hcmdpbi1ib3R0b20tLWRvdWJsZSB7XG4gIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1lbmQ6IDMwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlci5hZW0tR3JpZENvbHVtbi5tYXJnaW4tYm90dG9tLS1kb3VibGUge1xuICAgIC0tY29tcG9uZW50LW1hcmdpbi1ibG9jay1lbmQ6IGNhbGMoMzBweCAqIDIpO1xuICB9XG59XG4udGVhc2VyLmFlbS1HcmlkQ29sdW1uIC5jbXAtdGVhc2VyIHtcbiAgbWFyZ2luLWJsb2NrOiB2YXIoLS1jb21wb25lbnQtbWFyZ2luLWJsb2NrLXN0YXJ0KSB2YXIoLS1jb21wb25lbnQtbWFyZ2luLWJsb2NrLWVuZCk7XG59XG4uYWVtLUdyaWQgPiAudGVhc2VyLmFlbS1HcmlkQ29sdW1uOmZpcnN0LWNoaWxkOm5vdCgubWFyZ2luLXRvcC0tc2luZ2xlKTpub3QoLm1hcmdpbi10b3AtLWRvdWJsZSkgLmNtcC10ZWFzZXIge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7XG59IixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXX0= */