/*
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
```
*/
/* doc
---
title: Swap left right values
name: nn-rtl
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
nn-rtl(left): 10px;
nn-rtl(padding-right): 30px;
nn-rtl(0 1px 8px 12px) // 0 12px 8px 1px
```

*/
/*
    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
*/
.collage__container {
  margin: 30px 0;
  display: grid;
}
@media (min-width: 768px) {
  .collage__container {
    grid-template-columns: 50% 50%;
  }
}
@media (min-width: 960px) {
  .collage__container {
    grid-template-columns: 35% 35% 30%;
  }
}
.collage__box {
  position: relative;
  margin-bottom: 4px;
  height: 300px;
}
@media (min-width: 768px) {
  .collage__box {
    overflow: hidden;
  }
}
.collage__box .teaser {
  height: 100%;
  max-width: 100%;
}
.collage__box .teaser .cmp-teaser::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  pointer-events: none;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 10%, transparent 65%);
}
.collage__box .teaser .cmp-teaser--no-background::after {
  background: none;
}
.collage__box .teaser .s7videoplayer {
  position: absolute;
}
@media (max-width: 767px) {
  .collage__box .teaser {
    max-width: calc(100vw - 15px * 2);
  }
}
.collage__box .cmp-teaser {
  position: relative;
  margin: 0;
  height: 100%;
}
.collage__box .cmp-teaser:hover .cmp-teaser__description p::after {
  transform: var(--button-icon-transform-hover);
}
.collage__box .cmp-teaser__content {
  position: absolute;
  top: auto;
  bottom: 0;
  padding: 1em 1em 7px;
  color: #fff;
  transform: none;
  z-index: 1;
  pointer-events: none;
}
.collage__box .cmp-teaser__title {
  font-family: var(--ff-medium) !important;
  font-size: 21px !important;
  font-weight: 400 !important;
  line-height: 1.2 !important;
  letter-spacing: var(--ls-default) !important;
  margin-bottom: 10px !important;
  font-family: var(--ff-regular) !important;
  color: #fff;
}
@media (min-width: 768px) {
  .collage__box .cmp-teaser__title {
    font-size: 24px !important;
  }
}
.collage__box .cmp-teaser__title:last-child {
  margin-bottom: 24px;
}
.collage__box .cmp-teaser__description {
  font-family: var(--ff-medium);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: var(--ls-default);
  color: #fff;
  margin-top: 0;
}
.collage__box .cmp-teaser__description p {
  display: inline;
}
.collage__box .cmp-teaser__description p:last-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: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .collage__box .cmp-teaser__description p:last-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");
  }
}
.collage__box .cmp-teaser__description p:last-child::after {
  position: relative;
  vertical-align: bottom;
  transform: var(--button-icon-transform);
}
@media (min-width: 768px) {
  .collage__box .cmp-teaser__description p:last-child::after {
    top: -0.15em;
    vertical-align: middle;
  }
}
.collage__box .cmp-teaser__description p::after {
  margin-left: 3px;
  transition: transform 0.3s ease-out;
}
.collage__box .cmp-teaser__action-container {
  margin-top: 10px !important;
}
.collage__box .cmp-teaser__action-link {
  pointer-events: all;
}
.collage__box .cmp-teaser .cmp-image {
  height: 300px;
}
.collage__box .cmp-teaser .cmp-image__link {
  display: inline-block;
  height: 100%;
}
.collage__box .cmp-teaser .embed__youtube {
  height: 300px;
  margin: 0;
  padding-bottom: 0;
}
.collage__box .cmp-teaser__image {
  height: 100%;
}
.collage__box .cmp-teaser__image .img__asset,
.collage__box .cmp-teaser__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.collage__box .teaser {
  margin: 0;
}
.collage__box .cmp-container {
  height: 100%;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
.collage__box .cmp-container > * {
  flex: 1 0 100%;
}
@media (min-width: 768px) {
  .collage__box--one {
    grid-column: 1/span 1;
    grid-row: 1/span 2;
    margin-right: 4px;
  }
}
@media (min-width: 768px) {
  .collage__box--two {
    grid-column: 2/span 1;
    grid-row: 1/span 2;
  }
}
@media (min-width: 960px) {
  .collage__box--two {
    margin: 0 4px 0 0;
  }
}
.collage__box--three .cmp-teaser, .collage__box--four .cmp-teaser {
  --teaser-height: 148px;
}
.collage__box--three {
  height: 148px;
  grid-column: 1;
  grid-row: 4;
}
.collage__box--three .cmp-teaser .cmp-image,
.collage__box--three .cmp-teaser .embed__youtube {
  height: 148px;
}
.collage__box--three .eventlist__imageImg,
.collage__box--three .eventlistupcoming__imageImg {
  height: 148px;
}
@media (min-width: 768px) {
  .collage__box--three {
    grid-column: 1/span 1;
    grid-row: 5/span 1;
    margin-right: 4px;
  }
}
@media (min-width: 960px) {
  .collage__box--three {
    grid-column: 3/span 1;
    grid-row: 1/span 1;
    margin-right: 0;
  }
}
.collage__box--four {
  height: 148px;
  grid-column: 1;
  grid-row: 5;
}
.collage__box--four .cmp-teaser .cmp-image,
.collage__box--four .cmp-teaser .embed__youtube {
  height: 148px;
}
.collage__box--four .eventlist__imageImg,
.collage__box--four .eventlistupcoming__imageImg {
  height: 148px;
}
@media (min-width: 768px) {
  .collage__box--four {
    grid-column: 1/span 1;
    grid-row: 6/span 1;
    margin-right: 4px;
  }
}
@media (min-width: 960px) {
  .collage__box--four {
    grid-column: 3/span 1;
    grid-row: 2/span 1;
    margin-right: 0;
  }
}
.collage__box--five {
  grid-row: 3;
}
@media (min-width: 768px) {
  .collage__box--five {
    grid-column: 1/span 2;
    grid-row: 3/span 2;
    margin: 0 0 4px 0;
  }
}
@media (min-width: 960px) {
  .collage__box--five {
    margin: 0 4px 0 0;
  }
}
@media (min-width: 768px) {
  .collage__box--six {
    grid-column: 2/span 1;
    grid-row: 5/span 2;
  }
}
@media (min-width: 960px) {
  .collage__box--six {
    grid-column: 3/span 1;
    grid-row: 3/span 2;
  }
}
.collage__box--seven {
  display: none;
}
@supports (-webkit-touch-callout: none) {
  @media (max-width: 959px) {
    .collage .img__asset [mode=fullscreen] .s7smartcropvideoplayer {
      width: 100vw !important;
      height: 100vh !important;
    }
    .collage .img__asset [mode=fullscreen] .s7iconeffect {
      top: 50% !important;
      left: 50% !important;
      transform: translate(-50%, -50%) !important;
    }
    .collage .img__asset [mode=fullscreen] .s7videoplayer {
      width: 100vw !important;
      height: 100vh !important;
    }
    .collage .img__asset [mode=fullscreen] .s7controlbar {
      width: 100% !important;
      max-width: 100vw;
    }
  }
  @media (max-width: 959px) and (orientation: landscape) {
    .collage .img__asset__smart-crop-video [mode=fullscreen] video.s7videoelement {
      top: 50% !important;
      transform: translateY(-50%) !important;
      max-width: 100vw;
    }
    .collage .img__asset [mode=fullscreen] {
      width: 100vw !important;
      position: fixed !important;
      height: 100vh !important;
      top: 0 !important;
      left: 0 !important;
    }
  }
}

.collage__fiveElements .collage__box--one {
  height: 604px;
}
.collage__fiveElements .collage__box--one .cmp-teaser .cmp-image,
.collage__fiveElements .collage__box--one .cmp-teaser .embed__youtube {
  height: 604px;
}
@media (min-width: 768px) {
  .collage__fiveElements .collage__box--one {
    grid-column: 1/span 1;
    grid-row: 1/span 4;
  }
}
@media (min-width: 960px) {
  .collage__fiveElements .collage__box--one {
    margin-bottom: 0;
  }
}
.collage__fiveElements .collage__box--two {
  height: 604px;
}
.collage__fiveElements .collage__box--two .cmp-teaser .cmp-image,
.collage__fiveElements .collage__box--two .cmp-teaser .embed__youtube {
  height: 604px;
}
@media (min-width: 768px) {
  .collage__fiveElements .collage__box--two {
    grid-column: 2/span 1;
    grid-row: 1/span 4;
  }
}
.collage__fiveElements .collage__box--five {
  display: none;
}

@media (min-width: 768px) {
  .collage__sevenElements .collage__container {
    display: grid;
    grid-template-columns: 50% 50%;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__container {
    grid-template-columns: 24% 24% 18% 17% 17%;
  }
}
.collage__sevenElements .collage__box {
  overflow: hidden;
}
.collage__sevenElements .collage__box--one, .collage__sevenElements .collage__box--two, .collage__sevenElements .collage__box--three, .collage__sevenElements .collage__box--four, .collage__sevenElements .collage__box--five, .collage__sevenElements .collage__box--six, .collage__sevenElements .collage__box--seven {
  height: 210px;
}
.collage__sevenElements .collage__box--one .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--one .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--two .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--two .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--three .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--three .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--four .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--four .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--five .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--five .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--six .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--six .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--seven .cmp-teaser .cmp-image,
.collage__sevenElements .collage__box--seven .cmp-teaser .embed__youtube {
  height: 210px;
}
.collage__sevenElements .collage__box--one .eventlist__imageImg,
.collage__sevenElements .collage__box--one .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--two .eventlist__imageImg,
.collage__sevenElements .collage__box--two .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--three .eventlist__imageImg,
.collage__sevenElements .collage__box--three .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--four .eventlist__imageImg,
.collage__sevenElements .collage__box--four .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--five .eventlist__imageImg,
.collage__sevenElements .collage__box--five .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--six .eventlist__imageImg,
.collage__sevenElements .collage__box--six .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--seven .eventlist__imageImg,
.collage__sevenElements .collage__box--seven .eventlistupcoming__imageImg {
  height: 210px;
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--two, .collage__sevenElements .collage__box--three, .collage__sevenElements .collage__box--four, .collage__sevenElements .collage__box--five, .collage__sevenElements .collage__box--six, .collage__sevenElements .collage__box--seven {
    height: 240px;
  }
  .collage__sevenElements .collage__box--two .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--two .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--three .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--three .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--four .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--four .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--five .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--five .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--six .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--six .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--seven .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--seven .cmp-teaser .embed__youtube {
    height: 240px;
  }
  .collage__sevenElements .collage__box--two .eventlist__imageImg,
  .collage__sevenElements .collage__box--two .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--three .eventlist__imageImg,
  .collage__sevenElements .collage__box--three .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--four .eventlist__imageImg,
  .collage__sevenElements .collage__box--four .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--five .eventlist__imageImg,
  .collage__sevenElements .collage__box--five .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--six .eventlist__imageImg,
  .collage__sevenElements .collage__box--six .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--seven .eventlist__imageImg,
  .collage__sevenElements .collage__box--seven .eventlistupcoming__imageImg {
    height: 240px;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--one {
    height: 360px;
  }
  .collage__sevenElements .collage__box--one .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--one .cmp-teaser .embed__youtube {
    height: 360px;
  }
  .collage__sevenElements .collage__box--one .eventlist__imageImg,
  .collage__sevenElements .collage__box--one .eventlistupcoming__imageImg {
    height: 360px;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--one, .collage__sevenElements .collage__box--two, .collage__sevenElements .collage__box--seven {
    height: 400px;
  }
  .collage__sevenElements .collage__box--one .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--one .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--two .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--two .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--seven .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--seven .cmp-teaser .embed__youtube {
    height: 400px;
  }
  .collage__sevenElements .collage__box--one .eventlist__imageImg,
  .collage__sevenElements .collage__box--one .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--two .eventlist__imageImg,
  .collage__sevenElements .collage__box--two .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--seven .eventlist__imageImg,
  .collage__sevenElements .collage__box--seven .eventlistupcoming__imageImg {
    height: 400px;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--three, .collage__sevenElements .collage__box--four, .collage__sevenElements .collage__box--five, .collage__sevenElements .collage__box--six {
    height: 197.5px;
  }
  .collage__sevenElements .collage__box--three .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--three .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--four .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--four .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--five .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--five .cmp-teaser .embed__youtube, .collage__sevenElements .collage__box--six .cmp-teaser .cmp-image,
  .collage__sevenElements .collage__box--six .cmp-teaser .embed__youtube {
    height: 197.5px;
  }
  .collage__sevenElements .collage__box--three .eventlist__imageImg,
  .collage__sevenElements .collage__box--three .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--four .eventlist__imageImg,
  .collage__sevenElements .collage__box--four .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--five .eventlist__imageImg,
  .collage__sevenElements .collage__box--five .eventlistupcoming__imageImg, .collage__sevenElements .collage__box--six .eventlist__imageImg,
  .collage__sevenElements .collage__box--six .eventlistupcoming__imageImg {
    height: 197.5px;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--one {
    grid-column: 1/span 2;
    grid-row: 1/span 1;
    margin: 0;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--one {
    grid-column: 1/span 3;
    grid-row: 1/span 2;
    margin: 0 5px 0 0;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--two {
    grid-column: 1/span 1;
    grid-row: 2/span 1;
    margin: 5px 5px 0 0;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--two {
    grid-column: 4/span 2;
    grid-row: 1/span 2;
    margin: 0;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--three {
    grid-column: 1/span 1;
    grid-row: 3/span 1;
    margin: 5px 5px 0 0;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--three {
    margin-right: 5px;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--four {
    grid-column: 2/span 1;
    grid-row: 3/span 1;
    margin: 5px 0 0;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--four {
    margin-right: 5px;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--five {
    grid-column: 1/span 1;
    grid-row: 4/span 1;
    margin: 5px 5px 0 0;
  }
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--six {
    grid-column: 2/span 1;
    grid-row: 4/span 1;
    margin: 5px 0 0;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--six {
    margin: 5px 5px 0 0;
  }
}
.collage__sevenElements .collage__box--seven {
  display: block;
}
@media (min-width: 768px) {
  .collage__sevenElements .collage__box--seven {
    grid-column: 2/span 1;
    grid-row: 2/span 1;
    margin: 5px 0 0;
  }
}
@media (min-width: 960px) {
  .collage__sevenElements .collage__box--seven {
    grid-column: 3/span 3;
    grid-row: 3/span 2;
  }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9faW1wb3J0X3ZhcmlhYmxlcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvdmFyaWFibGVzL190eXBvZ3JhcGhpZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9fel9pbmRleC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by1lbS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by1yZW0uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fbm4tcHgtdG8tdW5pdC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by11bml0bGVzcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1zdHJpcC11bml0LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX25uLXotaW5kZXguc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3RyaXAtdW5pdC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1ydGwuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fcHgtdG8tYXhpcy11bml0LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX3N3YXAtbGVmdC1yaWdodC12YWx1ZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3dhcC1sZWZ0LXJpZ2h0LW5hbWVzLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX3NwYWNpbmcuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fY2xlYXJmaXguc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fZm9udC1pY29uLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2ZvY3VzLWNvbG9yLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2lnbm9yZS1jb250YWluZXIuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fZ2VuZXJhdGUtYWVtLWdyaWQuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fYnV0dG9uLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2xpbmUtY2xhbXAuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fdHlwb2dyYXBoeS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19oaWRkZW4uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fb3ZlcmxheS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL190b3AtYm90dG9tLWJvcmRlci5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19yZXNldC1mdWxsd2lkdGgtbWFyZ2lucy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvY29sbGFnZS9jb2xsYWdlLmNsaWVudGxpYnMuc2NzcyIsIi4uL3RhcmdldC92YXVsdC13b3JrL2pjcl9yb290L2FwcHMvdm9sdm8vY2xpZW50bGlicy9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L2NvbGxhZ2UvY29sbGFnZS5idW5kbGUuY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL2J1aWxkL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9fY29sb3JzLnNjc3MiXSwibmFt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LHFCQUFBO0lBQ0Esa0JBQUE7SUFDQSxpQkFBQTtFQzZkZDtBQUNGO0FDbjlCSTtFRnlmSTtJQUVRLHFCQUFBO0lBQ0Esa0JBQUE7SUFDQSxtQkFBQTtFQzRkZDtBQUNGO0FDMTlCSTtFRnlmSTtJQVFRLHFCQUFBO0lBQ0Esa0JBQUE7SUFDQSxTQUFBO0VDNmRkO0FBQ0Y7QUNqK0JJO0VGdWdCSTtJQUVRLHFCQUFBO0lBQ0Esa0JBQUE7SUFDQSxtQkFBQTtFQzRkZDtBQUNGO0FDeCtCSTtFRnVnQkk7SUFRUSxpQkFqa0JDO0VDOGhDZjtBQUNGO0FDNytCSTtFRm1oQkk7SUFFUSxxQkFBQTtJQUNBLGtCQUFBO0lBQ0EsZUFBQTtFQzRkZDtBQUNGO0FDcC9CSTtFRm1oQkk7SUFRUSxpQkE3a0JDO0VDMGlDZjtBQUNGO0FDei9CSTtFRitoQkk7SUFFUSxxQkFBQTtJQUNBLGtCQUFBO0lBQ0EsbUJBQUE7RUM0ZGQ7QUFDRjtBQ2hnQ0k7RUZ1aUJJO0lBRVEscUJBQUE7SUFDQSxrQkFBQTtJQUNBLGVBQUE7RUMyZGQ7QUFDRjtBQ3ZnQ0k7RUZ1aUJJO0lBUVEsbUJBQUE7RUM0ZGQ7QUFDRjtBRHpkUTtFQUNJLGNBQUE7QUMyZFo7QUMvZ0NJO0VGbWpCSTtJQUlRLHFCQUFBO0lBQ0Esa0JBQUE7SUFDQSxlQUFBO0VDNGRkO0FBQ0Y7QUN0aENJO0VGbWpCSTtJQVVRLHFCQUFBO0lBQ0Esa0JBQUE7RUM2ZGQ7QUFDRiIsImZpbGUiOiIuLi90YXJnZXQvdmF1bHQtd29yay9qY3Jfcm9vdC9hcHBzL3ZvbHZvL2NsaWVudGxpYnMvc2hhcmVkL2NvbXBvbmVudHMvY29udGVudC9jb2xsYWdlL2NvbGxhZ2UuYnVuZGxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiLypcbkFsc28gcGxlYXNlIGZvbGxvdyB0aGlzXG5EbyB5b3VyIHByb2plY3QgaGF2ZSBkaWZlcmVudCBjaGFyc2V0IGxhbmd1YWdlcyB0byBhY2NvdW50IHdpdGg/XG4gICAgICAtIFllcyAtPiBmb2xsb3cgaHR0cHM6Ly9wcm9qZWN0cy5uZXRjZW50cmljLmJpei93aWtpL2Rpc3BsYXkvRlJPTlRFTkQvQ1NTKy0rRm9udCtOb3JtYWxpemF0aW9uXG4gICAgICAtIE5vIC0+IFlvdSBjYW4gc3RpbGwgdXNlIGl0LCB0aGVyZSBhcmUgdG9ucyBvZiBhZHZhbnRhZ2VzLCBidXQgaXRzIGNyZWF0ZSBzb21lIGV4dHJhIGNzcyBhbmQgbGF5b3V0IHJlbmRlcmluZ1xuKi9cbi8qXG4gICogRGVzaWduIHNwZWM6XG4gICogaHR0cHM6Ly93d3cuZmlnbWEuY29tL2ZpbGUvU1I0cnZRbE5uQ21QTXJROVdZYUlxdi9icmFuY2gvVEpxa0Z5bXEwOXdmOEt3bVkxV05jai9Wb2x2by1BRU0tRGVzaWduLXN5c3RlbT90eXBlPWRlc2lnbiZub2RlLWlkPTctMjYmdD1wQW05MTZWUmlxQ09EMkkxLTBcbiovXG4vKipcbiAqIHotaW5kZXhlcyBmcm9tIGxvd2VyIHRvIC0+IGhpZ2hlclxuICovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIGVtXG5uYW1lOiBubi1weC10by1lbVxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cbkNhbGN1bGF0ZSB0aGUgZW0gd2l0aCBhIGdpdmVuIHBpeGVsIHdpdGggdGhlIGdpdmVuIGJhc2UgZm9udCBzaXplXG5JZiB5b3UgZG9uJ3Qgc2V0IGEgJGJhc2UgdGhlICRiYXNlLWZvbnQtc2l6ZSBpcyB1c2VkIGFzIHRoZSBjb250ZXh0XG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG4tcHR1XG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkdmFsdWUgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcbkBwYXJhbWV0ZXIgJGJhc2UgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cbm5uLXN0cmlwLXVuaXRcblxuIyMgRXhhbXBsZVxuLS0tXG5gYGBodG1sX2V4YW1wbGVcbm5uLXB4LXRvLWVtKDUpIC8vIE91dHB1dDogMC4zMTI1ZW1cbm5uLXB4LXRvLWVtKDUsIDEwKSAvLyBPdXRwdXQ6IDAuNWVtXG5ubi1weC10by1lbSg1LCAyMCkgLy8gT3V0cHV0OiAwLjI1ZW1cbmBgYFxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gcmVtXG5uYW1lOiBubi1weC10by1yZW1cbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5DYWxjdWxhdGUgdGhlIHJlbSB3aXRoIGEgZ2l2ZW4gcGl4ZWwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBmb250IHNpemVcblxuSW46ICA1cHhcbk91dDogMC4zMTI1cmVtXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG4tcmVtXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkdmFsdWUgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cbm5uLXN0cmlwLXVuaXRcblxuIyMgRXhhbXBsZVxuLS0tXG5gYGBodG1sX2V4YW1wbGVcbm5uLXB4LXRvLXJlbSg1KSAvLyBPdXRwdXQgMC4zMTI1cmVtXG5gYGBcblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gdW5pdFxubmFtZTogcHgtdG8tdW5pdFxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cblNldCBhIHByb3BlcnR5IGFuZCB2YWx1ZSAocGl4ZWwgYmFzZWQgd2l0aG91dCB1bml0KVxuXG5DYWxjdWxhdGVzIHJlbSAvIGVtIC8gJSBmcm9tIGdpdmVuIHBpeGVsIGFuZCBiYXNlIChkZWZhdWx0IGJhc2UgaXMgdGhlXG5iYXNlLWZvbnQtc2l6ZSwgMTZweClcbklmIHJ0bCBpcyB0cnVlLCB0aGlzIG1peGluIGhhbmRsZXMgYWxsIHRoZSBkaXJlY3Rpb24gc3R1ZmY6XG4tIFN3aXRjaGluZyB0aGUgdmFsdWVzLCB3aGVuIHdlIGhhdmUgZXhhY3RseSA0IHZhbHVlc1xuLSBTd2l0Y2hpbmcgbGVmdCBhbmQgcmlnaHQgaW4gcHJvcGVydGllcyAocGFkZGluZyBhbmQgbWFyZ2luKVxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXB0dSAoZm9yIGVtIG9yICUgdG8gcGl4ZWwgLSB3aXRoIGJhc2UgcGFyYW1ldGVyKVxuLXJlbSAoZm9yIHJlbSB0byBwaXhlbCAtIHdpdGhvdXQgYmFzZSBwYXJhbWV0ZXIpXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkcHJvcGVydHkgPSBwYWRkaW5nIHwgbWFyZ2luIHwgZm9udC1zaXplIHwgd2lkdGggfCBoZWlnaHRcbkBwYXJhbWV0ZXIgJHZhbHVlID0gUGl4ZWwgYmFzZWQgbnVtYmVyIC0gYWRkIHB4IHRvIGtlZXAgdGhlIHB4IGZvciBhIHZhbHVlXG5AcGFyYW1ldGVyICRiYXNlID0gcHggYmFzZWQgbnVtYmVyLCBEZWZhdWx0OiAxNnB4XG5AcGFyYW1ldGVyICR1bml0ID0gU2V0IHVuaXQ6IHB4IHwgZW0gfCByZW0gfCBwZXJjZW50XG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5hYnN0cmFjdC9mdW5jdGlvbnMvc3dhcC1sZWZ0LXJpZ2h0XG5hYnN0cmFjdC9mdW5jdGlvbnMvc3RyaXAtdW5pdFxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBubi1weC10by11bml0KHBhZGRpbmcsIDAgMTBweCAyMCAwKTsgPT4gcGFkZGluZzogMCAxMHB4IDEuMjVyZW0gMDtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQocGFkZGluZywgMCAxMCAyMCAwKTsgPT4gcGFkZGluZzogMCAwLjYyNXJlbSAxLjI1cmVtIDA7XG5AaW5jbHVkZSBubi1weC10by11bml0KHBhZGRpbmctbGVmdCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLXJpZ2h0LCAxMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbiwgMCAxMCAyMCAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFyZ2luLWxlZnQsIDEwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFyZ2luLXJpZ2h0LCAxMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KGZvbnQtc2l6ZSwgMjApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdCh3aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWluLXdpZHRoLCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYW5uLXdpZHRoLCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChoZWlnaHQsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1pbi1oZWlnaHQsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hbm4taGVpZ2h0LCAxMDApO1xuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogUGl4ZWwgdG8gdW5pdGxlc3Ncbm5hbWU6IG5uLXB4LXRvLXVuaXRsZXNzXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuVGhpcyBtYWtlcyB0aGUgc2FtZSBjYWxjdWxhdGlvbiBhcyBweCB0byBlbS4gQnV0IGl0IGRvbid0IHByaW50IG91dCB0aGUgdW5pdC5cblxuVXNlIHRoaXMgZm9yIGxpbmUtaGVpZ2h0cy5cblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICR2YWx1ZSA9IHBpeGVsIGJhc2VkIG51bWJlciAod2l0aG91dCB1bml0KVxuQHBhcmFtZXRlciAkYmFzZSA9IHBpeGVsIGJhc2VkIG51bWJlciAod2l0aG91dCB1bml0KVxuXG4jIyBEZXBlbmRlbmNpZXNcbi0tLVxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5saW5lLWhlaWdodDogbm4tcHgtdG8tdW5pdGxlc3MoNSkgLy8gT3V0cHV0OiAwLjMxMjVcbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBTdHJpcCB1bml0XG5uYW1lOiBubi1zdHJpcC11bml0XG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3RyaXBzIG9mIHRoZSB1bml0IG9mIGEgbnVtYmVyXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkbnVtID0gbnVtYmVyIHdpdGggdW5pdCAoNXB4LCA1ZW0sIDVyZW0pXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbm5uLXN0cmlwLXVuaXQoNXB4KSAvL091dHB1dDogNVxubm4tc3RyaXAtdW5pdCgxMGVtKSAvLyBPdXRwdXQ6IDEwXG5ubi1zdHJpcC11bml0KDE1cmVtKSAvLyBPdXRwdXQ6IDE1XG5gYGBcblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogei1pbmRleFxubmFtZTogbm4tei1pbmRleFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cbkJlY2F1c2Ugei1pbmRpY2VzIGNhbiBnZXQgdHJpY2t5IHdlIG1hbmFnZSB0aGVtIGluIHRoZSB0aGVtZS5zY3NzIGdsb2JhbGx5LlxuXG5BbHdheXMgdXNlIHRoaXMgbWl4aW4gdG8gc2V0IHNldCBhIHotaW5kZXguXG5cblJlYWQgdGhlIEJlc3QgUHJhY3RpY2UgdG8gZ2V0IGFuIGZ1bGwgZG9jdW1lbnRhdGlvbjpcbmh0dHBzOi8vcHJvamVjdHMubmV0Y2VudHJpYy5iaXovd2lraS9kaXNwbGF5L0ZST05URU5EL0hvdyt0bytzZXQrYSt6LWluZGV4XG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG4telxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJGVsZW1lbnQgPSBOYW1lIG9mIHRoZSBlbGVtZW50IChub3JtYWxseSB0aGlzIHdpbGwgYmUgdGhlIG1vZHVsZSBuYW1lIGZvciB0aGUgbWFpbiBzdGFjaylcbkBwYXJhbWV0ZXIgJGxpc3QgPSBOYW1lIG9mIHRoZSBsaXN0IChkZWZhdWx0ICR6LWluZGljZXMpLiBNdXN0IGJlIG9ubHkgc2V0IGZvciBzdGFjayBjb250ZXh0XG5AcGFyYW1ldGVyICRtaW4gPSBTZXQgYSBtaW5pbXVtIHotaW5kZXggd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgbGlzdC5cblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cbiR6LWluZGljZXMgdmFyaWFibGUgaW4gdGhlIHRoZW1lLnNjc3NcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuXG4vLyBJbiB0aGUgU0FTUyB0aGVtZSBmaWxlXG5cbiR6LWluZGljZXM6IHNsaWRlciwgbW9kYWwsIGRpYWxvZywgbmF2aWdhdGlvbjtcblxuLy8gSW4gdGhlIFNBU1MgbW9kdWxlIGZpbGVcblxuLm1vZGFsIHtcbiAgICAmX19iYXNlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiBubi16LWluZGV4KG1vZGFsKTtcbiAgICB9XG59XG5gYGBcblxuIyMgU291cmNlXG4tLS1cbmh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAxNC8wNi8xMi9zYXNzeS16LWluZGV4LW1hbmFnZW1lbnQtZm9yLWNvbXBsZXgtbGF5b3V0cy9cblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogcmVtb3ZlIGV2ZXJ5IHVuaXRcbm5hbWU6IHN0cmlwLXVuaXRcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxucmVtb3ZlIGFsbCB1bml0c1xuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG51bWJlciA9IG51bWJlciB3aXRoIHVuaXRcblxuIyMgRXhhbXBsZVxuLS0tXG5gYGBodG1sX2V4YW1wbGVcbnN0cmlwLXVuaXQoNXB4KSAvLyBPdXRwdXQ6IDVcbmBgYFxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogU3dhcCBsZWZ0IHJpZ2h0IHZhbHVlc1xubmFtZTogbm4tcnRsXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3dhcCB0aGUgbmFtZXMgcmlnaHQgYW5kIGxlZnQgd2hlbiAkcnRsIGlzIHNldCB0byB0cnVlLlxuSWYgdGhlIHZhbHVlIGlzIG5vdCByaWdodCBvciBsZWZ0IGl0IHJldHVybnMgdGhlIG9yaWdpbmFsIHZhbHVlLlxuXG5JbjogIHJpZ2h0XG5PdXQ6IGxlZnQgKGluIHJ0bCksIHJpZ2h0IChpbiBsdHIpXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkb3JpZ2luID0gcmlnaHQgfCBsZWZ0XG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbm5uLXJ0bChsZWZ0KTogMTBweDtcbm5uLXJ0bChwYWRkaW5nLXJpZ2h0KTogMzBweDtcbm5uLXJ0bCgwIDFweCA4cHggMTJweCkgLy8gMCAxMnB4IDhweCAxcHhcbmBgYFxuXG4qL1xuLypcbiAgICBUaGlzIG1peGluIGNvbnZlcnRzIGFueSB1bml0bGVzcyBudW1iZXIgKGZvciBleGFtcGxlIDQwKSB0byB0aGUgY29ycmVjdCB1bml0LCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGF4aXMuXG5cbiAgICBQYXJhbWV0ZXJzOlxuICAgIC0gJHZhbHVlOiB1bml0bGVzcyBudW1iZXIgdG8gYmUgY29udmVydGVkLiBBIHVuaXQgaW4gJHZhbHVlIHdpbGwgY29ycmVzcG9uZCB0byBhIHB4IGluIHRoZSBicm93c2VyLFxuICAgICAgICBubyBtYXR0ZXIgaWYgaXQncyBvdXRwdXQgYXMgcHggb3IgcmVtXG5cbiAgICBSZXR1cm5zXG4gICAgLSBIb3Jpem9udGFsOiB3aWxsIGNvbnZlcnQgdGhlIG51bWJlciB0byBwaXhlbHMgKDQwcHgpXG4gICAgLSBWZXJ0aWNhbDogd2lsbCBjb252ZXJ0IHRoZSBudW1iZXIgdG8gcmVtIChpZiByZW0gPT09IDE2cHgsIHRoZW4gNDAgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gMi41IHJlbSlcbiovXG4vKlxuICAgIENvbnZlcnRzIGEgdW5pdGxlc3MgbnVtYmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHVuaXQgb24gdGhlIGhvcml6b250YWwgYXhpcy5cbiAgICBCeSBkZWZhdWx0IHdpbGwgY29udmVydCB0aGUgdmFsdWUgdG8gcHguXG4qL1xuLypcbiAgICBDb252ZXJ0cyBhIHVuaXRsZXNzIG51bWJlciB0byB0aGUgY29ycmVzcG9uZGluZyB1bml0IG9uIHRoZSB2ZXJ0aWNhbCBheGlzLlxuICAgIEJ5IGRlZmF1bHQgd2lsbCBjb252ZXJ0IHRoZSB2YWx1ZSB0byByZW0uXG4qL1xuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogU3dhcCBsZWZ0IHJpZ2h0IHZhbHVlc1xubmFtZTogc3dhcC1sZWZ0LXJpZ2h0LXZhbHVlc1xuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblN3YXAgdGhlIHZhbHVlcyBmb3IgcmlnaHQgYW5kIGxlZnQgd2hlbiAkcnRsIGlzIHNldCB0byB0cnVlOlxuXG5JbjogIDAgNXB4IDhweCAxMnB4XG5PdXQ6IDAgMTJweCA4cHggNXB4IChpbiBydGwpXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkdmFsdWVzID0gNCBudW1iZXJzICh3b3JrcyB3aXRoIGFsbCB1bml0cylcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuc3dhcC1sZWZ0LXJpZ2h0LXZhbHVlcygwIDFweCA4cHggMTJweCkgLy8gMCAxMnB4IDhweCAxcHhcbnN3YXAtbGVmdC1yaWdodC12YWx1ZXMoMCAxZW0gOGVtIDEyZW0pIC8vIDAgMTJlbSA4ZW0gMWVtXG53YXAtbGVmdC1yaWdodC12YWx1ZXMoMCAxcmVtIDhyZW0gMTJyZW0pIC8vIDAgMTJyZW0gOHJlbSAxcmVtXG5gYGBcblxuIyMgU291cmNlXG4tLS1cbmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTQxOTkzMjMvcmlnaHQtdG8tbGVmdC1ydGwtc3VwcG9ydC1pbi1zYXNzLXByb2plY3RcblxuKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFN3YXAgbGVmdCByaWdodCBuYW1lc1xubmFtZTogc3dhcC1sZWZ0LXJpZ2h0LW5hbWVzXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuU3dhcCB0aGUgbmFtZXMgcmlnaHQgYW5kIGxlZnQgd2hlbiAkcnRsIGlzIHNldCB0byB0cnVlLlxuSWYgdGhlIHZhbHVlIGlzIG5vdCByaWdodCBvciBsZWZ0IGl0IHJldHVybnMgdGhlIG9yaWdpbmFsIHZhbHVlLlxuXG5JbjogIHJpZ2h0XG5PdXQ6IGxlZnQgKGluIHJ0bCksIHJpZ2h0IChpbiBsdHIpXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkb3JpZ2luID0gcmlnaHQgfCBsZWZ0XG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbnN3YXAtbGVmdC1yaWdodC1uYW1lKGxlZnQpXG5zd2FwLWxlZnQtcmlnaHQtbmFtZShyaWdodClcbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNDE5OTMyMy9yaWdodC10by1sZWZ0LXJ0bC1zdXBwb3J0LWluLXNhc3MtcHJvamVjdFxuXG4qL1xuLyogIExpc3Qgb2YgQ1NTIHByb3BlcnRpZXMgdGhhdCB3aWxsIGFsd2F5cyBiZSBvdXRwdXQgYXQgbGVhc3QgYXMgMiBkaWZmZXJlbnQgdmFsdWVzXG4gICAgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBjb252ZXJ0IGVhY2ggb25lIHRvIHRoZSBjb3JyZWN0IGF4aXMgdW5pdCAqL1xuLypcbiAgICBNaXhpbiBmb3IgYXV0b21hdGljYWxseSBoYW5kbGluZyBzcGFjaW5ncyBhcm91bmQvYmV0d2VlbiBlbGVtZW50cy5cblxuICAgIFRoaXMgbWl4aW4gd2lsbCBhdXRvbWF0aWNhbGx5IGludmVydCB0aGUgbGVmL3JpZ2h0IGRpcmVjdGlvbnMgaW4gUlRMIGxhbmd1YWdlcy5cbiAgICBBbHNvLCB0aGUgdW5pdGxlc3MgdmFsdWVzIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBwcm9wZXIgdW5pdCBhY2NvcmRpbmcgdG8gdGhlIGF4aXNcblxuICAgIFBhcmFtZXRlcnM6XG4gICAgLSAkcHJvcGVydHktbmFtZTogbmFtZSBvZiB0aGUgQ1NTIHByb3BlcnR5IHRoYXQgc2hvdWxkIGJlIG91dHB1dC4gU3VwcG9ydGVkIHByb3BlcnRpZXMgYXJlOlxuICAgICAgICBtYXJnaW4sIG1hcmdpbi10b3AsIG1hcmdpbi1yaWdodCwgbWFyZ2luLWJvdHRvbSwgbWFyZ2luLWxlZnRcbiAgICAgICAgcGFkZGluZywgcGFkZGluZy10b3AsIHBhZGRpbmctcmlnaHQsIHBhZGRpbmctYm90dG9tLCBwYWRkaW5nLWxlZnRcbiAgICAgICAgd2lkdGgsIGhlaWdodCwgbWluLXdpZHRoLCBtYXgtd2lkdGgsIG1pbi1oZWlnaHQsIG1pbi1oZWlnaHRcbiAgICAtICR2YWx1ZTogdmFsdWUgdGhhdCB3aWxsIGJlIG91dHB1dCBhcyBwYXJ0IG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6XG4gICAgICAgIFVuaXRsZXNzIG51bWJlciAoNDApOiB0aGlzIHNob3VsZCBiZSB1c2VkIG1vc3Qgb2YgdGhlIHRpbWVzLiBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY29udmVydGVkXG4gICAgICAgICAgICB0byB0aGUgY29ycmVjdCB1bml0IGRlcGVuZGluZyBvbiB0aGUgYXhpcyB3aGVyZSBpdCdzIHVzZWQgKGhvcml6b250YWwgYXhpcyA9PiBweCwgdmVydGljYWwgYXhpcyA9PiByZW0pLlxuICAgICAgICAgICAgRWFjaCB1bml0IGluICR2YWx1ZSB3aWxsIGNvcnJlc3BvbmQgdG8gYSBweCBpbiB0aGUgYnJvd3Nlciwgbm8gbWF0dGVyIHRvIHdoaWNoIHVuaXQgaXQgd2lsbCBiZSBjb252ZXJ0ZWQuXG4gICAgICAgIE51bWJlciB3aXRoIHVuaXQgKDQwcHgsIDQwJS4uLik6IHRoZSBudW1iZXIgYW5kIHRoZSB1bml0IHdpbGwgYmUgcHJlc2VydmVkIGFuZCBvbmx5IHRoZSBsZWZ0L3JpZ2h0IGludmVyc2lvblxuICAgICAgICAgICAgd2lsbCBiZSBkb25lIGZvciBSVEwgbGFuZ3VhZ2VzXG4gICAgICAgIExpc3Qgb2YgdmFsdWVzICg0MCAzMCUgMjAgMTApOiBtYXJnaW4gYW5kIHBhZGRpbmcgc2hvcnRoYW5kcyB3aGl0aCBtdWx0aXBsZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5cbiAgICAgICAgICAgIFRoZSBsZWZ0L3JpZ2h0IHZhbHVlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3dhcHBlZCBpbiBSVEwgYW5kIHRoZSB1bml0bGVzcyBudW1iZXJzIHdpbGwgYmUgY29udmVydGVkXG4gICAgICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB1bml0LiBVbml0bGVzcyBhbmQgbnVtYmVycyB3aXRoIHVuaXRzIGNhbiBiZSBtaXhlZCBpbiB0aGUgc2FtZSBjYWxsLlxuICAgICAgICBVc2luZyBjYWxjKCkgaW4gYW55IG9mIHRoZSBwcmV2aW91cyBleGFtcGxlcyBpcyBzdXBwb3J0ZWQsIGFsdGhvdWdoIG5vIHVuaXQgY29udmVyc2lvbiB3aWxsIGJlIGRvbmVcblxuICMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbkBpbmNsdWRlIHNwYWNpbmcocGFkZGluZywgMCAxMHB4IDIwIDApOyA9PiBwYWRkaW5nOiAwIDEwcHggMnJlbSAwO1xuQGluY2x1ZGUgc3BhY2luZyhwYWRkaW5nLCAwIDEwIDIwIDApOyA9PiBwYWRkaW5nOiAwIDEwcHggMnJlbSAwO1xuQGluY2x1ZGUgc3BhY2luZyhwYWRkaW5nLWxlZnQsIDEwKTtcbkBpbmNsdWRlIHNwYWNpbmcocGFkZGluZy1yaWdodCwgMTApO1xuQGluY2x1ZGUgc3BhY2luZyhtYXJnaW4sIDAgMTAgMjAgMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1hcmdpbi1sZWZ0LCAxMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1hcmdpbi1yaWdodCwgMTApO1xuQGluY2x1ZGUgc3BhY2luZyh3aWR0aCwgMTAwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWluLXdpZHRoLCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhtYXgtd2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBzcGFjaW5nKGhlaWdodCwgMTAwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWluLWhlaWdodCwgMTAwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWF4LWhlaWdodCwgMTAwKTtcbmBgYFxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogQ2xlYXJmaXhcbm5hbWU6IGNsZWFyZml4XG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuQ2xlYXJzIGFmdGVyIGZsb2F0aW5nIGVsZW1lbnRcblxuVXNlIHRoaXMgbWl4aW4gb25seSBpbnNpZGUgbWVkaWEgcXVlcmllcyB3aGVyZSB5b3UgY2FuJ3QgdXNlIHRoZVxuYWJzdHJhY3QvZXh0ZW5kcy91dGlscy9fY2xlYXJmaXggdmVyc2lvbiwgd2hpY2ggYWRkcyBsZXNzIGNvZGUgdG8gY3NzXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbkBpbmNsdWRlIGNsZWFyZml4O1xuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9jbGVhci1maXgvXG4qL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc3RyaW5nLW5vLW5ld2xpbmUgKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogZm9jdXMgY29sb3Jcbm5hbWU6IGZvY3VzIGNvbG9yXG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuQWRkIGEgZm9jdXMgY29sb3Igd2hlbiBrZXlib2FyZC1mb2N1cyBpcyBhY3RpdmF0ZWRcbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtICRudW1iZXJcblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogaWdub3JlLWNvbnRhaW5lclxubmFtZTogaWdub3JlLWNvbnRhaW5lclxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cblNldCBmdWxsIHBhZ2Ugd2lkdGggZm9yIHNvbWV0aGluZyBpbnNpZGUgYSBjb250YWluZXJcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJGNvbnRhaW5lci1zaXplXG5AcGFyYW0gJGd1dHRlclxuXG4qL1xuLyogR2VuZXJhdGVzIGFsbCB0aGUgcnVsZXMgZm9yIHRoZSBncmlkIGNvbHVtbnMgdXAgdG8gdGhlIGdpdmVuIGFtb3VudCBvZiBjb2x1bW4gKi9cbi8qIEdlbmVyYXRlcyBhbGwgdGhlIHJ1bGVzIGZvciB0aGUgZ3JpZCBjb2x1bW4gb2Zmc2V0IHVwIHRvIHRoZSBnaXZlbiBhbW91bnQgb2YgY29sdW1uICovXG4vKiBHZW5lcmF0ZXMgYWxsIHRoZSBydWxlcyBmb3IgdGhlIGdyaWQgYW5kIGNvbHVtbnMgZm9yIHRoZSBnaXZlbiBicmVhayBwb2ludCBhbmQgdG90YWwgb2YgY29sdW1ucyAqL1xuLyogQVBJIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byBnZW5lcmF0ZSBhIGdyaWQgY29uZmlnICovXG4vKiBkb2Ncbi0tLVxudHlwZTogYnV0dG9uIHR5cGVcbnN0YXRlOiBzdGF0ZSBidXR0b25cbi0tLVxuXG5CdXR0b24gc3R5bGVzXG5cblVzZSB0aGlzIG1peGluIGZvciBidXR0b24gc3R5bGVzOiBjb2xvciB0ZXh0LCBiYWNrZ3JvdW5kLCBib3JkZXJcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgYnV0dG9uKHByaW1hcnkpO1xuYGBgXG4qL1xuLyogZG9jXG4tLS1cbmxpbmVMaW1pdDogVGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBsaW5lcyBhZnRlciB3aGljaCB0aGUgY29udGVudCB3aWxsIGJlIGNsYW1wZWQuIEl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuXG4tLS1cblxuVHJ1bmNhdGVzIHRleHQgYXQgYSBzcGVjaWZpYyBudW1iZXIgb2YgbGluZXMuXG5cblVzZSB0aGlzIG1peGluIHRvIGhpZGUgbG9uZyB0ZXh0LlxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBsaW5lLWNsYW1wKCRsaW5lTGltaXQ6IDQpO1xuYGBgXG4qL1xuLyogdHlwb2dyYXBoeVxuLS0tXG50aXRsZTogdHlwb2dyYXBoeVxubmFtZTogVHlwb2dyYXBoeVxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkFkZHMgZm9udCBDU1MgcHJvcGVydGllcyBieSBhIG1hcCBwcm92aWRlZFxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkdC1zdHlsZVxuQHBhcmFtICRpcy1pbXBvcnRhbnQ6IGZhbHNlXG5cbiogJHQtc3R5bGUgaXMgZXhwZWN0ZWQgdG8gYmUgYSBtYXAgd2l0aCAnZGVmYXVsdCcgYW5kICdicmVha3BvaW50W3NdJyBzdWJtYXBzIHdpdGggYSBwcm9wZXJ0eVxuZm9yIGV2ZXJ5IGNzcyBwcm9wZXJ0eSB0byBiZSBzZXQuXG4qICRpcy1pbXBvcnRhbnQgcGFyYW1ldGVyIGFsbG93cyB0byBmb3JjZSB0eXBvZ3JhcGh5IHByb3BlcnRpZXMgdG8gYmUgc2V0IGFzICFpbXBvcnRhbnRcblRyeSB0byBhdm9pZCBpdHMgdXNlLCBidXQgaXQgbWlnaHQgYmUgbmVlZGVkIGZvciBzaXR1YXRpb25zIHdoZXJlIHN0eWxlcyBmb3IgYSBjb21wb25lbnRcbmFyZSB2ZXJ5IHNwZWNpZmljIGFuZCB0byBvdmVyd3JpdGUgdGhlIGdlbmVyaWMgb25lcyBpcyB0b28gY29tcGxleCAoaWYgdGhleSBoYXZlIGEgbG90IG9mIHNwZWNpZmljaXR5KVxuXG4qL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBoaWRkZW5cbm5hbWU6IGhpZGRlblxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkhpZGUgZnJvbSBib3RoIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzOiBoNWJwLmNvbS91XG4jIyBQYXJhbWV0ZXJzXG4tLS1cblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogb3ZlcmxheVxubmFtZTogb3ZlcmxheVxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkNyZWF0ZXMgYW4gb3ZlcmxheSB3aXRoIHRoZSBwcm92aWRlZCBiYWNrZ3JvdW5kIGNvbG9yXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkYmdDb2xvclxuXG4qL1xuLyoqXG4gKiBAbWl4aW4gdG9wLWJvdHRvbS1ib3JkZXJcbiAqIEBkZXNjIENyZWF0ZXMgYSBkeW5hbWljIGFuZCBjdXN0b21pemFibGUgYm9yZGVyIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gb24gYW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gJHBvc2l0aW9uIC0gT3B0aW9uYWwsIERlZmF1bHQ6ICdib3R0b20nLiBEZWZpbmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYm9yZGVyLiBBY2NlcHRzIHZhbHVlcyAndG9wJyBvciAnYm90dG9tJy5cbiAqIEBwYXJhbSB7Y29sb3J9ICRjb2xvciAtIE9wdGlvbmFsLCBEZWZhdWx0OiAnJGMtYmxhY2snLiBTcGVjaWZpZXMgdGhlIGNvbG9yIG9mIHRoZSBib3JkZXIuIEFjY2VwdHMgYW55IHZhbGlkIENTUyBjb2xvciB2YWx1ZS5cbiAqIEBwYXJhbSB7bGVuZ3RofSAkd2lkdGggLSBPcHRpb25hbCwgRGVmYXVsdDogJzJweCcuIFNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuIEFjY2VwdHMgYW55IHZhbGlkIENTUyBsZW5ndGggdmFsdWUuXG4gKiBAcGFyYW0ge2xlbmd0aH0gJG1hcmdpbiAtIE9wdGlvbmFsLCBEZWZhdWx0OiAnMCcuIEFkZHMgbWFyZ2luIHRvIHRoZSBib3JkZXIuIEFjY2VwdHMgYW55IHZhbGlkIENTUyBsZW5ndGggdmFsdWUuXG4gKlxuICogQGV4YW1wbGVcbiAqICAgLmV4YW1wbGUtZWxlbWVudCB7XG4gKiAgICAgICBAaW5jbHVkZSB0b3AtYm90dG9tLWJvcmRlcigkcG9zaXRpb246IHRvcCwgJGNvbG9yOiAkYy1ncmV5LXR3bywgJHdpZHRoOiAzcHgsICRtYXJnaW46IDEwcHgpO1xuICogICB9XG4gKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogcmVzZXQtZnVsbHdpZHRoLW1hcmdpbnNcbm5hbWU6IHJlc2V0LWZ1bGx3aWR0aC1tYXJnaW5zXG5jYXRlZ29yeTogbWl4aW5zXG4tLS1cblxuUmVzZXQgbWFyZ2lucyBmb3IgZnVsbCB3aWR0aCBjb21wb25lbnRzIGluc2lkZSBhIENvbnRhaW5lciBvciBhIENvbHVtbiBDb250cm9sXG4qL1xuLmNvbGxhZ2VfX2NvbnRhaW5lciB7XG4gIG1hcmdpbjogMzBweCAwO1xuICBkaXNwbGF5OiBncmlkO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2xsYWdlX19jb250YWluZXIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5jb2xsYWdlX19jb250YWluZXIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMzUlIDM1JSAzMCU7XG4gIH1cbn1cbi5jb2xsYWdlX19ib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgaGVpZ2h0OiAzMDBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fYm94IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG4uY29sbGFnZV9fYm94IC50ZWFzZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5jb2xsYWdlX19ib3ggLnRlYXNlciAuY21wLXRlYXNlcjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgMC45KSAxMCUsIHRyYW5zcGFyZW50IDY1JSk7XG59XG4uY29sbGFnZV9fYm94IC50ZWFzZXIgLmNtcC10ZWFzZXItLW5vLWJhY2tncm91bmQ6OmFmdGVyIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5jb2xsYWdlX19ib3ggLnRlYXNlciAuczd2aWRlb3BsYXllciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAuY29sbGFnZV9fYm94IC50ZWFzZXIge1xuICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDE1cHggKiAyKTtcbiAgfVxufVxuLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyOmhvdmVyIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBwOjphZnRlciB7XG4gIHRyYW5zZm9ybTogdmFyKC0tYnV0dG9uLWljb24tdHJhbnNmb3JtLWhvdmVyKTtcbn1cbi5jb2xsYWdlX19ib3ggLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogYXV0bztcbiAgYm90dG9tOiAwO1xuICBwYWRkaW5nOiAxZW0gMWVtIDdweDtcbiAgY29sb3I6ICNmZmY7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgei1pbmRleDogMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyX190aXRsZSB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMjFweCAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXJlZ3VsYXIpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZmZmO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2xsYWdlX19ib3ggLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI0cHggIWltcG9ydGFudDtcbiAgfVxufVxuLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlcl9fdGl0bGU6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1tZWRpdW0pO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1scy1kZWZhdWx0KTtcbiAgY29sb3I6ICNmZmY7XG4gIG1hcmdpbi10b3A6IDA7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBwIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gcDpsYXN0LWNoaWxkOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gcDpsYXN0LWNoaWxkOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi5jb2xsYWdlX19ib3ggLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHA6bGFzdC1jaGlsZDo6YWZ0ZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIHRyYW5zZm9ybTogdmFyKC0tYnV0dG9uLWljb24tdHJhbnNmb3JtKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiBwOmxhc3QtY2hpbGQ6OmFmdGVyIHtcbiAgICB0b3A6IC0wLjE1ZW07XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxufVxuLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24gcDo6YWZ0ZXIge1xuICBtYXJnaW4tbGVmdDogM3B4O1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDtcbn1cbi5jb2xsYWdlX19ib3ggLmNtcC10ZWFzZXJfX2FjdGlvbi1jb250YWluZXIge1xuICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyX19hY3Rpb24tbGluayB7XG4gIHBvaW50ZXItZXZlbnRzOiBhbGw7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2Uge1xuICBoZWlnaHQ6IDMwMHB4O1xufVxuLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlciAuY21wLWltYWdlX19saW5rIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSB7XG4gIGhlaWdodDogMzAwcHg7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtdGVhc2VyX19pbWFnZSB7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5jb2xsYWdlX19ib3ggLmNtcC10ZWFzZXJfX2ltYWdlIC5pbWdfX2Fzc2V0LFxuLmNvbGxhZ2VfX2JveCAuY21wLXRlYXNlcl9faW1hZ2UgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG4uY29sbGFnZV9fYm94IC50ZWFzZXIge1xuICBtYXJnaW46IDA7XG59XG4uY29sbGFnZV9fYm94IC5jbXAtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5jb2xsYWdlX19ib3ggLmNtcC1jb250YWluZXIgPiAqIHtcbiAgZmxleDogMSAwIDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX2JveC0tb25lIHtcbiAgICBncmlkLWNvbHVtbjogMS9zcGFuIDE7XG4gICAgZ3JpZC1yb3c6IDEvc3BhbiAyO1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX2JveC0tdHdvIHtcbiAgICBncmlkLWNvbHVtbjogMi9zcGFuIDE7XG4gICAgZ3JpZC1yb3c6IDEvc3BhbiAyO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX2JveC0tdHdvIHtcbiAgICBtYXJnaW46IDAgNHB4IDAgMDtcbiAgfVxufVxuLmNvbGxhZ2VfX2JveC0tdGhyZWUgLmNtcC10ZWFzZXIsIC5jb2xsYWdlX19ib3gtLWZvdXIgLmNtcC10ZWFzZXIge1xuICAtLXRlYXNlci1oZWlnaHQ6IDE0OHB4O1xufVxuLmNvbGxhZ2VfX2JveC0tdGhyZWUge1xuICBoZWlnaHQ6IDE0OHB4O1xuICBncmlkLWNvbHVtbjogMTtcbiAgZ3JpZC1yb3c6IDQ7XG59XG4uY29sbGFnZV9fYm94LS10aHJlZSAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuLmNvbGxhZ2VfX2JveC0tdGhyZWUgLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlIHtcbiAgaGVpZ2h0OiAxNDhweDtcbn1cbi5jb2xsYWdlX19ib3gtLXRocmVlIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuLmNvbGxhZ2VfX2JveC0tdGhyZWUgLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZyB7XG4gIGhlaWdodDogMTQ4cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX2JveC0tdGhyZWUge1xuICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMTtcbiAgICBncmlkLXJvdzogNS9zcGFuIDE7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY29sbGFnZV9fYm94LS10aHJlZSB7XG4gICAgZ3JpZC1jb2x1bW46IDMvc3BhbiAxO1xuICAgIGdyaWQtcm93OiAxL3NwYW4gMTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cbi5jb2xsYWdlX19ib3gtLWZvdXIge1xuICBoZWlnaHQ6IDE0OHB4O1xuICBncmlkLWNvbHVtbjogMTtcbiAgZ3JpZC1yb3c6IDU7XG59XG4uY29sbGFnZV9fYm94LS1mb3VyIC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4uY29sbGFnZV9fYm94LS1mb3VyIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSB7XG4gIGhlaWdodDogMTQ4cHg7XG59XG4uY29sbGFnZV9fYm94LS1mb3VyIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuLmNvbGxhZ2VfX2JveC0tZm91ciAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nIHtcbiAgaGVpZ2h0OiAxNDhweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fYm94LS1mb3VyIHtcbiAgICBncmlkLWNvbHVtbjogMS9zcGFuIDE7XG4gICAgZ3JpZC1yb3c6IDYvc3BhbiAxO1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX2JveC0tZm91ciB7XG4gICAgZ3JpZC1jb2x1bW46IDMvc3BhbiAxO1xuICAgIGdyaWQtcm93OiAyL3NwYW4gMTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cbi5jb2xsYWdlX19ib3gtLWZpdmUge1xuICBncmlkLXJvdzogMztcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fYm94LS1maXZlIHtcbiAgICBncmlkLWNvbHVtbjogMS9zcGFuIDI7XG4gICAgZ3JpZC1yb3c6IDMvc3BhbiAyO1xuICAgIG1hcmdpbjogMCAwIDRweCAwO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX2JveC0tZml2ZSB7XG4gICAgbWFyZ2luOiAwIDRweCAwIDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fYm94LS1zaXgge1xuICAgIGdyaWQtY29sdW1uOiAyL3NwYW4gMTtcbiAgICBncmlkLXJvdzogNS9zcGFuIDI7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY29sbGFnZV9fYm94LS1zaXgge1xuICAgIGdyaWQtY29sdW1uOiAzL3NwYW4gMTtcbiAgICBncmlkLXJvdzogMy9zcGFuIDI7XG4gIH1cbn1cbi5jb2xsYWdlX19ib3gtLXNldmVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBzdXBwb3J0cyAoLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lKSB7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIC5jb2xsYWdlIC5pbWdfX2Fzc2V0IFttb2RlPWZ1bGxzY3JlZW5dIC5zN3NtYXJ0Y3JvcHZpZGVvcGxheWVyIHtcbiAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xuICAgICAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuY29sbGFnZSAuaW1nX19hc3NldCBbbW9kZT1mdWxsc2NyZWVuXSAuczdpY29uZWZmZWN0IHtcbiAgICAgIHRvcDogNTAlICFpbXBvcnRhbnQ7XG4gICAgICBsZWZ0OiA1MCUgIWltcG9ydGFudDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC5jb2xsYWdlIC5pbWdfX2Fzc2V0IFttb2RlPWZ1bGxzY3JlZW5dIC5zN3ZpZGVvcGxheWVyIHtcbiAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xuICAgICAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuY29sbGFnZSAuaW1nX19hc3NldCBbbW9kZT1mdWxsc2NyZWVuXSAuczdjb250cm9sYmFyIHtcbiAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICBtYXgtd2lkdGg6IDEwMHZ3O1xuICAgIH1cbiAgfVxuICBAbWVkaWEgKG1heC13aWR0aDogOTU5cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkge1xuICAgIC5jb2xsYWdlIC5pbWdfX2Fzc2V0X19zbWFydC1jcm9wLXZpZGVvIFttb2RlPWZ1bGxzY3JlZW5dIHZpZGVvLnM3dmlkZW9lbGVtZW50IHtcbiAgICAgIHRvcDogNTAlICFpbXBvcnRhbnQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgIWltcG9ydGFudDtcbiAgICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgfVxuICAgIC5jb2xsYWdlIC5pbWdfX2Fzc2V0IFttb2RlPWZ1bGxzY3JlZW5dIHtcbiAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50O1xuICAgICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gICAgICBoZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7XG4gICAgICB0b3A6IDAgIWltcG9ydGFudDtcbiAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuLmNvbGxhZ2VfX2ZpdmVFbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUge1xuICBoZWlnaHQ6IDYwNHB4O1xufVxuLmNvbGxhZ2VfX2ZpdmVFbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbi5jb2xsYWdlX19maXZlRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tb25lIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSB7XG4gIGhlaWdodDogNjA0cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX2ZpdmVFbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUge1xuICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMTtcbiAgICBncmlkLXJvdzogMS9zcGFuIDQ7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY29sbGFnZV9fZml2ZUVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuLmNvbGxhZ2VfX2ZpdmVFbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28ge1xuICBoZWlnaHQ6IDYwNHB4O1xufVxuLmNvbGxhZ2VfX2ZpdmVFbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbi5jb2xsYWdlX19maXZlRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdHdvIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSB7XG4gIGhlaWdodDogNjA0cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX2ZpdmVFbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28ge1xuICAgIGdyaWQtY29sdW1uOiAyL3NwYW4gMTtcbiAgICBncmlkLXJvdzogMS9zcGFuIDQ7XG4gIH1cbn1cbi5jb2xsYWdlX19maXZlRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZml2ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19jb250YWluZXIge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjQlIDI0JSAxOCUgMTclIDE3JTtcbiAgfVxufVxuLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXR3bywgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdGhyZWUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZpdmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCwgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4ge1xuICBoZWlnaHQ6IDIxMHB4O1xufVxuLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tb25lIC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUgLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbi5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXR3byAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXRocmVlIC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10aHJlZSAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbi5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIgLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlIC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSwgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2l4IC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXggLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zZXZlbiAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4gLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlIHtcbiAgaGVpZ2h0OiAyMTBweDtcbn1cbi5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSAuZXZlbnRsaXN0X19pbWFnZUltZyxcbi5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZywgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdGhyZWUgLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10aHJlZSAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1mb3VyIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZm91ciAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZml2ZSAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXggLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXggLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZywgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4gLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4uY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zZXZlbiAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nIHtcbiAgaGVpZ2h0OiAyMTBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28sIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXRocmVlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1mb3VyLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXgsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNldmVuIHtcbiAgICBoZWlnaHQ6IDI0MHB4O1xuICB9XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXR3byAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10aHJlZSAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10aHJlZSAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZm91ciAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZpdmUgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZml2ZSAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXggLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zZXZlbiAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zZXZlbiAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUge1xuICAgIGhlaWdodDogMjQwcHg7XG4gIH1cbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdHdvIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZywgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdGhyZWUgLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXRocmVlIC5ldmVudGxpc3R1cGNvbWluZ19faW1hZ2VJbWcsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIgLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIgLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZywgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZml2ZSAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZml2ZSAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXggLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zZXZlbiAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4gLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZyB7XG4gICAgaGVpZ2h0OiAyNDBweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSB7XG4gICAgaGVpZ2h0OiAzNjBweDtcbiAgfVxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tb25lIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSB7XG4gICAgaGVpZ2h0OiAzNjBweDtcbiAgfVxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUgLmV2ZW50bGlzdF9faW1hZ2VJbWcsXG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nIHtcbiAgICBoZWlnaHQ6IDM2MHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tb25lLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28sIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNldmVuIHtcbiAgICBoZWlnaHQ6IDQwMHB4O1xuICB9XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUgLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28gLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdHdvIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSwgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4gLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4gLmNtcC10ZWFzZXIgLmVtYmVkX195b3V0dWJlIHtcbiAgICBoZWlnaHQ6IDQwMHB4O1xuICB9XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tb25lIC5ldmVudGxpc3R1cGNvbWluZ19faW1hZ2VJbWcsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXR3byAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdHdvIC5ldmVudGxpc3R1cGNvbWluZ19faW1hZ2VJbWcsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNldmVuIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zZXZlbiAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nIHtcbiAgICBoZWlnaHQ6IDQwMHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdGhyZWUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZvdXIsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZpdmUsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCB7XG4gICAgaGVpZ2h0OiAxOTcuNXB4O1xuICB9XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXRocmVlIC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXRocmVlIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSwgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZm91ciAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1mb3VyIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSwgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZml2ZSAuY21wLXRlYXNlciAuY21wLWltYWdlLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlIC5jbXAtdGVhc2VyIC5lbWJlZF9feW91dHViZSwgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2l4IC5jbXAtdGVhc2VyIC5jbXAtaW1hZ2UsXG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCAuY21wLXRlYXNlciAuZW1iZWRfX3lvdXR1YmUge1xuICAgIGhlaWdodDogMTk3LjVweDtcbiAgfVxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10aHJlZSAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdGhyZWUgLmV2ZW50bGlzdHVwY29taW5nX19pbWFnZUltZywgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZm91ciAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZm91ciAuZXZlbnRsaXN0dXBjb21pbmdfX2ltYWdlSW1nLCAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlIC5ldmVudGxpc3RfX2ltYWdlSW1nLFxuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1maXZlIC5ldmVudGxpc3R1cGNvbWluZ19faW1hZ2VJbWcsIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCAuZXZlbnRsaXN0X19pbWFnZUltZyxcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2l4IC5ldmVudGxpc3R1cGNvbWluZ19faW1hZ2VJbWcge1xuICAgIGhlaWdodDogMTk3LjVweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLW9uZSB7XG4gICAgZ3JpZC1jb2x1bW46IDEvc3BhbiAyO1xuICAgIGdyaWQtcm93OiAxL3NwYW4gMTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1vbmUge1xuICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMztcbiAgICBncmlkLXJvdzogMS9zcGFuIDI7XG4gICAgbWFyZ2luOiAwIDVweCAwIDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10d28ge1xuICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMTtcbiAgICBncmlkLXJvdzogMi9zcGFuIDE7XG4gICAgbWFyZ2luOiA1cHggNXB4IDAgMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXR3byB7XG4gICAgZ3JpZC1jb2x1bW46IDQvc3BhbiAyO1xuICAgIGdyaWQtcm93OiAxL3NwYW4gMjtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS10aHJlZSB7XG4gICAgZ3JpZC1jb2x1bW46IDEvc3BhbiAxO1xuICAgIGdyaWQtcm93OiAzL3NwYW4gMTtcbiAgICBtYXJnaW46IDVweCA1cHggMCAwO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tdGhyZWUge1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tZm91ciB7XG4gICAgZ3JpZC1jb2x1bW46IDIvc3BhbiAxO1xuICAgIGdyaWQtcm93OiAzL3NwYW4gMTtcbiAgICBtYXJnaW46IDVweCAwIDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1mb3VyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLWZpdmUge1xuICAgIGdyaWQtY29sdW1uOiAxL3NwYW4gMTtcbiAgICBncmlkLXJvdzogNC9zcGFuIDE7XG4gICAgbWFyZ2luOiA1cHggNXB4IDAgMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNpeCB7XG4gICAgZ3JpZC1jb2x1bW46IDIvc3BhbiAxO1xuICAgIGdyaWQtcm93OiA0L3NwYW4gMTtcbiAgICBtYXJnaW46IDVweCAwIDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAuY29sbGFnZV9fc2V2ZW5FbGVtZW50cyAuY29sbGFnZV9fYm94LS1zaXgge1xuICAgIG1hcmdpbjogNXB4IDVweCAwIDA7XG4gIH1cbn1cbi5jb2xsYWdlX19zZXZlbkVsZW1lbnRzIC5jb2xsYWdlX19ib3gtLXNldmVuIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4ge1xuICAgIGdyaWQtY29sdW1uOiAyL3NwYW4gMTtcbiAgICBncmlkLXJvdzogMi9zcGFuIDE7XG4gICAgbWFyZ2luOiA1cHggMCAwO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgLmNvbGxhZ2VfX3NldmVuRWxlbWVudHMgLmNvbGxhZ2VfX2JveC0tc2V2ZW4ge1xuICAgIGdyaWQtY29sdW1uOiAzL3NwYW4gMztcbiAgICBncmlkLXJvdzogMy9zcGFuIDI7XG4gIH1cbn0iLG51bGwsbnVsbF19 */