/*
---
name: Colors
category: Shared/Variables
template: colors
tag:
 - variables
 - colors
colors:
 - variable: "text-color"
   description: "The default text color on the body"
   value: "#3F3F40"
 - variable: "text-inverted-color"
   description: "The default inverted text color on the body"
   value: "#FFF"
 - variable: "action-color"
   description: "The main action color used for links and buttons"
   value: "#EC6449"
 - variable: "body-color"
   description: "The main background color"
   value: "#FFF"
 - variable: "enabled-color"
   description: "Signalcolor for enabled/ok/success/true - search for a better name"
   value: "#7CAE7A"
 - variable: "disabled-color"
   description: "Signalcolor for disabled/notok/error/false - search for a better name"
   value: "#EC6449"
 - variable: "outline-navigation-color"
   description: "Color for the elements in the outline navigation"
   value: "lighten( #3F3F40, 60 )"
---

The color variables that are used throughout the library. 
*/
/*
---
name: Global settings
category: Shared/Variables
template: variables
tag:
 - variables
variables:
 - name: "text-line-height"
   description: "The line height of the body"
   default: "1.5rem"
 - name: "font-family"
   description: "The font-family of the body"
   default: "'Helvetica', sans-serif"
 - name: "text-rendering"
   description: "The text-rendering of the body"
   default: "optimizeLegibility"
 - name: "transition-duration"
   description: "The duration of the slide transitions"
   default: "0.4s"
 - name: "border-radius"
   description: "The default radius for borders"
   default: "2px"
---

These variables setups some global text formatting and styling.
*/
/*
---
name: chooseMaxContrast
category: Shared/Functions
---

Given one or more foreground colors `fgs` and one background color `bg`,
returns the foreground color with the highest contrast ratio with respect to `bg`.

## Definition:

```stylus
fg = chooseMaxContrast(fgs, bg);
```

## Example:

```stylus
bg = theme.colors.footer;
fg = theme.colors.text;
fgInverted = theme.colors.text-inverted;

theme.components.color-box.footer = {
	background-color: (bg),
	color: (chooseMaxContrast((fg fgInverted), bg)),
}
```
*/
html,
body,
div,
span,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
abbr,
address,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
samp,
small,
strong,
sub,
sup,
var,
b,
i,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary,
time,
mark,
audio,
video {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: inherit;
  vertical-align: baseline;
}
:root {
  font-size: 16px;
}
html {
  font-size: 100%;
}
body {
  line-height: 1.5rem;
  color: #202023;
  font-family: 'Roboto' , sans-serif;
  text-rendering: optimizeLegibility;
  background-color: #f5f5f6;
  -webkit-font-smoothing: antialiased;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
  display: block;
}
select {
  vertical-align: middle;
}
textarea {
  width: 100%;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
html {
  box-sizing: border-box;
}
*,
*:before,
*:after {
  box-sizing: inherit;
}
a {
  text-decoration: none;
  color: #3031fe;
}
img {
  display: block;
}
ul,
ol {
  margin-left: 1.25rem;
}
/*
---
name: .border-box
category: Box/Border
tag:
 - component
 - border
compile: true
---

A box to control borders on all four sides.

```jade
div.border-box.-left Some demo content
```

```jade
div.border-box.-all Some demo content
```
*/
.border-box.-top {
  border-top-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-right {
  border-right-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-bottom {
  border-bottom-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-left {
  border-left-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-all {
  border-style: solid;
  border-width: 1px;
  border-color: #e0e0e0;
}
.border-box.-round {
  border-radius: 50%;
}
/*
---
name: .color-box
category: Box/Color
tag:
 - component
 - colors
compile: true
---

Controls the background and/or foreground color(s) of the styled element.

## Configuration

This component produces a `-variant` for each key in the `theme.components.color-box` hash.
You can therefore define variants by including e. g. the following in the file `color-box.var.styl`:

```stylus
theme.components.color-box.footer = {
  background-color: theme.colors.footer,
  color: theme.colors.text,
};
```

## Application

```jade
div.color-box.-body(style="width:100px;height:100px")
  span Content
```

```jade
div.color-box.-action(style="width:100px;height:100px")
  span Content
```

## See also:

* [chooseMaxContrast](../../Shared/Functions/index.html#chooseMaxContrast) &mdash;
  In order to guarantee good legibility, the foreground `color` should be chosen
  in relation to the `background-color` such that a reasonably high contrast ratio
  will result. If you are working with `theme.colors` variables instead of fixed
  color values, this can help you select the best one; see there for an example.
```

*/
.color-box.-body {
  background-color: #f5f5f6;
  color: #202023;
}
.color-box.-action {
  background-color: #3031fe;
  color: #fff;
}
.color-box.-white {
  background-color: #fff;
  color: #000;
}
.color-box.-black {
  background-color: #000;
  color: #fff;
}
/*
---
name: .margin-box
category: Box/Margin
tag:
 - component
 - layout
compile: true
---

A component to add margins

## Applying margins

The easiest use case is to use simple `.margin-box .-all` for a margin on top, right, bottom and left with default size or
`.-top`, `.-right`, `.-bottom` and `.-left` for specified sides.

```jade
div.margin-box.-all
	div.aigis-debug Default margin applied on top, right, bottom and left
```
```jade
div.margin-box.-bottom
	div.aigis-debug Default margin applied on bottom
```


## Variants

The variants for the margins are `.-top-{size}`, `.-right-{size}`, `.-bottom-{size}` and `.left-{size}` together with sizes small, medium or large.
All sizes are defined in the variable theme.components.margin-box. Values are `small`, `medium`, `large` and `auto`

```jade
div.margin-box.-left-small
    div.aigis-debug Small margin applied on left
```
```jade
div.margin-box.-right-small
    div.aigis-debug Small margin applied on right
```
```jade
div.margin-box.-top-small
    div.aigis-debug Small margin applied on top
```
```jade
div.margin-box.-bottom-small
    div.aigis-debug Small margin applied on bottom
```

There are also shortcuts for vertical `.-v-{size}` and horizontal `.-h-{size}` together with sizes small, medium and large

```jade
div.margin-box.-v-medium
    div.aigis-debug Medium margin applied on top and bottom
```
```jade
div.margin-box.-h-medium
    div.aigis-debug Medium margin applied on right and left
```

## Variants for auto margins

```jade
div.margin-box.-auto.-h(style="width: 200px")
    div.aigis-debug Auto margin applied on right and left
```
```jade
div.margin-box.-auto.-v(style="height: 46px")
    div.aigis-debug Auto margin applied on top and bottom
```

*/
.margin-box.-top {
  margin-top: 1.25rem;
}
.margin-box.-right {
  margin-right: 1.25rem;
}
.margin-box.-bottom {
  margin-bottom: 1.25rem;
}
.margin-box.-left {
  margin-left: 1.25rem;
}
.margin-box.-h {
  margin-left: 1.25rem;
  margin-right: 1.25rem;
}
.margin-box.-v {
  margin-top: 1.25rem;
  margin-bottom: 1.25rem;
}
.margin-box.-all {
  margin: 1.25rem 1.25rem;
}
.margin-box.-top-small {
  margin-top: 0.9375rem;
}
.margin-box.-right-small {
  margin-right: 0.9375rem;
}
.margin-box.-bottom-small {
  margin-bottom: 0.9375rem;
}
.margin-box.-left-small {
  margin-left: 0.9375rem;
}
.margin-box.-h-small {
  margin-left: 0.9375rem;
  margin-right: 0.9375rem;
}
.margin-box.-v-small {
  margin-top: 0.9375rem;
  margin-bottom: 0.9375rem;
}
.margin-box.-all-small {
  margin: 0.9375rem 0.9375rem;
}
.margin-box.-top-medium {
  margin-top: 1.875rem;
}
.margin-box.-right-medium {
  margin-right: 1.875rem;
}
.margin-box.-bottom-medium {
  margin-bottom: 1.875rem;
}
.margin-box.-left-medium {
  margin-left: 1.875rem;
}
.margin-box.-h-medium {
  margin-left: 1.875rem;
  margin-right: 1.875rem;
}
.margin-box.-v-medium {
  margin-top: 1.875rem;
  margin-bottom: 1.875rem;
}
.margin-box.-all-medium {
  margin: 1.875rem 1.875rem;
}
.margin-box.-top-large {
  margin-top: 3.75rem;
}
.margin-box.-right-large {
  margin-right: 3.75rem;
}
.margin-box.-bottom-large {
  margin-bottom: 3.75rem;
}
.margin-box.-left-large {
  margin-left: 3.75rem;
}
.margin-box.-h-large {
  margin-left: 3.75rem;
  margin-right: 3.75rem;
}
.margin-box.-v-large {
  margin-top: 3.75rem;
  margin-bottom: 3.75rem;
}
.margin-box.-all-large {
  margin: 3.75rem 3.75rem;
}
.margin-box.-top-auto {
  margin-top: auto;
}
.margin-box.-right-auto {
  margin-right: auto;
}
.margin-box.-bottom-auto {
  margin-bottom: auto;
}
.margin-box.-left-auto {
  margin-left: auto;
}
.margin-box.-h-auto {
  margin-left: auto;
  margin-right: auto;
}
.margin-box.-v-auto {
  margin-top: auto;
  margin-bottom: auto;
}
.margin-box.-all-auto {
  margin: auto auto;
}
.margin-box.-top-tabitem {
  margin-top: 0.0625rem;
}
.margin-box.-right-tabitem {
  margin-right: 0.0625rem;
}
.margin-box.-bottom-tabitem {
  margin-bottom: 0.0625rem;
}
.margin-box.-left-tabitem {
  margin-left: 0.0625rem;
}
.margin-box.-h-tabitem {
  margin-left: 0.0625rem;
  margin-right: 0.0625rem;
}
.margin-box.-v-tabitem {
  margin-top: 0.0625rem;
  margin-bottom: 0.0625rem;
}
.margin-box.-all-tabitem {
  margin: 0.0625rem 0.0625rem;
}
.margin-box.-auto.-v {
  margin-top: auto;
  margin-bottom: auto;
}
.margin-box.-auto.-h {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .padding-box
category: Box/Padding
tag:
 - component
 - layout
compile: true
---

A simple component to add paddings

## Applying paddings

The easiest use case is to use simple `.padding-box .-all` for a padding on top, right, bottom and left with default size or
`.-top`, `.-right`, `.-bottom` and `.-left` for specified sides

```jade
div.aigis-debug.padding-box.-all Defaut padding applied on top, right, bottom and left
```
```jade
div.aigis-debug.padding-box.-bottom Defaut padding applied on bottom
```

## Variants

The variants for the paddings are `.-top-{size}`, `.-right-{size}`, `.-bottom-{size}` and `.left-{size}` together with sizes small, medium or large.
All sizes are defined in the variable theme.components.padding-box. Values are `small`, `medium`, and `large`

```jade
div.aigis-debug.padding-box.-left-small Small padding applied on left
```
```jade
div.aigis-debug.padding-box.-right-small(style="text-align:right") Small padding applied on right
```
```jade
div.aigis-debug.padding-box.-top-small Small padding applied on top
```
```jade
div.aigis-debug.padding-box.-bottom-small Small padding applied on bottom
```

There are also shortcuts for vertical `.-v-{size}` and horizontal `.-h-{size}` together with sizes

```jade
div.aigis-debug.padding-box.-v-medium Medium padding applied on top and bottom
```
```jade
div.aigis-debug.padding-box.-h-medium(style="width: 300px") Medium padding applied on right and left
```
```jade
div.aigis-debug.padding-box.-h-medium.-top-large(style="width: 400px") Medium padding applied on right and left, large padding applied on top
```
*/
.padding-box.-top {
  padding-top: 0.5rem;
}
.padding-box.-right {
  padding-right: 0.5rem;
}
.padding-box.-bottom {
  padding-bottom: 0.5rem;
}
.padding-box.-left {
  padding-left: 0.5rem;
}
.padding-box.-h {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.padding-box.-v {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.padding-box.-all {
  padding: 0.5rem 0.5rem;
}
.padding-box.-top-small {
  padding-top: 0.125rem;
}
.padding-box.-right-small {
  padding-right: 0.125rem;
}
.padding-box.-bottom-small {
  padding-bottom: 0.125rem;
}
.padding-box.-left-small {
  padding-left: 0.125rem;
}
.padding-box.-h-small {
  padding-left: 0.125rem;
  padding-right: 0.125rem;
}
.padding-box.-v-small {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.padding-box.-all-small {
  padding: 0.125rem 0.125rem;
}
.padding-box.-top-medium {
  padding-top: 1rem;
}
.padding-box.-right-medium {
  padding-right: 1rem;
}
.padding-box.-bottom-medium {
  padding-bottom: 1rem;
}
.padding-box.-left-medium {
  padding-left: 1rem;
}
.padding-box.-h-medium {
  padding-left: 1rem;
  padding-right: 1rem;
}
.padding-box.-v-medium {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.padding-box.-all-medium {
  padding: 1rem 1rem;
}
.padding-box.-top-large {
  padding-top: 2rem;
}
.padding-box.-right-large {
  padding-right: 2rem;
}
.padding-box.-bottom-large {
  padding-bottom: 2rem;
}
.padding-box.-left-large {
  padding-left: 2rem;
}
.padding-box.-h-large {
  padding-left: 2rem;
  padding-right: 2rem;
}
.padding-box.-v-large {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.padding-box.-all-large {
  padding: 2rem 2rem;
}
.padding-box.-gutter {
  padding: 0.9375rem 0.9375rem;
}
/*
---
name: .shadow-box
category: Box/Shadow
tag:
 - component
 - shadow
 - helper
compile: true
---

A box to control box-shadows with different variants

## Default variants
```jade
div.shadow-box Demo content
div.shadow-box.-inset Demo content
div.shadow-box.-zero Use zero shadow in animations
```
*/
.shadow-box {
  box-shadow: 0px 1px 6px 0px rgba(0,0,0,0.17);
}
.shadow-box.-inset {
  box-shadow: inset 0px 1px 6px 0px rgba(0,0,0,0.17);
}
.shadow-box.-zero {
  box-shadow: inset 0px 0px 0px 0px rgba(0,0,0,0.17);
}
/*
---
name: .spacer-box
category: Box/Spacer
tag:
 - component
 - layout
compile: true
---

This component is used to control spacing of a box. It mainly sets the margin and padding with a fixed set of configuration values.
The default space sizes are:
```
xxs: 2
xs: 4
s: 8
default: 16
l: 32
xl: 64`
```


To control the padding/margin for a specific space you can use the following variants:
```
-{kind}-{side}-{space}
-{kind}-{axis}-{space}
-{kind}-{space}

kind: m | p
side: top | right | bottom | left
space: xxs | xs | s | l | xl
axis: v | h
```

Or to use the `default` padding space you can use the following shortcuts:
```
-{kind}-{side}
-{kind}-{axis}
-{kind}

kind: m | p
side: top | right | bottom | left
axis: v | h
```

## Examples

Here are some example that show the usage with specific space sizes.
```jade
div.spacer-box.-m-s
	div.aigis-debug Apply s margin on all sides
```
```jade
div.spacer-box.-p-v-xl
	div.aigis-debug Apply xl padding on vertical sides
```
```jade
div.spacer-box.-p-top-l
	div.aigis-debug Apply l padding on top side
```

Here are some examples that show the usage with default space size.

```jade
div.spacer-box.-p
	div.aigis-debug Apply default padding on all sides
```
```jade
div.spacer-box.-m-h
	div.aigis-debug Apply default margin on horizontal axis
```
```jade
div.spacer-box.-m-bottom
	div.aigis-debug Apply default margin on bottom side
```

## Auto margin

For setting the vertical margin to auto the `.-auto` variant can be used.

```jade
div.spacer-box.-auto(style="width: 200px")
	div.aigis-debug Apply margin auto to left and right
```

*/
.spacer-box.-m-top-xxs {
  margin-top: 0.125rem;
}
.spacer-box.-p-top-xxs {
  padding-top: 0.125rem;
}
.spacer-box.-m-right-xxs {
  margin-right: 0.125rem;
}
.spacer-box.-p-right-xxs {
  padding-right: 0.125rem;
}
.spacer-box.-m-bottom-xxs {
  margin-bottom: 0.125rem;
}
.spacer-box.-p-bottom-xxs {
  padding-bottom: 0.125rem;
}
.spacer-box.-m-left-xxs {
  margin-left: 0.125rem;
}
.spacer-box.-p-left-xxs {
  padding-left: 0.125rem;
}
.spacer-box.-m-h-xxs {
  margin-left: 0.125rem;
  margin-right: 0.125rem;
}
.spacer-box.-m-v-xxs {
  margin-top: 0.125rem;
  margin-bottom: 0.125rem;
}
.spacer-box.-m-xxs {
  margin: 0.125rem 0.125rem;
}
.spacer-box.-p-h-xxs {
  padding-left: 0.125rem;
  padding-right: 0.125rem;
}
.spacer-box.-p-v-xxs {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.spacer-box.-p-xxs {
  padding: 0.125rem 0.125rem;
}
.spacer-box.-m-top-xs {
  margin-top: 0.25rem;
}
.spacer-box.-p-top-xs {
  padding-top: 0.25rem;
}
.spacer-box.-m-right-xs {
  margin-right: 0.25rem;
}
.spacer-box.-p-right-xs {
  padding-right: 0.25rem;
}
.spacer-box.-m-bottom-xs {
  margin-bottom: 0.25rem;
}
.spacer-box.-p-bottom-xs {
  padding-bottom: 0.25rem;
}
.spacer-box.-m-left-xs {
  margin-left: 0.25rem;
}
.spacer-box.-p-left-xs {
  padding-left: 0.25rem;
}
.spacer-box.-m-h-xs {
  margin-left: 0.25rem;
  margin-right: 0.25rem;
}
.spacer-box.-m-v-xs {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.spacer-box.-m-xs {
  margin: 0.25rem 0.25rem;
}
.spacer-box.-p-h-xs {
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}
.spacer-box.-p-v-xs {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.spacer-box.-p-xs {
  padding: 0.25rem 0.25rem;
}
.spacer-box.-m-top-s {
  margin-top: 0.5rem;
}
.spacer-box.-p-top-s {
  padding-top: 0.5rem;
}
.spacer-box.-m-right-s {
  margin-right: 0.5rem;
}
.spacer-box.-p-right-s {
  padding-right: 0.5rem;
}
.spacer-box.-m-bottom-s {
  margin-bottom: 0.5rem;
}
.spacer-box.-p-bottom-s {
  padding-bottom: 0.5rem;
}
.spacer-box.-m-left-s {
  margin-left: 0.5rem;
}
.spacer-box.-p-left-s {
  padding-left: 0.5rem;
}
.spacer-box.-m-h-s {
  margin-left: 0.5rem;
  margin-right: 0.5rem;
}
.spacer-box.-m-v-s {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}
.spacer-box.-m-s {
  margin: 0.5rem 0.5rem;
}
.spacer-box.-p-h-s {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.spacer-box.-p-v-s {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.spacer-box.-p-s {
  padding: 0.5rem 0.5rem;
}
.spacer-box.-m-top {
  margin-top: 1rem;
}
.spacer-box.-p-top {
  padding-top: 1rem;
}
.spacer-box.-m-right {
  margin-right: 1rem;
}
.spacer-box.-p-right {
  padding-right: 1rem;
}
.spacer-box.-m-bottom {
  margin-bottom: 1rem;
}
.spacer-box.-p-bottom {
  padding-bottom: 1rem;
}
.spacer-box.-m-left {
  margin-left: 1rem;
}
.spacer-box.-p-left {
  padding-left: 1rem;
}
.spacer-box.-m-h {
  margin-left: 1rem;
  margin-right: 1rem;
}
.spacer-box.-m-v {
  margin-top: 1rem;
  margin-bottom: 1rem;
}
.spacer-box.-m {
  margin: 1rem 1rem;
}
.spacer-box.-p-h {
  padding-left: 1rem;
  padding-right: 1rem;
}
.spacer-box.-p-v {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.spacer-box.-p {
  padding: 1rem 1rem;
}
.spacer-box.-m-top-l {
  margin-top: 2rem;
}
.spacer-box.-p-top-l {
  padding-top: 2rem;
}
.spacer-box.-m-right-l {
  margin-right: 2rem;
}
.spacer-box.-p-right-l {
  padding-right: 2rem;
}
.spacer-box.-m-bottom-l {
  margin-bottom: 2rem;
}
.spacer-box.-p-bottom-l {
  padding-bottom: 2rem;
}
.spacer-box.-m-left-l {
  margin-left: 2rem;
}
.spacer-box.-p-left-l {
  padding-left: 2rem;
}
.spacer-box.-m-h-l {
  margin-left: 2rem;
  margin-right: 2rem;
}
.spacer-box.-m-v-l {
  margin-top: 2rem;
  margin-bottom: 2rem;
}
.spacer-box.-m-l {
  margin: 2rem 2rem;
}
.spacer-box.-p-h-l {
  padding-left: 2rem;
  padding-right: 2rem;
}
.spacer-box.-p-v-l {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
.spacer-box.-p-l {
  padding: 2rem 2rem;
}
.spacer-box.-m-top-xl {
  margin-top: 4rem;
}
.spacer-box.-p-top-xl {
  padding-top: 4rem;
}
.spacer-box.-m-right-xl {
  margin-right: 4rem;
}
.spacer-box.-p-right-xl {
  padding-right: 4rem;
}
.spacer-box.-m-bottom-xl {
  margin-bottom: 4rem;
}
.spacer-box.-p-bottom-xl {
  padding-bottom: 4rem;
}
.spacer-box.-m-left-xl {
  margin-left: 4rem;
}
.spacer-box.-p-left-xl {
  padding-left: 4rem;
}
.spacer-box.-m-h-xl {
  margin-left: 4rem;
  margin-right: 4rem;
}
.spacer-box.-m-v-xl {
  margin-top: 4rem;
  margin-bottom: 4rem;
}
.spacer-box.-m-xl {
  margin: 4rem 4rem;
}
.spacer-box.-p-h-xl {
  padding-left: 4rem;
  padding-right: 4rem;
}
.spacer-box.-p-v-xl {
  padding-top: 4rem;
  padding-bottom: 4rem;
}
.spacer-box.-p-xl {
  padding: 4rem 4rem;
}
.spacer-box.-auto {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .transform-box
category: Box/Transform
tag:
 - component
 - tranform
 - helper
compile: true
---

A box to control common transformations

## Rotate
```jade
div.transform-box.-rot90 Some demo content
div.transform-box.-rot180 Some demo content
div.transform-box.-rot270 Some demo content
```

## Flip
```jade
div.transform-box.-flipX Some demo content
div.transform-box.-flipY Some demo content
```
*/
.transform-box.-rot90 {
  -webkit-transform: rotate(90deg);
          transform: rotate(90deg);
}
.transform-box.-rot180 {
  -webkit-transform: rotate(180deg);
          transform: rotate(180deg);
}
.transform-box.-rot270 {
  -webkit-transform: rotate(270deg);
          transform: rotate(270deg);
}
.transform-box.-flipX {
  -webkit-transform: scaleX(-1);
          transform: scaleX(-1);
}
.transform-box.-flipY {
  -webkit-transform: scaleY(-1);
          transform: scaleY(-1);
}
/*
---
name: .button-style
category: Components/Button
tag:
 - component
 - button
compile: true
---

A button component as a base for different button variants defined in its configuration.

```jade
button.button-style.-main Action
```
*/
.button-style {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background: transparent;
  border: none;
  display: inline-block;
  cursor: pointer;
  outline: none;
  white-space: nowrap;
  display: -webkit-box;
  display: flex;
  -webkit-box-align: center;
          align-items: center;
}
.button-style.-main {
  background-color: #3031fe;
  font-weight: 500;
  border-radius: 2px;
  color: #fff;
  font-size: 0.875rem;
}
.button-style.-main:hover,
.button-style.-main:focus {
  background-color: #2627cb;
}
.button-style.-main-inverted {
  background-color: #f5f5f6;
  font-weight: 500;
  border-radius: 2px;
  color: #3031fe;
  font-size: 0.875rem;
}
.button-style.-main-inverted:hover {
  background-color: #3031fe;
  color: #fff;
}
.button-style.-action {
  background-color: #3031fe;
  border-radius: 2px;
  color: #fff;
}
.button-style.-action:hover {
  background-color: #2627cb;
}
.button-style.-hover {
  -webkit-transition: all 0.1s;
  transition: all 0.1s;
}
.button-style.-hover:hover,
.button-style.-hover:focus {
  color: #3031fe;
}
.button-style.-icon {
  padding: 0;
  padding-right: 1rem;
}
.button-style.-icon > .icon {
  background-color: #595afe;
  padding: 0.5625rem;
  margin-right: 1rem;
  border-top-left-radius: 2px;
  border-bottom-left-radius: 2px;
}
.button-style.-icon:hover > .icon {
  background-color: #4d4de4;
}
.button-style.-disabled {
  opacity: 0.8;
  cursor: default;
}
.button-style.-disabled:hover {
  background-color: #3031fe;
}
.button-style.-second {
  border: 1px solid #3031fe;
  border-radius: 2px;
  font-size: 0.875rem;
  color: #3031fe;
  letter-spacing: 0.5px;
  padding: 0.375rem 0.875rem;
}
.button-style.-second:hover {
  color: #fff;
  background-color: #3031fe;
}
.button-style.-inline {
  display: inline-block;
}
/*
---
name: .drop-down-menu
category: DropDown
tag:
 - component
 - dropdown
compile: true
---

This styles a menu inside a .drop-down.

```jade
div.drop-down-menu
	div.item Menu 1
	div.item Menu 2
	div.item Menu 3
```

Used in combination with the .drop-down itself
```jade
div.drop-down.-open
	div.toggle.aigis-debug Toggle
	div.content.drop-down-menu
		div.item Menu 1
		div.item Menu 2
		div.item Menu 3
```

*/
.drop-down-menu {
  box-shadow: 0px 1px 6px 0px rgba(0,0,0,0.17);
  border: 1px solid #e0e0e0;
  border-top: none;
}
.drop-down-menu > .item.-no-wrap {
  white-space: nowrap;
}
.drop-down-menu > .item + .item {
  border-top: 1px solid #e0e0e0;
}
/*
---
name: .drop-down
category: DropDown
tag:
 - component
 - dropdown
compile: true
---

This dropdown has the simple mechanism to open and close a dropdown content.

Trigger with mouseover by adding `.-hover` variant

Trigger with js by adding `.-open` variant 

Closed Dropdown
```jade
div.drop-down
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```
## Variants

Variants `.-top`, `.-bottom`, `.-left` and `.-right` can be combined

Bottom left
```jade
div.drop-down.-hover.-bottom.-left
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Bottom right
```jade
div.drop-down.-hover.-bottom.-right
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Top right
```jade
div.drop-down.-hover.-top.-right
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Top left
```jade
div.drop-down.-hover.-top.-left
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```
## Aside

There is an `.-aside` variant to open content aside

Top left aside
```jade
div.drop-down.-hover.-top.-left.-aside(style="left:200px;width:50%")
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

Top right aside
```jade
div.drop-down.-hover.-top.-right.-aside(style="width:50%")
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```
## Relative content

There is a variant for opening the content relative instead of absolute

Relative
```jade
div.drop-down.-hover.-relative(style="width:50%")
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

JS Trigger
```jade
div.drop-down.-open.-bottom.-left
	div.toggle.aigis-debug Toggle
	div.content Dropdown content
```

## Do not wrap content

A variant preventing the content from wrapping


```jade
div.drop-down.-hover.-nowrap
	div.toggle.aigis-debug Toggle
	div.content Dropdown content with some whitespaces
```

*/
.drop-down {
  position: relative;
  display: inline-block;
  cursor: pointer;
}
.drop-down.-open > .content {
  display: block;
}
.drop-down.-hover:hover > .content {
  display: block;
}
.drop-down.-top > .content {
  bottom: 100%;
}
.drop-down.-bottom > .content {
  top: 100%;
}
.drop-down.-left > .content {
  left: 0;
}
.drop-down.-top.-left.-aside > .content {
  -webkit-transform: translate(-100%, 100%);
          transform: translate(-100%, 100%);
}
.drop-down.-right > .content {
  right: 0;
}
.drop-down.-top.-right.-aside > .content {
  -webkit-transform: translate(100%, 100%);
          transform: translate(100%, 100%);
}
.drop-down.-relative > .content {
  position: relative;
}
.drop-down.-nowrap > .content {
  white-space: nowrap;
}
.drop-down > .toggle {
  display: inline-block;
}
.drop-down > .content {
  position: absolute;
  z-index: 1000;
  display: none;
}
._hidden {
  display: none !important;
}
.svg-icon {
  fill: currentColor;
  display: block;
  width: 1.25rem;
  height: 1.25rem;
}
.svg-icon.-inline {
  display: inline-block;
}
.svg-icon.-scale {
  width: 100%;
  height: 100%;
}
.svg-icon.-small {
  width: 0.9375rem;
  height: 0.9375rem;
}
.svg-icon.-placeholder {
  color: #9b9b9b;
}
.svg-icon.-breadcrumb {
  color: #6a6a6a;
  width: 0.625rem;
  height: 0.625rem;
}
/*
---
name: .abs-layout
category: Layout/Absolute
tag:
 - component
 - layout
compile: true
---

A simple component to position an element absolute. Default is top, left

## Variants

The variants for the vertical positioning are `.-top`, `.-vcenter` and `.-bottom`.
The variants for the horizontal positioning are `.-right`, `.-hcenter` and `.-left`.
Additinally the `-center` variant will center horizontal and vertical.
Variants to stretch an item to its full width/height can be dine with `.item.-stretch`.
In some situations the abs-layout itself needs to stretch so use the stretch variant on the component. `.abs-layout.-stretch` 

```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-center
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-top.-hcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-top.-right
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-right.-vcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-right.-bottom
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-bottom.-hcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-bottom.-left
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-left.-vcenter
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-left.-top
```
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-stretch
```

## Z-Index

Every item can controll its z index with the `.-z{i}`variants.
```jade
div.abs-layout(style="width: 100%; height: 50px")
    div.aigis-debug.item.-top.-left.-z1
    div.aigis-debug.item.-top.-left.-z2
```

*/
.abs-layout {
  position: relative;
}
.abs-layout.-stretch {
  width: 100%;
  height: 100%;
}
.abs-layout > .item {
  position: absolute;
}
.abs-layout > .item.-top {
  top: 0;
}
.abs-layout > .item.-right {
  right: 0;
}
.abs-layout > .item.-bottom {
  bottom: 0;
}
.abs-layout > .item.-left {
  left: 0;
}
.abs-layout > .item.-vcenter {
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
}
.abs-layout > .item.-hcenter {
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
}
.abs-layout > .item.-center {
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
}
.abs-layout > .item.-stretch {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.abs-layout > .item.-z1 {
  z-index: 1;
}
.abs-layout > .item.-z2 {
  z-index: 2;
}
.abs-layout > .item.-z3 {
  z-index: 3;
}
.abs-layout > .item.-z4 {
  z-index: 4;
}
.abs-layout > .item.-z5 {
  z-index: 5;
}
.abs-layout > .item.-z6 {
  z-index: 6;
}
.abs-layout > .item.-z7 {
  z-index: 7;
}
.abs-layout > .item.-z8 {
  z-index: 8;
}
.abs-layout > .item.-z9 {
  z-index: 9;
}
.abs-layout > .item.-z10 {
  z-index: 10;
}
/*
---
name: .fixed-layout
category: Layout/Fixed
tag:
 - container
---

Fixed container
You can position the container with the different variants `.-top`, `.-bottom`, `.-left`, `.-right`.
To span full width / height use `.-left` & `.-right` / `.-top` & `.-bottom`

Fixed top and full width

```jade
div.fixed-layout.-top.-left.-right.aigis-debug top left fullwidth
    
```

Fixed right and full height

```jade
div.fixed-layout.-top.-bottom.-right.aigis-debug top right fullheight
    
```

*/
.fixed-layout {
  position: fixed;
}
.fixed-layout.-top {
  top: 0;
}
.fixed-layout.-bottom {
  bottom: 0;
}
.fixed-layout.-left {
  left: 0;
}
.fixed-layout.-right {
  right: 0;
}
/*
---
name: .fixed-page-layout
category: Layout/Fixed Page
tag:
 - component
 - page
compile: true
---

A page layout with a fixed header and optional sidebars.
With the `-margin-{top|left|right}`, `-margin-{top|left|right}-small` variants you can control the spacing.
If the content for example needs a spacing towards the header use: `.content.-margin-top`.
If the sidebar show be below the header use: `.sidebar.-left.-margin-top`.


There are variants to resize the header and sidebars to a smaller width/height: `.header.-small`, `.sidebar.-small`.
If you need a spacing on your content or sidebar you need to adjust that manually like this:
```
div.fixed-page-layout
	div.header.-small
		div.aigis-debug(style="width:100%;height:100%")  Header
	div.content.-margin-top-small Content
	div.sidebar.-left.-margin-top-small.-small
		div.aigis-debug(style="height:100%")  Left Sidebar
```

## Header with sidebars

```jade
div.fixed-page-layout
	div.header
		div.aigis-debug(style="width:100%;height:100%")  Header
	div.content.-margin-top Content
	div.sidebar.-left.-margin-top
		div.aigis-debug(style="height:100%")  Left Sidebar
	div.sidebar.-right
		div.aigis-debug(style="height:100%")  Right Sidebar
```
*/
.fixed-page-layout > .header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 5.75rem;
  -webkit-transition: all 0.2s;
  transition: all 0.2s;
  z-index: 1000;
}
.fixed-page-layout > .header.-small {
  height: 3.125rem;
}
.fixed-page-layout > .header.-hide {
  -webkit-transform: translateY(-100%);
          transform: translateY(-100%);
}
.fixed-page-layout > .sidebar {
  position: fixed;
  top: 0;
  bottom: 0;
  width: 3.125rem;
  -webkit-transition: all 0.2s;
  transition: all 0.2s;
  z-index: 1005;
}
.fixed-page-layout > .sidebar.-margin-top {
  top: 5.75rem;
}
.fixed-page-layout > .sidebar.-margin-top-small {
  top: 3.125rem;
}
.fixed-page-layout > .sidebar.-small {
  width: ;
}
.fixed-page-layout > .sidebar.-left {
  left: 0;
}
.fixed-page-layout > .sidebar.-left.-hide {
  -webkit-transform: translateX(-100%);
          transform: translateX(-100%);
}
.fixed-page-layout > .sidebar.-right {
  right: 0;
}
.fixed-page-layout > .sidebar.-right.-hide {
  -webkit-transform: translateX(100%);
          transform: translateX(100%);
}
.fixed-page-layout > .content {
  -webkit-transition: margin 0.2s;
  transition: margin 0.2s;
}
.fixed-page-layout > .content.-margin-left {
  margin-left: 3.125rem;
}
.fixed-page-layout > .content.-margin-left-small {
  margin-left: ;
}
.fixed-page-layout > .content.-margin-right {
  margin-right: 3.125rem;
}
.fixed-page-layout > .content.-margin-right-small {
  margin-right: ;
}
.fixed-page-layout > .content.-margin-top {
  margin-top: 5.75rem;
}
.fixed-page-layout > .content.-margin-top-small {
  margin-top: 3.125rem;
}
/*
---
name: .flex-layout
category: Layout/Flex
tag:
 - component
 - layout
 - flexbox
compile: true
---

A layout system based on flexbox to align and distribute items horizontally and vertically.


# Alignment of items

The `-center` shortcut will center all items horizontal & vertical
```jade
div(style="height: 100px").flex-layout.-center
	div.aigis-debug Item 1
	div.aigis-debug Item 2
	div.aigis-debug Item 3
```

`-baseline` will align items based on their baseline. Works good if all the items contain text. 
```jade
div.flex-layout.-baseline
	div.aigis-debug Item
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
```

`-items-top` & `-items-bottom` will align the items either on top or bottom
```jade
div.flex-layout.-items-top
	div.aigis-debug Item 1
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
	div.aigis-debug Item 3
```
```jade
div.flex-layout.-items-bottom
	div.aigis-debug Item 1
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
	div.aigis-debug Item 3
```

`-items-center` will center the items vertically
```jade
div.flex-layout.-items-center
	div.aigis-debug Item 1
	div.aigis-debug(style="padding-top: 50px;padding-bottom: 30px;") Item 2
	div.aigis-debug Item 3
```

# Alignment of individual items

```jade
div(style="height: 100px").flex-layout
	div.aigis-debug.item.-top top
	div.aigis-debug.item.-center center
	div.aigis-debug.item.-bottom bottom
	div.aigis-debug.item.-stretch stretch
```

# Row mode

If you like a container that spans the full width with item that resize themself you can use the `-row` variant.

```jade
div.flex-layout.-row
	div.aigis-debug.item Item 1
	div.aigis-debug.item Item 2
	div.aigis-debug.item Item 3
```

If you like to fix an item based on its content width use the `-content` variant.
This is a shortcut for `-no-grow -no-shrink`. 
```jade
div.flex-layout.-row
	div.aigis-debug.item.-content
		img(src="http://via.placeholder.com/350x80")
	div.aigis-debug.item Item 2
	div.aigis-debug.item Item 3
```

You can control the sizing of the items with `-grow`, `-shrink`, `-no-grow`, `-no-shrink`.
```jade
div.flex-layout.-row
	div.aigis-debug.item.-no-shrink
		img(src="http://via.placeholder.com/350x80")
	div.aigis-debug.item.-no-grow Item 2
	div.aigis-debug.item Item 3
```


# Distribution of items

Use `-[v/h]-space-around` & `-[v/h]-space-between` to distribute the items in the flex container.

```jade
div.flex-layout.-h-space-around
	div.aigis-debug Item 1
	div.aigis-debug Item 2
	div.aigis-debug Item 3
```
```jade
div.flex-layout.-h-space-between
	div.aigis-debug Item 1
	div.aigis-debug Item 2
	div.aigis-debug Item 3
```
```jade
div(style="height: 200px").flex-layout.-v-space-around.-wrap
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-v-space-between.-wrap
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```

# Alignment of multiline items with wrap

If you have alot on items that wrap you can align the multilines with the following variants:
```jade
div.flex-layout.-wrap.-h-center
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div.flex-layout.-wrap.-left
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div.flex-layout.-wrap.-right
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-wrap.-v-center
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-wrap.-top
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```
```jade
div(style="height: 200px").flex-layout.-wrap.-bottom
	div.aigis-debug Item longer 1
	div.aigis-debug Item longer 2
	div.aigis-debug Item longer 3
	div.aigis-debug Item longer 4
	div.aigis-debug Item longer 5
	div.aigis-debug Item longer 6
	div.aigis-debug Item longer 7
	div.aigis-debug Item longer 8
	div.aigis-debug Item longer 9
```




*/
.flex-layout,
.article-element > .top,
.editor-tab > .items,
.tab-item {
  display: -webkit-box;
  display: flex;
}
.flex-layout.-inline,
.article-element > .top.-inline,
.editor-tab > .items.-inline,
.tab-item.-inline {
  display: flex-inline;
}
.flex-layout.-wrap,
.article-element > .top.-wrap,
.editor-tab > .items.-wrap,
.tab-item.-wrap {
  flex-wrap: wrap;
}
.flex-layout.-row,
.article-element > .top.-row,
.editor-tab > .items.-row,
.tab-item.-row {
  flex-wrap: nowrap;
}
.flex-layout.-row > .item,
.article-element > .top.-row > .item,
.editor-tab > .items.-row > .item,
.tab-item.-row > .item {
  -webkit-box-flex: 1;
          flex: 1 1 auto;
}
.flex-layout.-column,
.article-element > .top.-column,
.editor-tab > .items.-column,
.tab-item.-column {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
          flex-direction: column;
}
.flex-layout.-center,
.article-element > .top.-center,
.editor-tab > .items.-center,
.tab-item.-center {
  -webkit-box-pack: center;
          justify-content: center;
  -webkit-box-align: center;
          align-items: center;
  align-content: center;
}
.flex-layout.-baseline,
.article-element > .top.-baseline,
.editor-tab > .items.-baseline,
.tab-item.-baseline {
  -webkit-box-align: baseline;
          align-items: baseline;
}
.flex-layout.-left,
.article-element > .top.-left,
.editor-tab > .items.-left,
.tab-item.-left {
  -webkit-box-pack: start;
          justify-content: flex-start;
}
.flex-layout.-right,
.article-element > .top.-right,
.editor-tab > .items.-right,
.tab-item.-right {
  -webkit-box-pack: end;
          justify-content: flex-end;
}
.flex-layout.-top,
.article-element > .top.-top,
.editor-tab > .items.-top,
.tab-item.-top {
  align-content: flex-start;
}
.flex-layout.-bottom,
.article-element > .top.-bottom,
.editor-tab > .items.-bottom,
.tab-item.-bottom {
  align-content: flex-end;
}
.flex-layout.-v-center,
.article-element > .top.-v-center,
.editor-tab > .items.-v-center,
.tab-item.-v-center {
  align-content: center;
}
.flex-layout.-v-space-between,
.article-element > .top.-v-space-between,
.editor-tab > .items.-v-space-between,
.tab-item.-v-space-between {
  align-content: space-between;
}
.flex-layout.-v-space-around,
.article-element > .top.-v-space-around,
.editor-tab > .items.-v-space-around,
.tab-item.-v-space-around {
  align-content: space-around;
}
.flex-layout.-h-center,
.article-element > .top.-h-center,
.editor-tab > .items.-h-center,
.tab-item.-h-center {
  -webkit-box-pack: center;
          justify-content: center;
}
.flex-layout.-h-space-between,
.article-element > .top.-h-space-between,
.editor-tab > .items.-h-space-between,
.tab-item.-h-space-between {
  -webkit-box-pack: justify;
          justify-content: space-between;
}
.flex-layout.-h-space-around,
.article-element > .top.-h-space-around,
.editor-tab > .items.-h-space-around,
.tab-item.-h-space-around {
  justify-content: space-around;
}
.flex-layout.-items-top,
.article-element > .top.-items-top,
.editor-tab > .items.-items-top,
.tab-item.-items-top {
  -webkit-box-align: start;
          align-items: flex-start;
}
.flex-layout.-items-bottom,
.article-element > .top.-items-bottom,
.editor-tab > .items.-items-bottom,
.tab-item.-items-bottom {
  -webkit-box-align: end;
          align-items: flex-end;
}
.flex-layout.-items-center,
.article-element > .top.-items-center,
.editor-tab > .items.-items-center,
.tab-item.-items-center,
.editor-tab > .items,
.tab-item {
  -webkit-box-align: center;
          align-items: center;
}
.flex-layout.-items-stretch,
.article-element > .top.-items-stretch,
.editor-tab > .items.-items-stretch,
.tab-item.-items-stretch {
  -webkit-box-align: flex-stretch;
          align-items: flex-stretch;
}
.flex-layout > .item.-stretch,
.article-element > .top > .item.-stretch,
.editor-tab > .items > .item.-stretch,
.tab-item > .item.-stretch {
  align-self: stretch;
}
.flex-layout > .item.-top,
.article-element > .top > .item.-top,
.editor-tab > .items > .item.-top,
.tab-item > .item.-top {
  align-self: flex-start;
}
.flex-layout > .item.-center,
.article-element > .top > .item.-center,
.editor-tab > .items > .item.-center,
.tab-item > .item.-center {
  align-self: center;
}
.flex-layout > .item.-bottom,
.article-element > .top > .item.-bottom,
.editor-tab > .items > .item.-bottom,
.tab-item > .item.-bottom {
  align-self: flex-end;
}
.flex-layout > .item.-content,
.article-element > .top > .item.-content,
.editor-tab > .items > .item.-content,
.tab-item > .item.-content {
  -webkit-box-flex: 0;
          flex: none;
}
.flex-layout > .item.-grow,
.article-element > .top > .item.-grow,
.editor-tab > .items > .item.-grow,
.tab-item > .item.-grow {
  -webkit-box-flex: 1;
          flex-grow: 1;
}
.flex-layout > .item.-shrink,
.article-element > .top > .item.-shrink,
.editor-tab > .items > .item.-shrink,
.tab-item > .item.-shrink {
  flex-shrink: 1;
}
.flex-layout > .item.-no-grow,
.article-element > .top > .item.-no-grow,
.editor-tab > .items > .item.-no-grow,
.tab-item > .item.-no-grow {
  -webkit-box-flex: 0;
          flex-grow: 0;
}
.flex-layout > .item.-no-shrink,
.article-element > .top > .item.-no-shrink,
.editor-tab > .items > .item.-no-shrink,
.tab-item > .item.-no-shrink {
  flex-shrink: 0;
}
/*
---
name: .grid-layout
category: Layout/Grid
tag:
 - component
 - layout
 - grid
 - responsive
 - flexbox
compile: true
---

A grid layout system based on flexbox. It provides sizing variants to size on different percentages.


## Percentage based sizing

The easiest use case is to use simple `.item -w1`, `.item -w1-2`, `.item -w1-3`, `.item -w1-4` for a percentage based side-by-side rendering.

```jade
div.grid-layout
	div.item.-w1
		div.aigis-debug item -w1
	div.item.-w1-2 
		div.aigis-debug item -w1-2
	div.item.-w1-2
		div.aigis-debug item -w1-2
	div.item.-w1-3
		div.aigis-debug item -w1-3
	div.item.-w2-3
		div.aigis-debug item -w2-3
	div.item.-w1-4
		div.aigis-debug item -w1-4
	div.item.-w1-2
		div.aigis-debug item -w1-2
	div.item.-w1-4
		div.aigis-debug item -w1-4
```

## Layouts on different devices

The breakpoints for different screen sizes are specified in the global settings `theme.settings.breakpoints` and can be overwritten in `theme.components.grid-layout.breakpoints`.
The default settings define breakpoints with labels: `.-small-X-X`, `.-medium-X-X`, `.-large-X-X`.

```jade
div.grid-layout
	div.item.-w1.-small-1-3.-medium-1-2.-large-1-4
		div.aigis-debug item -w1 -small-1-3 -medium-1-2 -large-1-4
	div.item.-w1.-small-1-3.-medium-1-2.-large-1-4
		div.aigis-debug item -w1 -small-1-3 -medium-1-2 -large-1-4
	div.item.-w1-2.-small-1-3.-medium-1-2.-large-1-4
		div.aigis-debug item -w1-2 -small-1-3 -medium-1-2 -large-1-4
	div.item.-w1-2.-small-1.-medium-1-2.-large-1-4
		div.aigis-debug item -w1-2 -small-1 -medium-1-2 -large-1-4
```


## Gutter

If you need a spacing between the columns add the `-gutter` variant.
The size of the gutter is specified in the `grid-gutter`variable.

```jade
div.grid-layout.-gutter
	div.item.-w1-4
		div.aigis-debug col -w1-4
	div.item.-w1-4
		div.aigis-debug col -w1-4
	div.item.-w1-2
		div.aigis-debug col -w1-2
```


## Reverse order

To reverse the order in which the columns are displayed, you can add the modifier class `.-reverse` to your table-grid.
The columns will be in DOM order when viewport switches to small layout.

```jade
div.grid-layout.-reverse
	div.item.-w1-4
		div.aigis-debug First column in DOM
	div.item.-w1-4
		div.aigis-debug Second column in DOM
	div.item.-w1-4
		div.aigis-debug Third column in DOM
	div.item.-w1-4
		div.aigis-debug Fourth column in DOM
```

## Vertical centering

You can vertical center with the help of the `flex-layout` component.

```jade
div.grid-layout.flex-layout
	div.item.-w1-4
		div.aigis-debug A column with a lot of content that should wrap on fixed size.
	div.item.-bottom
		div.aigis-debug bottom
	div.item.-center
		div.aigis-debug center
	div.item.-stretch
		div.aigis-debug(style="height:100%") stretch
```

*/
.grid-layout {
  display: -webkit-box;
  display: flex;
  flex-wrap: wrap;
}
.grid-layout.-gutter {
  margin: -0.625rem -0.9375rem;
}
.grid-layout.-gutter > .item {
  padding: 0.625rem 0.9375rem;
}
.grid-layout.-reverse {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
          flex-direction: row-reverse;
}
.grid-layout > .item.-w1 {
  -webkit-box-flex: 0;
          flex: 0 0 100%;
  max-width: 100%;
}
.grid-layout > .item.-w1-2 {
  -webkit-box-flex: 0;
          flex: 0 0 50%;
  max-width: 50%;
}
.grid-layout > .item.-w1-3 {
  -webkit-box-flex: 0;
          flex: 0 0 33.333333333333336%;
  max-width: 33.333333333333336%;
}
.grid-layout > .item.-w2-3 {
  -webkit-box-flex: 0;
          flex: 0 0 66.66666666666667%;
  max-width: 66.66666666666667%;
}
.grid-layout > .item.-w1-4 {
  -webkit-box-flex: 0;
          flex: 0 0 25%;
  max-width: 25%;
}
.grid-layout > .item.-w3-4 {
  -webkit-box-flex: 0;
          flex: 0 0 75%;
  max-width: 75%;
}
@media all and (min-width: 48rem) {
  .grid-layout > .item.-small-1 {
    -webkit-box-flex: 0;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-small-1-2 {
    -webkit-box-flex: 0;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-small-1-3 {
    -webkit-box-flex: 0;
            flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-small-2-3 {
    -webkit-box-flex: 0;
            flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-small-1-4 {
    -webkit-box-flex: 0;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-small-3-4 {
    -webkit-box-flex: 0;
            flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 62rem) {
  .grid-layout > .item.-medium-1 {
    -webkit-box-flex: 0;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-medium-1-2 {
    -webkit-box-flex: 0;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-medium-1-3 {
    -webkit-box-flex: 0;
            flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-medium-2-3 {
    -webkit-box-flex: 0;
            flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-medium-1-4 {
    -webkit-box-flex: 0;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-medium-3-4 {
    -webkit-box-flex: 0;
            flex: 0 0 75%;
    max-width: 75%;
  }
}
@media all and (min-width: 75rem) {
  .grid-layout > .item.-large-1 {
    -webkit-box-flex: 0;
            flex: 0 0 100%;
    max-width: 100%;
  }
  .grid-layout > .item.-large-1-2 {
    -webkit-box-flex: 0;
            flex: 0 0 50%;
    max-width: 50%;
  }
  .grid-layout > .item.-large-1-3 {
    -webkit-box-flex: 0;
            flex: 0 0 33.333333333333336%;
    max-width: 33.333333333333336%;
  }
  .grid-layout > .item.-large-2-3 {
    -webkit-box-flex: 0;
            flex: 0 0 66.66666666666667%;
    max-width: 66.66666666666667%;
  }
  .grid-layout > .item.-large-1-4 {
    -webkit-box-flex: 0;
            flex: 0 0 25%;
    max-width: 25%;
  }
  .grid-layout > .item.-large-3-4 {
    -webkit-box-flex: 0;
            flex: 0 0 75%;
    max-width: 75%;
  }
}
/*
---
name: .max-width-layout
category: Layout/Page
tag:
 - component
 - layout
 - responsive
compile: true
---

This component will limit its content to a maximum width. Forthermore it can center its content.
Usefull for page content that should not span the full width.


## Percentage based sizing

*/
@media all and (min-width: 48rem) {
  .max-width-layout {
    max-width: 41.75rem;
  }
}
@media all and (min-width: 62rem) {
  .max-width-layout {
    max-width: 55.75rem;
  }
}
@media all and (min-width: 75rem) {
  .max-width-layout {
    max-width: 68.75rem;
  }
}
.max-width-layout.-center {
  margin-left: auto;
  margin-right: auto;
}
/*
---
name: .slide-overlay
category: Overlay/Slide
tag:
 - rollover
 - slide
 - overlay
---

Rollover component - content rollover rolls in - default from bottom

Trigger with mouserover by adding `.-hover` variant

Trigger with js by adding `.-show` variant

```jade
div.slide-overlay.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -left
```jade
div.slide-overlay.-left.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -right
```jade
div.slide-overlay.-right.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -top
```jade
div.slide-overlay.-top.-hover
    div Some main content
    div.rollover Rollover content
```

Rollover component variant -top with js trigger
```jade
div.slide-overlay.-top.-show
    div Some main content
    div.rollover Rollover content
```
*/
.slide-overlay {
  position: relative;
  overflow: hidden;
}
.slide-overlay > .rollover {
  position: absolute;
  bottom: 0;
  -webkit-transform: translate(0, 100%);
          transform: translate(0, 100%);
  -webkit-transition: -webkit-transform 0.5s ease;
  transition: -webkit-transform 0.5s ease;
  transition: transform 0.5s ease;
  transition: transform 0.5s ease, -webkit-transform 0.5s ease;
}
.slide-overlay.-left > .rollover {
  -webkit-transform: translate(-100%, 0);
          transform: translate(-100%, 0);
  left: 0;
}
.slide-overlay.-right > .rollover {
  -webkit-transform: translate(100%, 0);
          transform: translate(100%, 0);
  right: 0;
}
.slide-overlay.-top > .rollover {
  -webkit-transform: translate(0, -100%);
          transform: translate(0, -100%);
  top: 0;
}
.slide-overlay.-show > .rollover {
  -webkit-transform: translate(0, 0);
          transform: translate(0, 0);
}
.slide-overlay.-hover:hover > .rollover {
  -webkit-transform: translate(0, 0);
          transform: translate(0, 0);
}
/*
---
name: .control-responsive
category: Responsive/Control
tag:
 - responsive
 - display
compile: true
---

Controls the display of an element depending on the current breakpoint

## Hide

`.-hide-medium` hides an element as long as the screen is wider than the breakpoint `medium`.

```jade
div.control-responsive.-hide-medium Only shown when the screen is wider than the breakpoint medium
```

## Show

`.-show-medium` show an element as long as the screen is narrower than the breakpoint `medium`.

```jade
div.control-responsive.-show-medium Only shown when the screen is narrower than the breakpoint `medium`
```

*/
@media all and (max-width: 48rem) {
  .control-responsive.-hide-small {
    display: none;
  }
}
@media all and (min-width: 48rem) {
  .control-responsive.-show-small {
    display: none;
  }
}
@media all and (max-width: 62rem) {
  .control-responsive.-hide-medium {
    display: none;
  }
}
@media all and (min-width: 62rem) {
  .control-responsive.-show-medium {
    display: none;
  }
}
@media all and (max-width: 75rem) {
  .control-responsive.-hide-large {
    display: none;
  }
}
@media all and (min-width: 75rem) {
  .control-responsive.-show-large {
    display: none;
  }
}
@media all and (max-width: 48rem) {
  .hide-responsive.-small {
    display: none;
  }
}
@media all and (max-width: 62rem) {
  .hide-responsive.-medium {
    display: none;
  }
}
@media all and (max-width: 75rem) {
  .hide-responsive.-large {
    display: none;
  }
}
/*
---
name: .image-responsive
category: Responsive/Image
tag:
 - responsive
compile: true
---

This class makes the image scaling to its max width.

```jade
img.image-responsive(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
```

## Variants

`.-full` forces the picture to span to 100% of the parent

```jade
img.image-responsive.-full(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
```
*/
.image-responsive {
  max-width: 100%;
  height: auto;
  display: block;
}
.image-responsive.-full {
  width: 100%;
}
.image-responsive.-inset {
  max-height: 100%;
}
/*
---
name: .media-responsive
category: Responsive/Media
tag:
 - responsive
compile: true
---

`.media-responsive` - This makes a the `.media-responsive` div a container for any media element (iframe, video, ... ) that responsive scales with a fix ratio.
The media element ( child ) needs the class `.media` to fully fill out the parents size.

The `.media-responsive` component has to predefined modifiers: `.-media-4-3`, `.-media-16-9` that define a fix ratio.

```jade
div.media-responsive.-media-16-9
	iframe.media(src="https://www.youtube.com/embed/TCd6PfxOy0Y")
```

```jade
div.media-responsive.-media-4-3
	iframe.media(src="https://www.youtube.com/embed/TCd6PfxOy0Y")
```

*/
.media-responsive {
  width: 100%;
  position: relative;
  padding-bottom: 50%;
}
.media-responsive.-media-1-1 {
  padding-bottom: 50%;
}
.media-responsive.-media-4-3 {
  padding-bottom: 75%;
}
.media-responsive.-media-16-9 {
  padding-bottom: 56.25%;
}
.media-responsive > .media {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
/*
---
name: .overflow-text
category: Text
tag:
 - component
 - text
compile: true
---

This component cuts the text on a given height and adds a fadeout effect.
This is usefull for text containers that have more content than space.


```jade
div.overflow-text(style="width: 200px;height: 70px") This is a very long text that is rwaped and cut at the end.
```
*/
.overflow-text {
  overflow: hidden;
  position: relative;
}
.overflow-text:after {
  content: "";
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  height: 2.1875rem;
  background: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0)), color-stop(70%, #fff));
  background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 70%);
}
/*
---
name: .text-style
category: Text
tag:
 - component
 - text
compile: true
---

A text styling component for different text styles

## Default heading

```jade
div.text-style Default heading
```

## H1
```jade
div.text-style.-h1 The h1 header

```

## H2
```jade
div.text-style.-h2 The h2 header
```

## H3
```jade
div.text-style.-h3 The h3 header
```

## Bold
```jade
div.text-style.-bold Bold text
```

## Align center
```jade
div.text-style.-center Centered text
```

## Align right
```jade
div.text-style.-right Right aligned text
```

*/
.text-style.-h1 {
  font-family: 'Roboto' , serif;
  font-size: 1.25rem;
  line-height: 1.875rem;
}
.text-style.-h2 {
  font-family: 'Roboto' , serif;
  font-size: 1rem;
  line-height: 1.625rem;
  font-weight: 500;
  letter-spacing: 0.5px;
}
.text-style.-h3 {
  font-family: 'Roboto' , serif;
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-style.-center {
  text-align: center;
}
.text-style.-right {
  text-align: right;
}
.text-style.-bold {
  font-weight: 700;
}
.text-style.-medium {
  font-weight: 500;
}
.text-style.-inverted {
  color: #fff;
}
.text-style.-indent-1 {
  padding-left: 1.875rem;
}
.text-style.-indent-2 {
  padding-left: 3.75rem;
}
.text-style.-indent-3 {
  padding-left: 5.625rem;
}
.text-style.-indent-4 {
  padding-left: 7.5rem;
}
.text-style.-indent-5 {
  padding-left: 9.375rem;
}
.text-style.-indent-6 {
  padding-left: 11.25rem;
}
.text-style.-error {
  color: #dc153a;
  font-size: 0.75rem;
}
.text-style.-label {
  color: #6a6a6a;
  font-size: 0.75rem;
}
.text-style.-hint {
  color: #6a6a6a;
  font-size: 0.625rem;
}
.text-style.-tooltip {
  font-weight: 700;
  font-size: 0.875rem;
}
.text-style.-tag {
  color: #3031fe;
  font-weight: 400;
  font-size: 0.875rem;
}
.text-style.-dialog-box {
  font-weight: 500;
  font-size: 0.875rem;
  line-height: 1.125rem;
}
.collapse-ui > .content.-transition {
  -webkit-transition: height 0.3s ease;
  transition: height 0.3s ease;
  overflow: hidden;
  height: 0;
}
.collapse-ui.-close > .content {
  display: none;
}
.collapse-ui.-close .collapse-icon {
  -webkit-transform: rotate(90deg);
          transform: rotate(90deg);
}
.collapse-ui .collapse-icon {
  -webkit-transition: all 0.3s ease;
  transition: all 0.3s ease;
}
.action-group.-v > * + * {
  margin-top: 5px;
}
.action-group.-h > * + * {
  margin-left: 5px;
}
.article-element {
  position: relative;
  margin-left: 2.25rem;
  margin-top: 1.25rem;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.article-element h1 {
  font-weight: bold;
  font-size: 2.5rem;
  line-height: initial;
}
.article-element h2 {
  font-weight: bold;
  font-size: 1.875rem;
  line-height: initial;
}
.article-element h3 {
  font-weight: bold;
  font-size: 1.375rem;
  line-height: initial;
}
.article-element h4 {
  font-weight: bold;
  font-size: 1rem;
  line-height: initial;
}
.article-element li {
  margin-left: 1.5rem;
}
.article-element > .content {
  border-left: 3px solid #afb0af;
  padding-left: 1rem;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.article-element > .content > * {
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.article-element > .content > * + * {
  margin-top: 0.5rem;
}
.article-element > .options {
  border-left: 3px solid #afb0af;
  padding: 0 1rem;
  height: 0;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
  overflow: hidden;
}
.article-element > .options .grid-layout.-gutter {
  margin-top: 0;
  margin-bottom: 0;
}
.article-element > .left {
  position: absolute;
  top: 0;
  left: 0;
  -webkit-transform: translateX(-100%);
          transform: translateX(-100%);
  opacity: 0;
  visibility: hidden;
  -webkit-transition: visibility 0s, opacity 0.3s linear;
  transition: visibility 0s, opacity 0.3s linear;
  color: #afb0af;
}
.article-element > .top {
  position: absolute;
  top: 0;
  right: 0;
  -webkit-transform: translateY(-100%);
          transform: translateY(-100%);
  opacity: 0;
  visibility: hidden;
  -webkit-transition: visibility 0s, opacity 0.3s linear;
  transition: visibility 0s, opacity 0.3s linear;
  color: #afb0af;
}
.article-element > .bottom {
  text-align: center;
  overflow: hidden;
  height: 0;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.article-element.-focus {
  margin-left: 1.75rem;
  margin-top: 1.875rem;
}
.article-element.-focus > .content {
  border-color: #3031fe;
}
.article-element.-focus > .content > .ce-element,
.article-element.-focus > .content > .focus {
  background-color: #fff;
  padding: 0.5rem;
}
.article-element.-focus > .content > .ce-element.text-style.-indent-1,
.article-element.-focus > .content > .focus.text-style.-indent-1 {
  padding-left: 1.875rem;
}
.article-element.-focus > .content > .ce-element.text-style.-indent-2,
.article-element.-focus > .content > .focus.text-style.-indent-2 {
  padding-left: 3.75rem;
}
.article-element.-focus > .content > .ce-element.text-style.-indent-3,
.article-element.-focus > .content > .focus.text-style.-indent-3 {
  padding-left: 5.625rem;
}
.article-element.-focus > .content > .ce-element.text-style.-indent-4,
.article-element.-focus > .content > .focus.text-style.-indent-4 {
  padding-left: 7.5rem;
}
.article-element.-focus > .content > .ce-element.text-style.-indent-5,
.article-element.-focus > .content > .focus.text-style.-indent-5 {
  padding-left: 9.375rem;
}
.article-element.-focus > .content > .ce-element.text-style.-indent-6,
.article-element.-focus > .content > .focus.text-style.-indent-6 {
  padding-left: 11.25rem;
}
.article-element.-focus > .options {
  border-color: #3031fe;
}
.article-element.-focus > .left {
  opacity: 1;
  visibility: visible;
}
.article-element.-focus > .top {
  opacity: 1;
  visibility: visible;
}
.article-element.-focus > .bottom {
  height: 3.0625rem;
  overflow: visible;
}
.article-toolbar.-context > .formats {
  display: none;
}
.article-toolbar .link-context > .target.-enabled {
  color: #3031fe;
}
.article-toolbar .form-input {
  color: #202023;
}
.branch-path {
  background-color: #f5f5f6;
  border-radius: 2px;
  border: 1px solid #3031fe;
  margin-right: 0.5rem;
  margin-bottom: 0.5rem;
}
.branch-path > .action > div {
  padding: 0.375rem;
  border-radius: 0;
}
.branch-path .level + .level:before {
  content: '>';
  padding: 0 0.125rem;
}
.branch-selector > .sibling:hover {
  background-color: #f5f5f6;
}
.branch-selector > .sibling > .into {
  color: #9b9b9b;
}
.branch-selector > .sibling > .into:hover {
  color: #595afe;
}
.button-group .button-style {
  border-radius: 0;
}
.button-group .button-style:first-child {
  border-top-left-radius: 2px;
  border-bottom-left-radius: 2px;
}
.button-group .button-style:last-child {
  border-top-right-radius: 2px;
  border-bottom-right-radius: 2px;
}
.button-group .button-style + .button-style {
  border-left: 1px solid #fff;
}
.ce-element--empty:after {
  content: '.';
  display: inline-block;
  color: transparent;
}
/*
---
name: .crumb-item
category: Dateneditor/Breadcrumb
tag:
 - component
 - dateneditor
 - navigation
compile: true
---

A item for the breadcrumb navigation

Single item

```jade
div.crumb-item Single item
```

Multiple Items

```jade
div.flex-layout
    div.crumb-item.item.-center.text-style.-small(style="margin-right: 20px") First item 
    div.crumb-item.item.-center.text-style.-small Second item
```
*/
.crumb-item {
  cursor: pointer;
  height: 2.5625rem;
  padding-top: 0.5rem;
  color: #6a6a6a;
  font-size: 0.75rem;
}
.crumb-item:last-child {
  border-bottom: 3px solid #3031fe;
  color: #202023;
  cursor: default;
}
.dialog-box-stack {
  position: fixed;
  z-index: 1000;
  top: 5.75rem;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
  max-height: calc(100vh - (rem(92px)));
  overflow: hidden;
  pointer-events: none;
}
.dialog-box-stack > .dialog-box:not(:first-child) {
  margin-top: 0.3125rem;
}
.dialog-box-stack > .dialog-box {
  pointer-events: auto;
}
.dialog-box {
  width: 26rem;
  background-color: #fcf9e8;
  color: #525009;
  border: 0.0625rem solid #ede398;
  border-radius: 2px;
}
.dialog-box .close-button {
  background-color: #525009;
  color: #fcf9e8;
  border-radius: 100%;
}
.dialog-box.-error {
  background-color: #f9d9df;
  color: #8c1b13;
  border-color: #dfc0c6;
}
.dialog-box.-error .close-button {
  background-color: #8c1b13;
  color: #f9d9df;
}
.dialog-box.-fixed-top-center {
  position: fixed;
  top: 100px;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
}
/*
---
name: .dropdown-button
category: Buttons/Dropdown
tag:
 - component
 - button
 - dateneditor
compile: true
---

A dropdown button with a primary action and secondary actions.

Closed state
```jade
button.dropdown-button.flex-layout.-items-center.drop-down.-bottom.-right
	div.main
		div.primary-button Main action
	div.toggle Toggle
	div.content
		div.primary-button Secondary action
		div.primary-button Secondary action
```

Open state
```jade
button.dropdown-button.flex-layout.-items-center.drop-down.-bottom.-right.-open
	div.main
		div.primary-button Main action
	div.toggle Toggle
	div.content
		div.primary-button Secondary action
		div.primary-button Secondary action
```
*/
.dropdown-button {
  background-color: #3031fe;
  color: #fff;
  border-radius: 3px;
}
.dropdown-button > .toggle {
  margin-left: 0.5625rem;
  margin-right: 0.5625rem;
}
.dropdown-button.-open > .toggle {
  -webkit-transform: rotate(-90deg);
          transform: rotate(-90deg);
}
.dropdown-button.-right > .content {
  text-align: right;
}
.editor-tab > .items {
  border-bottom: 1px solid #e0e0e0;
  padding: 0 0.5rem;
}
.tab-item {
  padding: 0.5rem 0.5rem;
  background-color: #e0e0e0;
  border-top-left-radius: 2px;
  border-top-right-radius: 2px;
  cursor: pointer;
}
.tab-item.-active {
  background-color: #3031fe;
  color: #fff;
}
.tab-item > .content {
  max-width: 10ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tab-item > .actions {
  padding-left: 0.5rem;
  display: -webkit-box;
  display: flex;
}
.tab-item + .tab-item {
  margin-left: 0.5rem;
}
.editor-table-cell {
  display: table-cell;
  vertical-align: middle;
  padding: 0.75rem;
}
.editor-table-cell.-actions {
  width: 1%;
  color: #9b9b9b;
  white-space: nowrap;
}
.editor-table-cell.-actions > * {
  display: inline-block;
  margin-bottom: -4px;
}
.editor-table-cell.-actions > * + * {
  padding-left: 0.5rem;
}
.editor-table-row {
  display: table-row;
}
.editor-table-row + .editor-table-row {
  border-top: 1px solid #e0e0e0;
}
.editor-table-row.-header .editor-table-cell {
  padding-top: 0;
  padding-bottom: 0;
  white-space: nowrap;
}
.editor-table-row.-editable {
  cursor: pointer;
}
.editor-table-row.-editable:hover {
  background-color: #fcfcfc;
}
.editor-table-row.-selected {
  background-color: #e0e0e0;
  border-left: 3px solid #3031fe;
}
.editor-table-row.-disabled {
  background-color: #dbdbdf;
  pointer-events: none;
}
.editor-table {
  display: table;
  width: 100%;
  border-collapse: collapse;
}
.editor-table > .editor-table-group {
  display: table-row-group;
}
/*
---
name: .form-box
category: Box/Form
tag:
 - component
 - form
compile: true
---

A box to style form inputs

```jade
div.form-box
    input.form-input(placeholder="search")
```

```jade
div.form-box
    svg.icon.svg-icon(xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 56.966 56.966")
        path(d="M55.146,51.887L41.588,37.786c3.486-4.144,5.396-9.358,5.396-14.786c0-12.682-10.318-23-23-23s-23,10.318-23,23s10.318,23,23,23c4.761,0,9.298-1.436,13.177-4.162l13.661,14.208c0.571,0.593,1.339,0.92,2.162,0.92c0.779,0,1.518-0.297,2.079-0.837C56.255,54.982,56.293,53.08,55.146,51.887z M23.984,6c9.374,0,17,7.626,17,17s-7.626,17-17,17s-17-7.626-17-17S14.61,6,23.984,6z")
    input.form-input(placeholder="search")
```

## Alignment

To center icon and input, you can add a `.flex-layout.-items-center.-inline` helper like so

```jade
div.form-box.flex-layout.-items-center.-inline
    svg.icon.svg-icon(xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 56.966 56.966")
        path(d="M55.146,51.887L41.588,37.786c3.486-4.144,5.396-9.358,5.396-14.786c0-12.682-10.318-23-23-23s-23,10.318-23,23s10.318,23,23,23c4.761,0,9.298-1.436,13.177-4.162l13.661,14.208c0.571,0.593,1.339,0.92,2.162,0.92c0.779,0,1.518-0.297,2.079-0.837C56.255,54.982,56.293,53.08,55.146,51.887z M23.984,6c9.374,0,17,7.626,17,17s-7.626,17-17,17s-17-7.626-17-17S14.61,6,23.984,6z")
    input.form-input(placeholder="search")
```

*/
.feedback-form {
  border: 1px solid #fff;
  -webkit-transition: border-color 0.2s;
  transition: border-color 0.2s;
  position: relative;
}
.feedback-form .input {
  resize: vertical;
  border: none;
  outline: none;
  width: 100%;
}
.feedback-form > .icon {
  position: absolute;
  top: 0;
  right: 0;
}
.feedback-form > .icon.-error {
  display: none;
  color: #dc153a;
}
.feedback-form > .icon.-success {
  display: none;
  color: #00a685;
}
.feedback-form.-success {
  border: 1px solid #00a685;
}
.feedback-form.-success > .icon.-success {
  display: block;
}
.feedback-form.-error {
  border: 1px solid #dc153a;
}
.feedback-form.-error > .icon.-error {
  display: block;
}
.feedback-form.-focused {
  border: 1px solid #3031fe;
}
.fixed-page-layout > .header {
  background-color: #fff;
  border-bottom: 1px solid #e0e0e0;
}
.fixed-page-layout > .header > .breadcrumb {
  padding-left: 4.375rem;
}
.fixed-page-layout > .sidebar > .main-navigation {
  height: 100%;
}
.fixed-page-layout > .sidebar .icon.-expand-toggle {
  -webkit-transition: -webkit-transform 0.15s ease;
  transition: -webkit-transform 0.15s ease;
  transition: transform 0.15s ease;
  transition: transform 0.15s ease, -webkit-transform 0.15s ease;
}
.fixed-page-layout > .sidebar.-expanded {
  width: 21.875rem;
}
.fixed-page-layout > .sidebar.-expanded .icon.-expand-toggle {
  -webkit-transform: scaleX(-1);
          transform: scaleX(-1);
}
.fixed-page-layout > .sidebar.-right {
  width: 62.5rem;
  max-width: calc( 100vw - 50px );;
}
.fixed-page-layout > .content {
  position: relative;
}
@media screen and (min-width: 1700px) {
  .fixed-page-layout > .content.-margin-right {
    margin-right: 62.5rem;
  }
}
.fixed-page-layout .header-bar {
  height: 3.125rem;
}
.group-input > .button-style > .svg-icon {
  display: inline-block;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.group-input > .content {
  display: none;
}
.group-input.-expanded > .button-style > .svg-icon {
  -webkit-transform: rotate(90deg);
          transform: rotate(90deg);
}
.group-input.-expanded > .content {
  display: block;
}
.gu-mirror {
  position: fixed !important;
  margin: 0 !important;
  z-index: 9999 !important;
  opacity: 0.8;
}
.gu-hide {
  display: none !important;
}
.gu-unselectable {
  -webkit-user-select: none !important;
     -moz-user-select: none !important;
      -ms-user-select: none !important;
          user-select: none !important;
}
.gu-transit {
  opacity: 0.2;
}
.array-input {
  position: relative;
}
.array-input >.delete {
  position: absolute;
  z-index: 10;
  right: 10px;
  top: 12px;
}
.array-input >.feedback-form > .input {
  padding-right: 2rem;
}
.boolean-input > .state {
  width: 2.5rem;
  height: 1.5rem;
  border-radius: 0.75rem;
  padding: 0.125rem;
  background-color: #9b9b9b;
  -webkit-transition: background-color 0.3s, opacity 0.3s;
  transition: background-color 0.3s, opacity 0.3s;
  position: relative;
  cursor: pointer;
}
.boolean-input > .state > .handle {
  background-color: #fff;
  border-radius: 50%;
  width: 1.25rem;
  height: 1.25rem;
  -webkit-transition: -webkit-transform 0.3s ease;
  transition: -webkit-transform 0.3s ease;
  transition: transform 0.3s ease;
  transition: transform 0.3s ease, -webkit-transform 0.3s ease;
}
.boolean-input.-enabled > .state {
  background-color: #3031fe;
}
.boolean-input.-enabled > .state > .handle {
  -webkit-transform: translateX(1rem);
          transform: translateX(1rem);
}
.boolean-input.-indeterminate > .state {
  background-color: #9b9b9b;
}
.boolean-input.-indeterminate > .state > .handle {
  -webkit-transform: translateX(0.5rem);
          transform: translateX(0.5rem);
}
.boolean-input.-locked > .state {
  opacity: 0.33;
  cursor: inherit;
}
.image-input {
  padding: 1rem;
  background-color: #fff;
  max-width: 20.4375rem;
}
.image-input > .content {
  min-height: 9.0625rem;
  background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgMGg1djVIMHptNSA1aDV2NUg1eiIgZmlsbD0iI0NBQ0FDQSIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+");
}
.image-input > .content > .actions {
  opacity: 0;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;
}
.image-input:hover > .content > .actions {
  opacity: 1;
}
.overlay-input .overlay-handle {
  position: absolute;
  background-color: #7a7a7a;
  cursor: move;
  box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5);
  border: 2px solid #fff;
}
.overlay-input .overlay-handle.-selected {
  background-color: #3031fe;
}
.overlay-input .overlay-handle.-point {
  border-radius: 100%;
  width: 20px;
  height: 20px;
  -webkit-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%);
}
.overlay-input .overlay-handle > .control {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  background-color: rgba(24,24,24,0.62);
  draggable: false;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}
.overlay-input .overlay-handle > .control.-horizontal {
  left: auto;
  width: 5px;
  cursor: ew-resize;
}
.overlay-input .overlay-handle > .control.-vertical {
  top: auto;
  height: 5px;
  cursor: ns-resize;
}
.overlay-input .overlay-handle > .control.-corner {
  width: 5px;
  height: 5px;
  top: auto;
  left: auto;
  cursor: nwse-resize;
}
.overlay-input .overlay-handle > .control.-delete {
  right: auto;
  bottom: auto;
}
.main-navigation {
  background-color: #3031fe;
  box-shadow: 4px 3px 4px 0 rgba(0,0,0,0.1);
  overflow-y: auto;
  scrollbar-width: none;
/* Firefox */
  -ms-overflow-style: none;
/* IE 10+ */
}
.main-navigation::-webkit-scrollbar {
/* WebKit */
  width: 0px;
/* vertical scrollbar */
  height: 0px;
/* horizontal scrollbar */
}
.main-navigation > .item {
  height: 2.5rem;
  overflow: hidden;
  color: #fff;
  position: relative;
}
.main-navigation > .item.-active,
.main-navigation > .item:hover:not(.-disabled) {
  background-color: rgba(255,255,255,0.2);
}
.main-navigation > .item::before {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
}
.main-navigation > .item.-active::before {
  border-left: solid 3px #fff;
}
.main-navigation > .item.-divider::before {
  border-top: solid 1px #6e6efe;
}
.main-navigation > .item > .icon,
.main-navigation > .item > .letter-icon {
  box-sizing: content-box;
  width: 1.25rem;
  height: 1.25rem;
  margin-left: 0.9375rem;
  margin-right: 0.9375rem;
}
.main-navigation > .item > .letter-icon {
  color: #3031fe;
  background-color: #fff;
  display: inline-block;
  line-height: 1.25rem;
  border-radius: 100%;
  text-align: center;
}
.main-navigation > .item > .label {
  margin-right: 0.9375rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.model-editor > .editor-header > .actions > * {
  display: inline-block;
}
.model-editor > .editor-header > .actions > * + * {
  padding-left: 0.5rem;
}
.more-button {
  display: none;
}
.more-button.-visible {
  display: block;
}
.preview-content {
  position: relative;
  height: 100%;
  width: 100%;
}
.preview-content > .header {
  height: 2.75rem;
}
.preview-content > .iframe {
  width: 100%;
  height: 100%;
  height: calc( 100% - 2.75rem );
}
.tooltip-container {
  --dx: 0px;
  -webkit-transition: -webkit-transform 0.3s;
  transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
  transition: transform 0.3s, -webkit-transform 0.3s;
  position: absolute;
  padding: 4px;
  z-index: 1010;
}
.tooltip-container > .content {
  background-color: rgba(0,0,0,0.8);
  color: #ddd;
  position: relative;
}
.tooltip-container > .content:before {
  content: '';
  position: absolute;
  width: 0;
  height: 0;
  border: solid transparent;
  border-width: 6px;
  -webkit-transition: left 0.3s;
  transition: left 0.3s;
}
.tooltip-container.-left {
  -webkit-transform: translate(-100%, -50%);
          transform: translate(-100%, -50%);
}
.tooltip-container.-left > .content:before {
  border-left-color: rgba(0,0,0,0.8);
  left: 100%;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
}
.tooltip-container.-right {
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
}
.tooltip-container.-right > .content:before {
  border-right-color: rgba(0,0,0,0.8);
  right: 100%;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
}
.tooltip-container.-top {
  -webkit-transform: translate(calc(-50% + var(--dx)), -100%);
          transform: translate(calc(-50% + var(--dx)), -100%);
}
.tooltip-container.-top > .content:before {
  border-top-color: rgba(0,0,0,0.8);
  top: 100%;
  left: calc(50% - var(--dx));
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
}
.tooltip-container.-bottom {
  -webkit-transform: translateX(calc(-50% + var(--dx)));
          transform: translateX(calc(-50% + var(--dx)));
}
.tooltip-container.-bottom > .content:before {
  border-bottom-color: rgba(0,0,0,0.8);
  bottom: 100%;
  left: calc(50% - var(--dx));
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
}
.transition-container {
  position: relative;
}
.transition-container.-transition {
  overflow: hidden;
}
.transition-container > .animator {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 100;
  -webkit-transition: -webkit-transform;
  transition: -webkit-transform;
  transition: transform;
  transition: transform, -webkit-transform;
  background-color: #f5f5f6;
}
.transition-container > .animator.in-start {
  -webkit-transform: translateX(100%);
          transform: translateX(100%);
}
.transition-container > .animator.in-end {
  -webkit-transform: translateX(0);
          transform: translateX(0);
}
.transition-container > .animator.out-start {
  -webkit-transform: translateX(0);
          transform: translateX(0);
}
.transition-container > .animator.out-end {
  -webkit-transform: translateX(100%);
          transform: translateX(100%);
}
.upload-button > input {
  display: none;
}
.upload-button > .progress {
  height: 4px;
  background-color: #fff;
  opacity: 0.5;
}
.boolean-input.-enabled > .state:focus:not(:active),
.boolean-input.-enabled > .state:hover {
  background-color: #2627cb;
}
.boolean-input:not(.-enabled) > .state:focus:not(:active),
.boolean-input:not(.-enabled) > .state:hover {
  background-color: #8b8b8b;
}
.crumb-item:focus {
  outline: none;
}
.crumb-item:not(:last-child):focus,
.crumb-item:not(:last-child):hover {
  color: #202023;
}
.crumb-item:not(:last-child):focus {
  border-bottom: 3px solid #c9c9c9;
}
.editor-table .editor-table-row.-editable:focus:not(:hover):not(:active) {
  background-color: #fafafa;
  border-bottom: solid 1px #c9c9c9;
}
.main-navigation > .item:not(.-active):focus {
  background-color: rgba(255,255,255,0.2);
}
.main-navigation > .item.-active:focus {
  background-color: rgba(255,255,255,0.3);
}
.tab-item.-active:focus,
.tab-item.-active:hover {
  background-color: #2627cb;
}
.tab-item:not(.-active):focus,
.tab-item:not(.-active):hover {
  background-color: #c9c9c9;
}
.branch-path > .-sortable {
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  cursor: -webkit-grab;
  cursor: grab;
}
.margin-box.-left-xsmall {
  margin-left: 0.25rem;
}
.margin-box.-right-xsmall {
  margin-right: 0.25rem;
}
.margin-box.-top-xsmall {
  margin-top: 0.25rem;
}
.margin-box.-bottom-xsmall {
  margin-bottom: 0.25rem;
}
.toolbar-format > .content {
  background-color: rgba(0,0,0,0.8);
  top: 36px;
  right: 0;
}
.toolbar-format > .content .toolbar-color {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid transparent;
}
.toolbar-format > .content .toolbar-color.-selected {
  border: 2px solid #fff;
}
.toolbar-format .svg-icon.-toolbar {
  width: 10px;
  height: 10px;
}
use {
  pointer-events: none;
}
sub {
  vertical-align: sub;
  font-size: smaller;
}
sup {
  vertical-align: super;
  font-size: smaller;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zdHlsdXMvdmFyaWFibGVzL2NvbG9ycy5zdHlsIiwibWFpbi5jc3MiLCJsaWIvc3R5bHVzL3ZhcmlhYmxlcy9zZXR0aW5ncy5zdHlsIiwibGliL3N0eWx1cy9zaGFyZWQvZnVuY3Rpb25zLnN0eWwiLCJsaWIvc3R5bHVzL3NoYXJlZC9yZXNldC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2JveC9ib3JkZXItYm94LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvYm94L2NvbG9yLWJveC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2JveC9tYXJnaW4tYm94LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvYm94L3BhZGRpbmctYm94LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvYm94L3NoYWRvdy1ib3guc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9ib3gvc3BhY2VyLWJveC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2JveC90cmFuc2Zvcm0tYm94LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi1zdHlsZS5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3AtZG93bi1tZW51LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcC1kb3duLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvaGVscGVycy9oZWxwZXJzLnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvaWNvbi9zdmctaWNvbi5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2xheW91dC9hYnMtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvbGF5b3V0L2ZpeGVkLWxheW91dC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2xheW91dC9maXhlZC1wYWdlLWxheW91dC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2xheW91dC9mbGV4LWxheW91dC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2xheW91dC9ncmlkLWxheW91dC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL2xheW91dC9tYXgtd2lkdGgtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvb3ZlcmxheS9zbGlkZS1vdmVybGF5LnN0eWwiLCJsaWIvc3R5bHVzL2NvbXBvbmVudHMvcmVzcG9uc2l2ZS9jb250cm9sLXJlc3BvbnNpdmUuc3R5bCIsImxpYi9zdHlsdXMvY29tcG9uZW50cy9yZXNwb25zaXZlL2hpZGUtcmVzcG9uc2l2ZS5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL3Jlc3BvbnNpdmUvaW1hZ2UtcmVzcG9uc2l2ZS5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL3Jlc3BvbnNpdmUvbWVkaWEtcmVzcG9uc2l2ZS5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL3RleHQvb3ZlcmZsb3ctdGV4dC5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL3RleHQvdGV4dC1zdHlsZS5zdHlsIiwibGliL3N0eWx1cy9jb21wb25lbnRzL3VpL2NvbGxhcHNlLXVpLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2FjdGlvbi1ncm91cC5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9hcnRpY2xlLWVsZW1lbnQuc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvYXJ0aWNsZS10b29sYmFyLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2JyYW5jaC1wYXRoLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2JyYW5jaC1zZWxlY3Rvci5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9idXR0b24tZ3JvdXAuc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvY2UtZWxlbWVudC5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9jcnVtYi1pdGVtLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2RpYWxvZy1ib3gtc3RhY2suc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvZGlhbG9nLWJveC5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24uc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvZWRpdG9yLXRhYi5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9lZGl0b3ItdGFibGUtY2VsbC5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9lZGl0b3ItdGFibGUtcm93LnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2VkaXRvci10YWJsZS5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9mZWVkYmFjay1mb3JtLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2ZpeGVkLXBhZ2UtbGF5b3V0LnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2dyb3VwLWlucHV0LnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2d1LW1pcnJvci5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9pbnB1dHMvYXJyYXktaW5wdXQuc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvaW5wdXRzL2Jvb2xlYW4taW5wdXQuc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvaW5wdXRzL2ltYWdlLWlucHV0LnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL2lucHV0cy9vdmVybGF5LWlucHV0LnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL21haW4tbmF2aWdhdGlvbi5zdHlsIiwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50cy9tb2RlbC1lZGl0b3Iuc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvbW9yZS1idXR0b24uc3R5bCIsImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL2NvbXBvbmVudHMvcHJldmlldy1jb250ZW50LnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL3Rvb2x0aXAtY29udGFpbmVyLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL3RyYW5zaXRpb24tY29udGFpbmVyLnN0eWwiLCJsaWIvc3R5bHVzL3RoZW1lcy9kYXRlbmVkaXRvci9jb21wb25lbnRzL3VwbG9hZC1idXR0b24uc3R5bCIsImFjY2Vzc2liaWxpdHkvYm9vbGVhbi1pbnB1dC5zdHlsIiwiYWNjZXNzaWJpbGl0eS9jcnVtYi1pdGVtLnN0eWwiLCJhY2Nlc3NpYmlsaXR5L2VkaXRvci10YWJsZS5zdHlsIiwiYWNjZXNzaWJpbGl0eS9tYWluLW5hdmlnYXRpb24uc3R5bCIsImFjY2Vzc2liaWxpdHkvdGFiLWl0ZW0uc3R5bCIsImV4dGVuc2lvbnMvYnJhbmNoLXBhdGguc3R5bCIsImV4dGVuc2lvbnMvbWFyZ2luLWJveC5zdHlsIiwiZXh0ZW5zaW9ucy90b29sYmFyLWZvcm1hdC5zdHlsIiwibWFpbi5z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STtFQUNJLHlCQUFhO0tBQWIsc0JBQWE7TUFBYixxQkFBYTtVQUFiLGlCQUFhO0VBQ2Isb0JBQVE7RUFBUixZQUFRO0FqRTBsSGhCO0FrRTNsSFE7RUFDZSxvQkFBRztBbEU2bEgxQjtBa0U5bEhRO0VBQ2UscUJBQUc7QWxFZ21IMUI7QWtFam1IUTtFQUNlLG1CQUFHO0FsRW1tSDFCO0FrRXBtSFE7RUFDZSxzQkFBRztBbEVzbUgxQjtBbUV4bUhJO0VBQ0ksaUNBQWtCO0VBQ2xCLFNBQUs7RUFDTCxRQUFPO0FuRTBtSGY7QW1FeG1IUTtFQUNJLFdBQU87RUFDUCxZQUFRO0VBQ1Isa0JBQWU7RUFDZiw2QkFBUTtBbkUwbUhwQjtBbUV4bUhZO0VBQ0ksc0JBQVE7QW5FMG1IeEI7QW1Fcm1ISTtFQUNJLFdBQU87RUFDUCxZQUFRO0FuRXVtSGhCO0FvRW5uSEE7RUFDQyxvQkFBZ0I7QXBFcW5IakI7QW9FbG5IQTtFQUNDLG1CQUFnQjtFQUNoQixrQkFBVztBcEVvbkhaO0FvRWpuSEE7RUFDQyxxQkFBZ0I7RUFDaEIsa0JBQVc7QXBFbW5IWiIsImZpbGUiOiJkYXRlbmVkaXRvci5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbi0tLVxubmFtZTogQ29sb3JzXG5jYXRlZ29yeTogU2hhcmVkL1ZhcmlhYmxlc1xudGVtcGxhdGU6IGNvbG9yc1xudGFnOlxuIC0gdmFyaWFibGVzXG4gLSBjb2xvcnNcbmNvbG9yczpcbiAtIHZhcmlhYmxlOiBcInRleHQtY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgdGV4dCBjb2xvciBvbiB0aGUgYm9keVwiXG4gICB2YWx1ZTogXCIjM0YzRjQwXCJcbiAtIHZhcmlhYmxlOiBcInRleHQtaW52ZXJ0ZWQtY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGRlZmF1bHQgaW52ZXJ0ZWQgdGV4dCBjb2xvciBvbiB0aGUgYm9keVwiXG4gICB2YWx1ZTogXCIjRkZGXCJcbiAtIHZhcmlhYmxlOiBcImFjdGlvbi1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBhY3Rpb24gY29sb3IgdXNlZCBmb3IgbGlua3MgYW5kIGJ1dHRvbnNcIlxuICAgdmFsdWU6IFwiI0VDNjQ0OVwiXG4gLSB2YXJpYWJsZTogXCJib2R5LWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBtYWluIGJhY2tncm91bmQgY29sb3JcIlxuICAgdmFsdWU6IFwiI0ZGRlwiXG4gLSB2YXJpYWJsZTogXCJlbmFibGVkLWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlNpZ25hbGNvbG9yIGZvciBlbmFibGVkL29rL3N1Y2Nlc3MvdHJ1ZSAtIHNlYXJjaCBmb3IgYSBiZXR0ZXIgbmFtZVwiXG4gICB2YWx1ZTogXCIjN0NBRTdBXCJcbiAtIHZhcmlhYmxlOiBcImRpc2FibGVkLWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlNpZ25hbGNvbG9yIGZvciBkaXNhYmxlZC9ub3Rvay9lcnJvci9mYWxzZSAtIHNlYXJjaCBmb3IgYSBiZXR0ZXIgbmFtZVwiXG4gICB2YWx1ZTogXCIjRUM2NDQ5XCJcbiAtIHZhcmlhYmxlOiBcIm91dGxpbmUtbmF2aWdhdGlvbi1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJDb2xvciBmb3IgdGhlIGVsZW1lbnRzIGluIHRoZSBvdXRsaW5lIG5hdmlnYXRpb25cIlxuICAgdmFsdWU6IFwibGlnaHRlbiggIzNGM0Y0MCwgNjAgKVwiXG4tLS1cblxuVGhlIGNvbG9yIHZhcmlhYmxlcyB0aGF0IGFyZSB1c2VkIHRocm91Z2hvdXQgdGhlIGxpYnJhcnkuIFxuKi9cbnRoZW1lLmNvbG9ycyA9IHtcblxuICB0ZXh0OiAjMjAyMDIzLFxuICB0ZXh0LWludmVydGVkOiAjRkZGLFxuICB0ZXh0LWdyYXk6ICM2QTZBNkEsXG5cbiAgYWN0aW9uOiAjMzAzMUZFLFxuXG4gIGJvZHk6ICNGRkYsXG5cbiAgbGluZTogI2UwZTBlMCxcblxuICBlcnJvcjogI0RDMTUzQSxcbiAgc3VjY2VzczogIzAwQTY4NSxcbn1cbiIsIi8qXG4tLS1cbm5hbWU6IENvbG9yc1xuY2F0ZWdvcnk6IFNoYXJlZC9WYXJpYWJsZXNcbnRlbXBsYXRlOiBjb2xvcnNcbnRhZzpcbiAtIHZhcmlhYmxlc1xuIC0gY29sb3JzXG5jb2xvcnM6XG4gLSB2YXJpYWJsZTogXCJ0ZXh0LWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiIzNGM0Y0MFwiXG4gLSB2YXJpYWJsZTogXCJ0ZXh0LWludmVydGVkLWNvbG9yXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IGludmVydGVkIHRleHQgY29sb3Igb24gdGhlIGJvZHlcIlxuICAgdmFsdWU6IFwiI0ZGRlwiXG4gLSB2YXJpYWJsZTogXCJhY3Rpb24tY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIG1haW4gYWN0aW9uIGNvbG9yIHVzZWQgZm9yIGxpbmtzIGFuZCBidXR0b25zXCJcbiAgIHZhbHVlOiBcIiNFQzY0NDlcIlxuIC0gdmFyaWFibGU6IFwiYm9keS1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbWFpbiBiYWNrZ3JvdW5kIGNvbG9yXCJcbiAgIHZhbHVlOiBcIiNGRkZcIlxuIC0gdmFyaWFibGU6IFwiZW5hYmxlZC1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJTaWduYWxjb2xvciBmb3IgZW5hYmxlZC9vay9zdWNjZXNzL3RydWUgLSBzZWFyY2ggZm9yIGEgYmV0dGVyIG5hbWVcIlxuICAgdmFsdWU6IFwiIzdDQUU3QVwiXG4gLSB2YXJpYWJsZTogXCJkaXNhYmxlZC1jb2xvclwiXG4gICBkZXNjcmlwdGlvbjogXCJTaWduYWxjb2xvciBmb3IgZGlzYWJsZWQvbm90b2svZXJyb3IvZmFsc2UgLSBzZWFyY2ggZm9yIGEgYmV0dGVyIG5hbWVcIlxuICAgdmFsdWU6IFwiI0VDNjQ0OVwiXG4gLSB2YXJpYWJsZTogXCJvdXRsaW5lLW5hdmlnYXRpb24tY29sb3JcIlxuICAgZGVzY3JpcHRpb246IFwiQ29sb3IgZm9yIHRoZSBlbGVtZW50cyBpbiB0aGUgb3V0bGluZSBuYXZpZ2F0aW9uXCJcbiAgIHZhbHVlOiBcImxpZ2h0ZW4oICMzRjNGNDAsIDYwIClcIlxuLS0tXG5cblRoZSBjb2xvciB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5LiBcbiovXG4vKlxuLS0tXG5uYW1lOiBHbG9iYWwgc2V0dGluZ3NcbmNhdGVnb3J5OiBTaGFyZWQvVmFyaWFibGVzXG50ZW1wbGF0ZTogdmFyaWFibGVzXG50YWc6XG4gLSB2YXJpYWJsZXNcbnZhcmlhYmxlczpcbiAtIG5hbWU6IFwidGV4dC1saW5lLWhlaWdodFwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgbGluZSBoZWlnaHQgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCIxLjVyZW1cIlxuIC0gbmFtZTogXCJmb250LWZhbWlseVwiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZm9udC1mYW1pbHkgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCInSGVsdmV0aWNhJywgc2Fucy1zZXJpZlwiXG4gLSBuYW1lOiBcInRleHQtcmVuZGVyaW5nXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0ZXh0LXJlbmRlcmluZyBvZiB0aGUgYm9keVwiXG4gICBkZWZhdWx0OiBcIm9wdGltaXplTGVnaWJpbGl0eVwiXG4gLSBuYW1lOiBcInRyYW5zaXRpb24tZHVyYXRpb25cIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGR1cmF0aW9uIG9mIHRoZSBzbGlkZSB0cmFuc2l0aW9uc1wiXG4gICBkZWZhdWx0OiBcIjAuNHNcIlxuIC0gbmFtZTogXCJib3JkZXItcmFkaXVzXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IHJhZGl1cyBmb3IgYm9yZGVyc1wiXG4gICBkZWZhdWx0OiBcIjJweFwiXG4tLS1cblxuVGhlc2UgdmFyaWFibGVzIHNldHVwcyBzb21lIGdsb2JhbCB0ZXh0IGZvcm1hdHRpbmcgYW5kIHN0eWxpbmcuXG4qL1xuLypcbi0tLVxubmFtZTogY2hvb3NlTWF4Q29udHJhc3RcbmNhdGVnb3J5OiBTaGFyZWQvRnVuY3Rpb25zXG4tLS1cblxuR2l2ZW4gb25lIG9yIG1vcmUgZm9yZWdyb3VuZCBjb2xvcnMgYGZnc2AgYW5kIG9uZSBiYWNrZ3JvdW5kIGNvbG9yIGBiZ2AsXG5yZXR1cm5zIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHdpdGggdGhlIGhpZ2hlc3QgY29udHJhc3QgcmF0aW8gd2l0aCByZXNwZWN0IHRvIGBiZ2AuXG5cbiMjIERlZmluaXRpb246XG5cbmBgYHN0eWx1c1xuZmcgPSBjaG9vc2VNYXhDb250cmFzdChmZ3MsIGJnKTtcbmBgYFxuXG4jIyBFeGFtcGxlOlxuXG5gYGBzdHlsdXNcbmJnID0gdGhlbWUuY29sb3JzLmZvb3RlcjtcbmZnID0gdGhlbWUuY29sb3JzLnRleHQ7XG5mZ0ludmVydGVkID0gdGhlbWUuY29sb3JzLnRleHQtaW52ZXJ0ZWQ7XG5cbnRoZW1lLmNvbXBvbmVudHMuY29sb3ItYm94LmZvb3RlciA9IHtcblx0YmFja2dyb3VuZC1jb2xvcjogKGJnKSxcblx0Y29sb3I6IChjaG9vc2VNYXhDb250cmFzdCgoZmcgZmdJbnZlcnRlZCksIGJnKSksXG59XG5gYGBcbiovXG5odG1sLFxuYm9keSxcbmRpdixcbnNwYW4sXG5vYmplY3QsXG5pZnJhbWUsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG5wLFxuYmxvY2txdW90ZSxcbnByZSxcbmFiYnIsXG5hZGRyZXNzLFxuY2l0ZSxcbmNvZGUsXG5kZWwsXG5kZm4sXG5lbSxcbmltZyxcbmlucyxcbmtiZCxcbnEsXG5zYW1wLFxuc21hbGwsXG5zdHJvbmcsXG5zdWIsXG5zdXAsXG52YXIsXG5iLFxuaSxcbmRsLFxuZHQsXG5kZCxcbm9sLFxudWwsXG5saSxcbmZpZWxkc2V0LFxuZm9ybSxcbmxhYmVsLFxubGVnZW5kLFxudGFibGUsXG5jYXB0aW9uLFxudGJvZHksXG50Zm9vdCxcbnRoZWFkLFxudHIsXG50aCxcbnRkLFxuYXJ0aWNsZSxcbmFzaWRlLFxuY2FudmFzLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnksXG50aW1lLFxubWFyayxcbmF1ZGlvLFxudmlkZW8ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG46cm9vdCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbmh0bWwge1xuICBmb250LXNpemU6IDEwMCU7XG59XG5ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgY29sb3I6ICMyMDIwMjM7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJyAsIHNhbnMtc2VyaWY7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjY7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tZW51LFxubmF2LFxuc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuc2VsZWN0IHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbnRleHRhcmVhIHtcbiAgd2lkdGg6IDEwMCU7XG59XG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIG1hcmdpbjogMDtcbn1cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4qLFxuKjpiZWZvcmUsXG4qOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cbmEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjMzAzMWZlO1xufVxuaW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG51bCxcbm9sIHtcbiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07XG59XG4vKlxuLS0tXG5uYW1lOiAuYm9yZGVyLWJveFxuY2F0ZWdvcnk6IEJveC9Cb3JkZXJcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYm9yZGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3JkZXJzIG9uIGFsbCBmb3VyIHNpZGVzLlxuXG5gYGBqYWRlXG5kaXYuYm9yZGVyLWJveC4tbGVmdCBTb21lIGRlbW8gY29udGVudFxuYGBgXG5cbmBgYGphZGVcbmRpdi5ib3JkZXItYm94Li1hbGwgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuKi9cbi5ib3JkZXItYm94Li10b3Age1xuICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2UwZTBlMDtcbn1cbi5ib3JkZXItYm94Li1yaWdodCB7XG4gIGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG59XG4uYm9yZGVyLWJveC4tYm90dG9tIHtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItY29sb3I6ICNlMGUwZTA7XG59XG4uYm9yZGVyLWJveC4tbGVmdCB7XG4gIGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gIGJvcmRlci1jb2xvcjogI2UwZTBlMDtcbn1cbi5ib3JkZXItYm94Li1hbGwge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLWNvbG9yOiAjZTBlMGUwO1xufVxuLmJvcmRlci1ib3guLXJvdW5kIHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuLypcbi0tLVxubmFtZTogLmNvbG9yLWJveFxuY2F0ZWdvcnk6IEJveC9Db2xvclxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBjb2xvcnNcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5Db250cm9scyB0aGUgYmFja2dyb3VuZCBhbmQvb3IgZm9yZWdyb3VuZCBjb2xvcihzKSBvZiB0aGUgc3R5bGVkIGVsZW1lbnQuXG5cbiMjIENvbmZpZ3VyYXRpb25cblxuVGhpcyBjb21wb25lbnQgcHJvZHVjZXMgYSBgLXZhcmlhbnRgIGZvciBlYWNoIGtleSBpbiB0aGUgYHRoZW1lLmNvbXBvbmVudHMuY29sb3ItYm94YCBoYXNoLlxuWW91IGNhbiB0aGVyZWZvcmUgZGVmaW5lIHZhcmlhbnRzIGJ5IGluY2x1ZGluZyBlLiBnLiB0aGUgZm9sbG93aW5nIGluIHRoZSBmaWxlIGBjb2xvci1ib3gudmFyLnN0eWxgOlxuXG5gYGBzdHlsdXNcbnRoZW1lLmNvbXBvbmVudHMuY29sb3ItYm94LmZvb3RlciA9IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmZvb3RlcixcbiAgY29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0LFxufTtcbmBgYFxuXG4jIyBBcHBsaWNhdGlvblxuXG5gYGBqYWRlXG5kaXYuY29sb3ItYm94Li1ib2R5KHN0eWxlPVwid2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4XCIpXG4gIHNwYW4gQ29udGVudFxuYGBgXG5cbmBgYGphZGVcbmRpdi5jb2xvci1ib3guLWFjdGlvbihzdHlsZT1cIndpZHRoOjEwMHB4O2hlaWdodDoxMDBweFwiKVxuICBzcGFuIENvbnRlbnRcbmBgYFxuXG4jIyBTZWUgYWxzbzpcblxuKiBbY2hvb3NlTWF4Q29udHJhc3RdKC4uLy4uL1NoYXJlZC9GdW5jdGlvbnMvaW5kZXguaHRtbCNjaG9vc2VNYXhDb250cmFzdCkgJm1kYXNoO1xuICBJbiBvcmRlciB0byBndWFyYW50ZWUgZ29vZCBsZWdpYmlsaXR5LCB0aGUgZm9yZWdyb3VuZCBgY29sb3JgIHNob3VsZCBiZSBjaG9zZW5cbiAgaW4gcmVsYXRpb24gdG8gdGhlIGBiYWNrZ3JvdW5kLWNvbG9yYCBzdWNoIHRoYXQgYSByZWFzb25hYmx5IGhpZ2ggY29udHJhc3QgcmF0aW9cbiAgd2lsbCByZXN1bHQuIElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGB0aGVtZS5jb2xvcnNgIHZhcmlhYmxlcyBpbnN0ZWFkIG9mIGZpeGVkXG4gIGNvbG9yIHZhbHVlcywgdGhpcyBjYW4gaGVscCB5b3Ugc2VsZWN0IHRoZSBiZXN0IG9uZTsgc2VlIHRoZXJlIGZvciBhbiBleGFtcGxlLlxuYGBgXG5cbiovXG4uY29sb3ItYm94Li1ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNjtcbiAgY29sb3I6ICMyMDIwMjM7XG59XG4uY29sb3ItYm94Li1hY3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzMWZlO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jb2xvci1ib3guLXdoaXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICMwMDA7XG59XG4uY29sb3ItYm94Li1ibGFjayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gIGNvbG9yOiAjZmZmO1xufVxuLypcbi0tLVxubmFtZTogLm1hcmdpbi1ib3hcbmNhdGVnb3J5OiBCb3gvTWFyZ2luXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgY29tcG9uZW50IHRvIGFkZCBtYXJnaW5zXG5cbiMjIEFwcGx5aW5nIG1hcmdpbnNcblxuVGhlIGVhc2llc3QgdXNlIGNhc2UgaXMgdG8gdXNlIHNpbXBsZSBgLm1hcmdpbi1ib3ggLi1hbGxgIGZvciBhIG1hcmdpbiBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlcy5cblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWFsbFxuXHRkaXYuYWlnaXMtZGVidWcgRGVmYXVsdCBtYXJnaW4gYXBwbGllZCBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnRcbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgRGVmYXVsdCBtYXJnaW4gYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIG1hcmdpbnMgYXJlIGAuLXRvcC17c2l6ZX1gLCBgLi1yaWdodC17c2l6ZX1gLCBgLi1ib3R0b20te3NpemV9YCBhbmQgYC5sZWZ0LXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplcyBzbWFsbCwgbWVkaXVtIG9yIGxhcmdlLlxuQWxsIHNpemVzIGFyZSBkZWZpbmVkIGluIHRoZSB2YXJpYWJsZSB0aGVtZS5jb21wb25lbnRzLm1hcmdpbi1ib3guIFZhbHVlcyBhcmUgYHNtYWxsYCwgYG1lZGl1bWAsIGBsYXJnZWAgYW5kIGBhdXRvYFxuXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tbGVmdC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1yaWdodC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tdG9wLXNtYWxsXG4gICAgZGl2LmFpZ2lzLWRlYnVnIFNtYWxsIG1hcmdpbiBhcHBsaWVkIG9uIHRvcFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tYm90dG9tLXNtYWxsXG4gICAgZGl2LmFpZ2lzLWRlYnVnIFNtYWxsIG1hcmdpbiBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cblRoZXJlIGFyZSBhbHNvIHNob3J0Y3V0cyBmb3IgdmVydGljYWwgYC4tdi17c2l6ZX1gIGFuZCBob3Jpem9udGFsIGAuLWgte3NpemV9YCB0b2dldGhlciB3aXRoIHNpemVzIHNtYWxsLCBtZWRpdW0gYW5kIGxhcmdlXG5cbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li12LW1lZGl1bVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBNZWRpdW0gbWFyZ2luIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWgtbWVkaXVtXG4gICAgZGl2LmFpZ2lzLWRlYnVnIE1lZGl1bSBtYXJnaW4gYXBwbGllZCBvbiByaWdodCBhbmQgbGVmdFxuYGBgXG5cbiMjIFZhcmlhbnRzIGZvciBhdXRvIG1hcmdpbnNcblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWF1dG8uLWgoc3R5bGU9XCJ3aWR0aDogMjAwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcgQXV0byBtYXJnaW4gYXBwbGllZCBvbiByaWdodCBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tYXV0by4tdihzdHlsZT1cImhlaWdodDogNDZweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBBdXRvIG1hcmdpbiBhcHBsaWVkIG9uIHRvcCBhbmQgYm90dG9tXG5gYGBcblxuKi9cbi5tYXJnaW4tYm94Li10b3Age1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLXJpZ2h0IHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG59XG4ubWFyZ2luLWJveC4tbGVmdCB7XG4gIG1hcmdpbi1sZWZ0OiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWgge1xuICBtYXJnaW4tbGVmdDogMS4yNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLXYge1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWFsbCB7XG4gIG1hcmdpbjogMS4yNXJlbSAxLjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLXRvcC1zbWFsbCB7XG4gIG1hcmdpbi10b3A6IDAuOTM3NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1yaWdodC1zbWFsbCB7XG4gIG1hcmdpbi1yaWdodDogMC45Mzc1cmVtO1xufVxuLm1hcmdpbi1ib3guLWJvdHRvbS1zbWFsbCB7XG4gIG1hcmdpbi1ib3R0b206IDAuOTM3NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1sZWZ0LXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IDAuOTM3NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1oLXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IDAuOTM3NXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjkzNzVyZW07XG59XG4ubWFyZ2luLWJveC4tdi1zbWFsbCB7XG4gIG1hcmdpbi10b3A6IDAuOTM3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC45Mzc1cmVtO1xufVxuLm1hcmdpbi1ib3guLWFsbC1zbWFsbCB7XG4gIG1hcmdpbjogMC45Mzc1cmVtIDAuOTM3NXJlbTtcbn1cbi5tYXJnaW4tYm94Li10b3AtbWVkaXVtIHtcbiAgbWFyZ2luLXRvcDogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tcmlnaHQtbWVkaXVtIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjg3NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tbWVkaXVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tbGVmdC1tZWRpdW0ge1xuICBtYXJnaW4tbGVmdDogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4taC1tZWRpdW0ge1xuICBtYXJnaW4tbGVmdDogMS44NzVyZW07XG4gIG1hcmdpbi1yaWdodDogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tdi1tZWRpdW0ge1xuICBtYXJnaW4tdG9wOiAxLjg3NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tYWxsLW1lZGl1bSB7XG4gIG1hcmdpbjogMS44NzVyZW0gMS44NzVyZW07XG59XG4ubWFyZ2luLWJveC4tdG9wLWxhcmdlIHtcbiAgbWFyZ2luLXRvcDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1yaWdodC1sYXJnZSB7XG4gIG1hcmdpbi1yaWdodDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tbGFyZ2Uge1xuICBtYXJnaW4tYm90dG9tOiAzLjc1cmVtO1xufVxuLm1hcmdpbi1ib3guLWxlZnQtbGFyZ2Uge1xuICBtYXJnaW4tbGVmdDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1oLWxhcmdlIHtcbiAgbWFyZ2luLWxlZnQ6IDMuNzVyZW07XG4gIG1hcmdpbi1yaWdodDogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li12LWxhcmdlIHtcbiAgbWFyZ2luLXRvcDogMy43NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li1hbGwtbGFyZ2Uge1xuICBtYXJnaW46IDMuNzVyZW0gMy43NXJlbTtcbn1cbi5tYXJnaW4tYm94Li10b3AtYXV0byB7XG4gIG1hcmdpbi10b3A6IGF1dG87XG59XG4ubWFyZ2luLWJveC4tcmlnaHQtYXV0byB7XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cbi5tYXJnaW4tYm94Li1ib3R0b20tYXV0byB7XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG59XG4ubWFyZ2luLWJveC4tbGVmdC1hdXRvIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG4ubWFyZ2luLWJveC4taC1hdXRvIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbn1cbi5tYXJnaW4tYm94Li12LWF1dG8ge1xuICBtYXJnaW4tdG9wOiBhdXRvO1xuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xufVxuLm1hcmdpbi1ib3guLWFsbC1hdXRvIHtcbiAgbWFyZ2luOiBhdXRvIGF1dG87XG59XG4ubWFyZ2luLWJveC4tdG9wLXRhYml0ZW0ge1xuICBtYXJnaW4tdG9wOiAwLjA2MjVyZW07XG59XG4ubWFyZ2luLWJveC4tcmlnaHQtdGFiaXRlbSB7XG4gIG1hcmdpbi1yaWdodDogMC4wNjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWJvdHRvbS10YWJpdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4wNjI1cmVtO1xufVxuLm1hcmdpbi1ib3guLWxlZnQtdGFiaXRlbSB7XG4gIG1hcmdpbi1sZWZ0OiAwLjA2MjVyZW07XG59XG4ubWFyZ2luLWJveC4taC10YWJpdGVtIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMDYyNXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjA2MjVyZW07XG59XG4ubWFyZ2luLWJveC4tdi10YWJpdGVtIHtcbiAgbWFyZ2luLXRvcDogMC4wNjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjA2MjVyZW07XG59XG4ubWFyZ2luLWJveC4tYWxsLXRhYml0ZW0ge1xuICBtYXJnaW46IDAuMDYyNXJlbSAwLjA2MjVyZW07XG59XG4ubWFyZ2luLWJveC4tYXV0by4tdiB7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG59XG4ubWFyZ2luLWJveC4tYXV0by4taCB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAucGFkZGluZy1ib3hcbmNhdGVnb3J5OiBCb3gvUGFkZGluZ1xudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBjb21wb25lbnQgdG8gYWRkIHBhZGRpbmdzXG5cbiMjIEFwcGx5aW5nIHBhZGRpbmdzXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5wYWRkaW5nLWJveCAuLWFsbGAgZm9yIGEgcGFkZGluZyBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWFsbCBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWJvdHRvbSBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHBhZGRpbmdzIGFyZSBgLi10b3Ate3NpemV9YCwgYC4tcmlnaHQte3NpemV9YCwgYC4tYm90dG9tLXtzaXplfWAgYW5kIGAubGVmdC17c2l6ZX1gIHRvZ2V0aGVyIHdpdGggc2l6ZXMgc21hbGwsIG1lZGl1bSBvciBsYXJnZS5cbkFsbCBzaXplcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmFyaWFibGUgdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC4gVmFsdWVzIGFyZSBgc21hbGxgLCBgbWVkaXVtYCwgYW5kIGBsYXJnZWBcblxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1sZWZ0LXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tcmlnaHQtc21hbGwoc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCIpIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXRvcC1zbWFsbCBTbWFsbCBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tYm90dG9tLXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5UaGVyZSBhcmUgYWxzbyBzaG9ydGN1dHMgZm9yIHZlcnRpY2FsIGAuLXYte3NpemV9YCBhbmQgaG9yaXpvbnRhbCBgLi1oLXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXYtbWVkaXVtIE1lZGl1bSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1oLW1lZGl1bShzdHlsZT1cIndpZHRoOiAzMDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4taC1tZWRpdW0uLXRvcC1sYXJnZShzdHlsZT1cIndpZHRoOiA0MDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0LCBsYXJnZSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbiovXG4ucGFkZGluZy1ib3guLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG59XG4ucGFkZGluZy1ib3guLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuLnBhZGRpbmctYm94Li1ib3R0b20ge1xuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xufVxuLnBhZGRpbmctYm94Li1sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG4ucGFkZGluZy1ib3guLWgge1xuICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuLnBhZGRpbmctYm94Li12IHtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYWxsIHtcbiAgcGFkZGluZzogMC41cmVtIDAuNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tdG9wLXNtYWxsIHtcbiAgcGFkZGluZy10b3A6IDAuMTI1cmVtO1xufVxuLnBhZGRpbmctYm94Li1yaWdodC1zbWFsbCB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xufVxuLnBhZGRpbmctYm94Li1ib3R0b20tc21hbGwge1xuICBwYWRkaW5nLWJvdHRvbTogMC4xMjVyZW07XG59XG4ucGFkZGluZy1ib3guLWxlZnQtc21hbGwge1xuICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xufVxuLnBhZGRpbmctYm94Li1oLXNtYWxsIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjEyNXJlbTtcbiAgcGFkZGluZy1yaWdodDogMC4xMjVyZW07XG59XG4ucGFkZGluZy1ib3guLXYtc21hbGwge1xuICBwYWRkaW5nLXRvcDogMC4xMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjEyNXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYWxsLXNtYWxsIHtcbiAgcGFkZGluZzogMC4xMjVyZW0gMC4xMjVyZW07XG59XG4ucGFkZGluZy1ib3guLXRvcC1tZWRpdW0ge1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tcmlnaHQtbWVkaXVtIHtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYm90dG9tLW1lZGl1bSB7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuLnBhZGRpbmctYm94Li1sZWZ0LW1lZGl1bSB7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbn1cbi5wYWRkaW5nLWJveC4taC1tZWRpdW0ge1xuICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XG59XG4ucGFkZGluZy1ib3guLXYtbWVkaXVtIHtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuLnBhZGRpbmctYm94Li1hbGwtbWVkaXVtIHtcbiAgcGFkZGluZzogMXJlbSAxcmVtO1xufVxuLnBhZGRpbmctYm94Li10b3AtbGFyZ2Uge1xuICBwYWRkaW5nLXRvcDogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tcmlnaHQtbGFyZ2Uge1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuLnBhZGRpbmctYm94Li1ib3R0b20tbGFyZ2Uge1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tbGVmdC1sYXJnZSB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4taC1sYXJnZSB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgcGFkZGluZy1yaWdodDogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tdi1sYXJnZSB7XG4gIHBhZGRpbmctdG9wOiAycmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cbi5wYWRkaW5nLWJveC4tYWxsLWxhcmdlIHtcbiAgcGFkZGluZzogMnJlbSAycmVtO1xufVxuLnBhZGRpbmctYm94Li1ndXR0ZXIge1xuICBwYWRkaW5nOiAwLjkzNzVyZW0gMC45Mzc1cmVtO1xufVxuLypcbi0tLVxubmFtZTogLnNoYWRvdy1ib3hcbmNhdGVnb3J5OiBCb3gvU2hhZG93XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHNoYWRvd1xuIC0gaGVscGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3gtc2hhZG93cyB3aXRoIGRpZmZlcmVudCB2YXJpYW50c1xuXG4jIyBEZWZhdWx0IHZhcmlhbnRzXG5gYGBqYWRlXG5kaXYuc2hhZG93LWJveCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li1pbnNldCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li16ZXJvIFVzZSB6ZXJvIHNoYWRvdyBpbiBhbmltYXRpb25zXG5gYGBcbiovXG4uc2hhZG93LWJveCB7XG4gIGJveC1zaGFkb3c6IDBweCAxcHggNnB4IDBweCByZ2JhKDAsMCwwLDAuMTcpO1xufVxuLnNoYWRvdy1ib3guLWluc2V0IHtcbiAgYm94LXNoYWRvdzogaW5zZXQgMHB4IDFweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4xNyk7XG59XG4uc2hhZG93LWJveC4temVybyB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDBweCAwcHggMHB4IDBweCByZ2JhKDAsMCwwLDAuMTcpO1xufVxuLypcbi0tLVxubmFtZTogLnNwYWNlci1ib3hcbmNhdGVnb3J5OiBCb3gvU3BhY2VyXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gY29udHJvbCBzcGFjaW5nIG9mIGEgYm94LiBJdCBtYWlubHkgc2V0cyB0aGUgbWFyZ2luIGFuZCBwYWRkaW5nIHdpdGggYSBmaXhlZCBzZXQgb2YgY29uZmlndXJhdGlvbiB2YWx1ZXMuXG5UaGUgZGVmYXVsdCBzcGFjZSBzaXplcyBhcmU6XG5gYGBcbnh4czogMlxueHM6IDRcbnM6IDhcbmRlZmF1bHQ6IDE2XG5sOiAzMlxueGw6IDY0YFxuYGBgXG5cblxuVG8gY29udHJvbCB0aGUgcGFkZGluZy9tYXJnaW4gZm9yIGEgc3BlY2lmaWMgc3BhY2UgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB2YXJpYW50czpcbmBgYFxuLXtraW5kfS17c2lkZX0te3NwYWNlfVxuLXtraW5kfS17YXhpc30te3NwYWNlfVxuLXtraW5kfS17c3BhY2V9XG5cbmtpbmQ6IG0gfCBwXG5zaWRlOiB0b3AgfCByaWdodCB8IGJvdHRvbSB8IGxlZnRcbnNwYWNlOiB4eHMgfMKgeHMgfMKgcyB8wqBsIHwgeGxcbmF4aXM6IHYgfMKgaFxuYGBgXG5cbk9yIHRvIHVzZSB0aGUgYGRlZmF1bHRgIHBhZGRpbmcgc3BhY2UgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzaG9ydGN1dHM6XG5gYGBcbi17a2luZH0te3NpZGV9XG4te2tpbmR9LXtheGlzfVxuLXtraW5kfVxuXG5raW5kOiBtIHwgcFxuc2lkZTogdG9wIHwgcmlnaHQgfCBib3R0b20gfCBsZWZ0XG5heGlzOiB2IHzCoGhcbmBgYFxuXG4jIyBFeGFtcGxlc1xuXG5IZXJlIGFyZSBzb21lIGV4YW1wbGUgdGhhdCBzaG93IHRoZSB1c2FnZSB3aXRoIHNwZWNpZmljIHNwYWNlIHNpemVzLlxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0tc1xuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgcyBtYXJnaW4gb24gYWxsIHNpZGVzXG5gYGBcbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1wLXYteGxcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IHhsIHBhZGRpbmcgb24gdmVydGljYWwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXAtdG9wLWxcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IGwgcGFkZGluZyBvbiB0b3Agc2lkZVxuYGBgXG5cbkhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IHRoZSB1c2FnZSB3aXRoIGRlZmF1bHQgc3BhY2Ugc2l6ZS5cblxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXBcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IGRlZmF1bHQgcGFkZGluZyBvbiBhbGwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0taFxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBtYXJnaW4gb24gaG9yaXpvbnRhbCBheGlzXG5gYGBcbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1tLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBtYXJnaW4gb24gYm90dG9tIHNpZGVcbmBgYFxuXG4jIyBBdXRvIG1hcmdpblxuXG5Gb3Igc2V0dGluZyB0aGUgdmVydGljYWwgbWFyZ2luIHRvIGF1dG8gdGhlIGAuLWF1dG9gIHZhcmlhbnQgY2FuIGJlIHVzZWQuXG5cbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1hdXRvKHN0eWxlPVwid2lkdGg6IDIwMHB4XCIpXG5cdGRpdi5haWdpcy1kZWJ1ZyBBcHBseSBtYXJnaW4gYXV0byB0byBsZWZ0IGFuZCByaWdodFxuYGBgXG5cbiovXG4uc3BhY2VyLWJveC4tbS10b3AteHhzIHtcbiAgbWFyZ2luLXRvcDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC10b3AteHhzIHtcbiAgcGFkZGluZy10b3A6IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0tcmlnaHQteHhzIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXJpZ2h0LXh4cyB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0tYm90dG9tLXh4cyB7XG4gIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtYm90dG9tLXh4cyB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWxlZnQteHhzIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtbGVmdC14eHMge1xuICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0taC14eHMge1xuICBtYXJnaW4tbGVmdDogMC4xMjVyZW07XG4gIG1hcmdpbi1yaWdodDogMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS12LXh4cyB7XG4gIG1hcmdpbi10b3A6IDAuMTI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXh4cyB7XG4gIG1hcmdpbjogMC4xMjVyZW0gMC4xMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1oLXh4cyB7XG4gIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtdi14eHMge1xuICBwYWRkaW5nLXRvcDogMC4xMjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjEyNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXh4cyB7XG4gIHBhZGRpbmc6IDAuMTI1cmVtIDAuMTI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0tdG9wLXhzIHtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXRvcC14cyB7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0tcmlnaHQteHMge1xuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1yaWdodC14cyB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1ib3R0b20teHMge1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtYm90dG9tLXhzIHtcbiAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1sZWZ0LXhzIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1sZWZ0LXhzIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0taC14cyB7XG4gIG1hcmdpbi1sZWZ0OiAwLjI1cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS12LXhzIHtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXhzIHtcbiAgbWFyZ2luOiAwLjI1cmVtIDAuMjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1oLXhzIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLXAtdi14cyB7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXhzIHtcbiAgcGFkZGluZzogMC4yNXJlbSAwLjI1cmVtO1xufVxuLnNwYWNlci1ib3guLW0tdG9wLXMge1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC10b3AtcyB7XG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1yaWdodC1zIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1yaWdodC1zIHtcbiAgcGFkZGluZy1yaWdodDogMC41cmVtO1xufVxuLnNwYWNlci1ib3guLW0tYm90dG9tLXMge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC1ib3R0b20tcyB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1sZWZ0LXMge1xuICBtYXJnaW4tbGVmdDogMC41cmVtO1xufVxuLnNwYWNlci1ib3guLXAtbGVmdC1zIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS1oLXMge1xuICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXYtcyB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLnNwYWNlci1ib3guLW0tcyB7XG4gIG1hcmdpbjogMC41cmVtIDAuNXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWgtcyB7XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tcC12LXMge1xuICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xufVxuLnNwYWNlci1ib3guLXAtcyB7XG4gIHBhZGRpbmc6IDAuNXJlbSAwLjVyZW07XG59XG4uc3BhY2VyLWJveC4tbS10b3Age1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuLnNwYWNlci1ib3guLXAtdG9wIHtcbiAgcGFkZGluZy10b3A6IDFyZW07XG59XG4uc3BhY2VyLWJveC4tbS1yaWdodCB7XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXJpZ2h0IHtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG4uc3BhY2VyLWJveC4tcC1ib3R0b20ge1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWxlZnQge1xuICBwYWRkaW5nLWxlZnQ6IDFyZW07XG59XG4uc3BhY2VyLWJveC4tbS1oIHtcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXYge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuLnNwYWNlci1ib3guLW0ge1xuICBtYXJnaW46IDFyZW0gMXJlbTtcbn1cbi5zcGFjZXItYm94Li1wLWgge1xuICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XG59XG4uc3BhY2VyLWJveC4tcC12IHtcbiAgcGFkZGluZy10b3A6IDFyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xufVxuLnNwYWNlci1ib3guLXAge1xuICBwYWRkaW5nOiAxcmVtIDFyZW07XG59XG4uc3BhY2VyLWJveC4tbS10b3AtbCB7XG4gIG1hcmdpbi10b3A6IDJyZW07XG59XG4uc3BhY2VyLWJveC4tcC10b3AtbCB7XG4gIHBhZGRpbmctdG9wOiAycmVtO1xufVxuLnNwYWNlci1ib3guLW0tcmlnaHQtbCB7XG4gIG1hcmdpbi1yaWdodDogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXJpZ2h0LWwge1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuLnNwYWNlci1ib3guLW0tYm90dG9tLWwge1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuLnNwYWNlci1ib3guLXAtYm90dG9tLWwge1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1tLWxlZnQtbCB7XG4gIG1hcmdpbi1sZWZ0OiAycmVtO1xufVxuLnNwYWNlci1ib3guLXAtbGVmdC1sIHtcbiAgcGFkZGluZy1sZWZ0OiAycmVtO1xufVxuLnNwYWNlci1ib3guLW0taC1sIHtcbiAgbWFyZ2luLWxlZnQ6IDJyZW07XG4gIG1hcmdpbi1yaWdodDogMnJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXYtbCB7XG4gIG1hcmdpbi10b3A6IDJyZW07XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG4uc3BhY2VyLWJveC4tbS1sIHtcbiAgbWFyZ2luOiAycmVtIDJyZW07XG59XG4uc3BhY2VyLWJveC4tcC1oLWwge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDJyZW07XG59XG4uc3BhY2VyLWJveC4tcC12LWwge1xuICBwYWRkaW5nLXRvcDogMnJlbTtcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG4uc3BhY2VyLWJveC4tcC1sIHtcbiAgcGFkZGluZzogMnJlbSAycmVtO1xufVxuLnNwYWNlci1ib3guLW0tdG9wLXhsIHtcbiAgbWFyZ2luLXRvcDogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXRvcC14bCB7XG4gIHBhZGRpbmctdG9wOiA0cmVtO1xufVxuLnNwYWNlci1ib3guLW0tcmlnaHQteGwge1xuICBtYXJnaW4tcmlnaHQ6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tcC1yaWdodC14bCB7XG4gIHBhZGRpbmctcmlnaHQ6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tbS1ib3R0b20teGwge1xuICBtYXJnaW4tYm90dG9tOiA0cmVtO1xufVxuLnNwYWNlci1ib3guLXAtYm90dG9tLXhsIHtcbiAgcGFkZGluZy1ib3R0b206IDRyZW07XG59XG4uc3BhY2VyLWJveC4tbS1sZWZ0LXhsIHtcbiAgbWFyZ2luLWxlZnQ6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tcC1sZWZ0LXhsIHtcbiAgcGFkZGluZy1sZWZ0OiA0cmVtO1xufVxuLnNwYWNlci1ib3guLW0taC14bCB7XG4gIG1hcmdpbi1sZWZ0OiA0cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDRyZW07XG59XG4uc3BhY2VyLWJveC4tbS12LXhsIHtcbiAgbWFyZ2luLXRvcDogNHJlbTtcbiAgbWFyZ2luLWJvdHRvbTogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1tLXhsIHtcbiAgbWFyZ2luOiA0cmVtIDRyZW07XG59XG4uc3BhY2VyLWJveC4tcC1oLXhsIHtcbiAgcGFkZGluZy1sZWZ0OiA0cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiA0cmVtO1xufVxuLnNwYWNlci1ib3guLXAtdi14bCB7XG4gIHBhZGRpbmctdG9wOiA0cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcbn1cbi5zcGFjZXItYm94Li1wLXhsIHtcbiAgcGFkZGluZzogNHJlbSA0cmVtO1xufVxuLnNwYWNlci1ib3guLWF1dG8ge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuLypcbi0tLVxubmFtZTogLnRyYW5zZm9ybS1ib3hcbmNhdGVnb3J5OiBCb3gvVHJhbnNmb3JtXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRyYW5mb3JtXG4gLSBoZWxwZXJcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGJveCB0byBjb250cm9sIGNvbW1vbiB0cmFuc2Zvcm1hdGlvbnNcblxuIyMgUm90YXRlXG5gYGBqYWRlXG5kaXYudHJhbnNmb3JtLWJveC4tcm90OTAgU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3QxODAgU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3QyNzAgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuXG4jIyBGbGlwXG5gYGBqYWRlXG5kaXYudHJhbnNmb3JtLWJveC4tZmxpcFggU29tZSBkZW1vIGNvbnRlbnRcbmRpdi50cmFuc2Zvcm0tYm94Li1mbGlwWSBTb21lIGRlbW8gY29udGVudFxuYGBgXG4qL1xuLnRyYW5zZm9ybS1ib3guLXJvdDkwIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuLnRyYW5zZm9ybS1ib3guLXJvdDE4MCB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG59XG4udHJhbnNmb3JtLWJveC4tcm90MjcwIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTtcbn1cbi50cmFuc2Zvcm0tYm94Li1mbGlwWCB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbn1cbi50cmFuc2Zvcm0tYm94Li1mbGlwWSB7XG4gIHRyYW5zZm9ybTogc2NhbGVZKC0xKTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5idXR0b24tc3R5bGVcbmNhdGVnb3J5OiBDb21wb25lbnRzL0J1dHRvblxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBidXR0b25cbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGJ1dHRvbiBjb21wb25lbnQgYXMgYSBiYXNlIGZvciBkaWZmZXJlbnQgYnV0dG9uIHZhcmlhbnRzIGRlZmluZWQgaW4gaXRzIGNvbmZpZ3VyYXRpb24uXG5cbmBgYGphZGVcbmJ1dHRvbi5idXR0b24tc3R5bGUuLW1haW4gQWN0aW9uXG5gYGBcbiovXG4uYnV0dG9uLXN0eWxlIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uYnV0dG9uLXN0eWxlLi1tYWluIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cbi5idXR0b24tc3R5bGUuLW1haW46aG92ZXIsXG4uYnV0dG9uLXN0eWxlLi1tYWluOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjdjYjtcbn1cbi5idXR0b24tc3R5bGUuLW1haW4taW52ZXJ0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY2O1xuICBmb250LXdlaWdodDogNTAwO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGNvbG9yOiAjMzAzMWZlO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLmJ1dHRvbi1zdHlsZS4tbWFpbi1pbnZlcnRlZDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDMxZmU7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmJ1dHRvbi1zdHlsZS4tYWN0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogI2ZmZjtcbn1cbi5idXR0b24tc3R5bGUuLWFjdGlvbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNjI3Y2I7XG59XG4uYnV0dG9uLXN0eWxlLi1ob3ZlciB7XG4gIHRyYW5zaXRpb246IGFsbCAwLjFzO1xufVxuLmJ1dHRvbi1zdHlsZS4taG92ZXI6aG92ZXIsXG4uYnV0dG9uLXN0eWxlLi1ob3Zlcjpmb2N1cyB7XG4gIGNvbG9yOiAjMzAzMWZlO1xufVxuLmJ1dHRvbi1zdHlsZS4taWNvbiB7XG4gIHBhZGRpbmc6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XG59XG4uYnV0dG9uLXN0eWxlLi1pY29uID4gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTk1YWZlO1xuICBwYWRkaW5nOiAwLjU2MjVyZW07XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMnB4O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7XG59XG4uYnV0dG9uLXN0eWxlLi1pY29uOmhvdmVyID4gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGQ0ZGU0O1xufVxuLmJ1dHRvbi1zdHlsZS4tZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjg7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cbi5idXR0b24tc3R5bGUuLWRpc2FibGVkOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbn1cbi5idXR0b24tc3R5bGUuLXNlY29uZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMzMDMxZmU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgY29sb3I6ICMzMDMxZmU7XG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgcGFkZGluZzogMC4zNzVyZW0gMC44NzVyZW07XG59XG4uYnV0dG9uLXN0eWxlLi1zZWNvbmQ6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbn1cbi5idXR0b24tc3R5bGUuLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi8qXG4tLS1cbm5hbWU6IC5kcm9wLWRvd24tbWVudVxuY2F0ZWdvcnk6IERyb3BEb3duXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGRyb3Bkb3duXG5jb21waWxlOiB0cnVlXG4tLS1cblxuVGhpcyBzdHlsZXMgYSBtZW51IGluc2lkZSBhIC5kcm9wLWRvd24uXG5cbmBgYGphZGVcbmRpdi5kcm9wLWRvd24tbWVudVxuXHRkaXYuaXRlbSBNZW51IDFcblx0ZGl2Lml0ZW0gTWVudSAyXG5cdGRpdi5pdGVtIE1lbnUgM1xuYGBgXG5cblVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgLmRyb3AtZG93biBpdHNlbGZcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLW9wZW5cblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQuZHJvcC1kb3duLW1lbnVcblx0XHRkaXYuaXRlbSBNZW51IDFcblx0XHRkaXYuaXRlbSBNZW51IDJcblx0XHRkaXYuaXRlbSBNZW51IDNcbmBgYFxuXG4qL1xuLmRyb3AtZG93bi1tZW51IHtcbiAgYm94LXNoYWRvdzogMHB4IDFweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4xNyk7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gIGJvcmRlci10b3A6IG5vbmU7XG59XG4uZHJvcC1kb3duLW1lbnUgPiAuaXRlbS4tbm8td3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uZHJvcC1kb3duLW1lbnUgPiAuaXRlbSArIC5pdGVtIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlMGUwZTA7XG59XG4vKlxuLS0tXG5uYW1lOiAuZHJvcC1kb3duXG5jYXRlZ29yeTogRHJvcERvd25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZHJvcGRvd25cbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGRyb3Bkb3duIGhhcyB0aGUgc2ltcGxlIG1lY2hhbmlzbSB0byBvcGVuIGFuZCBjbG9zZSBhIGRyb3Bkb3duIGNvbnRlbnQuXG5cblRyaWdnZXIgd2l0aCBtb3VzZW92ZXIgYnkgYWRkaW5nIGAuLWhvdmVyYCB2YXJpYW50XG5cblRyaWdnZXIgd2l0aCBqcyBieSBhZGRpbmcgYC4tb3BlbmAgdmFyaWFudCBcblxuQ2xvc2VkIERyb3Bkb3duXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgVmFyaWFudHNcblxuVmFyaWFudHMgYC4tdG9wYCwgYC4tYm90dG9tYCwgYC4tbGVmdGAgYW5kIGAuLXJpZ2h0YCBjYW4gYmUgY29tYmluZWRcblxuQm90dG9tIGxlZnRcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1ib3R0b20uLWxlZnRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cbkJvdHRvbSByaWdodFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLWJvdHRvbS4tcmlnaHRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCByaWdodFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLXRvcC4tcmlnaHRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCBsZWZ0XG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1sZWZ0XG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgQXNpZGVcblxuVGhlcmUgaXMgYW4gYC4tYXNpZGVgIHZhcmlhbnQgdG8gb3BlbiBjb250ZW50IGFzaWRlXG5cblRvcCBsZWZ0IGFzaWRlXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1sZWZ0Li1hc2lkZShzdHlsZT1cImxlZnQ6MjAwcHg7d2lkdGg6NTAlXCIpXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG5Ub3AgcmlnaHQgYXNpZGVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi10b3AuLXJpZ2h0Li1hc2lkZShzdHlsZT1cIndpZHRoOjUwJVwiKVxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcbiMjIFJlbGF0aXZlIGNvbnRlbnRcblxuVGhlcmUgaXMgYSB2YXJpYW50IGZvciBvcGVuaW5nIHRoZSBjb250ZW50IHJlbGF0aXZlIGluc3RlYWQgb2YgYWJzb2x1dGVcblxuUmVsYXRpdmVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1yZWxhdGl2ZShzdHlsZT1cIndpZHRoOjUwJVwiKVxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcblxuSlMgVHJpZ2dlclxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4tb3Blbi4tYm90dG9tLi1sZWZ0XG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG4jIyBEbyBub3Qgd3JhcCBjb250ZW50XG5cbkEgdmFyaWFudCBwcmV2ZW50aW5nIHRoZSBjb250ZW50IGZyb20gd3JhcHBpbmdcblxuXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tbm93cmFwXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnQgd2l0aCBzb21lIHdoaXRlc3BhY2VzXG5gYGBcblxuKi9cbi5kcm9wLWRvd24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmRyb3AtZG93bi4tb3BlbiA+IC5jb250ZW50IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uZHJvcC1kb3duLi1ob3Zlcjpob3ZlciA+IC5jb250ZW50IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uZHJvcC1kb3duLi10b3AgPiAuY29udGVudCB7XG4gIGJvdHRvbTogMTAwJTtcbn1cbi5kcm9wLWRvd24uLWJvdHRvbSA+IC5jb250ZW50IHtcbiAgdG9wOiAxMDAlO1xufVxuLmRyb3AtZG93bi4tbGVmdCA+IC5jb250ZW50IHtcbiAgbGVmdDogMDtcbn1cbi5kcm9wLWRvd24uLXRvcC4tbGVmdC4tYXNpZGUgPiAuY29udGVudCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAxMDAlKTtcbn1cbi5kcm9wLWRvd24uLXJpZ2h0ID4gLmNvbnRlbnQge1xuICByaWdodDogMDtcbn1cbi5kcm9wLWRvd24uLXRvcC4tcmlnaHQuLWFzaWRlID4gLmNvbnRlbnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAxMDAlKTtcbn1cbi5kcm9wLWRvd24uLXJlbGF0aXZlID4gLmNvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZHJvcC1kb3duLi1ub3dyYXAgPiAuY29udGVudCB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uZHJvcC1kb3duID4gLnRvZ2dsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kcm9wLWRvd24gPiAuY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwMDtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5faGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnN2Zy1pY29uIHtcbiAgZmlsbDogY3VycmVudENvbG9yO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEuMjVyZW07XG4gIGhlaWdodDogMS4yNXJlbTtcbn1cbi5zdmctaWNvbi4taW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLnN2Zy1pY29uLi1zY2FsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uc3ZnLWljb24uLXNtYWxsIHtcbiAgd2lkdGg6IDAuOTM3NXJlbTtcbiAgaGVpZ2h0OiAwLjkzNzVyZW07XG59XG4uc3ZnLWljb24uLXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICM5YjliOWI7XG59XG4uc3ZnLWljb24uLWJyZWFkY3J1bWIge1xuICBjb2xvcjogIzZhNmE2YTtcbiAgd2lkdGg6IDAuNjI1cmVtO1xuICBoZWlnaHQ6IDAuNjI1cmVtO1xufVxuLypcbi0tLVxubmFtZTogLmFicy1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvQWJzb2x1dGVcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBzaW1wbGUgY29tcG9uZW50IHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYWJzb2x1dGUuIERlZmF1bHQgaXMgdG9wLCBsZWZ0XG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uaW5nIGFyZSBgLi10b3BgLCBgLi12Y2VudGVyYCBhbmQgYC4tYm90dG9tYC5cblRoZSB2YXJpYW50cyBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb25pbmcgYXJlIGAuLXJpZ2h0YCwgYC4taGNlbnRlcmAgYW5kIGAuLWxlZnRgLlxuQWRkaXRpbmFsbHkgdGhlIGAtY2VudGVyYCB2YXJpYW50IHdpbGwgY2VudGVyIGhvcml6b250YWwgYW5kIHZlcnRpY2FsLlxuVmFyaWFudHMgdG8gc3RyZXRjaCBhbiBpdGVtIHRvIGl0cyBmdWxsIHdpZHRoL2hlaWdodCBjYW4gYmUgZGluZSB3aXRoIGAuaXRlbS4tc3RyZXRjaGAuXG5JbiBzb21lIHNpdHVhdGlvbnMgdGhlIGFicy1sYXlvdXQgaXRzZWxmIG5lZWRzIHRvIHN0cmV0Y2ggc28gdXNlIHRoZSBzdHJldGNoIHZhcmlhbnQgb24gdGhlIGNvbXBvbmVudC4gYC5hYnMtbGF5b3V0Li1zdHJldGNoYCBcblxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1oY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLXJpZ2h0XG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1yaWdodC4tdmNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tcmlnaHQuLWJvdHRvbVxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tLi1oY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20uLWxlZnRcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWxlZnQuLXZjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWxlZnQuLXRvcFxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tc3RyZXRjaFxuYGBgXG5cbiMjIFotSW5kZXhcblxuRXZlcnkgaXRlbSBjYW4gY29udHJvbGwgaXRzIHogaW5kZXggd2l0aCB0aGUgYC4tentpfWB2YXJpYW50cy5cbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLWxlZnQuLXoxXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tbGVmdC4tejJcbmBgYFxuXG4qL1xuLmFicy1sYXlvdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYWJzLWxheW91dC4tc3RyZXRjaCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tdG9wIHtcbiAgdG9wOiAwO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tcmlnaHQge1xuICByaWdodDogMDtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLWJvdHRvbSB7XG4gIGJvdHRvbTogMDtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLWxlZnQge1xuICBsZWZ0OiAwO1xufVxuLmFicy1sYXlvdXQgPiAuaXRlbS4tdmNlbnRlciB7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi1oY2VudGVyIHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi1jZW50ZXIge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cbi5hYnMtbGF5b3V0ID4gLml0ZW0uLXN0cmV0Y2gge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16MSB7XG4gIHotaW5kZXg6IDE7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16MiB7XG4gIHotaW5kZXg6IDI7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16MyB7XG4gIHotaW5kZXg6IDM7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16NCB7XG4gIHotaW5kZXg6IDQ7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16NSB7XG4gIHotaW5kZXg6IDU7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16NiB7XG4gIHotaW5kZXg6IDY7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16NyB7XG4gIHotaW5kZXg6IDc7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16OCB7XG4gIHotaW5kZXg6IDg7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16OSB7XG4gIHotaW5kZXg6IDk7XG59XG4uYWJzLWxheW91dCA+IC5pdGVtLi16MTAge1xuICB6LWluZGV4OiAxMDtcbn1cbi8qXG4tLS1cbm5hbWU6IC5maXhlZC1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvRml4ZWRcbnRhZzpcbiAtIGNvbnRhaW5lclxuLS0tXG5cbkZpeGVkIGNvbnRhaW5lclxuWW91IGNhbiBwb3NpdGlvbiB0aGUgY29udGFpbmVyIHdpdGggdGhlIGRpZmZlcmVudCB2YXJpYW50cyBgLi10b3BgLCBgLi1ib3R0b21gLCBgLi1sZWZ0YCwgYC4tcmlnaHRgLlxuVG8gc3BhbiBmdWxsIHdpZHRoIC8gaGVpZ2h0IHVzZSBgLi1sZWZ0YCAmIGAuLXJpZ2h0YCAvIGAuLXRvcGAgJiBgLi1ib3R0b21gXG5cbkZpeGVkIHRvcCBhbmQgZnVsbCB3aWR0aFxuXG5gYGBqYWRlXG5kaXYuZml4ZWQtbGF5b3V0Li10b3AuLWxlZnQuLXJpZ2h0LmFpZ2lzLWRlYnVnIHRvcCBsZWZ0IGZ1bGx3aWR0aFxuICAgIFxuYGBgXG5cbkZpeGVkIHJpZ2h0IGFuZCBmdWxsIGhlaWdodFxuXG5gYGBqYWRlXG5kaXYuZml4ZWQtbGF5b3V0Li10b3AuLWJvdHRvbS4tcmlnaHQuYWlnaXMtZGVidWcgdG9wIHJpZ2h0IGZ1bGxoZWlnaHRcbiAgICBcbmBgYFxuXG4qL1xuLmZpeGVkLWxheW91dCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbn1cbi5maXhlZC1sYXlvdXQuLXRvcCB7XG4gIHRvcDogMDtcbn1cbi5maXhlZC1sYXlvdXQuLWJvdHRvbSB7XG4gIGJvdHRvbTogMDtcbn1cbi5maXhlZC1sYXlvdXQuLWxlZnQge1xuICBsZWZ0OiAwO1xufVxuLmZpeGVkLWxheW91dC4tcmlnaHQge1xuICByaWdodDogMDtcbn1cbi8qXG4tLS1cbm5hbWU6IC5maXhlZC1wYWdlLWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9GaXhlZCBQYWdlXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHBhZ2VcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHBhZ2UgbGF5b3V0IHdpdGggYSBmaXhlZCBoZWFkZXIgYW5kIG9wdGlvbmFsIHNpZGViYXJzLlxuV2l0aCB0aGUgYC1tYXJnaW4te3RvcHxsZWZ0fHJpZ2h0fWAsIGAtbWFyZ2luLXt0b3B8bGVmdHxyaWdodH0tc21hbGxgIHZhcmlhbnRzIHlvdSBjYW4gY29udHJvbCB0aGUgc3BhY2luZy5cbklmIHRoZSBjb250ZW50IGZvciBleGFtcGxlIG5lZWRzIGEgc3BhY2luZyB0b3dhcmRzIHRoZSBoZWFkZXIgdXNlOiBgLmNvbnRlbnQuLW1hcmdpbi10b3BgLlxuSWYgdGhlIHNpZGViYXIgc2hvdyBiZSBiZWxvdyB0aGUgaGVhZGVyIHVzZTogYC5zaWRlYmFyLi1sZWZ0Li1tYXJnaW4tdG9wYC5cblxuXG5UaGVyZSBhcmUgdmFyaWFudHMgdG8gcmVzaXplIHRoZSBoZWFkZXIgYW5kIHNpZGViYXJzIHRvIGEgc21hbGxlciB3aWR0aC9oZWlnaHQ6IGAuaGVhZGVyLi1zbWFsbGAsIGAuc2lkZWJhci4tc21hbGxgLlxuSWYgeW91IG5lZWQgYSBzcGFjaW5nIG9uIHlvdXIgY29udGVudCBvciBzaWRlYmFyIHlvdSBuZWVkIHRvIGFkanVzdCB0aGF0IG1hbnVhbGx5IGxpa2UgdGhpczpcbmBgYFxuZGl2LmZpeGVkLXBhZ2UtbGF5b3V0XG5cdGRpdi5oZWFkZXIuLXNtYWxsXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJVwiKSAgSGVhZGVyXG5cdGRpdi5jb250ZW50Li1tYXJnaW4tdG9wLXNtYWxsIENvbnRlbnRcblx0ZGl2LnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3Atc21hbGwuLXNtYWxsXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIExlZnQgU2lkZWJhclxuYGBgXG5cbiMjIEhlYWRlciB3aXRoIHNpZGViYXJzXG5cbmBgYGphZGVcbmRpdi5maXhlZC1wYWdlLWxheW91dFxuXHRkaXYuaGVhZGVyXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJVwiKSAgSGVhZGVyXG5cdGRpdi5jb250ZW50Li1tYXJnaW4tdG9wIENvbnRlbnRcblx0ZGl2LnNpZGViYXIuLWxlZnQuLW1hcmdpbi10b3Bcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgTGVmdCBTaWRlYmFyXG5cdGRpdi5zaWRlYmFyLi1yaWdodFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBSaWdodCBTaWRlYmFyXG5gYGBcbiovXG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuaGVhZGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBoZWlnaHQ6IDUuNzVyZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICB6LWluZGV4OiAxMDAwO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmhlYWRlci4tc21hbGwge1xuICBoZWlnaHQ6IDMuMTI1cmVtO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmhlYWRlci4taGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAzLjEyNXJlbTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG4gIHotaW5kZXg6IDEwMDU7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbWFyZ2luLXRvcCB7XG4gIHRvcDogNS43NXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1tYXJnaW4tdG9wLXNtYWxsIHtcbiAgdG9wOiAzLjEyNXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1zbWFsbCB7XG4gIHdpZHRoOiA7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbGVmdCB7XG4gIGxlZnQ6IDA7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tbGVmdC4taGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhci4tcmlnaHQge1xuICByaWdodDogMDtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1yaWdodC4taGlkZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50IHtcbiAgdHJhbnNpdGlvbjogbWFyZ2luIDAuMnM7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMy4xMjVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLWxlZnQtc21hbGwge1xuICBtYXJnaW4tbGVmdDogO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLmNvbnRlbnQuLW1hcmdpbi1yaWdodCB7XG4gIG1hcmdpbi1yaWdodDogMy4xMjVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLXJpZ2h0LXNtYWxsIHtcbiAgbWFyZ2luLXJpZ2h0OiA7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLXRvcCB7XG4gIG1hcmdpbi10b3A6IDUuNzVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuY29udGVudC4tbWFyZ2luLXRvcC1zbWFsbCB7XG4gIG1hcmdpbi10b3A6IDMuMTI1cmVtO1xufVxuLypcbi0tLVxubmFtZTogLmZsZXgtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0ZsZXhcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBsYXlvdXQgc3lzdGVtIGJhc2VkIG9uIGZsZXhib3ggdG8gYWxpZ24gYW5kIGRpc3RyaWJ1dGUgaXRlbXMgaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5LlxuXG5cbiMgQWxpZ25tZW50IG9mIGl0ZW1zXG5cblRoZSBgLWNlbnRlcmAgc2hvcnRjdXQgd2lsbCBjZW50ZXIgYWxsIGl0ZW1zIGhvcml6b250YWwgJiB2ZXJ0aWNhbFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAxMDBweFwiKS5mbGV4LWxheW91dC4tY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuYC1iYXNlbGluZWAgd2lsbCBhbGlnbiBpdGVtcyBiYXNlZCBvbiB0aGVpciBiYXNlbGluZS4gV29ya3MgZ29vZCBpZiBhbGwgdGhlIGl0ZW1zIGNvbnRhaW4gdGV4dC4gXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWJhc2VsaW5lXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcbmBgYFxuXG5gLWl0ZW1zLXRvcGAgJiBgLWl0ZW1zLWJvdHRvbWAgd2lsbCBhbGlnbiB0aGUgaXRlbXMgZWl0aGVyIG9uIHRvcCBvciBib3R0b21cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtdG9wXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuYC1pdGVtcy1jZW50ZXJgIHdpbGwgY2VudGVyIHRoZSBpdGVtcyB2ZXJ0aWNhbGx5XG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5cbiMgQWxpZ25tZW50IG9mIGluZGl2aWR1YWwgaXRlbXNcblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAxMDBweFwiKS5mbGV4LWxheW91dFxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wIHRvcFxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tY2VudGVyIGNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tIGJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tc3RyZXRjaCBzdHJldGNoXG5gYGBcblxuIyBSb3cgbW9kZVxuXG5JZiB5b3UgbGlrZSBhIGNvbnRhaW5lciB0aGF0IHNwYW5zIHRoZSBmdWxsIHdpZHRoIHdpdGggaXRlbSB0aGF0IHJlc2l6ZSB0aGVtc2VsZiB5b3UgY2FuIHVzZSB0aGUgYC1yb3dgIHZhcmlhbnQuXG5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tcm93XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuSWYgeW91IGxpa2UgdG8gZml4IGFuIGl0ZW0gYmFzZWQgb24gaXRzIGNvbnRlbnQgd2lkdGggdXNlIHRoZSBgLWNvbnRlbnRgIHZhcmlhbnQuXG5UaGlzIGlzIGEgc2hvcnRjdXQgZm9yIGAtbm8tZ3JvdyAtbm8tc2hyaW5rYC4gXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXJvd1xuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tY29udGVudFxuXHRcdGltZyhzcmM9XCJodHRwOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8zNTB4ODBcIilcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cbllvdSBjYW4gY29udHJvbCB0aGUgc2l6aW5nIG9mIHRoZSBpdGVtcyB3aXRoIGAtZ3Jvd2AsIGAtc2hyaW5rYCwgYC1uby1ncm93YCwgYC1uby1zaHJpbmtgLlxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1yb3dcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLW5vLXNocmlua1xuXHRcdGltZyhzcmM9XCJodHRwOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8zNTB4ODBcIilcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLW5vLWdyb3cgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cblxuIyBEaXN0cmlidXRpb24gb2YgaXRlbXNcblxuVXNlIGAtW3YvaF0tc3BhY2UtYXJvdW5kYCAmIGAtW3YvaF0tc3BhY2UtYmV0d2VlbmAgdG8gZGlzdHJpYnV0ZSB0aGUgaXRlbXMgaW4gdGhlIGZsZXggY29udGFpbmVyLlxuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWgtc3BhY2UtYXJvdW5kXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taC1zcGFjZS1iZXR3ZWVuXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXYtc3BhY2UtYXJvdW5kLi13cmFwXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXYtc3BhY2UtYmV0d2Vlbi4td3JhcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5cbiMgQWxpZ25tZW50IG9mIG11bHRpbGluZSBpdGVtcyB3aXRoIHdyYXBcblxuSWYgeW91IGhhdmUgYWxvdCBvbiBpdGVtcyB0aGF0IHdyYXAgeW91IGNhbiBhbGlnbiB0aGUgbXVsdGlsaW5lcyB3aXRoIHRoZSBmb2xsb3dpbmcgdmFyaWFudHM6XG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLWgtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4tbGVmdFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLXJpZ2h0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLXYtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLXRvcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li13cmFwLi1ib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuXG5cblxuXG4qL1xuLmZsZXgtbGF5b3V0LFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcyxcbi50YWItaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uZmxleC1sYXlvdXQuLWlubGluZSxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1pbmxpbmUsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4taW5saW5lLFxuLnRhYi1pdGVtLi1pbmxpbmUge1xuICBkaXNwbGF5OiBmbGV4LWlubGluZTtcbn1cbi5mbGV4LWxheW91dC4td3JhcCxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi13cmFwLFxuLmVkaXRvci10YWIgPiAuaXRlbXMuLXdyYXAsXG4udGFiLWl0ZW0uLXdyYXAge1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uZmxleC1sYXlvdXQuLXJvdyxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1yb3csXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tcm93LFxuLnRhYi1pdGVtLi1yb3cge1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbn1cbi5mbGV4LWxheW91dC4tcm93ID4gLml0ZW0sXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tcm93ID4gLml0ZW0sXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tcm93ID4gLml0ZW0sXG4udGFiLWl0ZW0uLXJvdyA+IC5pdGVtIHtcbiAgZmxleDogMSAxIGF1dG87XG59XG4uZmxleC1sYXlvdXQuLWNvbHVtbixcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1jb2x1bW4sXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tY29sdW1uLFxuLnRhYi1pdGVtLi1jb2x1bW4ge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLmZsZXgtbGF5b3V0Li1jZW50ZXIsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tY2VudGVyLFxuLmVkaXRvci10YWIgPiAuaXRlbXMuLWNlbnRlcixcbi50YWItaXRlbS4tY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4tYmFzZWxpbmUsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tYmFzZWxpbmUsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tYmFzZWxpbmUsXG4udGFiLWl0ZW0uLWJhc2VsaW5lIHtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuLmZsZXgtbGF5b3V0Li1sZWZ0LFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AuLWxlZnQsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tbGVmdCxcbi50YWItaXRlbS4tbGVmdCB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cbi5mbGV4LWxheW91dC4tcmlnaHQsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tcmlnaHQsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tcmlnaHQsXG4udGFiLWl0ZW0uLXJpZ2h0IHtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cbi5mbGV4LWxheW91dC4tdG9wLFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AuLXRvcCxcbi5lZGl0b3ItdGFiID4gLml0ZW1zLi10b3AsXG4udGFiLWl0ZW0uLXRvcCB7XG4gIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG4uZmxleC1sYXlvdXQuLWJvdHRvbSxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1ib3R0b20sXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tYm90dG9tLFxuLnRhYi1pdGVtLi1ib3R0b20ge1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbn1cbi5mbGV4LWxheW91dC4tdi1jZW50ZXIsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tdi1jZW50ZXIsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tdi1jZW50ZXIsXG4udGFiLWl0ZW0uLXYtY2VudGVyIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xufVxuLmZsZXgtbGF5b3V0Li12LXNwYWNlLWJldHdlZW4sXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tdi1zcGFjZS1iZXR3ZWVuLFxuLmVkaXRvci10YWIgPiAuaXRlbXMuLXYtc3BhY2UtYmV0d2Vlbixcbi50YWItaXRlbS4tdi1zcGFjZS1iZXR3ZWVuIHtcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5mbGV4LWxheW91dC4tdi1zcGFjZS1hcm91bmQsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4tdi1zcGFjZS1hcm91bmQsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4tdi1zcGFjZS1hcm91bmQsXG4udGFiLWl0ZW0uLXYtc3BhY2UtYXJvdW5kIHtcbiAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuLmZsZXgtbGF5b3V0Li1oLWNlbnRlcixcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1oLWNlbnRlcixcbi5lZGl0b3ItdGFiID4gLml0ZW1zLi1oLWNlbnRlcixcbi50YWItaXRlbS4taC1jZW50ZXIge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4taC1zcGFjZS1iZXR3ZWVuLFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AuLWgtc3BhY2UtYmV0d2Vlbixcbi5lZGl0b3ItdGFiID4gLml0ZW1zLi1oLXNwYWNlLWJldHdlZW4sXG4udGFiLWl0ZW0uLWgtc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5mbGV4LWxheW91dC4taC1zcGFjZS1hcm91bmQsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcC4taC1zcGFjZS1hcm91bmQsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4taC1zcGFjZS1hcm91bmQsXG4udGFiLWl0ZW0uLWgtc3BhY2UtYXJvdW5kIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG4uZmxleC1sYXlvdXQuLWl0ZW1zLXRvcCxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1pdGVtcy10b3AsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcy4taXRlbXMtdG9wLFxuLnRhYi1pdGVtLi1pdGVtcy10b3Age1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtYm90dG9tLFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AuLWl0ZW1zLWJvdHRvbSxcbi5lZGl0b3ItdGFiID4gLml0ZW1zLi1pdGVtcy1ib3R0b20sXG4udGFiLWl0ZW0uLWl0ZW1zLWJvdHRvbSB7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyLFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AuLWl0ZW1zLWNlbnRlcixcbi5lZGl0b3ItdGFiID4gLml0ZW1zLi1pdGVtcy1jZW50ZXIsXG4udGFiLWl0ZW0uLWl0ZW1zLWNlbnRlcixcbi5lZGl0b3ItdGFiID4gLml0ZW1zLFxuLnRhYi1pdGVtIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5mbGV4LWxheW91dC4taXRlbXMtc3RyZXRjaCxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wLi1pdGVtcy1zdHJldGNoLFxuLmVkaXRvci10YWIgPiAuaXRlbXMuLWl0ZW1zLXN0cmV0Y2gsXG4udGFiLWl0ZW0uLWl0ZW1zLXN0cmV0Y2gge1xuICBhbGlnbi1pdGVtczogZmxleC1zdHJldGNoO1xufVxuLmZsZXgtbGF5b3V0ID4gLml0ZW0uLXN0cmV0Y2gsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcCA+IC5pdGVtLi1zdHJldGNoLFxuLmVkaXRvci10YWIgPiAuaXRlbXMgPiAuaXRlbS4tc3RyZXRjaCxcbi50YWItaXRlbSA+IC5pdGVtLi1zdHJldGNoIHtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi10b3AsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcCA+IC5pdGVtLi10b3AsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcyA+IC5pdGVtLi10b3AsXG4udGFiLWl0ZW0gPiAuaXRlbS4tdG9wIHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1jZW50ZXIsXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcCA+IC5pdGVtLi1jZW50ZXIsXG4uZWRpdG9yLXRhYiA+IC5pdGVtcyA+IC5pdGVtLi1jZW50ZXIsXG4udGFiLWl0ZW0gPiAuaXRlbS4tY2VudGVyIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuLmZsZXgtbGF5b3V0ID4gLml0ZW0uLWJvdHRvbSxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wID4gLml0ZW0uLWJvdHRvbSxcbi5lZGl0b3ItdGFiID4gLml0ZW1zID4gLml0ZW0uLWJvdHRvbSxcbi50YWItaXRlbSA+IC5pdGVtLi1ib3R0b20ge1xuICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbn1cbi5mbGV4LWxheW91dCA+IC5pdGVtLi1jb250ZW50LFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AgPiAuaXRlbS4tY29udGVudCxcbi5lZGl0b3ItdGFiID4gLml0ZW1zID4gLml0ZW0uLWNvbnRlbnQsXG4udGFiLWl0ZW0gPiAuaXRlbS4tY29udGVudCB7XG4gIGZsZXg6IG5vbmU7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tZ3Jvdyxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wID4gLml0ZW0uLWdyb3csXG4uZWRpdG9yLXRhYiA+IC5pdGVtcyA+IC5pdGVtLi1ncm93LFxuLnRhYi1pdGVtID4gLml0ZW0uLWdyb3cge1xuICBmbGV4LWdyb3c6IDE7XG59XG4uZmxleC1sYXlvdXQgPiAuaXRlbS4tc2hyaW5rLFxuLmFydGljbGUtZWxlbWVudCA+IC50b3AgPiAuaXRlbS4tc2hyaW5rLFxuLmVkaXRvci10YWIgPiAuaXRlbXMgPiAuaXRlbS4tc2hyaW5rLFxuLnRhYi1pdGVtID4gLml0ZW0uLXNocmluayB7XG4gIGZsZXgtc2hyaW5rOiAxO1xufVxuLmZsZXgtbGF5b3V0ID4gLml0ZW0uLW5vLWdyb3csXG4uYXJ0aWNsZS1lbGVtZW50ID4gLnRvcCA+IC5pdGVtLi1uby1ncm93LFxuLmVkaXRvci10YWIgPiAuaXRlbXMgPiAuaXRlbS4tbm8tZ3Jvdyxcbi50YWItaXRlbSA+IC5pdGVtLi1uby1ncm93IHtcbiAgZmxleC1ncm93OiAwO1xufVxuLmZsZXgtbGF5b3V0ID4gLml0ZW0uLW5vLXNocmluayxcbi5hcnRpY2xlLWVsZW1lbnQgPiAudG9wID4gLml0ZW0uLW5vLXNocmluayxcbi5lZGl0b3ItdGFiID4gLml0ZW1zID4gLml0ZW0uLW5vLXNocmluayxcbi50YWItaXRlbSA+IC5pdGVtLi1uby1zaHJpbmsge1xuICBmbGV4LXNocmluazogMDtcbn1cbi8qXG4tLS1cbm5hbWU6IC5ncmlkLWxheW91dFxuY2F0ZWdvcnk6IExheW91dC9HcmlkXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuIC0gZ3JpZFxuIC0gcmVzcG9uc2l2ZVxuIC0gZmxleGJveFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgZ3JpZCBsYXlvdXQgc3lzdGVtIGJhc2VkIG9uIGZsZXhib3guIEl0IHByb3ZpZGVzIHNpemluZyB2YXJpYW50cyB0byBzaXplIG9uIGRpZmZlcmVudCBwZXJjZW50YWdlcy5cblxuXG4jIyBQZXJjZW50YWdlIGJhc2VkIHNpemluZ1xuXG5UaGUgZWFzaWVzdCB1c2UgY2FzZSBpcyB0byB1c2Ugc2ltcGxlIGAuaXRlbSAtdzFgLCBgLml0ZW0gLXcxLTJgLCBgLml0ZW0gLXcxLTNgLCBgLml0ZW0gLXcxLTRgIGZvciBhIHBlcmNlbnRhZ2UgYmFzZWQgc2lkZS1ieS1zaWRlIHJlbmRlcmluZy5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0XG5cdGRpdi5pdGVtLi13MVxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MVxuXHRkaXYuaXRlbS4tdzEtMiBcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMlxuXHRkaXYuaXRlbS4tdzEtMlxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yXG5cdGRpdi5pdGVtLi13MS0zXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTNcblx0ZGl2Lml0ZW0uLXcyLTNcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzItM1xuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS00XG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTJcblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtNFxuYGBgXG5cbiMjIExheW91dHMgb24gZGlmZmVyZW50IGRldmljZXNcblxuVGhlIGJyZWFrcG9pbnRzIGZvciBkaWZmZXJlbnQgc2NyZWVuIHNpemVzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGdsb2JhbCBzZXR0aW5ncyBgdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHNgIGFuZCBjYW4gYmUgb3ZlcndyaXR0ZW4gaW4gYHRoZW1lLmNvbXBvbmVudHMuZ3JpZC1sYXlvdXQuYnJlYWtwb2ludHNgLlxuVGhlIGRlZmF1bHQgc2V0dGluZ3MgZGVmaW5lIGJyZWFrcG9pbnRzIHdpdGggbGFiZWxzOiBgLi1zbWFsbC1YLVhgLCBgLi1tZWRpdW0tWC1YYCwgYC4tbGFyZ2UtWC1YYC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0XG5cdGRpdi5pdGVtLi13MS4tc21hbGwtMS0zLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS4tc21hbGwtMS0zLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS0yLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yIC1zbWFsbC0xLTMgLW1lZGl1bS0xLTIgLWxhcmdlLTEtNFxuXHRkaXYuaXRlbS4tdzEtMi4tc21hbGwtMS4tbWVkaXVtLTEtMi4tbGFyZ2UtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTIgLXNtYWxsLTEgLW1lZGl1bS0xLTIgLWxhcmdlLTEtNFxuYGBgXG5cblxuIyMgR3V0dGVyXG5cbklmIHlvdSBuZWVkIGEgc3BhY2luZyBiZXR3ZWVuIHRoZSBjb2x1bW5zIGFkZCB0aGUgYC1ndXR0ZXJgIHZhcmlhbnQuXG5UaGUgc2l6ZSBvZiB0aGUgZ3V0dGVyIGlzIHNwZWNpZmllZCBpbiB0aGUgYGdyaWQtZ3V0dGVyYHZhcmlhYmxlLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXQuLWd1dHRlclxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wgLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sIC13MS00XG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbCAtdzEtMlxuYGBgXG5cblxuIyMgUmV2ZXJzZSBvcmRlclxuXG5UbyByZXZlcnNlIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgY29sdW1ucyBhcmUgZGlzcGxheWVkLCB5b3UgY2FuIGFkZCB0aGUgbW9kaWZpZXIgY2xhc3MgYC4tcmV2ZXJzZWAgdG8geW91ciB0YWJsZS1ncmlkLlxuVGhlIGNvbHVtbnMgd2lsbCBiZSBpbiBET00gb3JkZXIgd2hlbiB2aWV3cG9ydCBzd2l0Y2hlcyB0byBzbWFsbCBsYXlvdXQuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC4tcmV2ZXJzZVxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGaXJzdCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFNlY29uZCBjb2x1bW4gaW4gRE9NXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIFRoaXJkIGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgRm91cnRoIGNvbHVtbiBpbiBET01cbmBgYFxuXG4jIyBWZXJ0aWNhbCBjZW50ZXJpbmdcblxuWW91IGNhbiB2ZXJ0aWNhbCBjZW50ZXIgd2l0aCB0aGUgaGVscCBvZiB0aGUgYGZsZXgtbGF5b3V0YCBjb21wb25lbnQuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC5mbGV4LWxheW91dFxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBBIGNvbHVtbiB3aXRoIGEgbG90IG9mIGNvbnRlbnQgdGhhdCBzaG91bGQgd3JhcCBvbiBmaXhlZCBzaXplLlxuXHRkaXYuaXRlbS4tYm90dG9tXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGJvdHRvbVxuXHRkaXYuaXRlbS4tY2VudGVyXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNlbnRlclxuXHRkaXYuaXRlbS4tc3RyZXRjaFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpIHN0cmV0Y2hcbmBgYFxuXG4qL1xuLmdyaWQtbGF5b3V0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuLmdyaWQtbGF5b3V0Li1ndXR0ZXIge1xuICBtYXJnaW46IC0wLjYyNXJlbSAtMC45Mzc1cmVtO1xufVxuLmdyaWQtbGF5b3V0Li1ndXR0ZXIgPiAuaXRlbSB7XG4gIHBhZGRpbmc6IDAuNjI1cmVtIDAuOTM3NXJlbTtcbn1cbi5ncmlkLWxheW91dC4tcmV2ZXJzZSB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbn1cbi5ncmlkLWxheW91dCA+IC5pdGVtLi13MSB7XG4gIGZsZXg6IDAgMCAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4uZ3JpZC1sYXlvdXQgPiAuaXRlbS4tdzEtMiB7XG4gIGZsZXg6IDAgMCA1MCU7XG4gIG1heC13aWR0aDogNTAlO1xufVxuLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXcxLTMge1xuICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzMzMzMzYlO1xufVxuLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXcyLTMge1xuICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NjY2NjclO1xuICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjY2NjY3JTtcbn1cbi5ncmlkLWxheW91dCA+IC5pdGVtLi13MS00IHtcbiAgZmxleDogMCAwIDI1JTtcbiAgbWF4LXdpZHRoOiAyNSU7XG59XG4uZ3JpZC1sYXlvdXQgPiAuaXRlbS4tdzMtNCB7XG4gIGZsZXg6IDAgMCA3NSU7XG4gIG1heC13aWR0aDogNzUlO1xufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDhyZW0pIHtcbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXNtYWxsLTEge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tc21hbGwtMS0yIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1zbWFsbC0xLTMge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tc21hbGwtMi0zIHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NjY2NjclO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1zbWFsbC0xLTQge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLXNtYWxsLTMtNCB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjJyZW0pIHtcbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xLTIge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLW1lZGl1bS0xLTMge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbWVkaXVtLTItMyB7XG4gICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjY2NjY3JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbWVkaXVtLTEtNCB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbWVkaXVtLTMtNCB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNzVyZW0pIHtcbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLWxhcmdlLTEge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbGFyZ2UtMS0yIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1sYXJnZS0xLTMge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzMzMzMzYlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMzMzMzMzM2JTtcbiAgfVxuICAuZ3JpZC1sYXlvdXQgPiAuaXRlbS4tbGFyZ2UtMi0zIHtcbiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NjY2NjclO1xuICAgIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NjY2NjclO1xuICB9XG4gIC5ncmlkLWxheW91dCA+IC5pdGVtLi1sYXJnZS0xLTQge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQtbGF5b3V0ID4gLml0ZW0uLWxhcmdlLTMtNCB7XG4gICAgZmxleDogMCAwIDc1JTtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgfVxufVxuLypcbi0tLVxubmFtZTogLm1heC13aWR0aC1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvUGFnZVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNvbXBvbmVudCB3aWxsIGxpbWl0IGl0cyBjb250ZW50IHRvIGEgbWF4aW11bSB3aWR0aC4gRm9ydGhlcm1vcmUgaXQgY2FuIGNlbnRlciBpdHMgY29udGVudC5cblVzZWZ1bGwgZm9yIHBhZ2UgY29udGVudCB0aGF0IHNob3VsZCBub3Qgc3BhbiB0aGUgZnVsbCB3aWR0aC5cblxuXG4jIyBQZXJjZW50YWdlIGJhc2VkIHNpemluZ1xuXG4qL1xuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDhyZW0pIHtcbiAgLm1heC13aWR0aC1sYXlvdXQge1xuICAgIG1heC13aWR0aDogNDEuNzVyZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYycmVtKSB7XG4gIC5tYXgtd2lkdGgtbGF5b3V0IHtcbiAgICBtYXgtd2lkdGg6IDU1Ljc1cmVtO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA3NXJlbSkge1xuICAubWF4LXdpZHRoLWxheW91dCB7XG4gICAgbWF4LXdpZHRoOiA2OC43NXJlbTtcbiAgfVxufVxuLm1heC13aWR0aC1sYXlvdXQuLWNlbnRlciB7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG4vKlxuLS0tXG5uYW1lOiAuc2xpZGUtb3ZlcmxheVxuY2F0ZWdvcnk6IE92ZXJsYXkvU2xpZGVcbnRhZzpcbiAtIHJvbGxvdmVyXG4gLSBzbGlkZVxuIC0gb3ZlcmxheVxuLS0tXG5cblJvbGxvdmVyIGNvbXBvbmVudCAtIGNvbnRlbnQgcm9sbG92ZXIgcm9sbHMgaW4gLSBkZWZhdWx0IGZyb20gYm90dG9tXG5cblRyaWdnZXIgd2l0aCBtb3VzZXJvdmVyIGJ5IGFkZGluZyBgLi1ob3ZlcmAgdmFyaWFudFxuXG5UcmlnZ2VyIHdpdGgganMgYnkgYWRkaW5nIGAuLXNob3dgIHZhcmlhbnRcblxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtbGVmdFxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLWxlZnQuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtcmlnaHRcbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li1yaWdodC4taG92ZXJcbiAgICBkaXYgU29tZSBtYWluIGNvbnRlbnRcbiAgICBkaXYucm9sbG92ZXIgUm9sbG92ZXIgY29udGVudFxuYGBgXG5cblJvbGxvdmVyIGNvbXBvbmVudCB2YXJpYW50IC10b3BcbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li10b3AuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtdG9wIHdpdGgganMgdHJpZ2dlclxuYGBgamFkZVxuZGl2LnNsaWRlLW92ZXJsYXkuLXRvcC4tc2hvd1xuICAgIGRpdiBTb21lIG1haW4gY29udGVudFxuICAgIGRpdi5yb2xsb3ZlciBSb2xsb3ZlciBjb250ZW50XG5gYGBcbiovXG4uc2xpZGUtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zbGlkZS1vdmVybGF5ID4gLnJvbGxvdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDEwMCUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBlYXNlO1xufVxuLnNsaWRlLW92ZXJsYXkuLWxlZnQgPiAucm9sbG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwJSwgMCk7XG4gIGxlZnQ6IDA7XG59XG4uc2xpZGUtb3ZlcmxheS4tcmlnaHQgPiAucm9sbG92ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAlLCAwKTtcbiAgcmlnaHQ6IDA7XG59XG4uc2xpZGUtb3ZlcmxheS4tdG9wID4gLnJvbGxvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTEwMCUpO1xuICB0b3A6IDA7XG59XG4uc2xpZGUtb3ZlcmxheS4tc2hvdyA+IC5yb2xsb3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xufVxuLnNsaWRlLW92ZXJsYXkuLWhvdmVyOmhvdmVyID4gLnJvbGxvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG59XG4vKlxuLS0tXG5uYW1lOiAuY29udHJvbC1yZXNwb25zaXZlXG5jYXRlZ29yeTogUmVzcG9uc2l2ZS9Db250cm9sXG50YWc6XG4gLSByZXNwb25zaXZlXG4gLSBkaXNwbGF5XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQ29udHJvbHMgdGhlIGRpc3BsYXkgb2YgYW4gZWxlbWVudCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgYnJlYWtwb2ludFxuXG4jIyBIaWRlXG5cbmAuLWhpZGUtbWVkaXVtYCBoaWRlcyBhbiBlbGVtZW50IGFzIGxvbmcgYXMgdGhlIHNjcmVlbiBpcyB3aWRlciB0aGFuIHRoZSBicmVha3BvaW50IGBtZWRpdW1gLlxuXG5gYGBqYWRlXG5kaXYuY29udHJvbC1yZXNwb25zaXZlLi1oaWRlLW1lZGl1bSBPbmx5IHNob3duIHdoZW4gdGhlIHNjcmVlbiBpcyB3aWRlciB0aGFuIHRoZSBicmVha3BvaW50IG1lZGl1bVxuYGBgXG5cbiMjIFNob3dcblxuYC4tc2hvdy1tZWRpdW1gIHNob3cgYW4gZWxlbWVudCBhcyBsb25nIGFzIHRoZSBzY3JlZW4gaXMgbmFycm93ZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBgbWVkaXVtYC5cblxuYGBgamFkZVxuZGl2LmNvbnRyb2wtcmVzcG9uc2l2ZS4tc2hvdy1tZWRpdW0gT25seSBzaG93biB3aGVuIHRoZSBzY3JlZW4gaXMgbmFycm93ZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBgbWVkaXVtYFxuYGBgXG5cbiovXG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA0OHJlbSkge1xuICAuY29udHJvbC1yZXNwb25zaXZlLi1oaWRlLXNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0OHJlbSkge1xuICAuY29udHJvbC1yZXNwb25zaXZlLi1zaG93LXNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MnJlbSkge1xuICAuY29udHJvbC1yZXNwb25zaXZlLi1oaWRlLW1lZGl1bSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjJyZW0pIHtcbiAgLmNvbnRyb2wtcmVzcG9uc2l2ZS4tc2hvdy1tZWRpdW0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDc1cmVtKSB7XG4gIC5jb250cm9sLXJlc3BvbnNpdmUuLWhpZGUtbGFyZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDc1cmVtKSB7XG4gIC5jb250cm9sLXJlc3BvbnNpdmUuLXNob3ctbGFyZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDQ4cmVtKSB7XG4gIC5oaWRlLXJlc3BvbnNpdmUuLXNtYWxsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiA2MnJlbSkge1xuICAuaGlkZS1yZXNwb25zaXZlLi1tZWRpdW0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDc1cmVtKSB7XG4gIC5oaWRlLXJlc3BvbnNpdmUuLWxhcmdlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4vKlxuLS0tXG5uYW1lOiAuaW1hZ2UtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IFJlc3BvbnNpdmUvSW1hZ2VcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNsYXNzIG1ha2VzIHRoZSBpbWFnZSBzY2FsaW5nIHRvIGl0cyBtYXggd2lkdGguXG5cbmBgYGphZGVcbmltZy5pbWFnZS1yZXNwb25zaXZlKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuXG4jIyBWYXJpYW50c1xuXG5gLi1mdWxsYCBmb3JjZXMgdGhlIHBpY3R1cmUgdG8gc3BhbiB0byAxMDAlIG9mIHRoZSBwYXJlbnRcblxuYGBgamFkZVxuaW1nLmltYWdlLXJlc3BvbnNpdmUuLWZ1bGwoc3JjPSdodHRwOi8vd3d3LmJ5dWkuZWR1L2ltYWdlcy9hZ3JpY3VsdHVyZS1saWZlLXNjaWVuY2VzL2Zsb3dlci5qcGcnKVxuYGBgXG4qL1xuLmltYWdlLXJlc3BvbnNpdmUge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uaW1hZ2UtcmVzcG9uc2l2ZS4tZnVsbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmltYWdlLXJlc3BvbnNpdmUuLWluc2V0IHtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi8qXG4tLS1cbm5hbWU6IC5tZWRpYS1yZXNwb25zaXZlXG5jYXRlZ29yeTogUmVzcG9uc2l2ZS9NZWRpYVxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbmAubWVkaWEtcmVzcG9uc2l2ZWAgLSBUaGlzIG1ha2VzIGEgdGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgZGl2IGEgY29udGFpbmVyIGZvciBhbnkgbWVkaWEgZWxlbWVudCAoaWZyYW1lLCB2aWRlbywgLi4uICkgdGhhdCByZXNwb25zaXZlIHNjYWxlcyB3aXRoIGEgZml4IHJhdGlvLlxuVGhlIG1lZGlhIGVsZW1lbnQgKCBjaGlsZCApIG5lZWRzIHRoZSBjbGFzcyBgLm1lZGlhYCB0byBmdWxseSBmaWxsIG91dCB0aGUgcGFyZW50cyBzaXplLlxuXG5UaGUgYC5tZWRpYS1yZXNwb25zaXZlYCBjb21wb25lbnQgaGFzIHRvIHByZWRlZmluZWQgbW9kaWZpZXJzOiBgLi1tZWRpYS00LTNgLCBgLi1tZWRpYS0xNi05YCB0aGF0IGRlZmluZSBhIGZpeCByYXRpby5cblxuYGBgamFkZVxuZGl2Lm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTE2LTlcblx0aWZyYW1lLm1lZGlhKHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1RDZDZQZnhPeTBZXCIpXG5gYGBcblxuYGBgamFkZVxuZGl2Lm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTQtM1xuXHRpZnJhbWUubWVkaWEoc3JjPVwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVENkNlBmeE95MFlcIilcbmBgYFxuXG4qL1xuLm1lZGlhLXJlc3BvbnNpdmUge1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogNTAlO1xufVxuLm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTEtMSB7XG4gIHBhZGRpbmctYm90dG9tOiA1MCU7XG59XG4ubWVkaWEtcmVzcG9uc2l2ZS4tbWVkaWEtNC0zIHtcbiAgcGFkZGluZy1ib3R0b206IDc1JTtcbn1cbi5tZWRpYS1yZXNwb25zaXZlLi1tZWRpYS0xNi05IHtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcbn1cbi5tZWRpYS1yZXNwb25zaXZlID4gLm1lZGlhIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4vKlxuLS0tXG5uYW1lOiAub3ZlcmZsb3ctdGV4dFxuY2F0ZWdvcnk6IFRleHRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdGV4dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IGN1dHMgdGhlIHRleHQgb24gYSBnaXZlbiBoZWlnaHQgYW5kIGFkZHMgYSBmYWRlb3V0IGVmZmVjdC5cblRoaXMgaXMgdXNlZnVsbCBmb3IgdGV4dCBjb250YWluZXJzIHRoYXQgaGF2ZSBtb3JlIGNvbnRlbnQgdGhhbiBzcGFjZS5cblxuXG5gYGBqYWRlXG5kaXYub3ZlcmZsb3ctdGV4dChzdHlsZT1cIndpZHRoOiAyMDBweDtoZWlnaHQ6IDcwcHhcIikgVGhpcyBpcyBhIHZlcnkgbG9uZyB0ZXh0IHRoYXQgaXMgcndhcGVkIGFuZCBjdXQgYXQgdGhlIGVuZC5cbmBgYFxuKi9cbi5vdmVyZmxvdy10ZXh0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm92ZXJmbG93LXRleHQ6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMi4xODc1cmVtO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LDApLCAjZmZmIDcwJSk7XG59XG4vKlxuLS0tXG5uYW1lOiAudGV4dC1zdHlsZVxuY2F0ZWdvcnk6IFRleHRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdGV4dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgdGV4dCBzdHlsaW5nIGNvbXBvbmVudCBmb3IgZGlmZmVyZW50IHRleHQgc3R5bGVzXG5cbiMjIERlZmF1bHQgaGVhZGluZ1xuXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZSBEZWZhdWx0IGhlYWRpbmdcbmBgYFxuXG4jIyBIMVxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWgxIFRoZSBoMSBoZWFkZXJcblxuYGBgXG5cbiMjIEgyXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4taDIgVGhlIGgyIGhlYWRlclxuYGBgXG5cbiMjIEgzXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4taDMgVGhlIGgzIGhlYWRlclxuYGBgXG5cbiMjIEJvbGRcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1ib2xkIEJvbGQgdGV4dFxuYGBgXG5cbiMjIEFsaWduIGNlbnRlclxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWNlbnRlciBDZW50ZXJlZCB0ZXh0XG5gYGBcblxuIyMgQWxpZ24gcmlnaHRcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1yaWdodCBSaWdodCBhbGlnbmVkIHRleHRcbmBgYFxuXG4qL1xuLnRleHQtc3R5bGUuLWgxIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nICwgc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuODc1cmVtO1xufVxuLnRleHQtc3R5bGUuLWgyIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nICwgc2VyaWY7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjI1cmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG59XG4udGV4dC1zdHlsZS4taDMge1xuICBmb250LWZhbWlseTogJ1JvYm90bycgLCBzZXJpZjtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG59XG4udGV4dC1zdHlsZS4tY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnRleHQtc3R5bGUuLXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4udGV4dC1zdHlsZS4tYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG4udGV4dC1zdHlsZS4tbWVkaXVtIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbi50ZXh0LXN0eWxlLi1pbnZlcnRlZCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLnRleHQtc3R5bGUuLWluZGVudC0xIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjg3NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1pbmRlbnQtMiB7XG4gIHBhZGRpbmctbGVmdDogMy43NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1pbmRlbnQtMyB7XG4gIHBhZGRpbmctbGVmdDogNS42MjVyZW07XG59XG4udGV4dC1zdHlsZS4taW5kZW50LTQge1xuICBwYWRkaW5nLWxlZnQ6IDcuNXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1pbmRlbnQtNSB7XG4gIHBhZGRpbmctbGVmdDogOS4zNzVyZW07XG59XG4udGV4dC1zdHlsZS4taW5kZW50LTYge1xuICBwYWRkaW5nLWxlZnQ6IDExLjI1cmVtO1xufVxuLnRleHQtc3R5bGUuLWVycm9yIHtcbiAgY29sb3I6ICNkYzE1M2E7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cbi50ZXh0LXN0eWxlLi1sYWJlbCB7XG4gIGNvbG9yOiAjNmE2YTZhO1xuICBmb250LXNpemU6IDAuNzVyZW07XG59XG4udGV4dC1zdHlsZS4taGludCB7XG4gIGNvbG9yOiAjNmE2YTZhO1xuICBmb250LXNpemU6IDAuNjI1cmVtO1xufVxuLnRleHQtc3R5bGUuLXRvb2x0aXAge1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLnRleHQtc3R5bGUuLXRhZyB7XG4gIGNvbG9yOiAjMzAzMWZlO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuLnRleHQtc3R5bGUuLWRpYWxvZy1ib3gge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDAuODc1cmVtO1xuICBsaW5lLWhlaWdodDogMS4xMjVyZW07XG59XG4uY29sbGFwc2UtdWkgPiAuY29udGVudC4tdHJhbnNpdGlvbiB7XG4gIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGVhc2U7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbn1cbi5jb2xsYXBzZS11aS4tY2xvc2UgPiAuY29udGVudCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY29sbGFwc2UtdWkuLWNsb3NlIC5jb2xsYXBzZS1pY29uIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuLmNvbGxhcHNlLXVpIC5jb2xsYXBzZS1pY29uIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cbi5hY3Rpb24tZ3JvdXAuLXYgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cbi5hY3Rpb24tZ3JvdXAuLWggPiAqICsgKiB7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG4uYXJ0aWNsZS1lbGVtZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogMi4yNXJlbTtcbiAgbWFyZ2luLXRvcDogMS4yNXJlbTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG4uYXJ0aWNsZS1lbGVtZW50IGgxIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMi41cmVtO1xuICBsaW5lLWhlaWdodDogaW5pdGlhbDtcbn1cbi5hcnRpY2xlLWVsZW1lbnQgaDIge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxLjg3NXJlbTtcbiAgbGluZS1oZWlnaHQ6IGluaXRpYWw7XG59XG4uYXJ0aWNsZS1lbGVtZW50IGgzIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xufVxuLmFydGljbGUtZWxlbWVudCBoNCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xufVxuLmFydGljbGUtZWxlbWVudCBsaSB7XG4gIG1hcmdpbi1sZWZ0OiAxLjVyZW07XG59XG4uYXJ0aWNsZS1lbGVtZW50ID4gLmNvbnRlbnQge1xuICBib3JkZXItbGVmdDogM3B4IHNvbGlkICNhZmIwYWY7XG4gIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG4uYXJ0aWNsZS1lbGVtZW50ID4gLmNvbnRlbnQgPiAqIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG4uYXJ0aWNsZS1lbGVtZW50ID4gLmNvbnRlbnQgPiAqICsgKiB7XG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cbi5hcnRpY2xlLWVsZW1lbnQgPiAub3B0aW9ucyB7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2FmYjBhZjtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBoZWlnaHQ6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmFydGljbGUtZWxlbWVudCA+IC5vcHRpb25zIC5ncmlkLWxheW91dC4tZ3V0dGVyIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5hcnRpY2xlLWVsZW1lbnQgPiAubGVmdCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMHMsIG9wYWNpdHkgMC4zcyBsaW5lYXI7XG4gIGNvbG9yOiAjYWZiMGFmO1xufVxuLmFydGljbGUtZWxlbWVudCA+IC50b3Age1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwcywgb3BhY2l0eSAwLjNzIGxpbmVhcjtcbiAgY29sb3I6ICNhZmIwYWY7XG59XG4uYXJ0aWNsZS1lbGVtZW50ID4gLmJvdHRvbSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbn1cbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzIHtcbiAgbWFyZ2luLWxlZnQ6IDEuNzVyZW07XG4gIG1hcmdpbi10b3A6IDEuODc1cmVtO1xufVxuLmFydGljbGUtZWxlbWVudC4tZm9jdXMgPiAuY29udGVudCB7XG4gIGJvcmRlci1jb2xvcjogIzMwMzFmZTtcbn1cbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuY2UtZWxlbWVudCxcbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuZm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwYWRkaW5nOiAwLjVyZW07XG59XG4uYXJ0aWNsZS1lbGVtZW50Li1mb2N1cyA+IC5jb250ZW50ID4gLmNlLWVsZW1lbnQudGV4dC1zdHlsZS4taW5kZW50LTEsXG4uYXJ0aWNsZS1lbGVtZW50Li1mb2N1cyA+IC5jb250ZW50ID4gLmZvY3VzLnRleHQtc3R5bGUuLWluZGVudC0xIHtcbiAgcGFkZGluZy1sZWZ0OiAxLjg3NXJlbTtcbn1cbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuY2UtZWxlbWVudC50ZXh0LXN0eWxlLi1pbmRlbnQtMixcbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuZm9jdXMudGV4dC1zdHlsZS4taW5kZW50LTIge1xuICBwYWRkaW5nLWxlZnQ6IDMuNzVyZW07XG59XG4uYXJ0aWNsZS1lbGVtZW50Li1mb2N1cyA+IC5jb250ZW50ID4gLmNlLWVsZW1lbnQudGV4dC1zdHlsZS4taW5kZW50LTMsXG4uYXJ0aWNsZS1lbGVtZW50Li1mb2N1cyA+IC5jb250ZW50ID4gLmZvY3VzLnRleHQtc3R5bGUuLWluZGVudC0zIHtcbiAgcGFkZGluZy1sZWZ0OiA1LjYyNXJlbTtcbn1cbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuY2UtZWxlbWVudC50ZXh0LXN0eWxlLi1pbmRlbnQtNCxcbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuZm9jdXMudGV4dC1zdHlsZS4taW5kZW50LTQge1xuICBwYWRkaW5nLWxlZnQ6IDcuNXJlbTtcbn1cbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuY2UtZWxlbWVudC50ZXh0LXN0eWxlLi1pbmRlbnQtNSxcbi5hcnRpY2xlLWVsZW1lbnQuLWZvY3VzID4gLmNvbnRlbnQgPiAuZm9jdXMudGV4dC1zdHlsZS4taW5kZW50LTUge1xuICBwYWRkaW5nLWxlZnQ6IDkuMzc1cmVtO1xufVxuLmFydGljbGUtZWxlbWVudC4tZm9jdXMgPiAuY29udGVudCA+IC5jZS1lbGVtZW50LnRleHQtc3R5bGUuLWluZGVudC02LFxuLmFydGljbGUtZWxlbWVudC4tZm9jdXMgPiAuY29udGVudCA+IC5mb2N1cy50ZXh0LXN0eWxlLi1pbmRlbnQtNiB7XG4gIHBhZGRpbmctbGVmdDogMTEuMjVyZW07XG59XG4uYXJ0aWNsZS1lbGVtZW50Li1mb2N1cyA+IC5vcHRpb25zIHtcbiAgYm9yZGVyLWNvbG9yOiAjMzAzMWZlO1xufVxuLmFydGljbGUtZWxlbWVudC4tZm9jdXMgPiAubGVmdCB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uYXJ0aWNsZS1lbGVtZW50Li1mb2N1cyA+IC50b3Age1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLmFydGljbGUtZWxlbWVudC4tZm9jdXMgPiAuYm90dG9tIHtcbiAgaGVpZ2h0OiAzLjA2MjVyZW07XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuLmFydGljbGUtdG9vbGJhci4tY29udGV4dCA+IC5mb3JtYXRzIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hcnRpY2xlLXRvb2xiYXIgLmxpbmstY29udGV4dCA+IC50YXJnZXQuLWVuYWJsZWQge1xuICBjb2xvcjogIzMwMzFmZTtcbn1cbi5hcnRpY2xlLXRvb2xiYXIgLmZvcm0taW5wdXQge1xuICBjb2xvcjogIzIwMjAyMztcbn1cbi5icmFuY2gtcGF0aCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjY7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzMwMzFmZTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5icmFuY2gtcGF0aCA+IC5hY3Rpb24gPiBkaXYge1xuICBwYWRkaW5nOiAwLjM3NXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5icmFuY2gtcGF0aCAubGV2ZWwgKyAubGV2ZWw6YmVmb3JlIHtcbiAgY29udGVudDogJz4nO1xuICBwYWRkaW5nOiAwIDAuMTI1cmVtO1xufVxuLmJyYW5jaC1zZWxlY3RvciA+IC5zaWJsaW5nOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNjtcbn1cbi5icmFuY2gtc2VsZWN0b3IgPiAuc2libGluZyA+IC5pbnRvIHtcbiAgY29sb3I6ICM5YjliOWI7XG59XG4uYnJhbmNoLXNlbGVjdG9yID4gLnNpYmxpbmcgPiAuaW50bzpob3ZlciB7XG4gIGNvbG9yOiAjNTk1YWZlO1xufVxuLmJ1dHRvbi1ncm91cCAuYnV0dG9uLXN0eWxlIHtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5idXR0b24tZ3JvdXAgLmJ1dHRvbi1zdHlsZTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDJweDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4O1xufVxuLmJ1dHRvbi1ncm91cCAuYnV0dG9uLXN0eWxlOmxhc3QtY2hpbGQge1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMnB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMnB4O1xufVxuLmJ1dHRvbi1ncm91cCAuYnV0dG9uLXN0eWxlICsgLmJ1dHRvbi1zdHlsZSB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ZmZjtcbn1cbi5jZS1lbGVtZW50LS1lbXB0eTphZnRlciB7XG4gIGNvbnRlbnQ6ICcuJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4vKlxuLS0tXG5uYW1lOiAuY3J1bWItaXRlbVxuY2F0ZWdvcnk6IERhdGVuZWRpdG9yL0JyZWFkY3J1bWJcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZGF0ZW5lZGl0b3JcbiAtIG5hdmlnYXRpb25cbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIGl0ZW0gZm9yIHRoZSBicmVhZGNydW1iIG5hdmlnYXRpb25cblxuU2luZ2xlIGl0ZW1cblxuYGBgamFkZVxuZGl2LmNydW1iLWl0ZW0gU2luZ2xlIGl0ZW1cbmBgYFxuXG5NdWx0aXBsZSBJdGVtc1xuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXRcbiAgICBkaXYuY3J1bWItaXRlbS5pdGVtLi1jZW50ZXIudGV4dC1zdHlsZS4tc21hbGwoc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcHhcIikgRmlyc3QgaXRlbSBcbiAgICBkaXYuY3J1bWItaXRlbS5pdGVtLi1jZW50ZXIudGV4dC1zdHlsZS4tc21hbGwgU2Vjb25kIGl0ZW1cbmBgYFxuKi9cbi5jcnVtYi1pdGVtIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDIuNTYyNXJlbTtcbiAgcGFkZGluZy10b3A6IDAuNXJlbTtcbiAgY29sb3I6ICM2YTZhNmE7XG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcbn1cbi5jcnVtYi1pdGVtOmxhc3QtY2hpbGQge1xuICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzMwMzFmZTtcbiAgY29sb3I6ICMyMDIwMjM7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWFsb2ctYm94LXN0YWNrIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDAwO1xuICB0b3A6IDUuNzVyZW07XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKHJlbSg5MnB4KSkpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5kaWFsb2ctYm94LXN0YWNrID4gLmRpYWxvZy1ib3g6bm90KDpmaXJzdC1jaGlsZCkge1xuICBtYXJnaW4tdG9wOiAwLjMxMjVyZW07XG59XG4uZGlhbG9nLWJveC1zdGFjayA+IC5kaWFsb2ctYm94IHtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG59XG4uZGlhbG9nLWJveCB7XG4gIHdpZHRoOiAyNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjllODtcbiAgY29sb3I6ICM1MjUwMDk7XG4gIGJvcmRlcjogMC4wNjI1cmVtIHNvbGlkICNlZGUzOTg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cbi5kaWFsb2ctYm94IC5jbG9zZS1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI1MDA5O1xuICBjb2xvcjogI2ZjZjllODtcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcbn1cbi5kaWFsb2ctYm94Li1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWQ5ZGY7XG4gIGNvbG9yOiAjOGMxYjEzO1xuICBib3JkZXItY29sb3I6ICNkZmMwYzY7XG59XG4uZGlhbG9nLWJveC4tZXJyb3IgLmNsb3NlLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzFiMTM7XG4gIGNvbG9yOiAjZjlkOWRmO1xufVxuLmRpYWxvZy1ib3guLWZpeGVkLXRvcC1jZW50ZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMTAwcHg7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuLypcbi0tLVxubmFtZTogLmRyb3Bkb3duLWJ1dHRvblxuY2F0ZWdvcnk6IEJ1dHRvbnMvRHJvcGRvd25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYnV0dG9uXG4gLSBkYXRlbmVkaXRvclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgZHJvcGRvd24gYnV0dG9uIHdpdGggYSBwcmltYXJ5IGFjdGlvbiBhbmQgc2Vjb25kYXJ5IGFjdGlvbnMuXG5cbkNsb3NlZCBzdGF0ZVxuYGBgamFkZVxuYnV0dG9uLmRyb3Bkb3duLWJ1dHRvbi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyLmRyb3AtZG93bi4tYm90dG9tLi1yaWdodFxuXHRkaXYubWFpblxuXHRcdGRpdi5wcmltYXJ5LWJ1dHRvbiBNYWluIGFjdGlvblxuXHRkaXYudG9nZ2xlIFRvZ2dsZVxuXHRkaXYuY29udGVudFxuXHRcdGRpdi5wcmltYXJ5LWJ1dHRvbiBTZWNvbmRhcnkgYWN0aW9uXG5cdFx0ZGl2LnByaW1hcnktYnV0dG9uIFNlY29uZGFyeSBhY3Rpb25cbmBgYFxuXG5PcGVuIHN0YXRlXG5gYGBqYWRlXG5idXR0b24uZHJvcGRvd24tYnV0dG9uLmZsZXgtbGF5b3V0Li1pdGVtcy1jZW50ZXIuZHJvcC1kb3duLi1ib3R0b20uLXJpZ2h0Li1vcGVuXG5cdGRpdi5tYWluXG5cdFx0ZGl2LnByaW1hcnktYnV0dG9uIE1haW4gYWN0aW9uXG5cdGRpdi50b2dnbGUgVG9nZ2xlXG5cdGRpdi5jb250ZW50XG5cdFx0ZGl2LnByaW1hcnktYnV0dG9uIFNlY29uZGFyeSBhY3Rpb25cblx0XHRkaXYucHJpbWFyeS1idXR0b24gU2Vjb25kYXJ5IGFjdGlvblxuYGBgXG4qL1xuLmRyb3Bkb3duLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDMxZmU7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG4uZHJvcGRvd24tYnV0dG9uID4gLnRvZ2dsZSB7XG4gIG1hcmdpbi1sZWZ0OiAwLjU2MjVyZW07XG4gIG1hcmdpbi1yaWdodDogMC41NjI1cmVtO1xufVxuLmRyb3Bkb3duLWJ1dHRvbi4tb3BlbiA+IC50b2dnbGUge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xufVxuLmRyb3Bkb3duLWJ1dHRvbi4tcmlnaHQgPiAuY29udGVudCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLmVkaXRvci10YWIgPiAuaXRlbXMge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbiAgcGFkZGluZzogMCAwLjVyZW07XG59XG4udGFiLWl0ZW0ge1xuICBwYWRkaW5nOiAwLjVyZW0gMC41cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAycHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi50YWItaXRlbS4tYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbiAgY29sb3I6ICNmZmY7XG59XG4udGFiLWl0ZW0gPiAuY29udGVudCB7XG4gIG1heC13aWR0aDogMTBjaDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4udGFiLWl0ZW0gPiAuYWN0aW9ucyB7XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLnRhYi1pdGVtICsgLnRhYi1pdGVtIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbn1cbi5lZGl0b3ItdGFibGUtY2VsbCB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHBhZGRpbmc6IDAuNzVyZW07XG59XG4uZWRpdG9yLXRhYmxlLWNlbGwuLWFjdGlvbnMge1xuICB3aWR0aDogMSU7XG4gIGNvbG9yOiAjOWI5YjliO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmVkaXRvci10YWJsZS1jZWxsLi1hY3Rpb25zID4gKiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogLTRweDtcbn1cbi5lZGl0b3ItdGFibGUtY2VsbC4tYWN0aW9ucyA+ICogKyAqIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG4uZWRpdG9yLXRhYmxlLXJvdyB7XG4gIGRpc3BsYXk6IHRhYmxlLXJvdztcbn1cbi5lZGl0b3ItdGFibGUtcm93ICsgLmVkaXRvci10YWJsZS1yb3cge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMDtcbn1cbi5lZGl0b3ItdGFibGUtcm93Li1oZWFkZXIgLmVkaXRvci10YWJsZS1jZWxsIHtcbiAgcGFkZGluZy10b3A6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmVkaXRvci10YWJsZS1yb3cuLWVkaXRhYmxlIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmVkaXRvci10YWJsZS1yb3cuLWVkaXRhYmxlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmNmYztcbn1cbi5lZGl0b3ItdGFibGUtcm93Li1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gIGJvcmRlci1sZWZ0OiAzcHggc29saWQgIzMwMzFmZTtcbn1cbi5lZGl0b3ItdGFibGUtcm93Li1kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYmRiZGY7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLmVkaXRvci10YWJsZSB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cbi5lZGl0b3ItdGFibGUgPiAuZWRpdG9yLXRhYmxlLWdyb3VwIHtcbiAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwO1xufVxuLypcbi0tLVxubmFtZTogLmZvcm0tYm94XG5jYXRlZ29yeTogQm94L0Zvcm1cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZm9ybVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIHN0eWxlIGZvcm0gaW5wdXRzXG5cbmBgYGphZGVcbmRpdi5mb3JtLWJveFxuICAgIGlucHV0LmZvcm0taW5wdXQocGxhY2Vob2xkZXI9XCJzZWFyY2hcIilcbmBgYFxuXG5gYGBqYWRlXG5kaXYuZm9ybS1ib3hcbiAgICBzdmcuaWNvbi5zdmctaWNvbih4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDU2Ljk2NiA1Ni45NjZcIilcbiAgICAgICAgcGF0aChkPVwiTTU1LjE0Niw1MS44ODdMNDEuNTg4LDM3Ljc4NmMzLjQ4Ni00LjE0NCw1LjM5Ni05LjM1OCw1LjM5Ni0xNC43ODZjMC0xMi42ODItMTAuMzE4LTIzLTIzLTIzcy0yMywxMC4zMTgtMjMsMjNzMTAuMzE4LDIzLDIzLDIzYzQuNzYxLDAsOS4yOTgtMS40MzYsMTMuMTc3LTQuMTYybDEzLjY2MSwxNC4yMDhjMC41NzEsMC41OTMsMS4zMzksMC45MiwyLjE2MiwwLjkyYzAuNzc5LDAsMS41MTgtMC4yOTcsMi4wNzktMC44MzdDNTYuMjU1LDU0Ljk4Miw1Ni4yOTMsNTMuMDgsNTUuMTQ2LDUxLjg4N3ogTTIzLjk4NCw2YzkuMzc0LDAsMTcsNy42MjYsMTcsMTdzLTcuNjI2LDE3LTE3LDE3cy0xNy03LjYyNi0xNy0xN1MxNC42MSw2LDIzLjk4NCw2elwiKVxuICAgIGlucHV0LmZvcm0taW5wdXQocGxhY2Vob2xkZXI9XCJzZWFyY2hcIilcbmBgYFxuXG4jIyBBbGlnbm1lbnRcblxuVG8gY2VudGVyIGljb24gYW5kIGlucHV0LCB5b3UgY2FuIGFkZCBhIGAuZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlci4taW5saW5lYCBoZWxwZXIgbGlrZSBzb1xuXG5gYGBqYWRlXG5kaXYuZm9ybS1ib3guZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlci4taW5saW5lXG4gICAgc3ZnLmljb24uc3ZnLWljb24oeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCA1Ni45NjYgNTYuOTY2XCIpXG4gICAgICAgIHBhdGgoZD1cIk01NS4xNDYsNTEuODg3TDQxLjU4OCwzNy43ODZjMy40ODYtNC4xNDQsNS4zOTYtOS4zNTgsNS4zOTYtMTQuNzg2YzAtMTIuNjgyLTEwLjMxOC0yMy0yMy0yM3MtMjMsMTAuMzE4LTIzLDIzczEwLjMxOCwyMywyMywyM2M0Ljc2MSwwLDkuMjk4LTEuNDM2LDEzLjE3Ny00LjE2MmwxMy42NjEsMTQuMjA4YzAuNTcxLDAuNTkzLDEuMzM5LDAuOTIsMi4xNjIsMC45MmMwLjc3OSwwLDEuNTE4LTAuMjk3LDIuMDc5LTAuODM3QzU2LjI1NSw1NC45ODIsNTYuMjkzLDUzLjA4LDU1LjE0Niw1MS44ODd6IE0yMy45ODQsNmM5LjM3NCwwLDE3LDcuNjI2LDE3LDE3cy03LjYyNiwxNy0xNywxN3MtMTctNy42MjYtMTctMTdTMTQuNjEsNiwyMy45ODQsNnpcIilcbiAgICBpbnB1dC5mb3JtLWlucHV0KHBsYWNlaG9sZGVyPVwic2VhcmNoXCIpXG5gYGBcblxuKi9cbi5mZWVkYmFjay1mb3JtIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ZmZjtcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5mZWVkYmFjay1mb3JtIC5pbnB1dCB7XG4gIHJlc2l6ZTogdmVydGljYWw7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG59XG4uZmVlZGJhY2stZm9ybSA+IC5pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xufVxuLmZlZWRiYWNrLWZvcm0gPiAuaWNvbi4tZXJyb3Ige1xuICBkaXNwbGF5OiBub25lO1xuICBjb2xvcjogI2RjMTUzYTtcbn1cbi5mZWVkYmFjay1mb3JtID4gLmljb24uLXN1Y2Nlc3Mge1xuICBkaXNwbGF5OiBub25lO1xuICBjb2xvcjogIzAwYTY4NTtcbn1cbi5mZWVkYmFjay1mb3JtLi1zdWNjZXNzIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwYTY4NTtcbn1cbi5mZWVkYmFjay1mb3JtLi1zdWNjZXNzID4gLmljb24uLXN1Y2Nlc3Mge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5mZWVkYmFjay1mb3JtLi1lcnJvciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkYzE1M2E7XG59XG4uZmVlZGJhY2stZm9ybS4tZXJyb3IgPiAuaWNvbi4tZXJyb3Ige1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5mZWVkYmFjay1mb3JtLi1mb2N1c2VkIHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzMwMzFmZTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5oZWFkZXIgPiAuYnJlYWRjcnVtYiB7XG4gIHBhZGRpbmctbGVmdDogNC4zNzVyZW07XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhciA+IC5tYWluLW5hdmlnYXRpb24ge1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uZml4ZWQtcGFnZS1sYXlvdXQgPiAuc2lkZWJhciAuaWNvbi4tZXhwYW5kLXRvZ2dsZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xufVxuLmZpeGVkLXBhZ2UtbGF5b3V0ID4gLnNpZGViYXIuLWV4cGFuZGVkIHtcbiAgd2lkdGg6IDIxLjg3NXJlbTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1leHBhbmRlZCAuaWNvbi4tZXhwYW5kLXRvZ2dsZSB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5zaWRlYmFyLi1yaWdodCB7XG4gIHdpZHRoOiA2Mi41cmVtO1xuICBtYXgtd2lkdGg6IGNhbGMoIDEwMHZ3IC0gNTBweCApOztcbn1cbi5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTcwMHB4KSB7XG4gIC5maXhlZC1wYWdlLWxheW91dCA+IC5jb250ZW50Li1tYXJnaW4tcmlnaHQge1xuICAgIG1hcmdpbi1yaWdodDogNjIuNXJlbTtcbiAgfVxufVxuLmZpeGVkLXBhZ2UtbGF5b3V0IC5oZWFkZXItYmFyIHtcbiAgaGVpZ2h0OiAzLjEyNXJlbTtcbn1cbi5ncm91cC1pbnB1dCA+IC5idXR0b24tc3R5bGUgPiAuc3ZnLWljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzO1xufVxuLmdyb3VwLWlucHV0ID4gLmNvbnRlbnQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmdyb3VwLWlucHV0Li1leHBhbmRlZCA+IC5idXR0b24tc3R5bGUgPiAuc3ZnLWljb24ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG59XG4uZ3JvdXAtaW5wdXQuLWV4cGFuZGVkID4gLmNvbnRlbnQge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5ndS1taXJyb3Ige1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDtcbiAgb3BhY2l0eTogMC44O1xufVxuLmd1LWhpZGUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3UtdW5zZWxlY3RhYmxlIHtcbiAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5ndS10cmFuc2l0IHtcbiAgb3BhY2l0eTogMC4yO1xufVxuLmFycmF5LWlucHV0IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmFycmF5LWlucHV0ID4uZGVsZXRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcbiAgcmlnaHQ6IDEwcHg7XG4gIHRvcDogMTJweDtcbn1cbi5hcnJheS1pbnB1dCA+LmZlZWRiYWNrLWZvcm0gPiAuaW5wdXQge1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuLmJvb2xlYW4taW5wdXQgPiAuc3RhdGUge1xuICB3aWR0aDogMi41cmVtO1xuICBoZWlnaHQ6IDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgcGFkZGluZzogMC4xMjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICM5YjliOWI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcywgb3BhY2l0eSAwLjNzO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5ib29sZWFuLWlucHV0ID4gLnN0YXRlID4gLmhhbmRsZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDEuMjVyZW07XG4gIGhlaWdodDogMS4yNXJlbTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cbi5ib29sZWFuLWlucHV0Li1lbmFibGVkID4gLnN0YXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbn1cbi5ib29sZWFuLWlucHV0Li1lbmFibGVkID4gLnN0YXRlID4gLmhhbmRsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxcmVtKTtcbn1cbi5ib29sZWFuLWlucHV0Li1pbmRldGVybWluYXRlID4gLnN0YXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzliOWI5Yjtcbn1cbi5ib29sZWFuLWlucHV0Li1pbmRldGVybWluYXRlID4gLnN0YXRlID4gLmhhbmRsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwLjVyZW0pO1xufVxuLmJvb2xlYW4taW5wdXQuLWxvY2tlZCA+IC5zdGF0ZSB7XG4gIG9wYWNpdHk6IDAuMzM7XG4gIGN1cnNvcjogaW5oZXJpdDtcbn1cbi5pbWFnZS1pbnB1dCB7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG1heC13aWR0aDogMjAuNDM3NXJlbTtcbn1cbi5pbWFnZS1pbnB1dCA+IC5jb250ZW50IHtcbiAgbWluLWhlaWdodDogOS4wNjI1cmVtO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlNVEFpSUdobGFXZG9kRDBpTVRBaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJK1BIQmhkR2dnWkQwaVRUQWdNR2cxZGpWSU1IcHROU0ExYURWMk5VZzFlaUlnWm1sc2JEMGlJME5CUTBGRFFTSWdabWxzYkMxeWRXeGxQU0psZG1WdWIyUmtJaTgrUEM5emRtYytcIik7XG59XG4uaW1hZ2UtaW5wdXQgPiAuY29udGVudCA+IC5hY3Rpb25zIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG4uaW1hZ2UtaW5wdXQ6aG92ZXIgPiAuY29udGVudCA+IC5hY3Rpb25zIHtcbiAgb3BhY2l0eTogMTtcbn1cbi5vdmVybGF5LWlucHV0IC5vdmVybGF5LWhhbmRsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzdhN2E3YTtcbiAgY3Vyc29yOiBtb3ZlO1xuICBib3gtc2hhZG93OiAwcHggMHB4IDVweCAwcHggcmdiYSgwLDAsMCwwLjUpO1xuICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xufVxuLm92ZXJsYXktaW5wdXQgLm92ZXJsYXktaGFuZGxlLi1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDMxZmU7XG59XG4ub3ZlcmxheS1pbnB1dCAub3ZlcmxheS1oYW5kbGUuLXBvaW50IHtcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG4ub3ZlcmxheS1pbnB1dCAub3ZlcmxheS1oYW5kbGUgPiAuY29udHJvbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0LDI0LDI0LDAuNjIpO1xuICBkcmFnZ2FibGU6IGZhbHNlO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5vdmVybGF5LWlucHV0IC5vdmVybGF5LWhhbmRsZSA+IC5jb250cm9sLi1ob3Jpem9udGFsIHtcbiAgbGVmdDogYXV0bztcbiAgd2lkdGg6IDVweDtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG59XG4ub3ZlcmxheS1pbnB1dCAub3ZlcmxheS1oYW5kbGUgPiAuY29udHJvbC4tdmVydGljYWwge1xuICB0b3A6IGF1dG87XG4gIGhlaWdodDogNXB4O1xuICBjdXJzb3I6IG5zLXJlc2l6ZTtcbn1cbi5vdmVybGF5LWlucHV0IC5vdmVybGF5LWhhbmRsZSA+IC5jb250cm9sLi1jb3JuZXIge1xuICB3aWR0aDogNXB4O1xuICBoZWlnaHQ6IDVweDtcbiAgdG9wOiBhdXRvO1xuICBsZWZ0OiBhdXRvO1xuICBjdXJzb3I6IG53c2UtcmVzaXplO1xufVxuLm92ZXJsYXktaW5wdXQgLm92ZXJsYXktaGFuZGxlID4gLmNvbnRyb2wuLWRlbGV0ZSB7XG4gIHJpZ2h0OiBhdXRvO1xuICBib3R0b206IGF1dG87XG59XG4ubWFpbi1uYXZpZ2F0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzFmZTtcbiAgYm94LXNoYWRvdzogNHB4IDNweCA0cHggMCByZ2JhKDAsMCwwLDAuMSk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHNjcm9sbGJhci13aWR0aDogbm9uZTtcbi8qIEZpcmVmb3ggKi9cbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuLyogSUUgMTArICovXG59XG4ubWFpbi1uYXZpZ2F0aW9uOjotd2Via2l0LXNjcm9sbGJhciB7XG4vKiBXZWJLaXQgKi9cbiAgd2lkdGg6IDBweDtcbi8qIHZlcnRpY2FsIHNjcm9sbGJhciAqL1xuICBoZWlnaHQ6IDBweDtcbi8qIGhvcml6b250YWwgc2Nyb2xsYmFyICovXG59XG4ubWFpbi1uYXZpZ2F0aW9uID4gLml0ZW0ge1xuICBoZWlnaHQ6IDIuNXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY29sb3I6ICNmZmY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5tYWluLW5hdmlnYXRpb24gPiAuaXRlbS4tYWN0aXZlLFxuLm1haW4tbmF2aWdhdGlvbiA+IC5pdGVtOmhvdmVyOm5vdCguLWRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4yKTtcbn1cbi5tYWluLW5hdmlnYXRpb24gPiAuaXRlbTo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbn1cbi5tYWluLW5hdmlnYXRpb24gPiAuaXRlbS4tYWN0aXZlOjpiZWZvcmUge1xuICBib3JkZXItbGVmdDogc29saWQgM3B4ICNmZmY7XG59XG4ubWFpbi1uYXZpZ2F0aW9uID4gLml0ZW0uLWRpdmlkZXI6OmJlZm9yZSB7XG4gIGJvcmRlci10b3A6IHNvbGlkIDFweCAjNmU2ZWZlO1xufVxuLm1haW4tbmF2aWdhdGlvbiA+IC5pdGVtID4gLmljb24sXG4ubWFpbi1uYXZpZ2F0aW9uID4gLml0ZW0gPiAubGV0dGVyLWljb24ge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgd2lkdGg6IDEuMjVyZW07XG4gIGhlaWdodDogMS4yNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IDAuOTM3NXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjkzNzVyZW07XG59XG4ubWFpbi1uYXZpZ2F0aW9uID4gLml0ZW0gPiAubGV0dGVyLWljb24ge1xuICBjb2xvcjogIzMwMzFmZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm1haW4tbmF2aWdhdGlvbiA+IC5pdGVtID4gLmxhYmVsIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjkzNzVyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLm1vZGVsLWVkaXRvciA+IC5lZGl0b3ItaGVhZGVyID4gLmFjdGlvbnMgPiAqIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm1vZGVsLWVkaXRvciA+IC5lZGl0b3ItaGVhZGVyID4gLmFjdGlvbnMgPiAqICsgKiB7XG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xufVxuLm1vcmUtYnV0dG9uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tb3JlLWJ1dHRvbi4tdmlzaWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLnByZXZpZXctY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cbi5wcmV2aWV3LWNvbnRlbnQgPiAuaGVhZGVyIHtcbiAgaGVpZ2h0OiAyLjc1cmVtO1xufVxuLnByZXZpZXctY29udGVudCA+IC5pZnJhbWUge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoIDEwMCUgLSAyLjc1cmVtICk7XG59XG4udG9vbHRpcC1jb250YWluZXIge1xuICAtLWR4OiAwcHg7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDRweDtcbiAgei1pbmRleDogMTAxMDtcbn1cbi50b29sdGlwLWNvbnRhaW5lciA+IC5jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjgpO1xuICBjb2xvcjogI2RkZDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnRvb2x0aXAtY29udGFpbmVyID4gLmNvbnRlbnQ6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiA2cHg7XG4gIHRyYW5zaXRpb246IGxlZnQgMC4zcztcbn1cbi50b29sdGlwLWNvbnRhaW5lci4tbGVmdCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAlLCAtNTAlKTtcbn1cbi50b29sdGlwLWNvbnRhaW5lci4tbGVmdCA+IC5jb250ZW50OmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsMCwwLDAuOCk7XG4gIGxlZnQ6IDEwMCU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG4udG9vbHRpcC1jb250YWluZXIuLXJpZ2h0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLnRvb2x0aXAtY29udGFpbmVyLi1yaWdodCA+IC5jb250ZW50OmJlZm9yZSB7XG4gIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwLjgpO1xuICByaWdodDogMTAwJTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cbi50b29sdGlwLWNvbnRhaW5lci4tdG9wIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtNTAlICsgdmFyKC0tZHgpKSwgLTEwMCUpO1xufVxuLnRvb2x0aXAtY29udGFpbmVyLi10b3AgPiAuY29udGVudDpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsMCwwLDAuOCk7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogY2FsYyg1MCUgLSB2YXIoLS1keCkpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG4udG9vbHRpcC1jb250YWluZXIuLWJvdHRvbSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKC01MCUgKyB2YXIoLS1keCkpKTtcbn1cbi50b29sdGlwLWNvbnRhaW5lci4tYm90dG9tID4gLmNvbnRlbnQ6YmVmb3JlIHtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLDAsMCwwLjgpO1xuICBib3R0b206IDEwMCU7XG4gIGxlZnQ6IGNhbGMoNTAlIC0gdmFyKC0tZHgpKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuLnRyYW5zaXRpb24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnRyYW5zaXRpb24tY29udGFpbmVyLi10cmFuc2l0aW9uIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi50cmFuc2l0aW9uLWNvbnRhaW5lciA+IC5hbmltYXRvciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAxMDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNjtcbn1cbi50cmFuc2l0aW9uLWNvbnRhaW5lciA+IC5hbmltYXRvci5pbi1zdGFydCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbn1cbi50cmFuc2l0aW9uLWNvbnRhaW5lciA+IC5hbmltYXRvci5pbi1lbmQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG4udHJhbnNpdGlvbi1jb250YWluZXIgPiAuYW5pbWF0b3Iub3V0LXN0YXJ0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuLnRyYW5zaXRpb24tY29udGFpbmVyID4gLmFuaW1hdG9yLm91dC1lbmQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG59XG4udXBsb2FkLWJ1dHRvbiA+IGlucHV0IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi51cGxvYWQtYnV0dG9uID4gLnByb2dyZXNzIHtcbiAgaGVpZ2h0OiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIG9wYWNpdHk6IDAuNTtcbn1cbi5ib29sZWFuLWlucHV0Li1lbmFibGVkID4gLnN0YXRlOmZvY3VzOm5vdCg6YWN0aXZlKSxcbi5ib29sZWFuLWlucHV0Li1lbmFibGVkID4gLnN0YXRlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjdjYjtcbn1cbi5ib29sZWFuLWlucHV0Om5vdCguLWVuYWJsZWQpID4gLnN0YXRlOmZvY3VzOm5vdCg6YWN0aXZlKSxcbi5ib29sZWFuLWlucHV0Om5vdCguLWVuYWJsZWQpID4gLnN0YXRlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzhiOGI4Yjtcbn1cbi5jcnVtYi1pdGVtOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cbi5jcnVtYi1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6Zm9jdXMsXG4uY3J1bWItaXRlbTpub3QoOmxhc3QtY2hpbGQpOmhvdmVyIHtcbiAgY29sb3I6ICMyMDIwMjM7XG59XG4uY3J1bWItaXRlbTpub3QoOmxhc3QtY2hpbGQpOmZvY3VzIHtcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNjOWM5Yzk7XG59XG4uZWRpdG9yLXRhYmxlIC5lZGl0b3ItdGFibGUtcm93Li1lZGl0YWJsZTpmb2N1czpub3QoOmhvdmVyKTpub3QoOmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggI2M5YzljOTtcbn1cbi5tYWluLW5hdmlnYXRpb24gPiAuaXRlbTpub3QoLi1hY3RpdmUpOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjIpO1xufVxuLm1haW4tbmF2aWdhdGlvbiA+IC5pdGVtLi1hY3RpdmU6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuMyk7XG59XG4udGFiLWl0ZW0uLWFjdGl2ZTpmb2N1cyxcbi50YWItaXRlbS4tYWN0aXZlOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjdjYjtcbn1cbi50YWItaXRlbTpub3QoLi1hY3RpdmUpOmZvY3VzLFxuLnRhYi1pdGVtOm5vdCguLWFjdGl2ZSk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzljOWM5O1xufVxuLmJyYW5jaC1wYXRoID4gLi1zb3J0YWJsZSB7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjdXJzb3I6IGdyYWI7XG59XG4ubWFyZ2luLWJveC4tbGVmdC14c21hbGwge1xuICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcbn1cbi5tYXJnaW4tYm94Li1yaWdodC14c21hbGwge1xuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XG59XG4ubWFyZ2luLWJveC4tdG9wLXhzbWFsbCB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XG59XG4ubWFyZ2luLWJveC4tYm90dG9tLXhzbWFsbCB7XG4gIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG59XG4udG9vbGJhci1mb3JtYXQgPiAuY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC44KTtcbiAgdG9wOiAzNnB4O1xuICByaWdodDogMDtcbn1cbi50b29sYmFyLWZvcm1hdCA+IC5jb250ZW50IC50b29sYmFyLWNvbG9yIHtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cbi50b29sYmFyLWZvcm1hdCA+IC5jb250ZW50IC50b29sYmFyLWNvbG9yLi1zZWxlY3RlZCB7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNmZmY7XG59XG4udG9vbGJhci1mb3JtYXQgLnN2Zy1pY29uLi10b29sYmFyIHtcbiAgd2lkdGg6IDEwcHg7XG4gIGhlaWdodDogMTBweDtcbn1cbnVzZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuc3ViIHtcbiAgdmVydGljYWwtYWxpZ246IHN1YjtcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xufVxuc3VwIHtcbiAgdmVydGljYWwtYWxpZ246IHN1cGVyO1xuICBmb250LXNpemU6IHNtYWxsZXI7XG59XG4iLCIvKiFcbi0tLVxubmFtZTogR2xvYmFsIHNldHRpbmdzXG5jYXRlZ29yeTogU2hhcmVkL1ZhcmlhYmxlc1xudGVtcGxhdGU6IHZhcmlhYmxlc1xudGFnOlxuIC0gdmFyaWFibGVzXG52YXJpYWJsZXM6XG4gLSBuYW1lOiBcInRleHQtbGluZS1oZWlnaHRcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBib2R5XCJcbiAgIGRlZmF1bHQ6IFwiMS41cmVtXCJcbiAtIG5hbWU6IFwiZm9udC1mYW1pbHlcIlxuICAgZGVzY3JpcHRpb246IFwiVGhlIGZvbnQtZmFtaWx5IG9mIHRoZSBib2R5XCJcbiAgIGRlZmF1bHQ6IFwiJ0hlbHZldGljYScsIHNhbnMtc2VyaWZcIlxuIC0gbmFtZTogXCJ0ZXh0LXJlbmRlcmluZ1wiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgdGV4dC1yZW5kZXJpbmcgb2YgdGhlIGJvZHlcIlxuICAgZGVmYXVsdDogXCJvcHRpbWl6ZUxlZ2liaWxpdHlcIlxuIC0gbmFtZTogXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCJcbiAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkdXJhdGlvbiBvZiB0aGUgc2xpZGUgdHJhbnNpdGlvbnNcIlxuICAgZGVmYXVsdDogXCIwLjRzXCJcbiAtIG5hbWU6IFwiYm9yZGVyLXJhZGl1c1wiXG4gICBkZXNjcmlwdGlvbjogXCJUaGUgZGVmYXVsdCByYWRpdXMgZm9yIGJvcmRlcnNcIlxuICAgZGVmYXVsdDogXCIycHhcIlxuLS0tXG5cblRoZXNlIHZhcmlhYmxlcyBzZXR1cHMgc29tZSBnbG9iYWwgdGV4dCBmb3JtYXR0aW5nIGFuZCBzdHlsaW5nLlxuKi9cblxudGhlbWUuc2V0dGluZ3MgPSB7XG4gIHRleHQtbGluZS1oZWlnaHQ6IHJlbSggMjRweCApLFxuICB0ZXh0LWZvbnQ6ICdSb2JvdG8nXFwsIHNlcmlmLFxuICBoZWFkaW5nLWZvbnQ6ICdSb2JvdG8nXFwsIHNlcmlmLFxuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5LFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjNzLFxuICBib3JkZXItcmFkaXVzOiAycHgsXG4gIGJyZWFrcG9pbnRzOiB7XG4gICAgc21hbGw6IHJlbSggNzY4cHggKSxcbiAgICBtZWRpdW06IHJlbSggOTkycHggKSxcbiAgICBsYXJnZTogcmVtKCAxMjAwcHggKVxuICB9LFxufVxuXG4iLCJyZW0oIHBpeGVscyApIHtcblx0cmV0dXJuIHVuaXQoIHBpeGVscyAvIDE2LCAncmVtJyApO1xufVxuXG4vKiFcbi0tLVxubmFtZTogY2hvb3NlTWF4Q29udHJhc3RcbmNhdGVnb3J5OiBTaGFyZWQvRnVuY3Rpb25zXG4tLS1cblxuR2l2ZW4gb25lIG9yIG1vcmUgZm9yZWdyb3VuZCBjb2xvcnMgYGZnc2AgYW5kIG9uZSBiYWNrZ3JvdW5kIGNvbG9yIGBiZ2AsXG5yZXR1cm5zIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHdpdGggdGhlIGhpZ2hlc3QgY29udHJhc3QgcmF0aW8gd2l0aCByZXNwZWN0IHRvIGBiZ2AuXG5cbiMjIERlZmluaXRpb246XG5cbmBgYHN0eWx1c1xuZmcgPSBjaG9vc2VNYXhDb250cmFzdChmZ3MsIGJnKTtcbmBgYFxuXG4jIyBFeGFtcGxlOlxuXG5gYGBzdHlsdXNcbmJnID0gdGhlbWUuY29sb3JzLmZvb3RlcjtcbmZnID0gdGhlbWUuY29sb3JzLnRleHQ7XG5mZ0ludmVydGVkID0gdGhlbWUuY29sb3JzLnRleHQtaW52ZXJ0ZWQ7XG5cbnRoZW1lLmNvbXBvbmVudHMuY29sb3ItYm94LmZvb3RlciA9IHtcblx0YmFja2dyb3VuZC1jb2xvcjogKGJnKSxcblx0Y29sb3I6IChjaG9vc2VNYXhDb250cmFzdCgoZmcgZmdJbnZlcnRlZCksIGJnKSksXG59XG5gYGBcbiovXG5jaG9vc2VNYXhDb250cmFzdChmZ3MsIGJnKSB7XG4gICAgZmdXaXRoTWF4Q29udHJhc3RSYXRpbyA9IGZnc1swXTtcbiAgICBmb3IgZmcgaW4gZmdzIHtcbiAgICAgICAgaWYgKGNvbnRyYXN0KGZnLCBiZykucmF0aW8gPiBjb250cmFzdChmZ1dpdGhNYXhDb250cmFzdFJhdGlvLCBiZykucmF0aW8pIHtcbiAgICAgICAgICAgIGZnV2l0aE1heENvbnRyYXN0UmF0aW8gPSBmZztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmdXaXRoTWF4Q29udHJhc3RSYXRpbztcbn1cbiIsIi8qXG4tLS1cbm5hbWU6IEdsb2JhbCBSZXNldFxuY2F0ZWdvcnk6IFNoYXJlZFxuLS0tXG5cblRoZSBsZXJuZXR6IGNzcyBsaWJyYXJ5IGhhcyBhIHNldCBvZiByZXNldCBzdHlsZSB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBldmVyeSBicm93c2VyLlxuRnVydGhlcm1vcmUgdGhpcyByZXNldCBzZXRzIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcyBsaWtlOlxuICogYm9keSBmb250LWZhbWlsaWVzXG4gKiBib2R5IGxpbmUtaGVpZ2h0XG4gKiBib2R5IHRleHQtcmVuZGVyaW5nXG4gKiA6cm9vdCBmb250LXNpemUgZm9yIHByb3BlciByZW0gY29udmVyc2lvblxuKi9cblxuXG5cbmh0bWwsIGJvZHksIGRpdiwgc3Bhbiwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hYmJyLCBhZGRyZXNzLCBjaXRlLCBjb2RlLFxuZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzYW1wLFxuc21hbGwsIHN0cm9uZywgc3ViLCBzdXAsIHZhcixcbmIsIGksXG5kbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG50YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbmFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSxcbmZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSxcbnRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdGJvcmRlcjowO1xuXHRvdXRsaW5lOjA7XG5cdGZvbnQtc2l6ZTppbmhlcml0O1xuXHR2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbn1cblxuOnJvb3Qge1xuXHRmb250LXNpemU6IDE2cHg7XG59XG5cbmh0bWwge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG5cbmJvZHkge1xuXHRsaW5lLWhlaWdodDogdGhlbWUuc2V0dGluZ3MudGV4dC1saW5lLWhlaWdodDtcblx0Y29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0O1xuXHRmb250LWZhbWlseTogdGhlbWUuc2V0dGluZ3MudGV4dC1mb250O1xuXHR0ZXh0LXJlbmRlcmluZzogdGhlbWUuc2V0dGluZ3MudGV4dC1yZW5kZXJpbmc7XG5cdGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5ib2R5O1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cblxuYXJ0aWNsZSxhc2lkZSxkZXRhaWxzLGZpZ2NhcHRpb24sZmlndXJlLFxuZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWVudSxuYXYsc2VjdGlvbiB7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cblxuc2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246bWlkZGxlO1xufVxuXG50ZXh0YXJlYSB7XG5cdHdpZHRoOjEwMCU7XG59XG5cbnRhYmxlIHtcblx0Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO1xuXHRib3JkZXItc3BhY2luZzowO1xufVxuXG4vL1xuLy8gMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuLy8gICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4vLyAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuLy8gMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4vL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDsgLy8gMVxuICBmb250OiBpbmhlcml0OyAvLyAyXG4gIG1hcmdpbjogMDsgLy8gM1xufVxuXG5cbi8vXG4vLyBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4vL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuXG5cbi8qXG4gKiBOb3JtYWxpemUgdGhlIGJlaGF2aW91ciBvZiBhbGwgYnJvd3NlcnNcbiAqXG4gKiBJbnN0ZWFkIG9mIHNldHRpbmcgYm94LXNpemluZyBmaXggb24gYWxsIGVsZW1lbnRzIHdlIG9ubHkgc2V0IGl0IG9uIHRoZSByb290IGVsZW1lbnRcbiAqIGFuZCB0ZWxsIGFsbCBlbGVtZW50cyB0byBpbmhlcml0IGl0J3MgcHJvcGVydHkgZnJvbSB0aGUgcGFyZW50XG4gKiBUaGF0IHdheSBpdCdzIHBvc3NpYmxlIHRvIG92ZXJ3cml0ZSB0aGUgYm94LXNpemluZyBhbnl3aGVyZSB3aGlsZSBrZWVwaW5nIHByb3BlciBpbmhlcml0YW5jZVxuICovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cbmEge1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdGNvbG9yOiB0aGVtZS5jb2xvcnMuYWN0aW9uO1xufVxuaW1nIHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG51bCxvbCB7XG5cdG1hcmdpbi1sZWZ0OiByZW0oIDIwcHggKTtcbn1cbiIsIi8qIVxuLS0tXG5uYW1lOiAuYm9yZGVyLWJveFxuY2F0ZWdvcnk6IEJveC9Cb3JkZXJcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYm9yZGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3JkZXJzIG9uIGFsbCBmb3VyIHNpZGVzLlxuXG5gYGBqYWRlXG5kaXYuYm9yZGVyLWJveC4tbGVmdCBTb21lIGRlbW8gY29udGVudFxuYGBgXG5cbmBgYGphZGVcbmRpdi5ib3JkZXItYm94Li1hbGwgU29tZSBkZW1vIGNvbnRlbnRcbmBgYFxuKi9cbi5ib3JkZXItYm94IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5ib3JkZXItYm94O1xuXHRcblx0Zm9yIHZhcmlhbnQsIHZhbHVlIGluIGNvbmYge1xuXG4gICAgICAgIGZvciBzaWRlIGluIHRvcCByaWdodCBib3R0b20gbGVmdCB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIHZhcmlhbnQgIT0gJ2RlZmF1bHQnIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX0te3ZhcmlhbnR9IHtcblx0XHRcdFx0XHRib3JkZXIte3NpZGV9LXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJi4te3NpZGV9IHtcblx0XHRcdFx0XHRib3JkZXIte3NpZGV9LXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gICAgICBcbiAgICAgICAgfVxuXG5cdFx0aWYgdmFyaWFudCAhPSAnZGVmYXVsdCcge1xuXHRcdFx0Ji4tYWxsLXt2YXJpYW50fSB7XG5cdFx0XHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0XHRcdHt2YWx1ZX1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ji4tYWxsIHtcblx0XHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdFx0e3ZhbHVlfVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuLXJvdW5kIHtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHRcblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuY29sb3ItYm94XG5jYXRlZ29yeTogQm94L0NvbG9yXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGNvbG9yc1xuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkNvbnRyb2xzIHRoZSBiYWNrZ3JvdW5kIGFuZC9vciBmb3JlZ3JvdW5kIGNvbG9yKHMpIG9mIHRoZSBzdHlsZWQgZWxlbWVudC5cblxuIyMgQ29uZmlndXJhdGlvblxuXG5UaGlzIGNvbXBvbmVudCBwcm9kdWNlcyBhIGAtdmFyaWFudGAgZm9yIGVhY2gga2V5IGluIHRoZSBgdGhlbWUuY29tcG9uZW50cy5jb2xvci1ib3hgIGhhc2guXG5Zb3UgY2FuIHRoZXJlZm9yZSBkZWZpbmUgdmFyaWFudHMgYnkgaW5jbHVkaW5nIGUuIGcuIHRoZSBmb2xsb3dpbmcgaW4gdGhlIGZpbGUgYGNvbG9yLWJveC52YXIuc3R5bGA6XG5cbmBgYHN0eWx1c1xudGhlbWUuY29tcG9uZW50cy5jb2xvci1ib3guZm9vdGVyID0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuZm9vdGVyLFxuICBjb2xvcjogdGhlbWUuY29sb3JzLnRleHQsXG59O1xuYGBgXG5cbiMjIEFwcGxpY2F0aW9uXG5cbmBgYGphZGVcbmRpdi5jb2xvci1ib3guLWJvZHkoc3R5bGU9XCJ3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHhcIilcbiAgc3BhbiBDb250ZW50XG5gYGBcblxuYGBgamFkZVxuZGl2LmNvbG9yLWJveC4tYWN0aW9uKHN0eWxlPVwid2lkdGg6MTAwcHg7aGVpZ2h0OjEwMHB4XCIpXG4gIHNwYW4gQ29udGVudFxuYGBgXG5cbiMjIFNlZSBhbHNvOlxuXG4qIFtjaG9vc2VNYXhDb250cmFzdF0oLi4vLi4vU2hhcmVkL0Z1bmN0aW9ucy9pbmRleC5odG1sI2Nob29zZU1heENvbnRyYXN0KSAmbWRhc2g7XG4gIEluIG9yZGVyIHRvIGd1YXJhbnRlZSBnb29kIGxlZ2liaWxpdHksIHRoZSBmb3JlZ3JvdW5kIGBjb2xvcmAgc2hvdWxkIGJlIGNob3NlblxuICBpbiByZWxhdGlvbiB0byB0aGUgYGJhY2tncm91bmQtY29sb3JgIHN1Y2ggdGhhdCBhIHJlYXNvbmFibHkgaGlnaCBjb250cmFzdCByYXRpb1xuICB3aWxsIHJlc3VsdC4gSWYgeW91IGFyZSB3b3JraW5nIHdpdGggYHRoZW1lLmNvbG9yc2AgdmFyaWFibGVzIGluc3RlYWQgb2YgZml4ZWRcbiAgY29sb3IgdmFsdWVzLCB0aGlzIGNhbiBoZWxwIHlvdSBzZWxlY3QgdGhlIGJlc3Qgb25lOyBzZWUgdGhlcmUgZm9yIGFuIGV4YW1wbGUuXG5gYGBcblxuKi9cbi5jb2xvci1ib3gge1xuICAgIFxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmNvbG9yLWJveDtcblxuICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmZ7XG4gICAgICAgICYuLXtrZXl9IHtcbiAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLm1hcmdpbi1ib3hcbmNhdGVnb3J5OiBCb3gvTWFyZ2luXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgY29tcG9uZW50IHRvIGFkZCBtYXJnaW5zXG5cbiMjIEFwcGx5aW5nIG1hcmdpbnNcblxuVGhlIGVhc2llc3QgdXNlIGNhc2UgaXMgdG8gdXNlIHNpbXBsZSBgLm1hcmdpbi1ib3ggLi1hbGxgIGZvciBhIG1hcmdpbiBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlcy5cblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWFsbFxuXHRkaXYuYWlnaXMtZGVidWcgRGVmYXVsdCBtYXJnaW4gYXBwbGllZCBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnRcbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgRGVmYXVsdCBtYXJnaW4gYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIG1hcmdpbnMgYXJlIGAuLXRvcC17c2l6ZX1gLCBgLi1yaWdodC17c2l6ZX1gLCBgLi1ib3R0b20te3NpemV9YCBhbmQgYC5sZWZ0LXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplcyBzbWFsbCwgbWVkaXVtIG9yIGxhcmdlLlxuQWxsIHNpemVzIGFyZSBkZWZpbmVkIGluIHRoZSB2YXJpYWJsZSB0aGVtZS5jb21wb25lbnRzLm1hcmdpbi1ib3guIFZhbHVlcyBhcmUgYHNtYWxsYCwgYG1lZGl1bWAsIGBsYXJnZWAgYW5kIGBhdXRvYFxuXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tbGVmdC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li1yaWdodC1zbWFsbFxuICAgIGRpdi5haWdpcy1kZWJ1ZyBTbWFsbCBtYXJnaW4gYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tdG9wLXNtYWxsXG4gICAgZGl2LmFpZ2lzLWRlYnVnIFNtYWxsIG1hcmdpbiBhcHBsaWVkIG9uIHRvcFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tYm90dG9tLXNtYWxsXG4gICAgZGl2LmFpZ2lzLWRlYnVnIFNtYWxsIG1hcmdpbiBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cblRoZXJlIGFyZSBhbHNvIHNob3J0Y3V0cyBmb3IgdmVydGljYWwgYC4tdi17c2l6ZX1gIGFuZCBob3Jpem9udGFsIGAuLWgte3NpemV9YCB0b2dldGhlciB3aXRoIHNpemVzIHNtYWxsLCBtZWRpdW0gYW5kIGxhcmdlXG5cbmBgYGphZGVcbmRpdi5tYXJnaW4tYm94Li12LW1lZGl1bVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBNZWRpdW0gbWFyZ2luIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWgtbWVkaXVtXG4gICAgZGl2LmFpZ2lzLWRlYnVnIE1lZGl1bSBtYXJnaW4gYXBwbGllZCBvbiByaWdodCBhbmQgbGVmdFxuYGBgXG5cbiMjIFZhcmlhbnRzIGZvciBhdXRvIG1hcmdpbnNcblxuYGBgamFkZVxuZGl2Lm1hcmdpbi1ib3guLWF1dG8uLWgoc3R5bGU9XCJ3aWR0aDogMjAwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcgQXV0byBtYXJnaW4gYXBwbGllZCBvbiByaWdodCBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYubWFyZ2luLWJveC4tYXV0by4tdihzdHlsZT1cImhlaWdodDogNDZweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1ZyBBdXRvIG1hcmdpbiBhcHBsaWVkIG9uIHRvcCBhbmQgYm90dG9tXG5gYGBcblxuKi9cblxuLm1hcmdpbi1ib3gge1xuXG4gICAgY29uZiA9IHRoZW1lLmNvbXBvbmVudHMubWFyZ2luLWJveDtcblxuICAgIGZvciBzaXplLCB2YWx1ZSBpbiBjb25mIHtcblxuICAgICAgICBmb3Igc2lkZSBpbiB0b3AgcmlnaHQgYm90dG9tIGxlZnR7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIHNpemUgIT0gJ2RlZmF1bHQnIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX0te3NpemV9e1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4te3NpZGV9OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX17XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi17c2lkZX06IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIHNpemUgIT0gJ2RlZmF1bHQnIHtcbiAgICAgICAgICAgICYuLWgte3NpemV9e1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tdi17c2l6ZX17XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFsdWU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLi1hbGwte3NpemV9e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogdmFsdWUgdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJi4taHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogdmFsdWU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuLXZ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFsdWU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi4tYWxse1xuICAgICAgICAgICAgICAgIG1hcmdpbjogdmFsdWUgdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi4tYXV0b3tcblxuICAgICAgICAmLi12e1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsgICAgXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiBhdXRvOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWh7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsgICAgXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87ICAgIFxuICAgICAgICB9ICAgIFxuICAgIH1cblxufSIsIi8qIVxuLS0tXG5uYW1lOiAucGFkZGluZy1ib3hcbmNhdGVnb3J5OiBCb3gvUGFkZGluZ1xudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5BIHNpbXBsZSBjb21wb25lbnQgdG8gYWRkIHBhZGRpbmdzXG5cbiMjIEFwcGx5aW5nIHBhZGRpbmdzXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5wYWRkaW5nLWJveCAuLWFsbGAgZm9yIGEgcGFkZGluZyBvbiB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgd2l0aCBkZWZhdWx0IHNpemUgb3JcbmAuLXRvcGAsIGAuLXJpZ2h0YCwgYC4tYm90dG9tYCBhbmQgYC4tbGVmdGAgZm9yIHNwZWNpZmllZCBzaWRlc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWFsbCBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLWJvdHRvbSBEZWZhdXQgcGFkZGluZyBhcHBsaWVkIG9uIGJvdHRvbVxuYGBgXG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHBhZGRpbmdzIGFyZSBgLi10b3Ate3NpemV9YCwgYC4tcmlnaHQte3NpemV9YCwgYC4tYm90dG9tLXtzaXplfWAgYW5kIGAubGVmdC17c2l6ZX1gIHRvZ2V0aGVyIHdpdGggc2l6ZXMgc21hbGwsIG1lZGl1bSBvciBsYXJnZS5cbkFsbCBzaXplcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmFyaWFibGUgdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC4gVmFsdWVzIGFyZSBgc21hbGxgLCBgbWVkaXVtYCwgYW5kIGBsYXJnZWBcblxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1sZWZ0LXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tcmlnaHQtc21hbGwoc3R5bGU9XCJ0ZXh0LWFsaWduOnJpZ2h0XCIpIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiByaWdodFxuYGBgXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXRvcC1zbWFsbCBTbWFsbCBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4tYm90dG9tLXNtYWxsIFNtYWxsIHBhZGRpbmcgYXBwbGllZCBvbiBib3R0b21cbmBgYFxuXG5UaGVyZSBhcmUgYWxzbyBzaG9ydGN1dHMgZm9yIHZlcnRpY2FsIGAuLXYte3NpemV9YCBhbmQgaG9yaXpvbnRhbCBgLi1oLXtzaXplfWAgdG9nZXRoZXIgd2l0aCBzaXplc1xuXG5gYGBqYWRlXG5kaXYuYWlnaXMtZGVidWcucGFkZGluZy1ib3guLXYtbWVkaXVtIE1lZGl1bSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wIGFuZCBib3R0b21cbmBgYFxuYGBgamFkZVxuZGl2LmFpZ2lzLWRlYnVnLnBhZGRpbmctYm94Li1oLW1lZGl1bShzdHlsZT1cIndpZHRoOiAzMDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0XG5gYGBcbmBgYGphZGVcbmRpdi5haWdpcy1kZWJ1Zy5wYWRkaW5nLWJveC4taC1tZWRpdW0uLXRvcC1sYXJnZShzdHlsZT1cIndpZHRoOiA0MDBweFwiKSBNZWRpdW0gcGFkZGluZyBhcHBsaWVkIG9uIHJpZ2h0IGFuZCBsZWZ0LCBsYXJnZSBwYWRkaW5nIGFwcGxpZWQgb24gdG9wXG5gYGBcbiovXG5cbi5wYWRkaW5nLWJveHtcblxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnBhZGRpbmctYm94O1xuXG4gICAgZm9yIHNpemUsIHZhbHVlIGluIGNvbmYge1xuXG4gICAgICAgIGZvciBzaWRlIGluIHRvcCByaWdodCBib3R0b20gbGVmdHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgc2l6ZSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAgICAgICAgICYuLXtzaWRlfS17c2l6ZX17XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcte3NpZGV9OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi17c2lkZX17XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcte3NpZGV9OiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICBpZiBzaXplICE9ICdkZWZhdWx0JyB7XG4gICAgICAgICAgICAmLi1oLXtzaXplfXtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tdi17c2l6ZX17XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuLWFsbC17c2l6ZX17XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFsdWUgdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJi4taHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tdntcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFsdWU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuLWFsbHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YWx1ZSB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi1ndXR0ZXIge1xuICAgICAgICBndXR0ZXIgPSB0aGVtZS5jb21wb25lbnRzLmdyaWQtbGF5b3V0Lmd1dHRlcjtcbiAgICAgICAgcGFkZGluZzogKCBndXR0ZXJbMF0gLyAyICkgKCBndXR0ZXJbMF0gLyAyICk7ICAgIFxuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLnNoYWRvdy1ib3hcbmNhdGVnb3J5OiBCb3gvU2hhZG93XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHNoYWRvd1xuIC0gaGVscGVyXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBib3ggdG8gY29udHJvbCBib3gtc2hhZG93cyB3aXRoIGRpZmZlcmVudCB2YXJpYW50c1xuXG4jIyBEZWZhdWx0IHZhcmlhbnRzXG5gYGBqYWRlXG5kaXYuc2hhZG93LWJveCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li1pbnNldCBEZW1vIGNvbnRlbnRcbmRpdi5zaGFkb3ctYm94Li16ZXJvIFVzZSB6ZXJvIHNoYWRvdyBpbiBhbmltYXRpb25zXG5gYGBcbiovXG4uc2hhZG93LWJveCB7XG5cdFxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5zaGFkb3ctYm94O1xuXG5cdGZvciBuYW1lLCB2YWx1ZSBpbiBjb25mIHtcblx0XHRpZiBuYW1lICE9ICdkZWZhdWx0JyB7XG4gICAgICAgICAgICAmLi17bmFtZX0ge1xuICAgICAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLnNwYWNlci1ib3hcbmNhdGVnb3J5OiBCb3gvU3BhY2VyXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIGxheW91dFxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gY29udHJvbCBzcGFjaW5nIG9mIGEgYm94LiBJdCBtYWlubHkgc2V0cyB0aGUgbWFyZ2luIGFuZCBwYWRkaW5nIHdpdGggYSBmaXhlZCBzZXQgb2YgY29uZmlndXJhdGlvbiB2YWx1ZXMuXG5UaGUgZGVmYXVsdCBzcGFjZSBzaXplcyBhcmU6XG5gYGBcbnh4czogMlxueHM6IDRcbnM6IDhcbmRlZmF1bHQ6IDE2XG5sOiAzMlxueGw6IDY0YFxuYGBgXG5cblxuVG8gY29udHJvbCB0aGUgcGFkZGluZy9tYXJnaW4gZm9yIGEgc3BlY2lmaWMgc3BhY2UgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB2YXJpYW50czpcbmBgYFxuLXtraW5kfS17c2lkZX0te3NwYWNlfVxuLXtraW5kfS17YXhpc30te3NwYWNlfVxuLXtraW5kfS17c3BhY2V9XG5cbmtpbmQ6IG0gfCBwXG5zaWRlOiB0b3AgfCByaWdodCB8IGJvdHRvbSB8IGxlZnRcbnNwYWNlOiB4eHMgfMKgeHMgfMKgcyB8wqBsIHwgeGxcbmF4aXM6IHYgfMKgaFxuYGBgXG5cbk9yIHRvIHVzZSB0aGUgYGRlZmF1bHRgIHBhZGRpbmcgc3BhY2UgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzaG9ydGN1dHM6XG5gYGBcbi17a2luZH0te3NpZGV9XG4te2tpbmR9LXtheGlzfVxuLXtraW5kfVxuXG5raW5kOiBtIHwgcFxuc2lkZTogdG9wIHwgcmlnaHQgfCBib3R0b20gfCBsZWZ0XG5heGlzOiB2IHzCoGhcbmBgYFxuXG4jIyBFeGFtcGxlc1xuXG5IZXJlIGFyZSBzb21lIGV4YW1wbGUgdGhhdCBzaG93IHRoZSB1c2FnZSB3aXRoIHNwZWNpZmljIHNwYWNlIHNpemVzLlxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0tc1xuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgcyBtYXJnaW4gb24gYWxsIHNpZGVzXG5gYGBcbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1wLXYteGxcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IHhsIHBhZGRpbmcgb24gdmVydGljYWwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXAtdG9wLWxcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IGwgcGFkZGluZyBvbiB0b3Agc2lkZVxuYGBgXG5cbkhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgdGhhdCBzaG93IHRoZSB1c2FnZSB3aXRoIGRlZmF1bHQgc3BhY2Ugc2l6ZS5cblxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLXBcblx0ZGl2LmFpZ2lzLWRlYnVnIEFwcGx5IGRlZmF1bHQgcGFkZGluZyBvbiBhbGwgc2lkZXNcbmBgYFxuYGBgamFkZVxuZGl2LnNwYWNlci1ib3guLW0taFxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBtYXJnaW4gb24gaG9yaXpvbnRhbCBheGlzXG5gYGBcbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1tLWJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcgQXBwbHkgZGVmYXVsdCBtYXJnaW4gb24gYm90dG9tIHNpZGVcbmBgYFxuXG4jIyBBdXRvIG1hcmdpblxuXG5Gb3Igc2V0dGluZyB0aGUgdmVydGljYWwgbWFyZ2luIHRvIGF1dG8gdGhlIGAuLWF1dG9gIHZhcmlhbnQgY2FuIGJlIHVzZWQuXG5cbmBgYGphZGVcbmRpdi5zcGFjZXItYm94Li1hdXRvKHN0eWxlPVwid2lkdGg6IDIwMHB4XCIpXG5cdGRpdi5haWdpcy1kZWJ1ZyBBcHBseSBtYXJnaW4gYXV0byB0byBsZWZ0IGFuZCByaWdodFxuYGBgXG5cbiovXG5cbi5zcGFjZXItYm94IHtcblxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnNwYWNlci1ib3g7XG5cbiAgICBmb3Igc2l6ZSwgdmFsdWUgaW4gY29uZiB7XG5cbiAgICAgICAgLy8gY3JlYXRlIHJ1bGVzIGZvciBlYWNoIHNpZGVcbiAgICAgICAgZm9yIHNpZGUgaW4gdG9wIHJpZ2h0IGJvdHRvbSBsZWZ0IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgc2l6ZSAhPSAnZGVmYXVsdCcge1xuICAgICAgICAgICAgICAgICYuLW0te3NpZGV9LXtzaXplfXtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXtzaWRlfTogdmFsdWU7ICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLi1wLXtzaWRlfS17c2l6ZX17XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcte3NpZGV9OiB2YWx1ZTsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAmLi1tLXtzaWRlfXtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXtzaWRlfTogdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYuLXAte3NpZGV9e1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXtzaWRlfTogdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAgICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIHJ1bGVzIGZvciBoL3YgYW5kIGFsbFxuICAgICAgICBpZiBzaXplICE9ICdkZWZhdWx0JyB7XG5cbiAgICAgICAgICAgICYuLW0taC17c2l6ZX17XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi4tbS12LXtzaXplfXtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1tLXtzaXplfXtcbiAgICAgICAgICAgICAgICBtYXJnaW46IHZhbHVlIHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tcC1oLXtzaXplfXtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuLXAtdi17c2l6ZX17XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1wLXtzaXplfXtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YWx1ZSB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICYuLW0taCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFsdWU7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi4tbS12IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1tIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IHZhbHVlIHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi4tcC1oIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhbHVlOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuLXAtdiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhbHVlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLi1wIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YWx1ZSB2YWx1ZTsgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi1hdXRvIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87ICAgIFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87ICAgIFxuICAgIH1cblxufSIsIi8qIVxuLS0tXG5uYW1lOiAudHJhbnNmb3JtLWJveFxuY2F0ZWdvcnk6IEJveC9UcmFuc2Zvcm1cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdHJhbmZvcm1cbiAtIGhlbHBlclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIGNvbnRyb2wgY29tbW9uIHRyYW5zZm9ybWF0aW9uc1xuXG4jIyBSb3RhdGVcbmBgYGphZGVcbmRpdi50cmFuc2Zvcm0tYm94Li1yb3Q5MCBTb21lIGRlbW8gY29udGVudFxuZGl2LnRyYW5zZm9ybS1ib3guLXJvdDE4MCBTb21lIGRlbW8gY29udGVudFxuZGl2LnRyYW5zZm9ybS1ib3guLXJvdDI3MCBTb21lIGRlbW8gY29udGVudFxuYGBgXG5cbiMjIEZsaXBcbmBgYGphZGVcbmRpdi50cmFuc2Zvcm0tYm94Li1mbGlwWCBTb21lIGRlbW8gY29udGVudFxuZGl2LnRyYW5zZm9ybS1ib3guLWZsaXBZIFNvbWUgZGVtbyBjb250ZW50XG5gYGBcbiovXG4udHJhbnNmb3JtLWJveCB7XG5cblx0Y29uZiA9IHRoZW1lLmNvbXBvbmVudHMudHJhbnNmb3JtLWJveDtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gY29uZiB7XG5cdFx0Ji4te25hbWV9IHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cblxufSIsIi8qIVxuLS0tXG5uYW1lOiAuYnV0dG9uLXN0eWxlXG5jYXRlZ29yeTogQ29tcG9uZW50cy9CdXR0b25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYnV0dG9uXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBidXR0b24gY29tcG9uZW50IGFzIGEgYmFzZSBmb3IgZGlmZmVyZW50IGJ1dHRvbiB2YXJpYW50cyBkZWZpbmVkIGluIGl0cyBjb25maWd1cmF0aW9uLlxuXG5gYGBqYWRlXG5idXR0b24uYnV0dG9uLXN0eWxlLi1tYWluIEFjdGlvblxuYGBgXG4qL1xuLmJ1dHRvbi1zdHlsZSB7XG5cblx0YXBwZWFyYW5jZTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlcjogbm9uZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdG91dGxpbmU6IG5vbmU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gdGhlbWUuY29tcG9uZW50cy5idXR0b24tc3R5bGUge1xuXHRcblx0XHQmLi17bmFtZX0ge1xuXHRcdFx0e3ZhbHVlfVxuXHRcdH1cblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuZHJvcC1kb3duLW1lbnVcbmNhdGVnb3J5OiBEcm9wRG93blxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBkcm9wZG93blxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgc3R5bGVzIGEgbWVudSBpbnNpZGUgYSAuZHJvcC1kb3duLlxuXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLW1lbnVcblx0ZGl2Lml0ZW0gTWVudSAxXG5cdGRpdi5pdGVtIE1lbnUgMlxuXHRkaXYuaXRlbSBNZW51IDNcbmBgYFxuXG5Vc2VkIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIC5kcm9wLWRvd24gaXRzZWxmXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1vcGVuXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50LmRyb3AtZG93bi1tZW51XG5cdFx0ZGl2Lml0ZW0gTWVudSAxXG5cdFx0ZGl2Lml0ZW0gTWVudSAyXG5cdFx0ZGl2Lml0ZW0gTWVudSAzXG5gYGBcblxuKi9cbi5kcm9wLWRvd24tbWVudSB7XG5cblx0Ym94LXNoYWRvdzogMHB4IDFweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4xNyk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHRoZW1lLmNvbG9ycy5saW5lO1xuXHRib3JkZXItdG9wOiBub25lO1xuXG5cdD4gLml0ZW0ge1xuXG5cdFx0Ji4tbm8td3JhcCB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1x0XG5cdFx0fVxuXHRcdFxuXHRcdCYgKyAuaXRlbSB7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgdGhlbWUuY29sb3JzLmxpbmU7XG5cdFx0fVxuXHR9XG59IiwiLyohXG4tLS1cbm5hbWU6IC5kcm9wLWRvd25cbmNhdGVnb3J5OiBEcm9wRG93blxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBkcm9wZG93blxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cblRoaXMgZHJvcGRvd24gaGFzIHRoZSBzaW1wbGUgbWVjaGFuaXNtIHRvIG9wZW4gYW5kIGNsb3NlIGEgZHJvcGRvd24gY29udGVudC5cblxuVHJpZ2dlciB3aXRoIG1vdXNlb3ZlciBieSBhZGRpbmcgYC4taG92ZXJgIHZhcmlhbnRcblxuVHJpZ2dlciB3aXRoIGpzIGJ5IGFkZGluZyBgLi1vcGVuYCB2YXJpYW50IFxuXG5DbG9zZWQgRHJvcGRvd25cbmBgYGphZGVcbmRpdi5kcm9wLWRvd25cblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG4jIyBWYXJpYW50c1xuXG5WYXJpYW50cyBgLi10b3BgLCBgLi1ib3R0b21gLCBgLi1sZWZ0YCBhbmQgYC4tcmlnaHRgIGNhbiBiZSBjb21iaW5lZFxuXG5Cb3R0b20gbGVmdFxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLWJvdHRvbS4tbGVmdFxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcblxuQm90dG9tIHJpZ2h0XG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tYm90dG9tLi1yaWdodFxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcblxuVG9wIHJpZ2h0XG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1ob3Zlci4tdG9wLi1yaWdodFxuXHRkaXYudG9nZ2xlLmFpZ2lzLWRlYnVnIFRvZ2dsZVxuXHRkaXYuY29udGVudCBEcm9wZG93biBjb250ZW50XG5gYGBcblxuVG9wIGxlZnRcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi10b3AuLWxlZnRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG4jIyBBc2lkZVxuXG5UaGVyZSBpcyBhbiBgLi1hc2lkZWAgdmFyaWFudCB0byBvcGVuIGNvbnRlbnQgYXNpZGVcblxuVG9wIGxlZnQgYXNpZGVcbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi10b3AuLWxlZnQuLWFzaWRlKHN0eWxlPVwibGVmdDoyMDBweDt3aWR0aDo1MCVcIilcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cblRvcCByaWdodCBhc2lkZVxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLXRvcC4tcmlnaHQuLWFzaWRlKHN0eWxlPVwid2lkdGg6NTAlXCIpXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuIyMgUmVsYXRpdmUgY29udGVudFxuXG5UaGVyZSBpcyBhIHZhcmlhbnQgZm9yIG9wZW5pbmcgdGhlIGNvbnRlbnQgcmVsYXRpdmUgaW5zdGVhZCBvZiBhYnNvbHV0ZVxuXG5SZWxhdGl2ZVxuYGBgamFkZVxuZGl2LmRyb3AtZG93bi4taG92ZXIuLXJlbGF0aXZlKHN0eWxlPVwid2lkdGg6NTAlXCIpXG5cdGRpdi50b2dnbGUuYWlnaXMtZGVidWcgVG9nZ2xlXG5cdGRpdi5jb250ZW50IERyb3Bkb3duIGNvbnRlbnRcbmBgYFxuXG5KUyBUcmlnZ2VyXG5gYGBqYWRlXG5kaXYuZHJvcC1kb3duLi1vcGVuLi1ib3R0b20uLWxlZnRcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudFxuYGBgXG5cbiMjIERvIG5vdCB3cmFwIGNvbnRlbnRcblxuQSB2YXJpYW50IHByZXZlbnRpbmcgdGhlIGNvbnRlbnQgZnJvbSB3cmFwcGluZ1xuXG5cbmBgYGphZGVcbmRpdi5kcm9wLWRvd24uLWhvdmVyLi1ub3dyYXBcblx0ZGl2LnRvZ2dsZS5haWdpcy1kZWJ1ZyBUb2dnbGVcblx0ZGl2LmNvbnRlbnQgRHJvcGRvd24gY29udGVudCB3aXRoIHNvbWUgd2hpdGVzcGFjZXNcbmBgYFxuXG4qL1xuLmRyb3AtZG93biB7XG5cblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGN1cnNvcjogcG9pbnRlclxuXG5cdCYuLW9wZW4gPiAuY29udGVudCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQmLi1ob3Zlcjpob3ZlciA+IC5jb250ZW50e1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ji4tdG9wID4gLmNvbnRlbnQge1xuXHRcdGJvdHRvbTogMTAwJTtcblx0fVxuXG5cdCYuLWJvdHRvbSA+IC5jb250ZW50IHtcblx0XHR0b3A6IDEwMCU7XG5cdH1cblxuXHQmLi1sZWZ0ID4gLmNvbnRlbnQge1xuXHRcdGxlZnQ6IDA7XG5cdH1cblxuXHQmLi10b3AuLWxlZnQuLWFzaWRlID4gLmNvbnRlbnQge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKCAtMTAwJSwgMTAwJSApO1xuXHR9XG5cblx0Ji4tcmlnaHQgPiAuY29udGVudCB7XG5cdFx0cmlnaHQ6IDA7XG5cdH1cblxuXHQmLi10b3AuLXJpZ2h0Li1hc2lkZSA+IC5jb250ZW50IHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSggMTAwJSwgMTAwJSApO1xuXHR9XG5cblx0Ji4tcmVsYXRpdmV7XG5cdFx0PiAuY29udGVudCB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0fVxuXHR9XG5cblx0Ji4tbm93cmFwIHtcblx0XHQ+IC5jb250ZW50IHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXHR9XG5cblx0PiAudG9nZ2xlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cblxuXHQ+IC5jb250ZW50IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ei1pbmRleDogMTAwMDtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59IiwiZm9yIHNlbGVjdG9yLCBwcmVzZXRzIGluIHRoZW1lLmNvbXBvbmVudHMuaGVscGVycyB7XG4gICAgZm9yIGtleSwgdmFsdWUgaW4gcHJlc2V0cyB7XG4gICAgICAgIC5fe2tleX0ge1xuICAgICAgICAgICAge3NlbGVjdG9yfToodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnN2Zy1pY29uIHtcblxuXHRmaWxsOiBjdXJyZW50Q29sb3I7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdCYuLWlubGluZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cblx0Zm9yIHNpemUsIHZhbHVlIGluIHRoZW1lLmNvbXBvbmVudHMuc3ZnLWljb24ge1xuXHRcdFxuXHRcdGlmKCBzaXplICE9ICdkZWZhdWx0JyApIHtcblx0XHRcdCYuLXtzaXplfSB7XG5cdFx0XHRcdHt2YWx1ZX1cdFxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR7dmFsdWV9XG5cdFx0fVxuXHR9XG59XG4iLCIvKiFcbi0tLVxubmFtZTogLmFicy1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvQWJzb2x1dGVcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBzaW1wbGUgY29tcG9uZW50IHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYWJzb2x1dGUuIERlZmF1bHQgaXMgdG9wLCBsZWZ0XG5cbiMjIFZhcmlhbnRzXG5cblRoZSB2YXJpYW50cyBmb3IgdGhlIHZlcnRpY2FsIHBvc2l0aW9uaW5nIGFyZSBgLi10b3BgLCBgLi12Y2VudGVyYCBhbmQgYC4tYm90dG9tYC5cblRoZSB2YXJpYW50cyBmb3IgdGhlIGhvcml6b250YWwgcG9zaXRpb25pbmcgYXJlIGAuLXJpZ2h0YCwgYC4taGNlbnRlcmAgYW5kIGAuLWxlZnRgLlxuQWRkaXRpbmFsbHkgdGhlIGAtY2VudGVyYCB2YXJpYW50IHdpbGwgY2VudGVyIGhvcml6b250YWwgYW5kIHZlcnRpY2FsLlxuVmFyaWFudHMgdG8gc3RyZXRjaCBhbiBpdGVtIHRvIGl0cyBmdWxsIHdpZHRoL2hlaWdodCBjYW4gYmUgZGluZSB3aXRoIGAuaXRlbS4tc3RyZXRjaGAuXG5JbiBzb21lIHNpdHVhdGlvbnMgdGhlIGFicy1sYXlvdXQgaXRzZWxmIG5lZWRzIHRvIHN0cmV0Y2ggc28gdXNlIHRoZSBzdHJldGNoIHZhcmlhbnQgb24gdGhlIGNvbXBvbmVudC4gYC5hYnMtbGF5b3V0Li1zdHJldGNoYCBcblxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wLi1oY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLXJpZ2h0XG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1yaWdodC4tdmNlbnRlclxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tcmlnaHQuLWJvdHRvbVxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tLi1oY2VudGVyXG5gYGBcbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi1ib3R0b20uLWxlZnRcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWxlZnQuLXZjZW50ZXJcbmBgYFxuYGBgamFkZVxuZGl2LmFicy1sYXlvdXQoc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4XCIpXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLWxlZnQuLXRvcFxuYGBgXG5gYGBqYWRlXG5kaXYuYWJzLWxheW91dChzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwcHhcIilcbiAgICBkaXYuYWlnaXMtZGVidWcuaXRlbS4tc3RyZXRjaFxuYGBgXG5cbiMjIFotSW5kZXhcblxuRXZlcnkgaXRlbSBjYW4gY29udHJvbGwgaXRzIHogaW5kZXggd2l0aCB0aGUgYC4tentpfWB2YXJpYW50cy5cbmBgYGphZGVcbmRpdi5hYnMtbGF5b3V0KHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNTBweFwiKVxuICAgIGRpdi5haWdpcy1kZWJ1Zy5pdGVtLi10b3AuLWxlZnQuLXoxXG4gICAgZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLXRvcC4tbGVmdC4tejJcbmBgYFxuXG4qL1xuXG4uYWJzLWxheW91dHtcbiAgICBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmLi1zdHJldGNoIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICA+IC5pdGVtIHtcblxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgICAgICAgJi4tdG9we1xuICAgICAgICAgICAgdG9wOiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLXJpZ2h0e1xuICAgICAgICAgICAgcmlnaHQ6IDA7ICAgIFxuICAgICAgICB9XG5cbiAgICAgICAgJi4tYm90dG9te1xuICAgICAgICAgICAgYm90dG9tOiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWxlZnR7XG4gICAgICAgICAgICBsZWZ0OiAwOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLXZjZW50ZXJ7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTUwJSApOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLWhjZW50ZXJ7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIC01MCUgKTsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAmLi1jZW50ZXIge1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggLTUwJSwgLTUwJSApOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgICYuLXN0cmV0Y2gge1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIGkgaW4gMS4uMTAge1xuICAgICAgICAgICAgJi4tentpfSB7XG4gICAgICAgICAgICAgICAgei1pbmRleDogaTsgICAgXG4gICAgICAgICAgICB9ICAgIFxuICAgICAgICB9XG4gICAgfVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuZml4ZWQtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0ZpeGVkXG50YWc6XG4gLSBjb250YWluZXJcbi0tLVxuXG5GaXhlZCBjb250YWluZXJcbllvdSBjYW4gcG9zaXRpb24gdGhlIGNvbnRhaW5lciB3aXRoIHRoZSBkaWZmZXJlbnQgdmFyaWFudHMgYC4tdG9wYCwgYC4tYm90dG9tYCwgYC4tbGVmdGAsIGAuLXJpZ2h0YC5cblRvIHNwYW4gZnVsbCB3aWR0aCAvIGhlaWdodCB1c2UgYC4tbGVmdGAgJiBgLi1yaWdodGAgLyBgLi10b3BgICYgYC4tYm90dG9tYFxuXG5GaXhlZCB0b3AgYW5kIGZ1bGwgd2lkdGhcblxuYGBgamFkZVxuZGl2LmZpeGVkLWxheW91dC4tdG9wLi1sZWZ0Li1yaWdodC5haWdpcy1kZWJ1ZyB0b3AgbGVmdCBmdWxsd2lkdGhcbiAgICBcbmBgYFxuXG5GaXhlZCByaWdodCBhbmQgZnVsbCBoZWlnaHRcblxuYGBgamFkZVxuZGl2LmZpeGVkLWxheW91dC4tdG9wLi1ib3R0b20uLXJpZ2h0LmFpZ2lzLWRlYnVnIHRvcCByaWdodCBmdWxsaGVpZ2h0XG4gICAgXG5gYGBcblxuKi9cblxuLmZpeGVkLWxheW91dCB7XG5cdFxuICAgIHBvc2l0aW9uOmZpeGVkO1xuXG4gICAgJi4tdG9we1xuICAgICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgJi4tYm90dG9te1xuICAgICAgICBib3R0b206IDA7XG4gICAgfVxuXG4gICAgJi4tbGVmdHtcbiAgICAgICAgbGVmdDogMDtcbiAgICB9XG5cbiAgICAmLi1yaWdodHtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgfVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuZml4ZWQtcGFnZS1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvRml4ZWQgUGFnZVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBwYWdlXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBwYWdlIGxheW91dCB3aXRoIGEgZml4ZWQgaGVhZGVyIGFuZCBvcHRpb25hbCBzaWRlYmFycy5cbldpdGggdGhlIGAtbWFyZ2luLXt0b3B8bGVmdHxyaWdodH1gLCBgLW1hcmdpbi17dG9wfGxlZnR8cmlnaHR9LXNtYWxsYCB2YXJpYW50cyB5b3UgY2FuIGNvbnRyb2wgdGhlIHNwYWNpbmcuXG5JZiB0aGUgY29udGVudCBmb3IgZXhhbXBsZSBuZWVkcyBhIHNwYWNpbmcgdG93YXJkcyB0aGUgaGVhZGVyIHVzZTogYC5jb250ZW50Li1tYXJnaW4tdG9wYC5cbklmIHRoZSBzaWRlYmFyIHNob3cgYmUgYmVsb3cgdGhlIGhlYWRlciB1c2U6IGAuc2lkZWJhci4tbGVmdC4tbWFyZ2luLXRvcGAuXG5cblxuVGhlcmUgYXJlIHZhcmlhbnRzIHRvIHJlc2l6ZSB0aGUgaGVhZGVyIGFuZCBzaWRlYmFycyB0byBhIHNtYWxsZXIgd2lkdGgvaGVpZ2h0OiBgLmhlYWRlci4tc21hbGxgLCBgLnNpZGViYXIuLXNtYWxsYC5cbklmIHlvdSBuZWVkIGEgc3BhY2luZyBvbiB5b3VyIGNvbnRlbnQgb3Igc2lkZWJhciB5b3UgbmVlZCB0byBhZGp1c3QgdGhhdCBtYW51YWxseSBsaWtlIHRoaXM6XG5gYGBcbmRpdi5maXhlZC1wYWdlLWxheW91dFxuXHRkaXYuaGVhZGVyLi1zbWFsbFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCVcIikgIEhlYWRlclxuXHRkaXYuY29udGVudC4tbWFyZ2luLXRvcC1zbWFsbCBDb250ZW50XG5cdGRpdi5zaWRlYmFyLi1sZWZ0Li1tYXJnaW4tdG9wLXNtYWxsLi1zbWFsbFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cImhlaWdodDoxMDAlXCIpICBMZWZ0IFNpZGViYXJcbmBgYFxuXG4jIyBIZWFkZXIgd2l0aCBzaWRlYmFyc1xuXG5gYGBqYWRlXG5kaXYuZml4ZWQtcGFnZS1sYXlvdXRcblx0ZGl2LmhlYWRlclxuXHRcdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCVcIikgIEhlYWRlclxuXHRkaXYuY29udGVudC4tbWFyZ2luLXRvcCBDb250ZW50XG5cdGRpdi5zaWRlYmFyLi1sZWZ0Li1tYXJnaW4tdG9wXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgIExlZnQgU2lkZWJhclxuXHRkaXYuc2lkZWJhci4tcmlnaHRcblx0XHRkaXYuYWlnaXMtZGVidWcoc3R5bGU9XCJoZWlnaHQ6MTAwJVwiKSAgUmlnaHQgU2lkZWJhclxuYGBgXG4qL1xuLmZpeGVkLXBhZ2UtbGF5b3V0IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5maXhlZC1wYWdlLWxheW91dDtcblxuXG5cdD4gLmhlYWRlciB7XG5cdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGhlaWdodDogY29uZi5oZWFkZXIuZGVmYXVsdDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycztcblx0XHR6LWluZGV4OiAxMDAwO1xuXG5cdFx0Ji4tc21hbGwge1xuXHRcdFx0aGVpZ2h0OiBjb25mLmhlYWRlci5zbWFsbDtcblx0XHR9XG5cblx0XHQmLi1oaWRlIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTEwMCUgKTtcblx0XHR9XG5cdH1cblxuXHQ+IC5zaWRlYmFyIHtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0dG9wOiAwO1xuXHRcdGJvdHRvbTogMDtcblx0XHR3aWR0aDogY29uZi5zaWRlYmFyLmRlZmF1bHQ7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cdFx0ei1pbmRleDogMTAwNTtcblxuXHRcdCYuLW1hcmdpbi10b3Age1xuXHRcdFx0dG9wOiBjb25mLmhlYWRlci5kZWZhdWx0O1xuXHRcdH1cblxuXHRcdCYuLW1hcmdpbi10b3Atc21hbGwge1xuXHRcdFx0dG9wOiBjb25mLmhlYWRlci5zbWFsbDtcblx0XHR9XG5cblx0XHQmLi1zbWFsbCB7XG5cdFx0XHR3aWR0aDogY29uZi5zaWRlYmFyLnNtYWxsO1xuXHRcdH1cblxuXHRcdCYuLWxlZnQge1xuXHRcdFx0bGVmdDogMDtcblxuXHRcdFx0Ji4taGlkZSB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCggLTEwMCUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLi1yaWdodCB7XG5cdFx0XHRyaWdodDogMDtcblxuXHRcdFx0Ji4taGlkZSB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCggMTAwJSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHR9XG5cblx0PiAuY29udGVudCB7XG5cblx0XHQmLi1tYXJnaW4tbGVmdCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogY29uZi5zaWRlYmFyLmRlZmF1bHQ7XG5cdFx0fVxuXG5cdFx0Ji4tbWFyZ2luLWxlZnQtc21hbGwge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGNvbmYuc2lkZWJhci5zbWFsbDtcblx0XHR9XG5cblx0XHQmLi1tYXJnaW4tcmlnaHQge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiBjb25mLnNpZGViYXIuZGVmYXVsdDtcblx0XHR9XG5cblx0XHQmLi1tYXJnaW4tcmlnaHQtc21hbGwge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiBjb25mLnNpZGViYXIuc21hbGw7XG5cdFx0fVxuXG5cdFx0Ji4tbWFyZ2luLXRvcCB7XG5cdFx0XHRtYXJnaW4tdG9wOiBjb25mLmhlYWRlci5kZWZhdWx0O1xuXHRcdH1cblxuXHRcdCYuLW1hcmdpbi10b3Atc21hbGwge1xuXHRcdFx0bWFyZ2luLXRvcDogY29uZi5oZWFkZXIuc21hbGw7XG5cdFx0fVxuXG5cdFx0dHJhbnNpdGlvbjogbWFyZ2luIDAuMnM7XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmZsZXgtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0ZsZXhcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBsYXlvdXQgc3lzdGVtIGJhc2VkIG9uIGZsZXhib3ggdG8gYWxpZ24gYW5kIGRpc3RyaWJ1dGUgaXRlbXMgaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5LlxuXG5cbiMgQWxpZ25tZW50IG9mIGl0ZW1zXG5cblRoZSBgLWNlbnRlcmAgc2hvcnRjdXQgd2lsbCBjZW50ZXIgYWxsIGl0ZW1zIGhvcml6b250YWwgJiB2ZXJ0aWNhbFxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAxMDBweFwiKS5mbGV4LWxheW91dC4tY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuYC1iYXNlbGluZWAgd2lsbCBhbGlnbiBpdGVtcyBiYXNlZCBvbiB0aGVpciBiYXNlbGluZS4gV29ya3MgZ29vZCBpZiBhbGwgdGhlIGl0ZW1zIGNvbnRhaW4gdGV4dC4gXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWJhc2VsaW5lXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcbmBgYFxuXG5gLWl0ZW1zLXRvcGAgJiBgLWl0ZW1zLWJvdHRvbWAgd2lsbCBhbGlnbiB0aGUgaXRlbXMgZWl0aGVyIG9uIHRvcCBvciBib3R0b21cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtdG9wXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taXRlbXMtYm90dG9tXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwicGFkZGluZy10b3A6IDUwcHg7cGFkZGluZy1ib3R0b206IDMwcHg7XCIpIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcblxuYC1pdGVtcy1jZW50ZXJgIHdpbGwgY2VudGVyIHRoZSBpdGVtcyB2ZXJ0aWNhbGx5XG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAxXG5cdGRpdi5haWdpcy1kZWJ1ZyhzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O3BhZGRpbmctYm90dG9tOiAzMHB4O1wiKSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gM1xuYGBgXG5cbiMgQWxpZ25tZW50IG9mIGluZGl2aWR1YWwgaXRlbXNcblxuYGBgamFkZVxuZGl2KHN0eWxlPVwiaGVpZ2h0OiAxMDBweFwiKS5mbGV4LWxheW91dFxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tdG9wIHRvcFxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tY2VudGVyIGNlbnRlclxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tYm90dG9tIGJvdHRvbVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tc3RyZXRjaCBzdHJldGNoXG5gYGBcblxuIyBSb3cgbW9kZVxuXG5JZiB5b3UgbGlrZSBhIGNvbnRhaW5lciB0aGF0IHNwYW5zIHRoZSBmdWxsIHdpZHRoIHdpdGggaXRlbSB0aGF0IHJlc2l6ZSB0aGVtc2VsZiB5b3UgY2FuIHVzZSB0aGUgYC1yb3dgIHZhcmlhbnQuXG5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4tcm93XG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gMVxuXHRkaXYuYWlnaXMtZGVidWcuaXRlbSBJdGVtIDJcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAzXG5gYGBcblxuSWYgeW91IGxpa2UgdG8gZml4IGFuIGl0ZW0gYmFzZWQgb24gaXRzIGNvbnRlbnQgd2lkdGggdXNlIHRoZSBgLWNvbnRlbnRgIHZhcmlhbnQuXG5UaGlzIGlzIGEgc2hvcnRjdXQgZm9yIGAtbm8tZ3JvdyAtbm8tc2hyaW5rYC4gXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXJvd1xuXHRkaXYuYWlnaXMtZGVidWcuaXRlbS4tY29udGVudFxuXHRcdGltZyhzcmM9XCJodHRwOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8zNTB4ODBcIilcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0gSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cbllvdSBjYW4gY29udHJvbCB0aGUgc2l6aW5nIG9mIHRoZSBpdGVtcyB3aXRoIGAtZ3Jvd2AsIGAtc2hyaW5rYCwgYC1uby1ncm93YCwgYC1uby1zaHJpbmtgLlxuYGBgamFkZVxuZGl2LmZsZXgtbGF5b3V0Li1yb3dcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLW5vLXNocmlua1xuXHRcdGltZyhzcmM9XCJodHRwOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8zNTB4ODBcIilcblx0ZGl2LmFpZ2lzLWRlYnVnLml0ZW0uLW5vLWdyb3cgSXRlbSAyXG5cdGRpdi5haWdpcy1kZWJ1Zy5pdGVtIEl0ZW0gM1xuYGBgXG5cblxuIyBEaXN0cmlidXRpb24gb2YgaXRlbXNcblxuVXNlIGAtW3YvaF0tc3BhY2UtYXJvdW5kYCAmIGAtW3YvaF0tc3BhY2UtYmV0d2VlbmAgdG8gZGlzdHJpYnV0ZSB0aGUgaXRlbXMgaW4gdGhlIGZsZXggY29udGFpbmVyLlxuXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLWgtc3BhY2UtYXJvdW5kXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4taC1zcGFjZS1iZXR3ZWVuXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSAzXG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXYtc3BhY2UtYXJvdW5kLi13cmFwXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXYtc3BhY2UtYmV0d2Vlbi4td3JhcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5cbiMgQWxpZ25tZW50IG9mIG11bHRpbGluZSBpdGVtcyB3aXRoIHdyYXBcblxuSWYgeW91IGhhdmUgYWxvdCBvbiBpdGVtcyB0aGF0IHdyYXAgeW91IGNhbiBhbGlnbiB0aGUgbXVsdGlsaW5lcyB3aXRoIHRoZSBmb2xsb3dpbmcgdmFyaWFudHM6XG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLWgtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dC4td3JhcC4tbGVmdFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYuZmxleC1sYXlvdXQuLXdyYXAuLXJpZ2h0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLXYtY2VudGVyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAxXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAyXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciAzXG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA0XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA1XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA2XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA3XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA4XG5cdGRpdi5haWdpcy1kZWJ1ZyBJdGVtIGxvbmdlciA5XG5gYGBcbmBgYGphZGVcbmRpdihzdHlsZT1cImhlaWdodDogMjAwcHhcIikuZmxleC1sYXlvdXQuLXdyYXAuLXRvcFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgMlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgM1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNVxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgNlxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgN1xuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOFxuXHRkaXYuYWlnaXMtZGVidWcgSXRlbSBsb25nZXIgOVxuYGBgXG5gYGBqYWRlXG5kaXYoc3R5bGU9XCJoZWlnaHQ6IDIwMHB4XCIpLmZsZXgtbGF5b3V0Li13cmFwLi1ib3R0b21cblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDFcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDJcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDNcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDRcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDVcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDZcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDdcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDhcblx0ZGl2LmFpZ2lzLWRlYnVnIEl0ZW0gbG9uZ2VyIDlcbmBgYFxuXG5cblxuXG4qL1xuXG4uZmxleC1sYXlvdXQge1xuXHRcblx0ZGlzcGxheTogZmxleDtcblxuXHQmLi1pbmxpbmUge1xuXHRcdGRpc3BsYXk6IGZsZXgtaW5saW5lO1xuXHR9XG5cblx0Ji4td3JhcCB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1x0XG5cdH1cblxuXHQmLi1yb3cge1xuXHRcdGZsZXgtd3JhcDogbm93cmFwO1xuXG5cdFx0PiAuaXRlbSB7XG5cdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHR9XHRcblx0fVxuXG5cdCYuLWNvbHVtbiB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0fVxuXG5cdCYuLWNlbnRlciB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XHRcblx0fVxuXG5cdCYuLWJhc2VsaW5lIHtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdH1cblxuXHQmLi1sZWZ0IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdH1cblxuXHQmLi1yaWdodCB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0fVxuXG5cdCYuLXRvcCB7XG5cdFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcblx0fVxuXG5cdCYuLWJvdHRvbSB7XG5cdFx0YWxpZ24tY29udGVudDogZmxleC1lbmQ7XG5cdH1cblxuXHQmLi12LWNlbnRlciB7XG5cdFx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0Ji4tdi1zcGFjZS1iZXR3ZWVuIHtcblx0XHRhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHR9XG5cblx0Ji4tdi1zcGFjZS1hcm91bmQge1xuXHRcdGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcblx0fVxuXG5cdCYuLWgtY2VudGVyIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdCYuLWgtc3BhY2UtYmV0d2VlbiB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHR9XG5cblx0Ji4taC1zcGFjZS1hcm91bmQge1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuXHR9XG5cblxuXHQmLi1pdGVtcy10b3Age1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1x0XG5cdH1cblxuXHQmLi1pdGVtcy1ib3R0b20ge1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcdFxuXHR9XG5cblx0Ji4taXRlbXMtY2VudGVyIHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1x0XG5cdH1cblxuXHQmLi1pdGVtcy1zdHJldGNoIHtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdHJldGNoO1x0XG5cdH1cblxuXHQ+IC5pdGVtIHtcblxuXHRcdCYuLXN0cmV0Y2gge1xuXHRcdFx0YWxpZ24tc2VsZjogc3RyZXRjaDtcblx0XHR9XG5cblx0XHQmLi10b3Age1xuXHRcdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHR9XG5cblx0XHQmLi1jZW50ZXIge1xuXHRcdFx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHRcdH1cblxuXHRcdCYuLWJvdHRvbSB7XG5cdFx0XHRhbGlnbi1zZWxmOiBmbGV4LWVuZDtcblx0XHR9XG5cblx0XHQmLi1jb250ZW50IHtcblx0XHRcdGZsZXg6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Ji4tZ3JvdyB7XG5cdFx0XHRmbGV4LWdyb3c6IDE7XHRcblx0XHR9XG5cdFx0XG5cdFx0Ji4tc2hyaW5rIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAxO1x0XG5cdFx0fVxuXG5cdFx0Ji4tbm8tZ3JvdyB7XG5cdFx0XHRmbGV4LWdyb3c6IDA7XHRcblx0XHR9XG5cblx0XHQmLi1uby1zaHJpbmsge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XHRcblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmdyaWQtbGF5b3V0XG5jYXRlZ29yeTogTGF5b3V0L0dyaWRcbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gbGF5b3V0XG4gLSBncmlkXG4gLSByZXNwb25zaXZlXG4gLSBmbGV4Ym94XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBncmlkIGxheW91dCBzeXN0ZW0gYmFzZWQgb24gZmxleGJveC4gSXQgcHJvdmlkZXMgc2l6aW5nIHZhcmlhbnRzIHRvIHNpemUgb24gZGlmZmVyZW50IHBlcmNlbnRhZ2VzLlxuXG5cbiMjIFBlcmNlbnRhZ2UgYmFzZWQgc2l6aW5nXG5cblRoZSBlYXNpZXN0IHVzZSBjYXNlIGlzIHRvIHVzZSBzaW1wbGUgYC5pdGVtIC13MWAsIGAuaXRlbSAtdzEtMmAsIGAuaXRlbSAtdzEtM2AsIGAuaXRlbSAtdzEtNGAgZm9yIGEgcGVyY2VudGFnZSBiYXNlZCBzaWRlLWJ5LXNpZGUgcmVuZGVyaW5nLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxXG5cdGRpdi5pdGVtLi13MS0yIFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS0yXG5cdGRpdi5pdGVtLi13MS0yXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTJcblx0ZGl2Lml0ZW0uLXcxLTNcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtM1xuXHRkaXYuaXRlbS4tdzItM1xuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13Mi0zXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMlxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MS00XG5gYGBcblxuIyMgTGF5b3V0cyBvbiBkaWZmZXJlbnQgZGV2aWNlc1xuXG5UaGUgYnJlYWtwb2ludHMgZm9yIGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZ2xvYmFsIHNldHRpbmdzIGB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50c2AgYW5kIGNhbiBiZSBvdmVyd3JpdHRlbiBpbiBgdGhlbWUuY29tcG9uZW50cy5ncmlkLWxheW91dC5icmVha3BvaW50c2AuXG5UaGUgZGVmYXVsdCBzZXR0aW5ncyBkZWZpbmUgYnJlYWtwb2ludHMgd2l0aCBsYWJlbHM6IGAuLXNtYWxsLVgtWGAsIGAuLW1lZGl1bS1YLVhgLCBgLi1sYXJnZS1YLVhgLlxuXG5gYGBqYWRlXG5kaXYuZ3JpZC1sYXlvdXRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLi1zbWFsbC0xLTMuLW1lZGl1bS0xLTIuLWxhcmdlLTEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBpdGVtIC13MSAtc21hbGwtMS0zIC1tZWRpdW0tMS0yIC1sYXJnZS0xLTRcblx0ZGl2Lml0ZW0uLXcxLTIuLXNtYWxsLTEtMy4tbWVkaXVtLTEtMi4tbGFyZ2UtMS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGl0ZW0gLXcxLTIgLXNtYWxsLTEtMyAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5cdGRpdi5pdGVtLi13MS0yLi1zbWFsbC0xLi1tZWRpdW0tMS0yLi1sYXJnZS0xLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgaXRlbSAtdzEtMiAtc21hbGwtMSAtbWVkaXVtLTEtMiAtbGFyZ2UtMS00XG5gYGBcblxuXG4jIyBHdXR0ZXJcblxuSWYgeW91IG5lZWQgYSBzcGFjaW5nIGJldHdlZW4gdGhlIGNvbHVtbnMgYWRkIHRoZSBgLWd1dHRlcmAgdmFyaWFudC5cblRoZSBzaXplIG9mIHRoZSBndXR0ZXIgaXMgc3BlY2lmaWVkIGluIHRoZSBgZ3JpZC1ndXR0ZXJgdmFyaWFibGUuXG5cbmBgYGphZGVcbmRpdi5ncmlkLWxheW91dC4tZ3V0dGVyXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIGNvbCAtdzEtNFxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBjb2wgLXcxLTRcblx0ZGl2Lml0ZW0uLXcxLTJcblx0XHRkaXYuYWlnaXMtZGVidWcgY29sIC13MS0yXG5gYGBcblxuXG4jIyBSZXZlcnNlIG9yZGVyXG5cblRvIHJldmVyc2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBjb2x1bW5zIGFyZSBkaXNwbGF5ZWQsIHlvdSBjYW4gYWRkIHRoZSBtb2RpZmllciBjbGFzcyBgLi1yZXZlcnNlYCB0byB5b3VyIHRhYmxlLWdyaWQuXG5UaGUgY29sdW1ucyB3aWxsIGJlIGluIERPTSBvcmRlciB3aGVuIHZpZXdwb3J0IHN3aXRjaGVzIHRvIHNtYWxsIGxheW91dC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0Li1yZXZlcnNlXG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEZpcnN0IGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgU2Vjb25kIGNvbHVtbiBpbiBET01cblx0ZGl2Lml0ZW0uLXcxLTRcblx0XHRkaXYuYWlnaXMtZGVidWcgVGhpcmQgY29sdW1uIGluIERPTVxuXHRkaXYuaXRlbS4tdzEtNFxuXHRcdGRpdi5haWdpcy1kZWJ1ZyBGb3VydGggY29sdW1uIGluIERPTVxuYGBgXG5cbiMjIFZlcnRpY2FsIGNlbnRlcmluZ1xuXG5Zb3UgY2FuIHZlcnRpY2FsIGNlbnRlciB3aXRoIHRoZSBoZWxwIG9mIHRoZSBgZmxleC1sYXlvdXRgIGNvbXBvbmVudC5cblxuYGBgamFkZVxuZGl2LmdyaWQtbGF5b3V0LmZsZXgtbGF5b3V0XG5cdGRpdi5pdGVtLi13MS00XG5cdFx0ZGl2LmFpZ2lzLWRlYnVnIEEgY29sdW1uIHdpdGggYSBsb3Qgb2YgY29udGVudCB0aGF0IHNob3VsZCB3cmFwIG9uIGZpeGVkIHNpemUuXG5cdGRpdi5pdGVtLi1ib3R0b21cblx0XHRkaXYuYWlnaXMtZGVidWcgYm90dG9tXG5cdGRpdi5pdGVtLi1jZW50ZXJcblx0XHRkaXYuYWlnaXMtZGVidWcgY2VudGVyXG5cdGRpdi5pdGVtLi1zdHJldGNoXG5cdFx0ZGl2LmFpZ2lzLWRlYnVnKHN0eWxlPVwiaGVpZ2h0OjEwMCVcIikgc3RyZXRjaFxuYGBgXG5cbiovXG5cblxuXG4uZ3JpZC1sYXlvdXQge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLmdyaWQtbGF5b3V0O1xuXHRicmVha3BvaW50cyA9IHRoZW1lLnNldHRpbmdzLmJyZWFrcG9pbnRzO1xuXG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtd3JhcDogd3JhcDtcblxuXHQmLi1ndXR0ZXIge1xuXG5cdFx0bWFyZ2luOiAoIC0oIGNvbmYuZ3V0dGVyWzFdIC8gMiApICkgKCAtKCBjb25mLmd1dHRlclswXSAvIDIgKSApO1xuXG5cdFx0PiAuaXRlbSB7XG5cdFx0XHRwYWRkaW5nOiAoIGNvbmYuZ3V0dGVyWzFdIC8gMiApICggY29uZi5ndXR0ZXJbMF0gLyAyICk7XG5cdFx0fVxuXHR9XG5cblx0Ji4tcmV2ZXJzZSB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuXHR9XG5cblx0PiAuaXRlbSB7XG5cblx0XHRmb3IgbmFtZSwgcGVyYyBpbiBjb25mLnNpemVzIHtcblx0XHRcdCYuLXd7bmFtZX0ge1xuXHRcdFx0XHRmbGV4OiAwIDAgcGVyYztcblx0XHRcdFx0bWF4LXdpZHRoOiBwZXJjOyAvLyBpZSBmaXhcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKipcblx0XHQqIEdlbmVyYXRlIGFsbCBtZWRpYSBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgYnJlYWtwb2ludHMgdmFyaWFibGUuXG5cdFx0Ki9cblx0XHRmb3IgYnJlYWtuYW1lLCBicmVha3dpZHRoIGluIGJyZWFrcG9pbnRzIHtcblxuXHRcdFx0QG1lZGlhIGFsbCBhbmQgKCBtaW4td2lkdGg6IGJyZWFrd2lkdGggKSB7XG5cblx0XHRcdFx0Zm9yIG5hbWUsIHBlcmMgaW4gY29uZi5zaXplcyB7XG5cdFx0XHRcdFx0Ji4te2JyZWFrbmFtZX0te25hbWV9IHtcblx0XHRcdFx0XHRcdGZsZXg6IDAgMCBwZXJjO1xuXHRcdFx0XHRcdFx0bWF4LXdpZHRoOiBwZXJjOyAvLyBpZSBmaXhcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLm1heC13aWR0aC1sYXlvdXRcbmNhdGVnb3J5OiBMYXlvdXQvUGFnZVxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBsYXlvdXRcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNvbXBvbmVudCB3aWxsIGxpbWl0IGl0cyBjb250ZW50IHRvIGEgbWF4aW11bSB3aWR0aC4gRm9ydGhlcm1vcmUgaXQgY2FuIGNlbnRlciBpdHMgY29udGVudC5cblVzZWZ1bGwgZm9yIHBhZ2UgY29udGVudCB0aGF0IHNob3VsZCBub3Qgc3BhbiB0aGUgZnVsbCB3aWR0aC5cblxuXG4jIyBQZXJjZW50YWdlIGJhc2VkIHNpemluZ1xuXG4qL1xuXG5cblxuLm1heC13aWR0aC1sYXlvdXQge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLm1heC13aWR0aC1sYXlvdXQ7XG5cdGJyZWFrcG9pbnRzID0gdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHM7XG5cblx0LyoqXG5cdCogR2VuZXJhdGUgYWxsIG1lZGlhIGJyZWFrcG9pbnRzIGJhc2VkIG9uIHRoZSBicmVha3BvaW50cyB2YXJpYWJsZS5cblx0Ki9cblx0Zm9yIGJyZWFrbmFtZSwgbWF4d2lkdGggaW4gY29uZiB7XG5cblx0XHQvLyBjaGVjayBpZiBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgZXhpc3RzXG5cdFx0YnJlYWt3aWR0aCA9IGJyZWFrcG9pbnRzWyBicmVha25hbWUgXVxuXHRcdGlmKCBicmVha3dpZHRoICkge1xuXG5cdFx0XHRAbWVkaWEgYWxsIGFuZCAoIG1pbi13aWR0aDogYnJlYWt3aWR0aCApIHtcblxuXHRcdFx0XHRtYXgtd2lkdGg6IG1heHdpZHRoO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuLWNlbnRlciB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1x0XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLnNsaWRlLW92ZXJsYXlcbmNhdGVnb3J5OiBPdmVybGF5L1NsaWRlXG50YWc6XG4gLSByb2xsb3ZlclxuIC0gc2xpZGVcbiAtIG92ZXJsYXlcbi0tLVxuXG5Sb2xsb3ZlciBjb21wb25lbnQgLSBjb250ZW50IHJvbGxvdmVyIHJvbGxzIGluIC0gZGVmYXVsdCBmcm9tIGJvdHRvbVxuXG5UcmlnZ2VyIHdpdGggbW91c2Vyb3ZlciBieSBhZGRpbmcgYC4taG92ZXJgIHZhcmlhbnRcblxuVHJpZ2dlciB3aXRoIGpzIGJ5IGFkZGluZyBgLi1zaG93YCB2YXJpYW50XG5cbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li1ob3ZlclxuICAgIGRpdiBTb21lIG1haW4gY29udGVudFxuICAgIGRpdi5yb2xsb3ZlciBSb2xsb3ZlciBjb250ZW50XG5gYGBcblxuUm9sbG92ZXIgY29tcG9uZW50IHZhcmlhbnQgLWxlZnRcbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li1sZWZ0Li1ob3ZlclxuICAgIGRpdiBTb21lIG1haW4gY29udGVudFxuICAgIGRpdi5yb2xsb3ZlciBSb2xsb3ZlciBjb250ZW50XG5gYGBcblxuUm9sbG92ZXIgY29tcG9uZW50IHZhcmlhbnQgLXJpZ2h0XG5gYGBqYWRlXG5kaXYuc2xpZGUtb3ZlcmxheS4tcmlnaHQuLWhvdmVyXG4gICAgZGl2IFNvbWUgbWFpbiBjb250ZW50XG4gICAgZGl2LnJvbGxvdmVyIFJvbGxvdmVyIGNvbnRlbnRcbmBgYFxuXG5Sb2xsb3ZlciBjb21wb25lbnQgdmFyaWFudCAtdG9wXG5gYGBqYWRlXG5kaXYuc2xpZGUtb3ZlcmxheS4tdG9wLi1ob3ZlclxuICAgIGRpdiBTb21lIG1haW4gY29udGVudFxuICAgIGRpdi5yb2xsb3ZlciBSb2xsb3ZlciBjb250ZW50XG5gYGBcblxuUm9sbG92ZXIgY29tcG9uZW50IHZhcmlhbnQgLXRvcCB3aXRoIGpzIHRyaWdnZXJcbmBgYGphZGVcbmRpdi5zbGlkZS1vdmVybGF5Li10b3AuLXNob3dcbiAgICBkaXYgU29tZSBtYWluIGNvbnRlbnRcbiAgICBkaXYucm9sbG92ZXIgUm9sbG92ZXIgY29udGVudFxuYGBgXG4qL1xuLnNsaWRlLW92ZXJsYXkge1xuXHRcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLnNsaWRlLW92ZXJsYXk7XG5cbiAgICA+IC5yb2xsb3ZlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggMCwgMTAwJSApO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gY29uZi50cmFucy1kdXJhdGlvbiBlYXNlO1xuICAgIH1cblxuICAgICYuLWxlZnQge1xuICAgICAgICA+IC5yb2xsb3ZlcntcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKCAtMTAwJSwgMCApO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuLXJpZ2h0IHtcbiAgICAgICAgPiAucm9sbG92ZXJ7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggMTAwJSwgMCApO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi10b3Age1xuICAgICAgICA+IC5yb2xsb3ZlcntcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKCAwLCAtMTAwJSApO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi4tc2hvdyA+IC5yb2xsb3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKCAwLCAwICk7XG4gICAgfVxuXG4gICAgXG4gICAgJi4taG92ZXI6aG92ZXIgPiAucm9sbG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSggMCwgMCApO1xuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmNvbnRyb2wtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IFJlc3BvbnNpdmUvQ29udHJvbFxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuIC0gZGlzcGxheVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkNvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIGFuIGVsZW1lbnQgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRcblxuIyMgSGlkZVxuXG5gLi1oaWRlLW1lZGl1bWAgaGlkZXMgYW4gZWxlbWVudCBhcyBsb25nIGFzIHRoZSBzY3JlZW4gaXMgd2lkZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBgbWVkaXVtYC5cblxuYGBgamFkZVxuZGl2LmNvbnRyb2wtcmVzcG9uc2l2ZS4taGlkZS1tZWRpdW0gT25seSBzaG93biB3aGVuIHRoZSBzY3JlZW4gaXMgd2lkZXIgdGhhbiB0aGUgYnJlYWtwb2ludCBtZWRpdW1cbmBgYFxuXG4jIyBTaG93XG5cbmAuLXNob3ctbWVkaXVtYCBzaG93IGFuIGVsZW1lbnQgYXMgbG9uZyBhcyB0aGUgc2NyZWVuIGlzIG5hcnJvd2VyIHRoYW4gdGhlIGJyZWFrcG9pbnQgYG1lZGl1bWAuXG5cbmBgYGphZGVcbmRpdi5jb250cm9sLXJlc3BvbnNpdmUuLXNob3ctbWVkaXVtIE9ubHkgc2hvd24gd2hlbiB0aGUgc2NyZWVuIGlzIG5hcnJvd2VyIHRoYW4gdGhlIGJyZWFrcG9pbnQgYG1lZGl1bWBcbmBgYFxuXG4qL1xuXG5cbi5jb250cm9sLXJlc3BvbnNpdmUge1xuXG5cdGJyZWFrcG9pbnRzID0gdGhlbWUuc2V0dGluZ3MuYnJlYWtwb2ludHM7XG5cblx0Zm9yIGJyZWFrbmFtZSwgYnJlYWt3aWR0aCBpbiBicmVha3BvaW50cyB7XG5cdFx0Ji4taGlkZS17IGJyZWFrbmFtZSB9IHtcblx0XHRcdEBtZWRpYSBhbGwgYW5kICggbWF4LXdpZHRoOiBicmVha3dpZHRoICkge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQmLi1zaG93LXsgYnJlYWtuYW1lIH0ge1xuXHRcdFx0QG1lZGlhIGFsbCBhbmQgKCBtaW4td2lkdGg6IGJyZWFrd2lkdGggKSB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59IiwiLmhpZGUtcmVzcG9uc2l2ZSB7XG5cblx0YnJlYWtwb2ludHMgPSB0aGVtZS5zZXR0aW5ncy5icmVha3BvaW50cztcblxuXHRmb3IgYnJlYWtuYW1lLCBicmVha3dpZHRoIGluIGJyZWFrcG9pbnRzIHtcblx0XHQmLi17IGJyZWFrbmFtZSB9IHtcblx0XHRcdEBtZWRpYSBhbGwgYW5kICggbWF4LXdpZHRoOiBicmVha3dpZHRoICkge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIi8qIVxuLS0tXG5uYW1lOiAuaW1hZ2UtcmVzcG9uc2l2ZVxuY2F0ZWdvcnk6IFJlc3BvbnNpdmUvSW1hZ2VcbnRhZzpcbiAtIHJlc3BvbnNpdmVcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNsYXNzIG1ha2VzIHRoZSBpbWFnZSBzY2FsaW5nIHRvIGl0cyBtYXggd2lkdGguXG5cbmBgYGphZGVcbmltZy5pbWFnZS1yZXNwb25zaXZlKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbmBgYFxuXG4jIyBWYXJpYW50c1xuXG5gLi1mdWxsYCBmb3JjZXMgdGhlIHBpY3R1cmUgdG8gc3BhbiB0byAxMDAlIG9mIHRoZSBwYXJlbnRcblxuYGBgamFkZVxuaW1nLmltYWdlLXJlc3BvbnNpdmUuLWZ1bGwoc3JjPSdodHRwOi8vd3d3LmJ5dWkuZWR1L2ltYWdlcy9hZ3JpY3VsdHVyZS1saWZlLXNjaWVuY2VzL2Zsb3dlci5qcGcnKVxuYGBgXG4qL1xuXG4uaW1hZ2UtcmVzcG9uc2l2ZSB7XG5cdG1heC13aWR0aDogMTAwJTtcblx0aGVpZ2h0OiBhdXRvO1xuXHRkaXNwbGF5OiBibG9jaztcblxuXHQmLi1mdWxse1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0Ji4taW5zZXQge1xuXHRcdG1heC1oZWlnaHQ6IDEwMCU7XHRcblx0fVxufVxuIiwiLyohXG4tLS1cbm5hbWU6IC5tZWRpYS1yZXNwb25zaXZlXG5jYXRlZ29yeTogUmVzcG9uc2l2ZS9NZWRpYVxudGFnOlxuIC0gcmVzcG9uc2l2ZVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbmAubWVkaWEtcmVzcG9uc2l2ZWAgLSBUaGlzIG1ha2VzIGEgdGhlIGAubWVkaWEtcmVzcG9uc2l2ZWAgZGl2IGEgY29udGFpbmVyIGZvciBhbnkgbWVkaWEgZWxlbWVudCAoaWZyYW1lLCB2aWRlbywgLi4uICkgdGhhdCByZXNwb25zaXZlIHNjYWxlcyB3aXRoIGEgZml4IHJhdGlvLlxuVGhlIG1lZGlhIGVsZW1lbnQgKCBjaGlsZCApIG5lZWRzIHRoZSBjbGFzcyBgLm1lZGlhYCB0byBmdWxseSBmaWxsIG91dCB0aGUgcGFyZW50cyBzaXplLlxuXG5UaGUgYC5tZWRpYS1yZXNwb25zaXZlYCBjb21wb25lbnQgaGFzIHRvIHByZWRlZmluZWQgbW9kaWZpZXJzOiBgLi1tZWRpYS00LTNgLCBgLi1tZWRpYS0xNi05YCB0aGF0IGRlZmluZSBhIGZpeCByYXRpby5cblxuYGBgamFkZVxuZGl2Lm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTE2LTlcblx0aWZyYW1lLm1lZGlhKHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1RDZDZQZnhPeTBZXCIpXG5gYGBcblxuYGBgamFkZVxuZGl2Lm1lZGlhLXJlc3BvbnNpdmUuLW1lZGlhLTQtM1xuXHRpZnJhbWUubWVkaWEoc3JjPVwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvVENkNlBmeE95MFlcIilcbmBgYFxuXG4qL1xuLm1lZGlhLXJlc3BvbnNpdmUge1xuXG5cdGNvbmYgPSB0aGVtZS5jb21wb25lbnRzLm1lZGlhLXJlc3BvbnNpdmU7XG5cblx0d2lkdGg6IDEwMCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZy1ib3R0b206IHZhbHVlcyggY29uZi5yYXRpb3MgKVswXTtcblxuXHRmb3IgbmFtZSwgdmFsdWUgaW4gY29uZi5yYXRpb3Mge1xuXHRcdCYuLW1lZGlhLXtuYW1lfSB7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogdmFsdWU7XG5cdFx0fVxuXHR9XG5cblx0PiAubWVkaWEge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLm92ZXJmbG93LXRleHRcbmNhdGVnb3J5OiBUZXh0XG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHRleHRcbmNvbXBpbGU6IHRydWVcbi0tLVxuXG5UaGlzIGNvbXBvbmVudCBjdXRzIHRoZSB0ZXh0IG9uIGEgZ2l2ZW4gaGVpZ2h0IGFuZCBhZGRzIGEgZmFkZW91dCBlZmZlY3QuXG5UaGlzIGlzIHVzZWZ1bGwgZm9yIHRleHQgY29udGFpbmVycyB0aGF0IGhhdmUgbW9yZSBjb250ZW50IHRoYW4gc3BhY2UuXG5cblxuYGBgamFkZVxuZGl2Lm92ZXJmbG93LXRleHQoc3R5bGU9XCJ3aWR0aDogMjAwcHg7aGVpZ2h0OiA3MHB4XCIpIFRoaXMgaXMgYSB2ZXJ5IGxvbmcgdGV4dCB0aGF0IGlzIHJ3YXBlZCBhbmQgY3V0IGF0IHRoZSBlbmQuXG5gYGBcbiovXG5cbi5vdmVyZmxvdy10ZXh0IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5vdmVyZmxvdy10ZXh0O1xuXG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGJvdHRvbTogMDtcblx0XHRyaWdodDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdGhlaWdodDogY29uZi5oZWlnaHQ7XG5cdFx0YmFja2dyb3VuZDogY29uZi5ncmFkaWVudDtcbiAgICB9XG59XG5cblxuIiwiLyohXG4tLS1cbm5hbWU6IC50ZXh0LXN0eWxlXG5jYXRlZ29yeTogVGV4dFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0ZXh0XG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSB0ZXh0IHN0eWxpbmcgY29tcG9uZW50IGZvciBkaWZmZXJlbnQgdGV4dCBzdHlsZXNcblxuIyMgRGVmYXVsdCBoZWFkaW5nXG5cbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlIERlZmF1bHQgaGVhZGluZ1xuYGBgXG5cbiMjIEgxXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4taDEgVGhlIGgxIGhlYWRlclxuXG5gYGBcblxuIyMgSDJcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1oMiBUaGUgaDIgaGVhZGVyXG5gYGBcblxuIyMgSDNcbmBgYGphZGVcbmRpdi50ZXh0LXN0eWxlLi1oMyBUaGUgaDMgaGVhZGVyXG5gYGBcblxuIyMgQm9sZFxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLWJvbGQgQm9sZCB0ZXh0XG5gYGBcblxuIyMgQWxpZ24gY2VudGVyXG5gYGBqYWRlXG5kaXYudGV4dC1zdHlsZS4tY2VudGVyIENlbnRlcmVkIHRleHRcbmBgYFxuXG4jIyBBbGlnbiByaWdodFxuYGBgamFkZVxuZGl2LnRleHQtc3R5bGUuLXJpZ2h0IFJpZ2h0IGFsaWduZWQgdGV4dFxuYGBgXG5cbiovXG5cblxuXG4udGV4dC1zdHlsZSB7XG5cblx0Zm9yIG5hbWUsIHZhbHVlIGluIHRoZW1lLmNvbXBvbmVudHMudGV4dC1zdHlsZSB7XG5cdFxuXHRcdFxuXHRcdCYuLXtuYW1lfSB7XG5cdFx0XHR7dmFsdWV9XG5cdFx0fVxuICAgICAgICBcblx0fVxufVxuXG5cbiIsIi5jb2xsYXBzZS11aSB7XG5cblx0PiAuY29udGVudCB7XG5cblx0XHQmLi10cmFuc2l0aW9uIHtcblx0XHRcdHRyYW5zaXRpb246IGhlaWdodCB0aGVtZS5zZXR0aW5ncy50cmFuc2l0aW9uLWR1cmF0aW9uIGVhc2U7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdH1cblx0fVxuXG5cdCYuLWNsb3NlIHtcblx0XHQ+IC5jb250ZW50IHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmNvbGxhcHNlLWljb24ge1xuXHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoIDkwZGVnICk7XG5cdFx0fVxuXHR9XG5cblx0LmNvbGxhcHNlLWljb24ge1xuXHRcdHRyYW5zaXRpb246IGFsbCB0aGVtZS5zZXR0aW5ncy50cmFuc2l0aW9uLWR1cmF0aW9uIGVhc2U7XG5cdH1cbn0iLCIuYWN0aW9uLWdyb3VwIHtcbiAgICAmLi12IHtcbiAgICAgICAgPiAqICsgKiB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIH0gICAgXG4gICAgfVxuXG4gICAgJi4taCB7XG4gICAgICAgID4gKiArICoge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgfSAgICBcbiAgICB9XG59IiwiLmFydGljbGUtZWxlbWVudCB7XG5cblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRtYXJnaW4tbGVmdDogKCB0aGVtZS5jb21wb25lbnRzLnBhZGRpbmctYm94LmRlZmF1bHQgKyByZW0oIDI4cHggKSApO1xuXHRtYXJnaW4tdG9wOiB0aGVtZS5jb21wb25lbnRzLm1hcmdpbi1ib3guZGVmYXVsdDtcblx0dHJhbnNpdGlvbjogYWxsIHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb247XG5cblx0aDEge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdGZvbnQtc2l6ZTogcmVtKCA0MHB4ICk7XG5cdFx0bGluZS1oZWlnaHQ6IGluaXRpYWw7XG5cdH1cblxuXHRoMiB7XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0Zm9udC1zaXplOiByZW0oIDMwcHggKTtcblx0XHRsaW5lLWhlaWdodDogaW5pdGlhbDtcblx0fVxuXG5cdGgzIHtcblx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRmb250LXNpemU6IHJlbSggMjJweCApO1xuXHRcdGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xuXHR9XG5cblx0aDQge1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdGZvbnQtc2l6ZTogcmVtKCAxNnB4ICk7XG5cdFx0bGluZS1oZWlnaHQ6IGluaXRpYWw7XG5cdH1cblxuXHRsaSB7XG5cdFx0bWFyZ2luLWxlZnQ6IHJlbSggMjRweCApO1xuXHR9XG5cblx0PiAuY29udGVudCB7XG5cdFx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjQUZCMEFGO1xuXHRcdHBhZGRpbmctbGVmdDogdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5tZWRpdW07XG5cdFx0dHJhbnNpdGlvbjogYWxsIHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb247XG5cblx0XHQ+ICoge1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb247XG5cblx0XHRcdCYgKyAqIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogdGhlbWUuY29tcG9uZW50cy5tYXJnaW4tYm94LnNtYWxsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdD4gLm9wdGlvbnMge1xuXHRcdGJvcmRlci1sZWZ0OiAzcHggc29saWQgI0FGQjBBRjtcblx0XHRwYWRkaW5nOiAwIHRoZW1lLmNvbXBvbmVudHMucGFkZGluZy1ib3gubWVkaXVtO1xuXHRcdGhlaWdodDogMDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgdGhlbWUuc2V0dGluZ3MudHJhbnNpdGlvbi1kdXJhdGlvbjtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdFx0LmdyaWQtbGF5b3V0Li1ndXR0ZXIge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG5cblx0PiAubGVmdCB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCggLTEwMCUgKTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHR0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzLCBvcGFjaXR5IHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb24gbGluZWFyO1xuXHRcdGNvbG9yOiAjQUZCMEFGO1xuXHR9XG5cblx0PiAudG9wIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTEwMCUgKTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHR0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDBzLCBvcGFjaXR5IHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb24gbGluZWFyO1xuXHRcdGNvbG9yOiAjQUZCMEFGO1xuXG5cdFx0QGV4dGVuZHMgLmZsZXgtbGF5b3V0O1xuXHR9XG5cblx0PiAuYm90dG9tIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRoZWlnaHQ6IDA7XG5cdFx0dHJhbnNpdGlvbjogYWxsIHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb247XG5cdH1cblxuXHQmLi1mb2N1cyB7XG5cblx0XHRtYXJnaW4tbGVmdDogcmVtKCAyOHB4ICk7XG5cdFx0bWFyZ2luLXRvcDogdGhlbWUuY29tcG9uZW50cy5tYXJnaW4tYm94Lm1lZGl1bTtcblxuXHRcdD4gLmNvbnRlbnQge1xuXG5cdFx0XHQ+IC5jZS1lbGVtZW50LFxuXHRcdFx0PiAuZm9jdXMge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXHRcdFx0XHRwYWRkaW5nOiB0aGVtZS5jb21wb25lbnRzLnBhZGRpbmctYm94LmRlZmF1bHQ7XG5cblx0XHRcdFx0Ji50ZXh0LXN0eWxle1xuXG5cdFx0XHRcdFx0Ji4taW5kZW50LTF7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbSggMzBweCApO1xuXHRcdFx0XHRcdH1cdFxuXHRcdFx0XHRcdCYuLWluZGVudC0ye1xuXHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiByZW0oIDYwcHggKTtcblx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHQmLi1pbmRlbnQtM3tcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogcmVtKCA5MHB4ICk7XG5cdFx0XHRcdFx0fVx0XG5cdFx0XHRcdFx0Ji4taW5kZW50LTR7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbSggMTIwcHggKTtcblx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHQmLi1pbmRlbnQtNXtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDogcmVtKCAxNTBweCApO1xuXHRcdFx0XHRcdH1cdFxuXHRcdFx0XHRcdCYuLWluZGVudC02e1xuXHRcdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiByZW0oIDE4MHB4ICk7XG5cdFx0XHRcdFx0fVx0XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0aGVtZS5jb2xvcnMuYWN0aW9uO1xuXHRcdH1cblxuXHRcdD4gLm9wdGlvbnMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0aGVtZS5jb2xvcnMuYWN0aW9uO1xuXHRcdH1cblxuXHRcdD4gLmxlZnQge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdFx0fVxuXG5cdFx0PiAudG9wIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdH1cblxuXHRcdD4gLmJvdHRvbSB7XG5cdFx0XHRoZWlnaHQ6IHJlbSggNDlweCApO1xuXHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdFx0fVxuXHR9XG59IiwiLmFydGljbGUtdG9vbGJhciB7XG5cblx0Ji4tY29udGV4dCB7XG5cdFx0PiAuZm9ybWF0cyB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cdFxuXHR9XG5cblx0LmxpbmstY29udGV4dCB7XG5cblx0XHQ+IC50YXJnZXQge1xuXG5cdFx0XHQmLi1lbmFibGVkIHtcblx0XHRcdFx0Y29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb247XG5cdFx0XHR9XG5cdFx0fVx0XG5cdH1cblxuXHQuZm9ybS1pbnB1dCB7XG5cdFx0Y29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0O1x0XG5cdH1cbn0iLCIuYnJhbmNoLXBhdGgge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuYm9keTtcblx0Ym9yZGVyLXJhZGl1czogdGhlbWUuc2V0dGluZ3MuYm9yZGVyLXJhZGl1cztcblx0Ym9yZGVyOiAxcHggc29saWQgdGhlbWUuY29sb3JzLmFjdGlvbjtcblx0bWFyZ2luLXJpZ2h0OiB0aGVtZS5jb21wb25lbnRzLm1hcmdpbi1ib3guc21hbGw7XG5cdG1hcmdpbi1ib3R0b206IHRoZW1lLmNvbXBvbmVudHMubWFyZ2luLWJveC5zbWFsbDtcblxuXHQ+IC5hY3Rpb24ge1xuXG5cdFx0PiBkaXYge1xuXHRcdFx0cGFkZGluZzogcmVtKCA2cHggKTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0fVxuXHR9XG5cblx0LmxldmVsICsgLmxldmVsOmJlZm9yZSB7XG5cdFx0Y29udGVudDogJz4nO1xuXHRcdHBhZGRpbmc6IDAgcmVtKCAycHggKTtcblx0fVxufSIsIi5icmFuY2gtc2VsZWN0b3Ige1xuXG5cdD4gLnNpYmxpbmcge1xuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmJvZHk7XG5cdFx0fSBcblxuXHRcdD4gLmludG8ge1xuXHRcdFx0Y29sb3I6IHRoZW1lLmNvbG9ycy5wbGFjZWhvbGRlcjtcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRjb2xvcjogIzU5NUFGRTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG59IiwiLmJ1dHRvbi1ncm91cCB7XG5cblx0LmJ1dHRvbi1zdHlsZSB7XG5cdFx0XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdGhlbWUuc2V0dGluZ3MuYm9yZGVyLXJhZGl1cztcdFxuXHRcdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdGhlbWUuc2V0dGluZ3MuYm9yZGVyLXJhZGl1cztcdFxuXHRcdH1cblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdGhlbWUuc2V0dGluZ3MuYm9yZGVyLXJhZGl1cztcdFxuXHRcdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHRoZW1lLnNldHRpbmdzLmJvcmRlci1yYWRpdXM7XHRcblx0XHR9XG5cblx0XHQmICsgLmJ1dHRvbi1zdHlsZSB7XG5cdFx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICNmZmY7XG5cdFx0fVxuXHR9XHRcbn0iLCIuY2UtZWxlbWVudC0tZW1wdHl7XG5cbiAgICAmOmFmdGVye1xuICAgICAgICBjb250ZW50OiAnLic7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH0gICAgXG4gICAgXG59IiwiLyohXG4tLS1cbm5hbWU6IC5jcnVtYi1pdGVtXG5jYXRlZ29yeTogRGF0ZW5lZGl0b3IvQnJlYWRjcnVtYlxudGFnOlxuIC0gY29tcG9uZW50XG4gLSBkYXRlbmVkaXRvclxuIC0gbmF2aWdhdGlvblxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgaXRlbSBmb3IgdGhlIGJyZWFkY3J1bWIgbmF2aWdhdGlvblxuXG5TaW5nbGUgaXRlbVxuXG5gYGBqYWRlXG5kaXYuY3J1bWItaXRlbSBTaW5nbGUgaXRlbVxuYGBgXG5cbk11bHRpcGxlIEl0ZW1zXG5cbmBgYGphZGVcbmRpdi5mbGV4LWxheW91dFxuICAgIGRpdi5jcnVtYi1pdGVtLml0ZW0uLWNlbnRlci50ZXh0LXN0eWxlLi1zbWFsbChzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweFwiKSBGaXJzdCBpdGVtIFxuICAgIGRpdi5jcnVtYi1pdGVtLml0ZW0uLWNlbnRlci50ZXh0LXN0eWxlLi1zbWFsbCBTZWNvbmQgaXRlbVxuYGBgXG4qL1xuLmNydW1iLWl0ZW0ge1xuICAgIFxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBoZWlnaHQ6IHJlbSggNDFweCApO1xuICAgIHBhZGRpbmctdG9wOiByZW0oIDhweCApO1xuICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMudGV4dC1ncmF5O1xuXHRmb250LXNpemU6IHJlbSggMTJweCApO1xuXG4gICAgJjpsYXN0LWNoaWxke1xuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdGhlbWUuY29sb3JzLmFjdGlvbjtcbiAgICAgICAgY29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0OyAgXG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDsgXG4gICAgfVxufSIsIi5kaWFsb2ctYm94LXN0YWNrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICB0b3A6IHJlbSggOTJweCApO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIC01MCUgKTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKCAxMDB2aCAtIChyZW0oOTJweCkpICk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgID4gLmRpYWxvZy1ib3g6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0oIDVweCApO1xuICAgIH1cblxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgID4gLmRpYWxvZy1ib3gge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB9XG59XG4iLCJjb25mID0gdGhlbWUuY29tcG9uZW50cy5kaWFsb2ctYm94O1xuXG4uZGlhbG9nLWJveCB7XG5cdHdpZHRoOiByZW0oIDQxNnB4ICk7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGQ0Y5RTg7XG5cdGNvbG9yOiAjNTI1MDA5O1xuXHRib3JkZXI6IHJlbSggMXB4ICkgc29saWQgI0VERTM5ODtcblx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXG5cdC5jbG9zZS1idXR0b24ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICM1MjUwMDk7XG5cdFx0Y29sb3I6ICNGQ0Y5RTg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTAwJTtcblx0fVxuXG5cdGZvciBrZXksIHZhbHVlIGluIGNvbmYge1xuXHRcdCYuLXtrZXl9IHtcblx0XHRcdHt2YWx1ZX1cblx0XHR9XG5cdH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmRyb3Bkb3duLWJ1dHRvblxuY2F0ZWdvcnk6IEJ1dHRvbnMvRHJvcGRvd25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gYnV0dG9uXG4gLSBkYXRlbmVkaXRvclxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgZHJvcGRvd24gYnV0dG9uIHdpdGggYSBwcmltYXJ5IGFjdGlvbiBhbmQgc2Vjb25kYXJ5IGFjdGlvbnMuXG5cbkNsb3NlZCBzdGF0ZVxuYGBgamFkZVxuYnV0dG9uLmRyb3Bkb3duLWJ1dHRvbi5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyLmRyb3AtZG93bi4tYm90dG9tLi1yaWdodFxuXHRkaXYubWFpblxuXHRcdGRpdi5wcmltYXJ5LWJ1dHRvbiBNYWluIGFjdGlvblxuXHRkaXYudG9nZ2xlIFRvZ2dsZVxuXHRkaXYuY29udGVudFxuXHRcdGRpdi5wcmltYXJ5LWJ1dHRvbiBTZWNvbmRhcnkgYWN0aW9uXG5cdFx0ZGl2LnByaW1hcnktYnV0dG9uIFNlY29uZGFyeSBhY3Rpb25cbmBgYFxuXG5PcGVuIHN0YXRlXG5gYGBqYWRlXG5idXR0b24uZHJvcGRvd24tYnV0dG9uLmZsZXgtbGF5b3V0Li1pdGVtcy1jZW50ZXIuZHJvcC1kb3duLi1ib3R0b20uLXJpZ2h0Li1vcGVuXG5cdGRpdi5tYWluXG5cdFx0ZGl2LnByaW1hcnktYnV0dG9uIE1haW4gYWN0aW9uXG5cdGRpdi50b2dnbGUgVG9nZ2xlXG5cdGRpdi5jb250ZW50XG5cdFx0ZGl2LnByaW1hcnktYnV0dG9uIFNlY29uZGFyeSBhY3Rpb25cblx0XHRkaXYucHJpbWFyeS1idXR0b24gU2Vjb25kYXJ5IGFjdGlvblxuYGBgXG4qL1xuXG4uZHJvcGRvd24tYnV0dG9uIHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5kcm9wZG93bi1idXR0b247XG5cblx0YmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmFjdGlvbjtcblx0Y29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0LWludmVydGVkO1xuXHRib3JkZXItcmFkaXVzOiBjb25mLmJvcmRlci1yYWRpdXM7XG5cblx0PiAudG9nZ2xle1xuXHRcdG1hcmdpbi1sZWZ0OiBjb25mLm1hcmdpbjtcblx0XHRtYXJnaW4tcmlnaHQ6IGNvbmYubWFyZ2luO1xuXHR9XG5cblx0Ji4tb3Blbntcblx0XHQ+IC50b2dnbGV7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSggLTkwZGVnICk7XG5cdFx0fVx0XG5cdH1cblxuXHQmLi1yaWdodHtcblx0XHQ+IC5jb250ZW50e1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVx0XG5cdH1cblxufSIsIi5lZGl0b3ItdGFiIHtcblx0XG5cdD4gLmhlYWRlciB7XG5cblx0fVxuXG5cdD4gLml0ZW1zIHtcblx0XHRAZXh0ZW5kcyAuZmxleC1sYXlvdXQ7XG5cdFx0QGV4dGVuZHMgLmZsZXgtbGF5b3V0Li1pdGVtcy1jZW50ZXI7XG5cdFx0XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRoZW1lLmNvbG9ycy5saW5lO1xuXHRcdHBhZGRpbmc6IDAgdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5kZWZhdWx0O1xuXHR9XG5cblxufVxuXG4udGFiLWl0ZW0ge1xuXHRwYWRkaW5nOiB0aGVtZS5jb21wb25lbnRzLnBhZGRpbmctYm94LmRlZmF1bHQgdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5kZWZhdWx0O1xuXHRAZXh0ZW5kcyAuZmxleC1sYXlvdXQ7XG5cdEBleHRlbmRzIC5mbGV4LWxheW91dC4taXRlbXMtY2VudGVyO1xuXG5cdGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5saW5lO1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiB0aGVtZS5zZXR0aW5ncy5ib3JkZXItcmFkaXVzO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdGhlbWUuc2V0dGluZ3MuYm9yZGVyLXJhZGl1cztcblxuXHRjdXJzb3I6IHBvaW50ZXI7XG5cblxuXHQmLi1hY3RpdmUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb247XG5cdFx0Y29sb3I6IHRoZW1lLmNvbG9ycy50ZXh0LWludmVydGVkO1xuXHR9XG5cblx0PiAuY29udGVudCB7XG5cdFx0bWF4LXdpZHRoOiAxMGNoO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdD4gLmFjdGlvbnMge1xuXHRcdHBhZGRpbmctbGVmdDogdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5kZWZhdWx0O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdH1cblx0JiArIC50YWItaXRlbSB7XG5cdFx0bWFyZ2luLWxlZnQ6IHRoZW1lLmNvbXBvbmVudHMucGFkZGluZy1ib3guZGVmYXVsdDtcdFxuXHR9XG59IiwiLmVkaXRvci10YWJsZS1jZWxse1xuICAgIFxuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiByZW0oIDEycHggKTtcblxuICAgICYuLWFjdGlvbnN7XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICAgICAgY29sb3I6IHRoZW1lLmNvbG9ycy5wbGFjZWhvbGRlcjtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAgICAgICA+ICoge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTRweDsgLy8gZG9udCBhc2tcblxuICAgICAgICAgICAgJiArICoge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5kZWZhdWx0OyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn0iLCIuZWRpdG9yLXRhYmxlLXJvd3tcbiAgICBcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgXG4gICAgJiArIC5lZGl0b3ItdGFibGUtcm93IHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHRoZW1lLmNvbG9ycy5saW5lOyAgICBcbiAgICB9XG5cbiAgICAmLi1oZWFkZXIge1xuICAgICAgICAuZWRpdG9yLXRhYmxlLWNlbGwge1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH0gICAgXG4gICAgfVxuXG4gICAgJi4tZWRpdGFibGUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCB0aGVtZS5jb2xvcnMuYm9keSwgNzAlICk7ICAgIFxuICAgICAgICB9IFxuICAgIH1cblxuICAgICYuLXNlbGVjdGVke1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMubGluZTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB0aGVtZS5jb2xvcnMuYWN0aW9uO1xuICAgIH1cblxuICAgICYuLWRpc2FibGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCB0aGVtZS5jb2xvcnMuYm9keSwgMTAlICk7IFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgXG4gICAgfSBcbn0iLCJcblxuLmVkaXRvci10YWJsZXtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXG4gICAgPiAuZWRpdG9yLXRhYmxlLWdyb3VwIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwO1xuICAgIH1cbn0iLCIvKiFcbi0tLVxubmFtZTogLmZvcm0tYm94XG5jYXRlZ29yeTogQm94L0Zvcm1cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gZm9ybVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgYm94IHRvIHN0eWxlIGZvcm0gaW5wdXRzXG5cbmBgYGphZGVcbmRpdi5mb3JtLWJveFxuICAgIGlucHV0LmZvcm0taW5wdXQocGxhY2Vob2xkZXI9XCJzZWFyY2hcIilcbmBgYFxuXG5gYGBqYWRlXG5kaXYuZm9ybS1ib3hcbiAgICBzdmcuaWNvbi5zdmctaWNvbih4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDU2Ljk2NiA1Ni45NjZcIilcbiAgICAgICAgcGF0aChkPVwiTTU1LjE0Niw1MS44ODdMNDEuNTg4LDM3Ljc4NmMzLjQ4Ni00LjE0NCw1LjM5Ni05LjM1OCw1LjM5Ni0xNC43ODZjMC0xMi42ODItMTAuMzE4LTIzLTIzLTIzcy0yMywxMC4zMTgtMjMsMjNzMTAuMzE4LDIzLDIzLDIzYzQuNzYxLDAsOS4yOTgtMS40MzYsMTMuMTc3LTQuMTYybDEzLjY2MSwxNC4yMDhjMC41NzEsMC41OTMsMS4zMzksMC45MiwyLjE2MiwwLjkyYzAuNzc5LDAsMS41MTgtMC4yOTcsMi4wNzktMC44MzdDNTYuMjU1LDU0Ljk4Miw1Ni4yOTMsNTMuMDgsNTUuMTQ2LDUxLjg4N3ogTTIzLjk4NCw2YzkuMzc0LDAsMTcsNy42MjYsMTcsMTdzLTcuNjI2LDE3LTE3LDE3cy0xNy03LjYyNi0xNy0xN1MxNC42MSw2LDIzLjk4NCw2elwiKVxuICAgIGlucHV0LmZvcm0taW5wdXQocGxhY2Vob2xkZXI9XCJzZWFyY2hcIilcbmBgYFxuXG4jIyBBbGlnbm1lbnRcblxuVG8gY2VudGVyIGljb24gYW5kIGlucHV0LCB5b3UgY2FuIGFkZCBhIGAuZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlci4taW5saW5lYCBoZWxwZXIgbGlrZSBzb1xuXG5gYGBqYWRlXG5kaXYuZm9ybS1ib3guZmxleC1sYXlvdXQuLWl0ZW1zLWNlbnRlci4taW5saW5lXG4gICAgc3ZnLmljb24uc3ZnLWljb24oeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHg9XCIwcHhcIiB5PVwiMHB4XCIgdmlld0JveD1cIjAgMCA1Ni45NjYgNTYuOTY2XCIpXG4gICAgICAgIHBhdGgoZD1cIk01NS4xNDYsNTEuODg3TDQxLjU4OCwzNy43ODZjMy40ODYtNC4xNDQsNS4zOTYtOS4zNTgsNS4zOTYtMTQuNzg2YzAtMTIuNjgyLTEwLjMxOC0yMy0yMy0yM3MtMjMsMTAuMzE4LTIzLDIzczEwLjMxOCwyMywyMywyM2M0Ljc2MSwwLDkuMjk4LTEuNDM2LDEzLjE3Ny00LjE2MmwxMy42NjEsMTQuMjA4YzAuNTcxLDAuNTkzLDEuMzM5LDAuOTIsMi4xNjIsMC45MmMwLjc3OSwwLDEuNTE4LTAuMjk3LDIuMDc5LTAuODM3QzU2LjI1NSw1NC45ODIsNTYuMjkzLDUzLjA4LDU1LjE0Niw1MS44ODd6IE0yMy45ODQsNmM5LjM3NCwwLDE3LDcuNjI2LDE3LDE3cy03LjYyNiwxNy0xNywxN3MtMTctNy42MjYtMTctMTdTMTQuNjEsNiwyMy45ODQsNnpcIilcbiAgICBpbnB1dC5mb3JtLWlucHV0KHBsYWNlaG9sZGVyPVwic2VhcmNoXCIpXG5gYGBcblxuKi9cblxuLmZlZWRiYWNrLWZvcm0ge1xuXG4gICAgY29uZiA9IHRoZW1lLmNvbXBvbmVudHMuZmVlZGJhY2stZm9ybTtcblxuICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbmYuYm9yZGVyLWNvbG9yO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5pbnB1dCB7XG4gICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgPiAuaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcblxuICAgICAgICAmLi1lcnJvciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgY29sb3I6IGNvbmYuY29sb3JzLmVycm9yXG4gICAgICAgIH1cblxuICAgICAgICAmLi1zdWNjZXNzIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICBjb2xvcjogY29uZi5jb2xvcnMuc3VjY2VzcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuLXN1Y2Nlc3N7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbmYuY29sb3JzLnN1Y2Nlc3M7XG5cbiAgICAgICAgPiAuaWNvbi4tc3VjY2VzcyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfSAgICBcbiAgICB9XG5cbiAgICAmLi1lcnJvcntcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgY29uZi5jb2xvcnMuZXJyb3I7XG5cbiAgICAgICAgPiAuaWNvbi4tZXJyb3Ige1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH0gICAgXG4gICAgfVxuXG4gICAgJi4tZm9jdXNlZHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgY29uZi5jb2xvcnMuZm9jdXNlZDsgICAgXG4gICAgfVxuXG59IiwiLmZpeGVkLXBhZ2UtbGF5b3V0IHtcblxuXHRjb25mID0gdGhlbWUuY29tcG9uZW50cy5maXhlZC1wYWdlLWxheW91dDtcblx0Y29uZi5yaWdodCA9IDEwMDBweDtcblxuXHQ+IC5oZWFkZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRoZW1lLmNvbG9ycy5saW5lO1xuXG5cdFx0PiAuYnJlYWRjcnVtYiB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbSggNzBweCApO1xuXHRcdH1cblx0fVxuXG5cblx0PiAuc2lkZWJhciB7XG5cdFx0PiAubWFpbi1uYXZpZ2F0aW9uIHtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHR9XG5cblx0XHQuaWNvbi4tZXhwYW5kLXRvZ2dsZSB7XG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZTtcblx0XHR9XG5cblx0XHQmLi1leHBhbmRlZCB7XG5cdFx0XHR3aWR0aDogcmVtKCAzNTBweCApO1xuXHRcdFx0Lmljb24uLWV4cGFuZC10b2dnbGUge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlWCggLTEgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLi1yaWdodCB7XG5cdFx0XHR3aWR0aDogcmVtKCBjb25mLnJpZ2h0ICk7XHRcblx0XHRcdG1heC13aWR0aDogXCJjYWxjKCAxMDB2dyAtIDUwcHggKTtcIiAlIGNvbmYuc2lkZWJhci5kZWZhdWx0XG5cdFx0fVxuXHR9XG5cblx0PiAuY29udGVudCB7XG5cblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNzAwcHgpIHtcblx0XHRcdCYuLW1hcmdpbi1yaWdodCB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogcmVtKCBjb25mLnJpZ2h0ICk7XHRcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdH1cblxuXHQuaGVhZGVyLWJhciB7XG5cdFx0aGVpZ2h0OiByZW0oIDUwcHggKTtcdFxuXHR9XG59IiwiLmdyb3VwLWlucHV0e1xuICAgIFxuICAgID4gLmJ1dHRvbi1zdHlsZSA+IC5zdmctaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb247XG4gICAgfVxuXG5cbiAgICA+IC5jb250ZW50e1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICYuLWV4cGFuZGVke1xuICAgICAgICBcbiAgICAgICAgPiAuYnV0dG9uLXN0eWxlID4gLnN2Zy1pY29uIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKCA5MGRlZyApO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuY29udGVudHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxuXG59IiwiLypcblN0eWxlcyBmb3IgdGhlIGRyYWd1bGFyIGxpYnJhcnlcbiovXG4uZ3UtbWlycm9yIHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICB6LWluZGV4OiA5OTk5ICFpbXBvcnRhbnQ7XG4gIG9wYWNpdHk6IDAuODtcbn1cbi5ndS1oaWRlIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLmd1LXVuc2VsZWN0YWJsZSB7XG4gIHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XG59XG4uZ3UtdHJhbnNpdCB7XG4gIG9wYWNpdHk6IDAuMjtcbn0iLCIuYXJyYXktaW5wdXQge1xuXG4gICAgcG9zaXRpb246cmVsYXRpdmU7XG5cbiAgICA+LmRlbGV0ZSB7XG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgIHRvcDogMTJweDtcbiAgICB9XG4gICAgPi5mZWVkYmFjay1mb3JtID4gLmlucHV0IHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5sYXJnZTtcbiAgICB9XG5cbn0iLCIuYm9vbGVhbi1pbnB1dHtcbiAgICBcblxuICAgID4gLnN0YXRle1xuICAgICAgICB3aWR0aDogcmVtKCA0MHB4ICk7XG4gICAgICAgIGhlaWdodDogcmVtKCAyNHB4ICk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHJlbSggMTJweCApO1xuICAgICAgICBwYWRkaW5nOiByZW0oIDJweCApO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMucGxhY2Vob2xkZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdGhlbWUuc2V0dGluZ3MudHJhbnNpdGlvbi1kdXJhdGlvbiwgb3BhY2l0eSB0aGVtZS5zZXR0aW5ncy50cmFuc2l0aW9uLWR1cmF0aW9uO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICA+IC5oYW5kbGV7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb21wb25lbnRzLmJvb2xlYW4taW5wdXQuaGFuZGxlLWNvbG9yO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgd2lkdGg6IHJlbSggMjBweCApO1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0oIDIwcHggKTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB0aGVtZS5zZXR0aW5ncy50cmFuc2l0aW9uLWR1cmF0aW9uIGVhc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLi1lbmFibGVke1xuICAgICAgICBcbiAgICAgICAgPiAuc3RhdGV7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS5jb2xvcnMuYWN0aW9uO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICA+IC5oYW5kbGV7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCByZW0oIDE2cHggKSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgIH1cbiAgICBcbiAgICAmLi1pbmRldGVybWluYXRlIHtcbiAgICAgICAgPiAuc3RhdGUge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgPiAuaGFuZGxlIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIHJlbSggOHB4ICkgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuLWxvY2tlZCB7XG4gICAgICAgID4gLnN0YXRlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuMzM7XG4gICAgICAgICAgICBjdXJzb3I6IGluaGVyaXQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuaW1hZ2UtaW5wdXQge1xuXG5cdHBhZGRpbmc6IHJlbSggMTZweCApO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXHRtYXgtd2lkdGg6IHJlbSggMzI3cHggKTtcblxuXHQ+IC5jb250ZW50IHtcblx0XHRtaW4taGVpZ2h0OiByZW0oIDE0NXB4ICk7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCAnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTVRBaUlHaGxhV2RvZEQwaU1UQWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SStQSEJoZEdnZ1pEMGlUVEFnTUdnMWRqVklNSHB0TlNBMWFEVjJOVWcxZWlJZ1ptbHNiRDBpSTBOQlEwRkRRU0lnWm1sc2JDMXlkV3hsUFNKbGRtVnViMlJrSWk4K1BDOXpkbWMrJylcdFxuXG5cdFx0PiAuYWN0aW9ucyB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIHRoZW1lLnNldHRpbmdzLnRyYW5zaXRpb24tZHVyYXRpb247XG5cdFx0fVxuXHR9XG5cblx0Jjpob3ZlciB7XG5cdFx0XG5cdFx0PiAuY29udGVudCA+IC5hY3Rpb25zIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0fVx0XG5cdH1cbn0iLCIub3ZlcmxheS1pbnB1dCB7XG5cblx0Lm92ZXJsYXktaGFuZGxlIHtcblxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoIDEyMiwgMTIyLCAxMjIgKTtcblx0XHRjdXJzb3I6IG1vdmU7XG5cdFx0Ym94LXNoYWRvdzogMHB4IDBweCA1cHggMHB4IHJnYmEoMCwwLDAsMC41KTtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAjRkZGO1xuXG5cdFx0Ji4tc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdGhlbWUuY29sb3JzLmFjdGlvbjtcblx0XHR9XG5cblx0XHQmLi1wb2ludCB7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMDAlO1xuXHRcdFx0d2lkdGg6IDIwcHg7XG5cdFx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSggLTUwJSwgLTUwJSApO1xuXHRcdH1cblxuXHRcdD4gLmNvbnRyb2wge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNCwgMjQsIDI0LCAwLjYyKTtcblx0XHRcdGRyYWdnYWJsZTogZmFsc2U7XG5cdFx0XHR1c2VyLXNlbGVjdDogbm9uZTtcblxuXHRcdFx0Ji4taG9yaXpvbnRhbCB7XG5cdFx0XHRcdGxlZnQ6IGF1dG87XG5cdFx0XHRcdHdpZHRoOiA1cHg7XG5cdFx0XHRcdGN1cnNvcjogZXctcmVzaXplO1xuXHRcdFx0fVxuXG5cdFx0XHQmLi12ZXJ0aWNhbCB7XG5cdFx0XHRcdHRvcDogYXV0bztcblx0XHRcdFx0aGVpZ2h0OiA1cHg7XG5cdFx0XHRcdGN1cnNvcjogbnMtcmVzaXplO1xuXHRcdFx0fVxuXG5cdFx0XHQmLi1jb3JuZXIge1xuXHRcdFx0XHR3aWR0aDogNXB4O1xuXHRcdFx0XHRoZWlnaHQ6IDVweDtcblx0XHRcdFx0dG9wOiBhdXRvO1xuXHRcdFx0XHRsZWZ0OiBhdXRvO1xuXHRcdFx0XHRjdXJzb3I6IG53c2UtcmVzaXplO1xuXHRcdFx0fVxuXG5cdFx0XHQmLi1kZWxldGUge1xuXHRcdFx0XHRyaWdodDogYXV0bztcblx0XHRcdFx0Ym90dG9tOiBhdXRvO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufSIsIiRub25FeHBhbmRlZFdpZHRoID0gdGhlbWUuY29tcG9uZW50cy5maXhlZC1wYWdlLWxheW91dC5zaWRlYmFyLmRlZmF1bHQ7XG4kaWNvblNpemUgPSByZW0oIDIwcHggKTtcbiRpY29uTWFyZ2luID0gKCRub25FeHBhbmRlZFdpZHRoIC0gJGljb25TaXplKSAvIDI7XG5cbi5tYWluLW5hdmlnYXRpb24ge1xuXG5cdGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5hY3Rpb247XG5cblx0Ym94LXNoYWRvdzogNHB4IDNweCA0cHggMCByZ2JhKDAsMCwwLDAuMSk7XG5cblx0Ly8gYWxsb3cgdmVydGljYWwgc2Nyb2xsaW5nLCBidXQgZG9uJ3Qgc2hvdyBhbnkgc2Nyb2xsIGJhcnM6XG5cdG92ZXJmbG93LXk6IGF1dG87XG5cdHNjcm9sbGJhci13aWR0aDogbm9uZTsgLyogRmlyZWZveCAqL1xuXHQtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7ICAvKiBJRSAxMCsgKi9cblx0Jjo6LXdlYmtpdC1zY3JvbGxiYXIgeyAvKiBXZWJLaXQgKi9cblx0XHR3aWR0aDogMHB4OyAvKiB2ZXJ0aWNhbCBzY3JvbGxiYXIgKi9cblx0XHRoZWlnaHQ6IDBweDsgLyogaG9yaXpvbnRhbCBzY3JvbGxiYXIgKi9cblx0fVxuXG5cdD4gLml0ZW0ge1xuXHRcdGhlaWdodDogcmVtKCA0MHB4ICk7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdGNvbG9yOiB0aGVtZS5jb2xvcnMudGV4dC1pbnZlcnRlZDtcblxuXHRcdCYuLWFjdGl2ZSxcblx0XHQmOmhvdmVyOm5vdCguLWRpc2FibGVkKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCAyNTUsIDI1NSwgMjU1LCAwLjIgKTtcblx0XHR9XG5cblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0Ym90dG9tOiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0Ji4tYWN0aXZlIHtcblx0XHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRcdGJvcmRlci1sZWZ0OiBzb2xpZCAzcHggI2ZmZjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLi1kaXZpZGVyIHtcblx0XHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRcdGJvcmRlci10b3A6IHNvbGlkIDFweCB0aW50KCB0aGVtZS5jb2xvcnMuYWN0aW9uLCAzMCUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQ+IC5pY29uLFxuXHRcdD4gLmxldHRlci1pY29uIHtcblx0XHRcdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRcdFx0d2lkdGg6ICRpY29uU2l6ZTtcblx0XHRcdGhlaWdodDogJGljb25TaXplO1xuXHRcdFx0bWFyZ2luLWxlZnQ6ICRpY29uTWFyZ2luO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAkaWNvbk1hcmdpbjtcblx0XHR9XG5cblx0XHQ+IC5sZXR0ZXItaWNvbiB7XG5cdFx0XHRjb2xvcjogdGhlbWUuY29sb3JzLmFjdGlvbjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRsaW5lLWhlaWdodDogJGljb25TaXplO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTAwJTtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cblx0XHQ+IC5sYWJlbCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6ICRpY29uTWFyZ2luO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cbn0iLCIubW9kZWwtZWRpdG9yIHtcblxuXHQ+IC5lZGl0b3ItaGVhZGVyIHtcblxuXHRcdD4gLmFjdGlvbnMge1xuXG5cdFx0XHQ+ICoge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHRcdFx0JiArICoge1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogdGhlbWUuY29tcG9uZW50cy5wYWRkaW5nLWJveC5kZWZhdWx0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59IiwiLm1vcmUtYnV0dG9uIHtcblx0ZGlzcGxheTogbm9uZTtcblxuXHQmLi12aXNpYmxlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcdFxuXHR9XHRcbn0iLCIucHJldmlldy1jb250ZW50IHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdGhlaWdodDogMTAwJTtcblx0d2lkdGg6IDEwMCU7XG5cblx0JGhlYWRlckhlaWdodCA9IHJlbSggNDRweCApO1xuXG5cdD4gLmhlYWRlciB7XG5cdFx0aGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuXHR9XG5cblx0PiAuaWZyYW1lIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0aGVpZ2h0OiAnY2FsYyggMTAwJSAtICVzICknICUgJGhlYWRlckhlaWdodDtcblx0fVxufSIsIi8qXG4tLS1cbm5hbWU6IC50b29sdGlwLWNvbnRhaW5lclxuY2F0ZWdvcnk6IENvbXBvbmVudHMvVG9vbHRpcFxudGFnOlxuIC0gY29tcG9uZW50XG4gLSB0b29sdGlwXG5jb21waWxlOiB0cnVlXG4tLS1cblxuQSBnZW5lcmljIHN0eWxpbmcgZm9yIGEgdG9vbHRpcCB0aGF0IGlzIHBsYWNlZCBhYnNvbHV0ZSBhbmQgaGFzIGEgcG9zaXRpb246IGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbVxuXG5gYGBqYWRlXG5kaXYudG9vbHRpcC1jb250YWluZXJcblx0ZGl2LmNvbnRlbnRcblx0XHRDb250ZW50XG5gYGBcbiovXG4udG9vbHRpcC1jb250YWluZXIge1xuXHQtLWR4OiAwcHg7XG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSB0aGVtZS5zZXR0aW5ncy50cmFuc2l0aW9uLWR1cmF0aW9uO1xuXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0cGFkZGluZzogNHB4O1xuXHR6LWluZGV4OiAxMDEwO1xuXG5cdD4gLmNvbnRlbnQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoIDAsIDAsIDAsIDAuOCApO1xuXHRcdGNvbG9yOiAjZGRkO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0d2lkdGg6IDA7IFxuXHRcdFx0aGVpZ2h0OiAwO1xuXHRcdFx0Ym9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRcdGJvcmRlci13aWR0aDogNnB4O1xuXHRcdFx0dHJhbnNpdGlvbjogbGVmdCB0aGVtZS5zZXR0aW5ncy50cmFuc2l0aW9uLWR1cmF0aW9uO1xuXHRcdH1cblx0fVxuXG5cdCYuLWxlZnQge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKCAtMTAwJSwgLTUwJSApO1xuXG5cdFx0PiAuY29udGVudDpiZWZvcmUge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6IHJnYmEoIDAsIDAsIDAsIDAuOCApO1xuXHRcdFx0bGVmdDogMTAwJTtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdH1cblx0fVxuXG5cdCYuLXJpZ2h0IHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC01MCUgKTtcblxuXHRcdD4gLmNvbnRlbnQ6YmVmb3JlIHtcblx0XHRcdGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSggMCwgMCwgMCwgMC44ICk7XG5cdFx0XHRyaWdodDogMTAwJTtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdH1cblx0fVxuXG5cdCYuLXRvcCB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtNTAlICsgdmFyKC0tZHgpKSwgLTEwMCUgKTtcblxuXHRcdD4gLmNvbnRlbnQ6YmVmb3JlIHtcblx0XHRcdGJvcmRlci10b3AtY29sb3I6IHJnYmEoIDAsIDAsIDAsIDAuOCApO1xuXHRcdFx0dG9wOiAxMDAlO1xuXHRcdFx0bGVmdDogY2FsYyg1MCUgLSB2YXIoLS1keCkpO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuXHRcdH1cblx0fVxuXG5cdCYuLWJvdHRvbSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKCBjYWxjKC01MCUgKyB2YXIoLS1keCkpICk7XG5cblx0XHQ+IC5jb250ZW50OmJlZm9yZSB7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKCAwLCAwLCAwLCAwLjggKTtcblx0XHRcdGJvdHRvbTogMTAwJTtcblx0XHRcdGxlZnQ6IGNhbGMoNTAlIC0gdmFyKC0tZHgpKTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblx0XHR9XG5cdH1cbn0iLCIvKlxuLS0tXG5uYW1lOiAudHJhbnNpdGlvbi1jb250YWluZXIgXG5jYXRlZ29yeTogQW5pbWF0aW9uL1RyYW5zaXRpb25cbnRhZzpcbiAtIGNvbXBvbmVudFxuIC0gdHJhbnNpdGlvblxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgY29udGFpbmVyIHRvIGFuaW1hdGUgdHJhbnNpdGlvbiBiZXR3ZWVuIG5vZGVzLlxuSXQgcHJvdmlkZXMgNCBzdGF0ZXM6IGluLXN0YXJ0LCBpbi1lbmQsIG91dC1zdGFydCwgb3V0LWVuZFxuXG4jIyBJbi1zdGFydCBzdGF0ZVxuYGBgamFkZVxuZGl2LnRyYW5zaXRpb24tY29udGFpbmVyXG5cdGRpdi5hbmltYXRvci5pbi1zdGFydCBUaGUgY29udGVudCB0byB0cmFuc2l0aW9uXG5gYGBcblxuIyMgSW4tZW5kIHN0YXRlXG5gYGBqYWRlXG5kaXYudHJhbnNpdGlvbi1jb250YWluZXJcblx0ZGl2LmFuaW1hdG9yLmluLWVuZCBUaGUgY29udGVudCB0byB0cmFuc2l0aW9uXG5gYGBcbiMjIE91dC1zdGFydCBzdGF0ZVxuYGBgamFkZVxuZGl2LnRyYW5zaXRpb24tY29udGFpbmVyXG5cdGRpdi5hbmltYXRvci5vdXQtc3RhcnQgVGhlIGNvbnRlbnQgdG8gdHJhbnNpdGlvblxuYGBgXG5cbiMjIE91dC1lbmQgc3RhdGVcbmBgYGphZGVcbmRpdi50cmFuc2l0aW9uLWNvbnRhaW5lclxuXHRkaXYuYW5pbWF0b3Iub3V0LWVuZCBUaGUgY29udGVudCB0byB0cmFuc2l0aW9uXG5gYGBcbiovXG4udHJhbnNpdGlvbi1jb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0Ji4tdHJhbnNpdGlvbiB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXG5cdD4gLmFuaW1hdG9yIHtcblxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0ei1pbmRleDogMTAwO1xuXG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRoZW1lLmNvbG9ycy5ib2R5O1xuXG5cdFx0Ji5pbi1zdGFydCB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIDEwMCUgKTtcblx0XHR9XG5cdFx0Ji5pbi1lbmQge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKCAwICk7XG5cdFx0fVxuXG5cdFx0Ji5vdXQtc3RhcnQge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKCAwICk7XG5cdFx0fVxuXHRcdCYub3V0LWVuZCB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIDEwMCUgKTtcblx0XHR9XG5cdH1cbn0iLCIvKlxuLS0tXG5uYW1lOiAuYnV0dG9uLXVwbG9hZFxuY2F0ZWdvcnk6IEJ1dHRvbnMvVXBsb2FkXG50YWc6XG4gLSBjb21wb25lbnRcbiAtIHVwbG9hZFxuIC0gZnJvbVxuY29tcGlsZTogdHJ1ZVxuLS0tXG5cbkEgdXBsb2FkIGJ1dHRvbiB3aXRoIGFsbCB0aGUgaGlkZGVuIGZvcm0gZWxlbWVudHNcblxuYGBgamFkZVxuZGl2LmJ1dHRvbi11cGxvYWRcblx0aW5wdXQodHlwZT1cImZpbGVcIilcblx0ZGl2LmJ1dHRvbi5idXR0b24tcHJpbWFyeVxuXHRcdGRpdi5sYWJlbCBVcGxvYWRcblx0XHRkaXYucHJvZ3Jlc3NcbmBgYFxuKi9cbi51cGxvYWQtYnV0dG9uIHtcblxuXHQ+IGlucHV0IHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblxuXHQ+IC5wcm9ncmVzcyB7XG5cdFx0aGVpZ2h0OiA0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0XHRvcGFjaXR5OiAwLjU7XG5cdH1cblxufVxuIiwiLmJvb2xlYW4taW5wdXQge1xuXG4gICAgJi4tZW5hYmxlZCA+IC5zdGF0ZSB7XG5cbiAgICAgICAgJjpmb2N1czpub3QoOmFjdGl2ZSksXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjdjYjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC4tZW5hYmxlZCkgPiAuc3RhdGUge1xuXG4gICAgICAgICY6Zm9jdXM6bm90KDphY3RpdmUpLFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHNoYWRlKCB0aGVtZS5jb2xvcnMucGxhY2Vob2xkZXIsIDEwJSApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLmNydW1iLWl0ZW0ge1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcblxuICAgICAgICAmOmZvY3VzLCAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjMjAyMDIzO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgc2hhZGUodGhlbWUuY29sb3JzLmxpbmUsIDEwJSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuZWRpdG9yLXRhYmxlIHtcblxuICAgIC5lZGl0b3ItdGFibGUtcm93IHtcblxuICAgICAgICAmLi1lZGl0YWJsZSB7XG5cbiAgICAgICAgICAgICY6Zm9jdXM6bm90KDpob3Zlcik6bm90KDphY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCBzaGFkZSggdGhlbWUuY29sb3JzLmxpbmUsIDEwJSApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIi5tYWluLW5hdmlnYXRpb24ge1xuXG4gICAgPiAuaXRlbTpub3QoLi1hY3RpdmUpIHtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoIDI1NSwgMjU1LCAyNTUsIDAuMiApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiAuaXRlbS4tYWN0aXZlIHtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoIDI1NSwgMjU1LCAyNTUsIDAuMyApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLnRhYi1pdGVtIHtcblxuICAgICYuLWFjdGl2ZSB7XG4gICAgICAgICY6Zm9jdXMsICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI2MjdjYjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC4tYWN0aXZlKSB7XG4gICAgICAgICY6Zm9jdXMsICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogc2hhZGUodGhlbWUuY29sb3JzLmxpbmUsIDEwJSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIuYnJhbmNoLXBhdGh7XG4gICAgXG4gICAgPiAuLXNvcnRhYmxle1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgY3Vyc29yOiBncmFiO1xuICAgIH1cbn0iLCIubWFyZ2luLWJveHtcbiAgICBcbiAgICBmb3Iga2V5IGluIGxlZnQgcmlnaHQgdG9wIGJvdHRvbXtcbiAgICAgICAgJi4te2tleX0teHNtYWxse1xuICAgICAgICAgICAgbWFyZ2luLXtrZXl9OiAwLjI1cmVtOyAgICBcbiAgICAgICAgfSAgICBcbiAgICB9XG59IiwiLnRvb2xiYXItZm9ybWF0e1xuICAgIFxuICAgID4gLmNvbnRlbnR7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoIDAsMCwwLDAuOCApO1xuICAgICAgICB0b3A6IDM2cHg7XG4gICAgICAgIHJpZ2h0OiAwO1xuXG4gICAgICAgIC50b29sYmFyLWNvbG9ye1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICAgICAgJi4tc2VsZWN0ZWR7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2ZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdmctaWNvbi4tdG9vbGJhcntcbiAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICB9XG4gICAgXG59IiwiQGltcG9ydCBcImxpYi9zdHlsdXMvdGhlbWVzL2RhdGVuZWRpdG9yL3NldHVwXCI7XG5AaW1wb3J0IFwibGliL3N0eWx1cy90aGVtZXMvZGF0ZW5lZGl0b3IvY29tcG9uZW50c1wiO1xuXG5AaW1wb3J0IFwiLi9hY2Nlc3NpYmlsaXR5Lyouc3R5bFwiO1xuQGltcG9ydCBcIi4vZXh0ZW5zaW9ucy8qLnN0eWxcIjtcblxuLy8gV29ya2Fyb3VuZCBmb3IgSUUxMSBCdWc6XG4vLyBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vlcy8yMDU3NzUvXG5cbnVzZSB7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5zdWIge1xuXHR2ZXJ0aWNhbC1hbGlnbjogc3ViO1xuXHRmb250LXNpemU6IHNtYWxsZXI7XG59XG5cbnN1cCB7XG5cdHZlcnRpY2FsLWFsaWduOiBzdXBlcjtcblx0Zm9udC1zaXplOiBzbWFsbGVyO1xufVxuIl19 */
