@import url(https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap);
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */

/* Document
   ========================================================================== */

/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */

html {
  line-height: 1.15; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/* Sections
   ========================================================================== */

/**
 * Remove the margin in all browsers.
 */

body {
  margin: 0;
}

/**
 * Render the `main` element consistently in IE.
 */

main {
  display: block;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/* Grouping content
   ========================================================================== */

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */

hr {
  box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

pre {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/* Text-level semantics
   ========================================================================== */

/**
 * Remove the gray background on active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */

abbr[title] {
  border-bottom: none; /* 1 */
  text-decoration: underline; /* 2 */
  text-decoration: underline dotted; /* 2 */
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */

b,
strong {
  font-weight: bolder;
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

code,
kbd,
samp {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
 * Add the correct font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove the border on images inside links in IE 10.
 */

img {
  border-style: none;
}

/* Forms
   ========================================================================== */

/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
  margin: 0; /* 2 */
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */

button,
input { /* 1 */
  overflow: visible;
}

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */

button,
select { /* 1 */
  text-transform: none;
}

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */

button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
}

/**
 * Remove the inner border and padding in Firefox.
 */

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
 * Correct the padding in Firefox.
 */

fieldset {
  padding: 0.35em 0.75em 0.625em;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */

legend {
  box-sizing: border-box; /* 1 */
  color: inherit; /* 2 */
  display: table; /* 1 */
  max-width: 100%; /* 1 */
  padding: 0; /* 3 */
  white-space: normal; /* 1 */
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */

progress {
  vertical-align: baseline;
}

/**
 * Remove the default vertical scrollbar in IE 10+.
 */

textarea {
  overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */

[type="checkbox"],
[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */

[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/* Interactive
   ========================================================================== */

/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */

details {
  display: block;
}

/*
 * Add the correct display in all browsers.
 */

summary {
  display: list-item;
}

/* Misc
   ========================================================================== */

/**
 * Add the correct display in IE 10+.
 */

template {
  display: none;
}

/**
 * Add the correct display in IE 10.
 */

[hidden] {
  display: none;
}

@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%);transform:translateX(var(--mdc-linear-progress-primary-half, 83.67142%))}100%{transform:translateX(200.611057%);transform:translateX(var(--mdc-linear-progress-primary-full, 200.611057%))}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%);transform:translateX(var(--mdc-linear-progress-secondary-quarter, 37.651913%))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%);transform:translateX(var(--mdc-linear-progress-secondary-half, 84.386165%))}100%{transform:translateX(160.277782%);transform:translateX(var(--mdc-linear-progress-secondary-full, 160.277782%))}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(-10px)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%);transform:translateX(var(--mdc-linear-progress-primary-half-neg, -83.67142%))}100%{transform:translateX(-200.611057%);transform:translateX(var(--mdc-linear-progress-primary-full-neg, -200.611057%))}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%);transform:translateX(var(--mdc-linear-progress-secondary-quarter-neg, -37.651913%))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%);transform:translateX(var(--mdc-linear-progress-secondary-half-neg, -84.386165%))}100%{transform:translateX(-160.277782%);transform:translateX(var(--mdc-linear-progress-secondary-full-neg, -160.277782%))}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow:hidden}@media screen and (forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress{transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar{position:absolute;width:100%;height:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid}.mdc-linear-progress__buffer{display:flex;position:absolute;width:100%;height:100%}.mdc-linear-progress__buffer-dots{background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar{right:0;transform-origin:center right}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots{animation:none}.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner{animation:none}.mdc-linear-progress__bar-inner{border-color:#6200ee;border-color:var(--mdc-theme-primary, #6200ee)}.mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version=%271.1%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:xlink=%27http://www.w3.org/1999/xlink%27 x=%270px%27 y=%270px%27 enable-background=%27new 0 0 5 2%27 xml:space=%27preserve%27 viewBox=%270 0 5 2%27 preserveAspectRatio=%27none slice%27%3E%3Ccircle cx=%271%27 cy=%271%27 r=%271%27 fill=%27%23e6e6e6%27/%3E%3C/svg%3E")}.mdc-linear-progress__buffer-bar{background-color:#e6e6e6}.mdc-linear-progress{height:4px}.mdc-linear-progress__bar-inner{border-top-width:4px}.mdc-linear-progress__buffer-dots{background-size:10px 4px}.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;transition:opacity .03s linear,transform .12s cubic-bezier(0, 0, 0.2, 1),height 250ms cubic-bezier(0, 0, 0.2, 1)}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0;transition:opacity .075s linear}.mdc-menu-surface{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:#fff;background-color:var(--mdc-theme-surface, #fff);color:#000;color:var(--mdc-theme-on-surface, #000);border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);border-bottom-width:2px;opacity:0;z-index:2}.mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-top-app-bar{background-color:#6200ee;background-color:var(--mdc-theme-primary, #6200ee);color:white}.mdc-top-app-bar .mdc-top-app-bar__action-item,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon{color:#fff;color:var(--mdc-theme-on-primary, #fff)}.mdc-top-app-bar .mdc-top-app-bar__action-item::before,.mdc-top-app-bar .mdc-top-app-bar__action-item::after,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon::before,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon::after{background-color:#fff;background-color:var(--mdc-ripple-color, var(--mdc-theme-on-primary, #fff))}.mdc-top-app-bar .mdc-top-app-bar__action-item:hover::before,.mdc-top-app-bar .mdc-top-app-bar__action-item.mdc-ripple-surface--hover::before,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon:hover::before,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon.mdc-ripple-surface--hover::before{opacity:0.08;opacity:var(--mdc-ripple-hover-opacity, 0.08)}.mdc-top-app-bar .mdc-top-app-bar__action-item.mdc-ripple-upgraded--background-focused::before,.mdc-top-app-bar .mdc-top-app-bar__action-item:not(.mdc-ripple-upgraded):focus::before,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon.mdc-ripple-upgraded--background-focused::before,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.24;opacity:var(--mdc-ripple-focus-opacity, 0.24)}.mdc-top-app-bar .mdc-top-app-bar__action-item:not(.mdc-ripple-upgraded)::after,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-top-app-bar .mdc-top-app-bar__action-item:not(.mdc-ripple-upgraded):active::after,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.24;opacity:var(--mdc-ripple-press-opacity, 0.24)}.mdc-top-app-bar .mdc-top-app-bar__action-item.mdc-ripple-upgraded,.mdc-top-app-bar .mdc-top-app-bar__navigation-icon.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.24)}.mdc-top-app-bar{display:flex;position:fixed;flex-direction:column;justify-content:space-between;box-sizing:border-box;width:100%;z-index:4}.mdc-top-app-bar__row{display:flex;position:relative;box-sizing:border-box;width:100%;height:64px}.mdc-top-app-bar__section{display:inline-flex;flex:1 1 auto;align-items:center;min-width:0;padding:8px 12px;z-index:1}.mdc-top-app-bar__section--align-start{justify-content:flex-start;order:-1}.mdc-top-app-bar__section--align-end{justify-content:flex-end;order:1}.mdc-top-app-bar__title{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1.25rem;font-size:var(--mdc-typography-headline6-font-size, 1.25rem);line-height:2rem;line-height:var(--mdc-typography-headline6-line-height, 2rem);font-weight:500;font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:0.0125em;letter-spacing:var(--mdc-typography-headline6-letter-spacing, 0.0125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline6-text-transform, inherit);padding-left:20px;padding-right:0}[dir=rtl] .mdc-top-app-bar__title,.mdc-top-app-bar__title[dir=rtl]{padding-left:0;padding-right:20px}.mdc-top-app-bar__title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;z-index:1}.mdc-top-app-bar--short-collapsed{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:24px;border-bottom-left-radius:0}[dir=rtl] .mdc-top-app-bar--short-collapsed,.mdc-top-app-bar--short-collapsed[dir=rtl]{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:24px}.mdc-top-app-bar--short{top:0;right:auto;left:0;width:100%;transition:width 250ms cubic-bezier(0.4, 0, 0.2, 1)}[dir=rtl] .mdc-top-app-bar--short,.mdc-top-app-bar--short[dir=rtl]{right:0;left:auto}.mdc-top-app-bar--short .mdc-top-app-bar__row{height:56px}.mdc-top-app-bar--short .mdc-top-app-bar__section{padding:4px}.mdc-top-app-bar--short .mdc-top-app-bar__title{transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1);opacity:1}.mdc-top-app-bar--short-collapsed{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12);width:56px;transition:width 300ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-top-app-bar--short-collapsed .mdc-top-app-bar__title{display:none}.mdc-top-app-bar--short-collapsed .mdc-top-app-bar__action-item{transition:padding 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-top-app-bar--short-collapsed.mdc-top-app-bar--short-has-action-item{width:112px}.mdc-top-app-bar--short-collapsed.mdc-top-app-bar--short-has-action-item .mdc-top-app-bar__section--align-end{padding-left:0;padding-right:12px}[dir=rtl] .mdc-top-app-bar--short-collapsed.mdc-top-app-bar--short-has-action-item .mdc-top-app-bar__section--align-end,.mdc-top-app-bar--short-collapsed.mdc-top-app-bar--short-has-action-item .mdc-top-app-bar__section--align-end[dir=rtl]{padding-left:12px;padding-right:0}.mdc-top-app-bar--dense .mdc-top-app-bar__row{height:48px}.mdc-top-app-bar--dense .mdc-top-app-bar__section{padding:0 4px}.mdc-top-app-bar--dense .mdc-top-app-bar__title{padding-left:12px;padding-right:0}[dir=rtl] .mdc-top-app-bar--dense .mdc-top-app-bar__title,.mdc-top-app-bar--dense .mdc-top-app-bar__title[dir=rtl]{padding-left:0;padding-right:12px}.mdc-top-app-bar--prominent .mdc-top-app-bar__row{height:128px}.mdc-top-app-bar--prominent .mdc-top-app-bar__title{align-self:flex-end;padding-bottom:2px}.mdc-top-app-bar--prominent .mdc-top-app-bar__action-item,.mdc-top-app-bar--prominent .mdc-top-app-bar__navigation-icon{align-self:flex-start}.mdc-top-app-bar--fixed{transition:box-shadow 200ms linear}.mdc-top-app-bar--fixed-scrolled{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12);transition:box-shadow 200ms linear}.mdc-top-app-bar--dense.mdc-top-app-bar--prominent .mdc-top-app-bar__row{height:96px}.mdc-top-app-bar--dense.mdc-top-app-bar--prominent .mdc-top-app-bar__section{padding:0 12px}.mdc-top-app-bar--dense.mdc-top-app-bar--prominent .mdc-top-app-bar__title{padding-left:20px;padding-right:0}[dir=rtl] .mdc-top-app-bar--dense.mdc-top-app-bar--prominent .mdc-top-app-bar__title,.mdc-top-app-bar--dense.mdc-top-app-bar--prominent .mdc-top-app-bar__title[dir=rtl]{padding-left:0;padding-right:20px}.mdc-top-app-bar--dense.mdc-top-app-bar--prominent .mdc-top-app-bar__title{padding-bottom:9px}.mdc-top-app-bar--fixed-adjust{padding-top:64px}.mdc-top-app-bar--dense-fixed-adjust{padding-top:48px}.mdc-top-app-bar--short-fixed-adjust{padding-top:56px}.mdc-top-app-bar--prominent-fixed-adjust{padding-top:128px}.mdc-top-app-bar--dense-prominent-fixed-adjust{padding-top:96px}@media(max-width: 599px){.mdc-top-app-bar__row{height:56px}.mdc-top-app-bar__section{padding:4px}.mdc-top-app-bar--short{transition:width 200ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-top-app-bar--short-collapsed{transition:width 250ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-top-app-bar--short-collapsed .mdc-top-app-bar__section--align-end{padding-left:0;padding-right:12px}[dir=rtl] .mdc-top-app-bar--short-collapsed .mdc-top-app-bar__section--align-end,.mdc-top-app-bar--short-collapsed .mdc-top-app-bar__section--align-end[dir=rtl]{padding-left:12px;padding-right:0}.mdc-top-app-bar--prominent .mdc-top-app-bar__title{padding-bottom:6px}.mdc-top-app-bar--fixed-adjust{padding-top:56px}}.mdc-typography{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-font-family, Roboto, sans-serif)}.mdc-typography--headline1{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:6rem;font-size:var(--mdc-typography-headline1-font-size, 6rem);line-height:6rem;line-height:var(--mdc-typography-headline1-line-height, 6rem);font-weight:300;font-weight:var(--mdc-typography-headline1-font-weight, 300);letter-spacing:-0.015625em;letter-spacing:var(--mdc-typography-headline1-letter-spacing, -0.015625em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline1-text-decoration, inherit);text-decoration:var(--mdc-typography-headline1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline1-text-transform, inherit)}.mdc-typography--headline2{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:3.75rem;font-size:var(--mdc-typography-headline2-font-size, 3.75rem);line-height:3.75rem;line-height:var(--mdc-typography-headline2-line-height, 3.75rem);font-weight:300;font-weight:var(--mdc-typography-headline2-font-weight, 300);letter-spacing:-0.0083333333em;letter-spacing:var(--mdc-typography-headline2-letter-spacing, -0.0083333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline2-text-decoration, inherit);text-decoration:var(--mdc-typography-headline2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline2-text-transform, inherit)}.mdc-typography--headline3{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline3-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:3rem;font-size:var(--mdc-typography-headline3-font-size, 3rem);line-height:3.125rem;line-height:var(--mdc-typography-headline3-line-height, 3.125rem);font-weight:400;font-weight:var(--mdc-typography-headline3-font-weight, 400);letter-spacing:normal;letter-spacing:var(--mdc-typography-headline3-letter-spacing, normal);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline3-text-decoration, inherit);text-decoration:var(--mdc-typography-headline3-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline3-text-transform, inherit)}.mdc-typography--headline4{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline4-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:2.125rem;font-size:var(--mdc-typography-headline4-font-size, 2.125rem);line-height:2.5rem;line-height:var(--mdc-typography-headline4-line-height, 2.5rem);font-weight:400;font-weight:var(--mdc-typography-headline4-font-weight, 400);letter-spacing:0.0073529412em;letter-spacing:var(--mdc-typography-headline4-letter-spacing, 0.0073529412em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline4-text-decoration, inherit);text-decoration:var(--mdc-typography-headline4-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline4-text-transform, inherit)}.mdc-typography--headline5{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline5-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1.5rem;font-size:var(--mdc-typography-headline5-font-size, 1.5rem);line-height:2rem;line-height:var(--mdc-typography-headline5-line-height, 2rem);font-weight:400;font-weight:var(--mdc-typography-headline5-font-weight, 400);letter-spacing:normal;letter-spacing:var(--mdc-typography-headline5-letter-spacing, normal);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline5-text-decoration, inherit);text-decoration:var(--mdc-typography-headline5-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline5-text-transform, inherit)}.mdc-typography--headline6{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-headline6-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1.25rem;font-size:var(--mdc-typography-headline6-font-size, 1.25rem);line-height:2rem;line-height:var(--mdc-typography-headline6-line-height, 2rem);font-weight:500;font-weight:var(--mdc-typography-headline6-font-weight, 500);letter-spacing:0.0125em;letter-spacing:var(--mdc-typography-headline6-letter-spacing, 0.0125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-decoration:var(--mdc-typography-headline6-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-headline6-text-transform, inherit)}.mdc-typography--subtitle1{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);line-height:1.75rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.75rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit)}.mdc-typography--subtitle2{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.875rem;font-size:var(--mdc-typography-subtitle2-font-size, 0.875rem);line-height:1.375rem;line-height:var(--mdc-typography-subtitle2-line-height, 1.375rem);font-weight:500;font-weight:var(--mdc-typography-subtitle2-font-weight, 500);letter-spacing:0.0071428571em;letter-spacing:var(--mdc-typography-subtitle2-letter-spacing, 0.0071428571em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle2-text-transform, inherit)}.mdc-typography--body1{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-body1-font-size, 1rem);line-height:1.5rem;line-height:var(--mdc-typography-body1-line-height, 1.5rem);font-weight:400;font-weight:var(--mdc-typography-body1-font-weight, 400);letter-spacing:0.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, 0.03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-decoration:var(--mdc-typography-body1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform, inherit)}.mdc-typography--body2{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.875rem;font-size:var(--mdc-typography-body2-font-size, 0.875rem);line-height:1.25rem;line-height:var(--mdc-typography-body2-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight, 400);letter-spacing:0.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, 0.0178571429em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-decoration:var(--mdc-typography-body2-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform, inherit)}.mdc-typography--caption{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.75rem;font-size:var(--mdc-typography-caption-font-size, 0.75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:0.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform, inherit)}.mdc-typography--button{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-button-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.875rem;font-size:var(--mdc-typography-button-font-size, 0.875rem);line-height:2.25rem;line-height:var(--mdc-typography-button-line-height, 2.25rem);font-weight:500;font-weight:var(--mdc-typography-button-font-weight, 500);letter-spacing:0.0892857143em;letter-spacing:var(--mdc-typography-button-letter-spacing, 0.0892857143em);text-decoration:none;-webkit-text-decoration:var(--mdc-typography-button-text-decoration, none);text-decoration:var(--mdc-typography-button-text-decoration, none);text-transform:uppercase;text-transform:var(--mdc-typography-button-text-transform, uppercase)}.mdc-typography--overline{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-overline-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.75rem;font-size:var(--mdc-typography-overline-font-size, 0.75rem);line-height:2rem;line-height:var(--mdc-typography-overline-line-height, 2rem);font-weight:500;font-weight:var(--mdc-typography-overline-font-weight, 500);letter-spacing:0.1666666667em;letter-spacing:var(--mdc-typography-overline-letter-spacing, 0.1666666667em);text-decoration:none;-webkit-text-decoration:var(--mdc-typography-overline-text-decoration, none);text-decoration:var(--mdc-typography-overline-text-decoration, none);text-transform:uppercase;text-transform:var(--mdc-typography-overline-text-transform, uppercase)}.mdc-elevation--z0{box-shadow:0px 0px 0px 0px rgba(0, 0, 0, 0.2),0px 0px 0px 0px rgba(0, 0, 0, 0.14),0px 0px 0px 0px rgba(0,0,0,.12)}.mdc-elevation--z1{box-shadow:0px 2px 1px -1px rgba(0, 0, 0, 0.2),0px 1px 1px 0px rgba(0, 0, 0, 0.14),0px 1px 3px 0px rgba(0,0,0,.12)}.mdc-elevation--z2{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2),0px 2px 2px 0px rgba(0, 0, 0, 0.14),0px 1px 5px 0px rgba(0,0,0,.12)}.mdc-elevation--z3{box-shadow:0px 3px 3px -2px rgba(0, 0, 0, 0.2),0px 3px 4px 0px rgba(0, 0, 0, 0.14),0px 1px 8px 0px rgba(0,0,0,.12)}.mdc-elevation--z4{box-shadow:0px 2px 4px -1px rgba(0, 0, 0, 0.2),0px 4px 5px 0px rgba(0, 0, 0, 0.14),0px 1px 10px 0px rgba(0,0,0,.12)}.mdc-elevation--z5{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2),0px 5px 8px 0px rgba(0, 0, 0, 0.14),0px 1px 14px 0px rgba(0,0,0,.12)}.mdc-elevation--z6{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2),0px 6px 10px 0px rgba(0, 0, 0, 0.14),0px 1px 18px 0px rgba(0,0,0,.12)}.mdc-elevation--z7{box-shadow:0px 4px 5px -2px rgba(0, 0, 0, 0.2),0px 7px 10px 1px rgba(0, 0, 0, 0.14),0px 2px 16px 1px rgba(0,0,0,.12)}.mdc-elevation--z8{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2),0px 8px 10px 1px rgba(0, 0, 0, 0.14),0px 3px 14px 2px rgba(0,0,0,.12)}.mdc-elevation--z9{box-shadow:0px 5px 6px -3px rgba(0, 0, 0, 0.2),0px 9px 12px 1px rgba(0, 0, 0, 0.14),0px 3px 16px 2px rgba(0,0,0,.12)}.mdc-elevation--z10{box-shadow:0px 6px 6px -3px rgba(0, 0, 0, 0.2),0px 10px 14px 1px rgba(0, 0, 0, 0.14),0px 4px 18px 3px rgba(0,0,0,.12)}.mdc-elevation--z11{box-shadow:0px 6px 7px -4px rgba(0, 0, 0, 0.2),0px 11px 15px 1px rgba(0, 0, 0, 0.14),0px 4px 20px 3px rgba(0,0,0,.12)}.mdc-elevation--z12{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2),0px 12px 17px 2px rgba(0, 0, 0, 0.14),0px 5px 22px 4px rgba(0,0,0,.12)}.mdc-elevation--z13{box-shadow:0px 7px 8px -4px rgba(0, 0, 0, 0.2),0px 13px 19px 2px rgba(0, 0, 0, 0.14),0px 5px 24px 4px rgba(0,0,0,.12)}.mdc-elevation--z14{box-shadow:0px 7px 9px -4px rgba(0, 0, 0, 0.2),0px 14px 21px 2px rgba(0, 0, 0, 0.14),0px 5px 26px 4px rgba(0,0,0,.12)}.mdc-elevation--z15{box-shadow:0px 8px 9px -5px rgba(0, 0, 0, 0.2),0px 15px 22px 2px rgba(0, 0, 0, 0.14),0px 6px 28px 5px rgba(0,0,0,.12)}.mdc-elevation--z16{box-shadow:0px 8px 10px -5px rgba(0, 0, 0, 0.2),0px 16px 24px 2px rgba(0, 0, 0, 0.14),0px 6px 30px 5px rgba(0,0,0,.12)}.mdc-elevation--z17{box-shadow:0px 8px 11px -5px rgba(0, 0, 0, 0.2),0px 17px 26px 2px rgba(0, 0, 0, 0.14),0px 6px 32px 5px rgba(0,0,0,.12)}.mdc-elevation--z18{box-shadow:0px 9px 11px -5px rgba(0, 0, 0, 0.2),0px 18px 28px 2px rgba(0, 0, 0, 0.14),0px 7px 34px 6px rgba(0,0,0,.12)}.mdc-elevation--z19{box-shadow:0px 9px 12px -6px rgba(0, 0, 0, 0.2),0px 19px 29px 2px rgba(0, 0, 0, 0.14),0px 7px 36px 6px rgba(0,0,0,.12)}.mdc-elevation--z20{box-shadow:0px 10px 13px -6px rgba(0, 0, 0, 0.2),0px 20px 31px 3px rgba(0, 0, 0, 0.14),0px 8px 38px 7px rgba(0,0,0,.12)}.mdc-elevation--z21{box-shadow:0px 10px 13px -6px rgba(0, 0, 0, 0.2),0px 21px 33px 3px rgba(0, 0, 0, 0.14),0px 8px 40px 7px rgba(0,0,0,.12)}.mdc-elevation--z22{box-shadow:0px 10px 14px -6px rgba(0, 0, 0, 0.2),0px 22px 35px 3px rgba(0, 0, 0, 0.14),0px 8px 42px 7px rgba(0,0,0,.12)}.mdc-elevation--z23{box-shadow:0px 11px 14px -7px rgba(0, 0, 0, 0.2),0px 23px 36px 3px rgba(0, 0, 0, 0.14),0px 9px 44px 8px rgba(0,0,0,.12)}.mdc-elevation--z24{box-shadow:0px 11px 15px -7px rgba(0, 0, 0, 0.2),0px 24px 38px 3px rgba(0, 0, 0, 0.14),0px 9px 46px 8px rgba(0,0,0,.12)}.mdc-elevation-transition{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);will-change:box-shadow}.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__leading{width:12px}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px*2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--notched .mdc-notched-outline__notch{border-top:none}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-select:not(.mdc-select--disabled) .mdc-select__selected-text{color:rgba(0, 0, 0, 0.87)}.mdc-select.mdc-select--disabled .mdc-select__selected-text{color:rgba(0, 0, 0, 0.38)}.mdc-select:not(.mdc-select--disabled) .mdc-floating-label{color:rgba(0, 0, 0, 0.6)}.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:rgba(98, 0, 238, 0.87)}.mdc-select.mdc-select--disabled .mdc-floating-label{color:rgba(0, 0, 0, 0.38)}.mdc-select:not(.mdc-select--disabled) .mdc-select__dropdown-icon{fill:rgba(0, 0, 0, 0.54)}.mdc-select:not(.mdc-select--disabled).mdc-select--focused .mdc-select__dropdown-icon{fill:#6200ee;fill:var(--mdc-theme-primary, #6200ee)}.mdc-select.mdc-select--disabled .mdc-select__dropdown-icon{fill:rgba(0, 0, 0, 0.38)}.mdc-select:not(.mdc-select--disabled)+.mdc-select-helper-text{color:rgba(0, 0, 0, 0.6)}.mdc-select.mdc-select--disabled+.mdc-select-helper-text{color:rgba(0, 0, 0, 0.38)}.mdc-select:not(.mdc-select--disabled) .mdc-select__icon{color:rgba(0, 0, 0, 0.54)}.mdc-select.mdc-select--disabled .mdc-select__icon{color:rgba(0, 0, 0, 0.38)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-select.mdc-select--disabled .mdc-select__selected-text{color:GrayText}.mdc-select.mdc-select--disabled .mdc-select__dropdown-icon{fill:red}.mdc-select.mdc-select--disabled .mdc-floating-label{color:GrayText}.mdc-select.mdc-select--disabled .mdc-line-ripple::before{border-bottom-color:GrayText}.mdc-select.mdc-select--disabled .mdc-notched-outline__leading,.mdc-select.mdc-select--disabled .mdc-notched-outline__notch,.mdc-select.mdc-select--disabled .mdc-notched-outline__trailing{border-color:GrayText}.mdc-select.mdc-select--disabled .mdc-select__icon{color:GrayText}.mdc-select.mdc-select--disabled+.mdc-select-helper-text{color:GrayText}}.mdc-select .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-select .mdc-select__anchor{padding-left:16px;padding-right:0}[dir=rtl] .mdc-select .mdc-select__anchor,.mdc-select .mdc-select__anchor[dir=rtl]{padding-left:0;padding-right:16px}.mdc-select.mdc-select--with-leading-icon .mdc-select__anchor{padding-left:0;padding-right:0}[dir=rtl] .mdc-select.mdc-select--with-leading-icon .mdc-select__anchor,.mdc-select.mdc-select--with-leading-icon .mdc-select__anchor[dir=rtl]{padding-left:0;padding-right:0}.mdc-select .mdc-select__icon{width:24px;height:24px;font-size:24px}.mdc-select .mdc-select__dropdown-icon{width:24px;height:24px}.mdc-select .mdc-select__menu .mdc-deprecated-list-item{padding-left:16px;padding-right:16px}[dir=rtl] .mdc-select .mdc-select__menu .mdc-deprecated-list-item,.mdc-select .mdc-select__menu .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:16px}.mdc-select .mdc-select__menu .mdc-deprecated-list-item__graphic{margin-left:0;margin-right:12px}[dir=rtl] .mdc-select .mdc-select__menu .mdc-deprecated-list-item__graphic,.mdc-select .mdc-select__menu .mdc-deprecated-list-item__graphic[dir=rtl]{margin-left:12px;margin-right:0}.mdc-select{display:inline-flex;position:relative}.mdc-select__dropdown-icon .mdc-select__dropdown-icon-active,.mdc-select__dropdown-icon .mdc-select__dropdown-icon-inactive{position:absolute;top:0;left:0}.mdc-select__dropdown-icon .mdc-select__dropdown-icon-graphic{width:41.6666666667%;height:20.8333333333%}.mdc-select__dropdown-icon .mdc-select__dropdown-icon-inactive{opacity:1;transition:opacity 75ms linear 75ms}.mdc-select__dropdown-icon .mdc-select__dropdown-icon-active{opacity:0;transition:opacity 75ms linear}.mdc-select__dropdown-icon{margin-left:12px;margin-right:12px}[dir=rtl] .mdc-select__dropdown-icon,.mdc-select__dropdown-icon[dir=rtl]{margin-left:12px;margin-right:12px}.mdc-select__dropdown-icon{display:inline-flex;position:relative;align-self:center;align-items:center;justify-content:center;flex-shrink:0;pointer-events:none}.mdc-select--activated .mdc-select__dropdown-icon .mdc-select__dropdown-icon-inactive{opacity:0;transition:opacity 49.5ms linear}.mdc-select--activated .mdc-select__dropdown-icon .mdc-select__dropdown-icon-active{opacity:1;transition:opacity 100.5ms linear 49.5ms}.mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-select__anchor{width:200px;min-width:0;flex:1 1 auto;position:relative;box-sizing:border-box;overflow:hidden;outline:none;cursor:pointer}.mdc-select__selected-text-container{display:flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:none;box-sizing:border-box;width:auto;min-width:0;flex-grow:1;height:28px;border:none;outline:none;padding:0;background-color:rgba(0,0,0,0);color:inherit}.mdc-select__selected-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:1rem;font-size:var(--mdc-typography-subtitle1-font-size, 1rem);line-height:1.75rem;line-height:var(--mdc-typography-subtitle1-line-height, 1.75rem);font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight, 400);letter-spacing:0.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, 0.009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform, inherit);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;width:100%;text-align:left}[dir=rtl] .mdc-select__selected-text,.mdc-select__selected-text[dir=rtl]{text-align:right}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-floating-label{color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-floating-label{color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--invalid+.mdc-select-helper-text--validation-msg{color:#b00020;color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-select__dropdown-icon{fill:#b00020;fill:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-select__dropdown-icon{fill:#b00020;fill:var(--mdc-theme-error, #b00020)}.mdc-select--disabled{cursor:default;pointer-events:none}.mdc-select--with-leading-icon .mdc-select__menu .mdc-deprecated-list-item{padding-left:12px;padding-right:12px}[dir=rtl] .mdc-select--with-leading-icon .mdc-select__menu .mdc-deprecated-list-item,.mdc-select--with-leading-icon .mdc-select__menu .mdc-deprecated-list-item[dir=rtl]{padding-left:12px;padding-right:12px}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-select__menu::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}}@media screen and (forced-colors: active)and (forced-colors: active),screen and (-ms-high-contrast: active)and (forced-colors: active){.mdc-select__menu::before{border-color:CanvasText}}.mdc-select__menu .mdc-deprecated-list .mdc-select__icon,.mdc-select__menu .mdc-list .mdc-select__icon{margin-left:0;margin-right:0}[dir=rtl] .mdc-select__menu .mdc-deprecated-list .mdc-select__icon,[dir=rtl] .mdc-select__menu .mdc-list .mdc-select__icon,.mdc-select__menu .mdc-deprecated-list .mdc-select__icon[dir=rtl],.mdc-select__menu .mdc-list .mdc-select__icon[dir=rtl]{margin-left:0;margin-right:0}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--activated,.mdc-select__menu .mdc-list .mdc-deprecated-list-item--selected,.mdc-select__menu .mdc-list .mdc-deprecated-list-item--activated{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected .mdc-deprecated-list-item__graphic,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--activated .mdc-deprecated-list-item__graphic,.mdc-select__menu .mdc-list .mdc-deprecated-list-item--selected .mdc-deprecated-list-item__graphic,.mdc-select__menu .mdc-list .mdc-deprecated-list-item--activated .mdc-deprecated-list-item__graphic{color:#000;color:var(--mdc-theme-on-surface, #000)}.mdc-select__menu .mdc-list-item__start{display:inline-flex;align-items:center}.mdc-select__option{padding-left:16px;padding-right:16px}[dir=rtl] .mdc-select__option,.mdc-select__option[dir=rtl]{padding-left:16px;padding-right:16px}.mdc-select__one-line-option.mdc-list-item--with-one-line{height:48px}.mdc-select__two-line-option.mdc-list-item--with-two-lines{height:64px}.mdc-select__two-line-option.mdc-list-item--with-two-lines .mdc-list-item__start{margin-top:20px}.mdc-select__two-line-option.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block}.mdc-select__two-line-option.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-select__two-line-option.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-select__two-line-option.mdc-list-item--with-two-lines .mdc-list-item__primary-text{margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-select__two-line-option.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block}.mdc-select__two-line-option.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:36px;content:"";vertical-align:0}.mdc-select__two-line-option.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{margin-top:0;line-height:normal}.mdc-select__option-with-leading-content.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-select__option-with-leading-content.mdc-list-item,.mdc-select__option-with-leading-content.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-select__option-with-leading-content .mdc-list-item__start{margin-left:12px;margin-right:0}[dir=rtl] .mdc-select__option-with-leading-content .mdc-list-item__start,.mdc-select__option-with-leading-content .mdc-list-item__start[dir=rtl]{margin-left:0;margin-right:12px}.mdc-select__option-with-leading-content .mdc-list-item__start{width:36px;height:24px}.mdc-select__option-with-leading-content{padding-left:0;padding-right:12px}[dir=rtl] .mdc-select__option-with-leading-content,.mdc-select__option-with-leading-content[dir=rtl]{padding-left:12px;padding-right:0}.mdc-select__option-with-meta.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-select__option-with-meta.mdc-list-item,.mdc-select__option-with-meta.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-select__option-with-meta .mdc-list-item__end{margin-left:12px;margin-right:12px}[dir=rtl] .mdc-select__option-with-meta .mdc-list-item__end,.mdc-select__option-with-meta .mdc-list-item__end[dir=rtl]{margin-left:12px;margin-right:12px}.mdc-select--filled .mdc-select__anchor{height:56px;display:flex;align-items:baseline}.mdc-select--filled .mdc-select__anchor::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-select--filled.mdc-select--no-label .mdc-select__anchor .mdc-select__selected-text::before{content:"​"}.mdc-select--filled.mdc-select--no-label .mdc-select__anchor .mdc-select__selected-text-container{height:100%;display:inline-flex;align-items:center}.mdc-select--filled.mdc-select--no-label .mdc-select__anchor::before{display:none}.mdc-select--filled .mdc-select__anchor{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-select--filled:not(.mdc-select--disabled) .mdc-select__anchor{background-color:rgb(244.8, 244.8, 244.8)}.mdc-select--filled.mdc-select--disabled .mdc-select__anchor{background-color:rgb(249.9, 249.9, 249.9)}.mdc-select--filled:not(.mdc-select--disabled) .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.42)}.mdc-select--filled:not(.mdc-select--disabled):hover .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.87)}.mdc-select--filled:not(.mdc-select--disabled) .mdc-line-ripple::after{border-bottom-color:#6200ee;border-bottom-color:var(--mdc-theme-primary, #6200ee)}.mdc-select--filled.mdc-select--disabled .mdc-line-ripple::before{border-bottom-color:rgba(0, 0, 0, 0.06)}.mdc-select--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-select--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-select--filled .mdc-menu-surface--is-open-below{border-top-left-radius:0px;border-top-right-radius:0px}.mdc-select--filled.mdc-select--focused.mdc-line-ripple::after{transform:scale(1, 2);opacity:1}.mdc-select--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-select--filled .mdc-floating-label,.mdc-select--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-select--filled.mdc-select--with-leading-icon .mdc-floating-label{left:48px;right:initial}[dir=rtl] .mdc-select--filled.mdc-select--with-leading-icon .mdc-floating-label,.mdc-select--filled.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-select--filled.mdc-select--with-leading-icon .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-select--filled.mdc-select--with-leading-icon .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 96px/0.75)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-line-ripple::before{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled):hover .mdc-line-ripple::before{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-select--invalid:not(.mdc-select--disabled) .mdc-line-ripple::after{border-bottom-color:#b00020;border-bottom-color:var(--mdc-theme-error, #b00020)}.mdc-select--outlined .mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-select--outlined .mdc-select__anchor .mdc-floating-label--float-above{font-size:.75rem}.mdc-select--outlined .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-select--outlined .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-select--outlined .mdc-select__anchor .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-select-outlined-56px 250ms 1}@keyframes mdc-floating-label-shake-float-above-select-outlined-56px{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mdc-select--outlined .mdc-select__anchor{height:56px}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-shape-small, 4px))*2)}}.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-select--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-select--outlined .mdc-select__anchor{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-select--outlined .mdc-select__anchor,.mdc-select--outlined .mdc-select__anchor[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-select--outlined .mdc-select__anchor,.mdc-select--outlined .mdc-select__anchor[dir=rtl]{padding-right:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-select--outlined+.mdc-select-helper-text{margin-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-select--outlined+.mdc-select-helper-text,.mdc-select--outlined+.mdc-select-helper-text[dir=rtl]{margin-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-select--outlined+.mdc-select-helper-text,.mdc-select--outlined+.mdc-select-helper-text[dir=rtl]{margin-right:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-select--outlined:not(.mdc-select--disabled) .mdc-select__anchor{background-color:transparent}.mdc-select--outlined.mdc-select--disabled .mdc-select__anchor{background-color:transparent}.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.38)}.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__anchor:hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__anchor:hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__anchor:hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.87)}.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px}.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#6200ee;border-color:var(--mdc-theme-primary, #6200ee)}.mdc-select--outlined.mdc-select--disabled .mdc-notched-outline__leading,.mdc-select--outlined.mdc-select--disabled .mdc-notched-outline__notch,.mdc-select--outlined.mdc-select--disabled .mdc-notched-outline__trailing{border-color:rgba(0, 0, 0, 0.06)}.mdc-select--outlined .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-select--outlined{border:none}.mdc-select--outlined .mdc-select__anchor .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-select-outlined 250ms 1}.mdc-select--outlined .mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-select--outlined .mdc-select__anchor .mdc-floating-label--float-above{font-size:.75rem}.mdc-select--outlined .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-select--outlined .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-select--outlined .mdc-select__anchor .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-select--outlined .mdc-select__anchor .mdc-select__selected-text::before{content:"​"}.mdc-select--outlined .mdc-select__anchor .mdc-select__selected-text-container{height:100%;display:inline-flex;align-items:center}.mdc-select--outlined .mdc-select__anchor::before{display:none}.mdc-select--outlined .mdc-select__anchor{display:flex;align-items:baseline;overflow:visible}.mdc-select--outlined .mdc-select__selected-text-container{display:flex;border:none;z-index:1;background-color:rgba(0,0,0,0)}.mdc-select--outlined .mdc-select__icon{z-index:2}.mdc-select--outlined .mdc-floating-label{line-height:1.15rem;left:4px;right:initial}[dir=rtl] .mdc-select--outlined .mdc-floating-label,.mdc-select--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-select--outlined.mdc-select--focused .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__anchor:hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__anchor:hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled):not(.mdc-select--focused) .mdc-select__anchor:hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:2px}.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-select--outlined.mdc-select--invalid:not(.mdc-select--disabled).mdc-select--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#b00020;border-color:var(--mdc-theme-error, #b00020)}.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label,.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above,.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--float-above{font-size:.75rem}.mdc-select--outlined.mdc-select--with-leading-icon.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined.mdc-select--with-leading-icon .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-select--outlined.mdc-select--with-leading-icon.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-select--outlined.mdc-select--with-leading-icon .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined.mdc-select--with-leading-icon.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-select--outlined.mdc-select--with-leading-icon .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-select--outlined.mdc-select--with-leading-icon.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-select--outlined.mdc-select--with-leading-icon .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon-56px 250ms 1}@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-56px{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mdc-select--outlined.mdc-select--with-leading-icon .mdc-floating-label--shake,.mdc-select--outlined.mdc-select--with-leading-icon[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-select-outlined-leading-icon-56px 250ms 1}@keyframes mdc-floating-label-shake-float-above-select-outlined-leading-icon-56px-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mdc-select--outlined.mdc-select--with-leading-icon .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 96px)}.mdc-select--outlined .mdc-menu-surface{margin-bottom:8px}.mdc-select--outlined.mdc-select--no-label .mdc-menu-surface,.mdc-select--outlined .mdc-menu-surface--is-open-below{margin-bottom:0}.mdc-select__anchor{--mdc-ripple-fg-size: 0;--mdc-ripple-left: 0;--mdc-ripple-top: 0;--mdc-ripple-fg-scale: 1;--mdc-ripple-fg-translate-end: 0;--mdc-ripple-fg-translate-start: 0;-webkit-tap-highlight-color:rgba(0,0,0,0);will-change:transform,opacity}.mdc-select__anchor .mdc-select__ripple::before,.mdc-select__anchor .mdc-select__ripple::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-select__anchor .mdc-select__ripple::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-select__anchor .mdc-select__ripple::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-select__anchor.mdc-ripple-upgraded .mdc-select__ripple::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-select__anchor.mdc-ripple-upgraded .mdc-select__ripple::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-select__anchor.mdc-ripple-upgraded--unbounded .mdc-select__ripple::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-select__anchor.mdc-ripple-upgraded--foreground-activation .mdc-select__ripple::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-select__anchor.mdc-ripple-upgraded--foreground-deactivation .mdc-select__ripple::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-select__anchor .mdc-select__ripple::before,.mdc-select__anchor .mdc-select__ripple::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-select__anchor.mdc-ripple-upgraded .mdc-select__ripple::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-select__anchor .mdc-select__ripple::before,.mdc-select__anchor .mdc-select__ripple::after{background-color:rgba(0, 0, 0, 0.87);background-color:var(--mdc-ripple-color, rgba(0, 0, 0, 0.87))}.mdc-select__anchor:hover .mdc-select__ripple::before,.mdc-select__anchor.mdc-ripple-surface--hover .mdc-select__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-select__anchor.mdc-ripple-upgraded--background-focused .mdc-select__ripple::before,.mdc-select__anchor:not(.mdc-ripple-upgraded):focus .mdc-select__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-select__anchor .mdc-select__ripple{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected .mdc-deprecated-list-item__ripple::before,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected .mdc-deprecated-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, var(--mdc-theme-on-surface, #000))}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:hover .mdc-deprecated-list-item__ripple::before,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected.mdc-ripple-surface--hover .mdc-deprecated-list-item__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected.mdc-ripple-upgraded--background-focused .mdc-deprecated-list-item__ripple::before,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):focus .mdc-deprecated-list-item__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded) .mdc-deprecated-list-item__ripple::after{transition:opacity 150ms linear}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):active .mdc-deprecated-list-item__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected .mdc-list-item__ripple::before,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected .mdc-list-item__ripple::after{background-color:#000;background-color:var(--mdc-ripple-color, var(--mdc-theme-on-surface, #000))}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:hover .mdc-list-item__ripple::before,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected.mdc-ripple-surface--hover .mdc-list-item__ripple::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected.mdc-ripple-upgraded--background-focused .mdc-list-item__ripple::before,.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):focus .mdc-list-item__ripple::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded) .mdc-list-item__ripple::after{transition:opacity 150ms linear}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected:not(.mdc-ripple-upgraded):active .mdc-list-item__ripple::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-select__menu .mdc-deprecated-list .mdc-deprecated-list-item--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-select-helper-text{margin:0;margin-left:16px;margin-right:16px}[dir=rtl] .mdc-select-helper-text,.mdc-select-helper-text[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-select-helper-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto, sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:0.75rem;font-size:var(--mdc-typography-caption-font-size, 0.75rem);line-height:1.25rem;line-height:var(--mdc-typography-caption-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-caption-font-weight, 400);letter-spacing:0.0333333333em;letter-spacing:var(--mdc-typography-caption-letter-spacing, 0.0333333333em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-decoration:var(--mdc-typography-caption-text-decoration, inherit);text-transform:inherit;text-transform:var(--mdc-typography-caption-text-transform, inherit);display:block}.mdc-select-helper-text::before{display:inline-block;width:0;height:16px;content:"";vertical-align:0}.mdc-select-helper-text{margin-top:0;line-height:normal}.mdc-select-helper-text--validation-msg{opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-select--invalid+.mdc-select-helper-text--validation-msg,.mdc-select-helper-text--validation-msg-persistent{opacity:1}.mdc-select--with-leading-icon .mdc-select__icon{display:inline-block;box-sizing:border-box;border:none;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;align-self:center;background-color:rgba(0,0,0,0);fill:currentColor}.mdc-select--with-leading-icon .mdc-select__icon{margin-left:12px;margin-right:12px}[dir=rtl] .mdc-select--with-leading-icon .mdc-select__icon,.mdc-select--with-leading-icon .mdc-select__icon[dir=rtl]{margin-left:12px;margin-right:12px}.mdc-select__icon:not([tabindex]),.mdc-select__icon[tabindex="-1"]{cursor:default;pointer-events:none}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:0;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:#fff;background-color:var(--mdc-elevation-overlay-color, #fff)}.mdc-menu .mdc-deprecated-list-item__meta{color:rgba(0, 0, 0, 0.87)}.mdc-menu .mdc-deprecated-list-item__graphic{color:rgba(0, 0, 0, 0.87)}.mdc-menu{min-width:112px;min-width:var(--mdc-menu-min-width, 112px)}.mdc-menu .mdc-menu-item--submenu-open .mdc-deprecated-list-item__ripple::before{opacity:.04}.mdc-menu .mdc-menu-item--submenu-open .mdc-list-item__ripple::before{opacity:.04}.mdc-menu .mdc-deprecated-list{color:rgba(0, 0, 0, 0.87)}.mdc-menu .mdc-deprecated-list,.mdc-menu .mdc-list{position:relative}.mdc-menu .mdc-deprecated-list .mdc-elevation-overlay,.mdc-menu .mdc-list .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-menu .mdc-deprecated-list-divider{margin:8px 0}.mdc-menu .mdc-deprecated-list-item{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mdc-menu .mdc-deprecated-list-item--disabled{cursor:auto}.mdc-menu a.mdc-deprecated-list-item .mdc-deprecated-list-item__text,.mdc-menu a.mdc-deprecated-list-item .mdc-deprecated-list-item__graphic{pointer-events:none}.mdc-menu__selection-group{padding:0;fill:currentColor}.mdc-menu__selection-group .mdc-deprecated-list-item{padding-left:56px;padding-right:16px}[dir=rtl] .mdc-menu__selection-group .mdc-deprecated-list-item,.mdc-menu__selection-group .mdc-deprecated-list-item[dir=rtl]{padding-left:16px;padding-right:56px}.mdc-menu__selection-group .mdc-menu__selection-group-icon{left:16px;right:initial}[dir=rtl] .mdc-menu__selection-group .mdc-menu__selection-group-icon,.mdc-menu__selection-group .mdc-menu__selection-group-icon[dir=rtl]{left:initial;right:16px}.mdc-menu__selection-group .mdc-menu__selection-group-icon{display:none;position:absolute;top:50%;transform:translateY(-50%)}.mdc-menu-item--selected .mdc-menu__selection-group-icon{display:inline}#loader{z-index:1;width:100%;height:auto;padding:1rem}#grid{padding:1rem}html{height:100%;scroll-behavior:smooth;overflow:visible;overflow-y:scroll}body{height:100%;margin:0;padding:0;background-image:linear-gradient(rgba(72, 34, 123, 0.4), rgba(72, 34, 123, 0.4)),url(images/cats_pattern_by_rhoda_the_echidna.png);background-repeat:repeat;background-position:top;background-attachment:fixed}.header{font-size:18px}@media screen and (min-width: 360px){.header{font-size:calc(1.2658227848vw + 13.4430379747px)}}@media screen and (min-width: 992px){.header{font-size:26px}}.header{font-family:"Fredoka One",cursive;color:#a185c6;text-align:center}.select-width{min-width:160px;max-width:280px}.mdc-select{position:relative;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;cursor:pointer}.mdc-select .mdc-select__anchor{display:flex;align-items:center;justify-content:space-between;background-color:rgba(161,133,198,.5);padding:.875rem 1.125rem;border:2px solid #48227b;border-radius:8px;cursor:pointer;transition:all .25s cubic-bezier(0.4, 0, 0.2, 1);-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;box-sizing:border-box}.mdc-select .mdc-select__anchor:hover{background-color:rgba(161,133,198,.7);box-shadow:0 4px 12px rgba(72,34,123,.2)}.mdc-select .mdc-select__selected-text{color:#48227b;font-size:.95rem;font-weight:600;flex:1;background:rgba(0,0,0,0);border:none;outline:none;padding:0;margin:0}.mdc-select .mdc-select__dropdown-icon{color:#48227b;font-size:1rem;margin-left:.75rem;pointer-events:none;transition:transform .3s ease;flex-shrink:0}.mdc-select .mdc-floating-label{position:absolute;top:50%;left:1.125rem;transform:translateY(-50%);color:rgba(72,34,123,.7);font-size:.9rem;pointer-events:none;transition:all .2s cubic-bezier(0.4, 0, 0.2, 1);background:rgba(0,0,0,0);padding:0 4px}.mdc-select .mdc-floating-label.mdc-floating-label--float-above{top:-12px;font-size:.8rem;color:#48227b;font-weight:600;background:rgba(0,0,0,0)}.mdc-select .mdc-line-ripple{display:none}.mdc-select.mdc-select--activated .mdc-select__anchor{background-color:rgba(161,133,198,.8);border-color:#d3c647;box-shadow:0 4px 12px rgba(72,34,123,.3)}.mdc-select.mdc-select--activated .mdc-select__dropdown-icon{color:#d3c647;transform:rotateZ(180deg)}.mdc-select__menu{position:absolute;top:calc(100% + 8px);left:0;right:0;width:100%;background:rgba(161,133,198,.95);border:2px solid #48227b;border-radius:8px;box-shadow:0 8px 24px rgba(72,34,123,.2);z-index:1000;max-height:280px;overflow-y:auto;overflow-x:hidden;display:none;animation:slideOut .2s cubic-bezier(0.4, 0, 0.2, 1) forwards}.mdc-select__menu.mdc-menu-surface--open{display:block;animation:slideIn .2s cubic-bezier(0.4, 0, 0.2, 1) forwards}.mdc-select__menu::-webkit-scrollbar{width:6px}.mdc-select__menu::-webkit-scrollbar-track{background:rgba(72,34,123,.1);border-radius:3px}.mdc-select__menu::-webkit-scrollbar-thumb{background:rgba(72,34,123,.3);border-radius:3px}.mdc-select__menu::-webkit-scrollbar-thumb:hover{background:rgba(72,34,123,.5)}@keyframes slideIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.mdc-list{padding:4px 0;margin:0;list-style:none}.mdc-list .mdc-list-item{padding:.75rem 1.125rem;color:#48227b;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .15s ease;font-size:.95rem;display:flex;align-items:center;position:relative}.mdc-list .mdc-list-item:hover{background-color:rgba(72,34,123,.1)}.mdc-list .mdc-list-item--selected,.mdc-list .mdc-list-item[aria-selected=true]{color:#d3c647;background-color:rgba(211,198,71,.2);font-weight:600}.mdc-list .mdc-list-item--selected::before,.mdc-list .mdc-list-item[aria-selected=true]::before{content:"✓";position:absolute;left:12px;color:#d3c647;font-weight:bold;font-size:1rem}.mdc-list .mdc-list-item--selected .mdc-list-item__text,.mdc-list .mdc-list-item[aria-selected=true] .mdc-list-item__text{margin-left:20px}.mdc-list .mdc-list-item .mdc-list-item__text{display:block;flex:1}.mdc-list .mdc-list-item:active{background-color:rgba(72,34,123,.15)}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.fade-in{animation:mdc-animation-enter(fade-in, 350ms)}.fade-out{animation:mdc-animation-exit-permanent(fade-out, 175ms)}.layout-grid{display:grid;grid-template-columns:repeat(12, 1fr);grid-template-rows:auto;gap:16px 16px}.my-grid-cell{grid-column:span 12}@media(min-width: 0px){.layout-grid{gap:16px 16px;margin-left:5vw;margin-right:5vw}.my-grid-cell{grid-column:span 12}}@media(min-width: 400px){.layout-grid{gap:16px 16px;margin-left:5vw;margin-right:5vw}.my-grid-cell{grid-column:span 6}}@media(min-width: 480px){.layout-grid{gap:16px 16px;margin-left:5vw;margin-right:5vw}.my-grid-cell{grid-column:span 6}}@media(min-width: 720px){.layout-grid{gap:24px 24px;margin-left:5vw;margin-right:5vw}.my-grid-cell{grid-column:span 4}}@media(min-width: 992px){.layout-grid{gap:24px 24px;margin-left:10vw;margin-right:10vw}.my-grid-cell{grid-column:span 3}}@media(min-width: 1200px){.layout-grid{gap:24px 24px;margin-left:10vw;margin-right:10vw}.my-grid-cell{grid-column:span 2}}.mdc-card{position:relative}.list-item-content{background:rgba(161,133,198,.9);padding:.5rem;color:#48227b;width:calc(100% - 1rem);display:block;position:absolute;bottom:0;left:0}.list-item-title{padding-bottom:.5rem}.list-item-anchor{position:absolute;bottom:.25rem;right:.25rem;z-index:1;text-decoration:none;cursor:pointer;transition:transform .2s ease}.list-item-anchor:hover{transform:scale(1.1)}.list-item-anchor .mdc-icon-button{width:24px;height:24px;padding:0;display:flex;align-items:center;justify-content:center;color:#fff;background-color:rgba(0,0,0,.2);border-radius:50%;transition:background-color .2s ease,box-shadow .2s ease;border:none;cursor:pointer}.list-item-anchor .mdc-icon-button:hover{background-color:rgba(0,0,0,.6);box-shadow:0 2px 6px rgba(0,0,0,.3)}.list-item-anchor .mdc-icon-button:active{background-color:rgba(0,0,0,.8)}.list-item-anchor .mdc-icon-button.material-icons{font-size:20px;line-height:1}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jc3MiLCJtYXBwaW5ncyI6IjtBQUFBLDJFQUEyRTs7QUFFM0U7K0VBQytFOztBQUUvRTs7O0VBR0U7O0FBRUY7RUFDRSxpQkFBaUIsRUFBRSxNQUFNO0VBQ3pCLDhCQUE4QixFQUFFLE1BQU07QUFDeEM7O0FBRUE7K0VBQytFOztBQUUvRTs7RUFFRTs7QUFFRjtFQUNFLFNBQVM7QUFDWDs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7OztFQUdFOztBQUVGO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtBQUNsQjs7QUFFQTsrRUFDK0U7O0FBRS9FOzs7RUFHRTs7QUFFRjtFQUNFLHVCQUF1QixFQUFFLE1BQU07RUFDL0IsU0FBUyxFQUFFLE1BQU07RUFDakIsaUJBQWlCLEVBQUUsTUFBTTtBQUMzQjs7QUFFQTs7O0VBR0U7O0FBRUY7RUFDRSxpQ0FBaUMsRUFBRSxNQUFNO0VBQ3pDLGNBQWMsRUFBRSxNQUFNO0FBQ3hCOztBQUVBOytFQUMrRTs7QUFFL0U7O0VBRUU7O0FBRUY7RUFDRSw2QkFBNkI7QUFDL0I7O0FBRUE7OztFQUdFOztBQUVGO0VBQ0UsbUJBQW1CLEVBQUUsTUFBTTtFQUMzQiwwQkFBMEIsRUFBRSxNQUFNO0VBQ2xDLGlDQUFpQyxFQUFFLE1BQU07QUFDM0M7O0FBRUE7O0VBRUU7O0FBRUY7O0VBRUUsbUJBQW1CO0FBQ3JCOztBQUVBOzs7RUFHRTs7QUFFRjs7O0VBR0UsaUNBQWlDLEVBQUUsTUFBTTtFQUN6QyxjQUFjLEVBQUUsTUFBTTtBQUN4Qjs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7OztFQUdFOztBQUVGOztFQUVFLGNBQWM7RUFDZCxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLHdCQUF3QjtBQUMxQjs7QUFFQTtFQUNFLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxXQUFXO0FBQ2I7O0FBRUE7K0VBQytFOztBQUUvRTs7RUFFRTs7QUFFRjtFQUNFLGtCQUFrQjtBQUNwQjs7QUFFQTsrRUFDK0U7O0FBRS9FOzs7RUFHRTs7QUFFRjs7Ozs7RUFLRSxvQkFBb0IsRUFBRSxNQUFNO0VBQzVCLGVBQWUsRUFBRSxNQUFNO0VBQ3ZCLGlCQUFpQixFQUFFLE1BQU07RUFDekIsU0FBUyxFQUFFLE1BQU07QUFDbkI7O0FBRUE7OztFQUdFOztBQUVGO1FBQ1EsTUFBTTtFQUNaLGlCQUFpQjtBQUNuQjs7QUFFQTs7O0VBR0U7O0FBRUY7U0FDUyxNQUFNO0VBQ2Isb0JBQW9CO0FBQ3RCOztBQUVBOztFQUVFOztBQUVGOzs7O0VBSUUsMEJBQTBCO0FBQzVCOztBQUVBOztFQUVFOztBQUVGOzs7O0VBSUUsa0JBQWtCO0VBQ2xCLFVBQVU7QUFDWjs7QUFFQTs7RUFFRTs7QUFFRjs7OztFQUlFLDhCQUE4QjtBQUNoQzs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFLDhCQUE4QjtBQUNoQzs7QUFFQTs7Ozs7RUFLRTs7QUFFRjtFQUNFLHNCQUFzQixFQUFFLE1BQU07RUFDOUIsY0FBYyxFQUFFLE1BQU07RUFDdEIsY0FBYyxFQUFFLE1BQU07RUFDdEIsZUFBZSxFQUFFLE1BQU07RUFDdkIsVUFBVSxFQUFFLE1BQU07RUFDbEIsbUJBQW1CLEVBQUUsTUFBTTtBQUM3Qjs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFLHdCQUF3QjtBQUMxQjs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7OztFQUdFOztBQUVGOztFQUVFLHNCQUFzQixFQUFFLE1BQU07RUFDOUIsVUFBVSxFQUFFLE1BQU07QUFDcEI7O0FBRUE7O0VBRUU7O0FBRUY7O0VBRUUsWUFBWTtBQUNkOztBQUVBOzs7RUFHRTs7QUFFRjtFQUNFLDZCQUE2QixFQUFFLE1BQU07RUFDckMsb0JBQW9CLEVBQUUsTUFBTTtBQUM5Qjs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFLHdCQUF3QjtBQUMxQjs7QUFFQTs7O0VBR0U7O0FBRUY7RUFDRSwwQkFBMEIsRUFBRSxNQUFNO0VBQ2xDLGFBQWEsRUFBRSxNQUFNO0FBQ3ZCOztBQUVBOytFQUMrRTs7QUFFL0U7O0VBRUU7O0FBRUY7RUFDRSxjQUFjO0FBQ2hCOztBQUVBOztFQUVFOztBQUVGO0VBQ0Usa0JBQWtCO0FBQ3BCOztBQUVBOytFQUMrRTs7QUFFL0U7O0VBRUU7O0FBRUY7RUFDRSxhQUFhO0FBQ2Y7O0FBRUE7O0VBRUU7O0FBRUY7RUFDRSxhQUFhO0FBQ2Y7O0FDeFRRLCtEQ1hOLEdBQ0UsdUJBQ0UsS0FHRixrRUFDRSx3QkFDQSxRQUdGLDBFQUNFLGdDQzhCQSx5RUFZRixNRDVCQSxpQ0NnQkUsMkVBWUYsNkREakJGLEdBQ0Usc0JBQ0UsUUFHRixzRUFDRSx1QkFDQSxRQUdGLDBEQUNFLDJCQUNBLE1BR0Ysc0JBQ0UsbUVBTUosR0FDRSxtRUFDRSx3QkFDQSxLQUdGLHdFQUNFLGlDQ3hCQSwrRUFZRixRRG9CQSxvRUFDRSxpQ0NqQ0EsNEVBWUYsTUQ2QkEsaUNDekNFLDZFQVlGLCtERHdDRixHQUNFLDZFQUNFLHVCQU1BLFFBR0YsOEVBQ0UsMkJBTUEsUUFHRiw4RUFDRSwwQkFNQSxNQUdGLHNCQUNFLDJDQU1KLEtBQ0UsMENBSUUseUVBTUosR0FDRSx1QkFDRSxLQUdGLGtFQUNFLHdCQUNBLFFBR0YsMEVBQ0UsaUNDaEhBLDhFQVlGLE1EaUhBLGtDQzdIRSxnRkFZRiwyRUQ0SEYsR0FDRSxtRUFDRSx3QkFDQSxLQUdGLHdFQUNFLGtDQy9JQSxvRkFZRixRRDJJQSxvRUFDRSxrQ0N4SkEsaUZBWUYsTURvSkEsa0NDaEtFLGtGQVlGLG1ERCtKRixLQUNFLDJCQUNFLHVCRXpMSixpQkFFSSxXQUNBLHdCQUNBLGdDQUVBLGdCQUNBLDJDQ2lDRixxQkR4Q0Ysd0JBVU0sdUJBVk4seURBZUksMkJBR0YsaUJBRUksV0FDQSxZQUNBLGVBQ0EsMEJBQ0EsNERBSUEsaUNBSUosb0JBRUksa0JBQ0EsV0FDQSxlQUNBLHVCQUdBLDhCQUlKLFlBRUksa0JBQ0EsV0FDQSxZQUNBLG1DQUlKLDBCQUVJLFVBRUEseUJBQ0EsOERBSUEsa0NBSUosYUFFSSw2REFJQSxtQ0FJSixtQkFFSSxxQ0FJSixZQUVJLCtEQWdISixlQUVJLHVFQUlKLGlCQUVJLHlFQUlKLGdCQUVJLGNBQ0EsNEdBS0YsZ0ZBRUksNElBSUYsNEVBRUksOEdBTU4sa0ZBRUksOElBSUYsOEVBRUksZ0pBYVYsT0FHSSxDQUVBLDZCQUVBLDBPQUtGLDBFQUVJLDhPQUlKLDRFQUVJLGdLQUtOLHFFQUVJLG9CQUlBLHNPQUtGLGtCQUdJLFVBRUEsME9BSUosaUJBR0ksVUFFQSw4QkEzTUosU0FFSSw4RUFLRixjQUVJLGlQQUtGLGNBR0ksaUNBaUJWLG9CRHhISSwrQ0FZRixtQ0MrSEYsd0RBSUksa0NBSUosd0JBaEJzQixzQkF5QnRCLFVFek1PLGlDRjhNTCxvQkU5TUssbUNGb05MLHdCQUVJLG1CR2hNTixZQStFRSxrQkFDQSxzQkFDQSw2QkoxREUsd0RBWUYsOEJBWkUsMERBWUYsU0kwREEsVUFDQSxtQkFDQSwwQkFDQSxVQUNBLGNBQ0EsOEJBQ0EsVUNwSE0saUhEeUhOLHlCQU1GLFlBRUksbUNBSUosb0JBRUkscUJBQ0EsVUFDQSx5QkFNSixvQkFFSSxtQkFDQSxVQUNBLHFDQUlKLG9CQUVJLFVBQ0EsZ0NBSUEsbUJBN0lKLG9IRWtXYSxzQk4zVVQsZ0RBWUYsV0FaRSx3Q0FZRixrQkFaRSwyQ0FZRix3SE9FRSwrQlBGRiwyREl2QkYsaUJBRUksaUJBQ0EsMEJBSUosY0FFSSw4QkFJSixVQUVJLGtESWhDQSxpQkFFRSxTQUNBLE9BQ0EsV0FDQSwwQkFDQSxXQUNBLDBCQXdDTix1QkFyQ29CLDBCQUVoQixTQUNFLHlCQUdGLG1CQUNFLHdCQUNBLFVBQ0EsVUFDQSx5QkFLRixrR0FDRSxpQ0FNTixtQkFFSSxVQUNBLHVDQUlKLFNBRUksa0JDOUNOLHdCVGlDTSxtREFZRiwrR1V4QkYsVVZZSSx3Q0FZRixtT1c0RUEscUJYeEZFLDRFQVlGLHFTV3FkRixZWGplSSw4Q0FZRixxWFdxZEYsd0JBOVFJLGFYbk5BLDhDQVlGLHFLV2lPRSwrQkFFSSxtTEFLRix3QkE5UVcsYVgwQmIsOENBWUYsMklXcVBBLDZEWHJQQSxrQlM3Q0osWUFJRSxlQUNBLHNCQUNBLDhCQUNBLHNCQUNBLFdBQ0EsVUFDQSx1QkFFQSxZQUNFLGtCQUNBLHNCQUNBLFdBQ0EsWUcxQlMsMkJIOEJYLG1CQUNFLGNBQ0EsbUJBQ0EsWUFDQSxpQkFDQSxVQUVBLHdDQUVBLDBCQUNFLFNBQ0Esc0NBR0Ysd0JBQ0UsUUFDQSx5QkFJSixpQ0krUEUsbUNBQ0EsK0JidlFFLCtHQVlGLGtCQVpFLDZEQVlGLGlCQVpFLDhEQVlGLGdCQVpFLDZEQVlGLHdCQVpFLHdFQVlGLHdCQVpFLGlGQVlGLENBWkUsd0VBWUYsdUJBWkUsdUVBWUYsc0dPRUUsY1BGRiw0Q1NMRixzQkFJRSxtQkFDQSxnQkFDQSxVQUNBLG1DQ05GLHdCVklFLDhLT0VFLHdCUEZGLCtHU1VKLEtBQ0UsV0FFQSxPQUVBLFdBQ0Esb0RBQ0Esb0VGZkksT0VtQkYsVUFFQSwrQ0FHRixXR3pFa0IsbURINkVsQixXRzVFdUIsaURIZ0Z2QixxREFDRSxVQUVBLG1DQUlKLG1ISHNSZSxXTXpXUyxvREh1RnRCLDJEQUVBLFlBQ0UsaUVBR0YscURBQ0UsMEVBS0osV0FDRSwrR0FFQSxjVDVERSxtUU9FRSxpQlBGRiwrRFNrRUYsV0dqR2lCLG1ESHFHakIsYUFDRSxpREFHRixpQlQxRUUsb0lPRUUsY1BGRixzRVNvRkYsWUcxSHFCLHFESDhIckIsbUJBQ0UsbUJHOUg2Qix5SEhrSS9CLHFCQUVFLHlCQUlKLGtDQUNFLGtDQUdGLG1ISHdOZSxtQ0dyTmIsMEVBS0EsV0FDRSw4RUFHRixjQUNFLDRFQUdGLGlCVHZIRSwwTE9FRSxjUEZGLCtGU3VIRixrQkdqSnFDLGdDSHdKdkMsZ0JHckxhLHNDSHlMYixnQkdqS21CLHNDSHFLbkIsZ0JHckxvQiwwQ0h5THBCLGlCR2hMdUIsZ0RIb0x2QixnQkFDRSwwQkNySUEsc0JBQ0UsV0UxRGdCLDJCRjhEaEIsV0U3RHFCLHlCRmlFckIsbURBQ0UsbUNBSUYsbURBQ0Usd0VBR0EsY1Y1QkYscUxPRUUsaUJQRkYscUVVc0NFLGtCRXhFa0MsZ0NGNkVwQyxnQkUxRmdCLGtCQ3lPbEIsaUNBZ0VFLG1DQUNBLCtCYnZRRSxrRUFZRiw0QmErTEEsaUNBMkRBLG1DQUNBLCtCYnZRRSwrR0FZRixlQVpFLDBEQVlGLGlCQVpFLDhEQVlGLGdCQVpFLDZEQVlGLDJCQVpFLDJFQVlGLHdCQVpFLGlGQVlGLENBWkUsd0VBWUYsdUJBWkUsdUVBWUYsNEJhK0xBLGlDQTJEQSxtQ0FDQSwrQmJ2UUUsK0dBWUYsa0JBWkUsNkRBWUYsb0JBWkUsaUVBWUYsZ0JBWkUsNkRBWUYsK0JBWkUsK0VBWUYsd0JBWkUsaUZBWUYsQ0FaRSx3RUFZRix1QkFaRSx1RUFZRiw0QmErTEEsaUNBMkRBLG1DQUNBLCtCYnZRRSwrR0FZRixlQVpFLDBEQVlGLHFCQVpFLGtFQVlGLGdCQVpFLDZEQVlGLHNCQVpFLHNFQVlGLHdCQVpFLGlGQVlGLENBWkUsd0VBWUYsdUJBWkUsdUVBWUYsNEJhK0xBLGlDQTJEQSxtQ0FDQSwrQmJ2UUUsK0dBWUYsbUJBWkUsOERBWUYsbUJBWkUsZ0VBWUYsZ0JBWkUsNkRBWUYsOEJBWkUsOEVBWUYsd0JBWkUsaUZBWUYsQ0FaRSx3RUFZRix1QkFaRSx1RUFZRiw0QmErTEEsaUNBMkRBLG1DQUNBLCtCYnZRRSwrR0FZRixpQkFaRSw0REFZRixpQkFaRSw4REFZRixnQkFaRSw2REFZRixzQkFaRSxzRUFZRix3QkFaRSxpRkFZRixDQVpFLHdFQVlGLHVCQVpFLHVFQVlGLDRCYStMQSxpQ0EyREEsbUNBQ0EsK0JidlFFLCtHQVlGLGtCQVpFLDZEQVlGLGlCQVpFLDhEQVlGLGdCQVpFLDZEQVlGLHdCQVpFLHdFQVlGLHdCQVpFLGlGQVlGLENBWkUsd0VBWUYsdUJBWkUsdUVBWUYsNEJhK0xBLGlDQTJEQSxtQ0FDQSwrQmJ2UUUsK0dBWUYsZUFaRSwwREFZRixvQkFaRSxpRUFZRixnQkFaRSw2REFZRiwwQkFaRSwwRUFZRix3QkFaRSxpRkFZRixDQVpFLHdFQVlGLHVCQVpFLHVFQVlGLDRCYStMQSxpQ0EyREEsbUNBQ0EsK0JidlFFLCtHQVlGLG1CQVpFLDhEQVlGLHFCQVpFLGtFQVlGLGdCQVpFLDZEQVlGLDhCQVpFLDhFQVlGLHdCQVpFLGlGQVlGLENBWkUsd0VBWUYsdUJBWkUsdUVBWUYsd0JhK0xBLGlDQTJEQSxtQ0FDQSwrQmJ2UUUsMkdBWUYsZUFaRSxzREFZRixtQkFaRSw0REFZRixnQkFaRSx5REFZRix5QkFaRSxxRUFZRix3QkFaRSw2RUFZRixDQVpFLG9FQVlGLHVCQVpFLG1FQVlGLHdCYStMQSxpQ0EyREEsbUNBQ0EsK0JidlFFLDJHQVlGLG1CQVpFLDBEQVlGLG9CQVpFLDZEQVlGLGdCQVpFLHlEQVlGLDhCQVpFLDBFQVlGLHdCQVpFLDZFQVlGLENBWkUsb0VBWUYsdUJBWkUsbUVBWUYsMEJhK0xBLGlDQTJEQSxtQ0FDQSwrQmJ2UUUsNkdBWUYsa0JBWkUsMkRBWUYsb0JBWkUsK0RBWUYsZ0JBWkUsMkRBWUYsOEJBWkUsNEVBWUYsd0JBWkUsK0VBWUYsQ0FaRSxzRUFZRix1QkFaRSxxRUFZRix5QmErTEEsaUNBMkRBLG1DQUNBLCtCYnZRRSw0R0FZRixtQkFaRSwyREFZRixvQkFaRSw4REFZRixnQkFaRSwwREFZRiw4QkFaRSwyRUFZRixxQkFaRSwyRUFZRixDQVpFLGtFQVlGLHlCQVpFLHNFQVlGLDJCYStMQSxpQ0EyREEsbUNBQ0EsK0JidlFFLDhHQVlGLGtCQVpFLDREQVlGLGlCQVpFLDZEQVlGLGdCQVpFLDREQVlGLDhCQVpFLDZFQVlGLHFCQVpFLDZFQVlGLENBWkUsb0VBWUYseUJBWkUsd0VBWUYsb0JjekNBLGlIUndXVyxvQlF4V1gsa0hSd1dXLG9CUXhXWCxrSFJ3V1csb0JReFdYLGtIUndXVyxvQlF4V1gsbUhSd1dXLG9CUXhXWCxtSFJ3V1csb0JReFdYLG9IUndXVyxvQlF4V1gsb0hSd1dXLG9CUXhXWCxvSFJ3V1csb0JReFdYLG9IUndXVyxxQlF4V1gscUhSd1dXLHFCUXhXWCxxSFJ3V1cscUJReFdYLHFIUndXVyxxQlF4V1gscUhSd1dXLHFCUXhXWCxxSFJ3V1cscUJReFdYLHFIUndXVyxxQlF4V1gsc0hSd1dXLHFCUXhXWCxzSFJ3V1cscUJReFdYLHNIUndXVyxxQlF4V1gsc0hSd1dXLHFCUXhXWCx1SFJ3V1cscUJReFdYLHVIUndXVyxxQlF4V1gsdUhSd1dXLHFCUXhXWCx1SFJ3V1cscUJReFdYLHVIUndXVywyQlFuV2Isd0RBRUksdUJScUZLLHFCUzNGVCxpQ0ZrU0UsbUNBQ0EsK0JidlFFLCtHQVlGLGVBWkUsMERBWUYsZ0JBWkUsNkRBWUYsMEJBWkUsMEVBWUYsd0JBWkUsaUZBWUYsQ0FaRSx3RUFZRix1QkFaRSx1RUFZRixrQmVoQ0UsT0FFQSxDQUVBLHlCQUVBLG9CQUNBLGdCQUNBLHVCQUNBLG1CQUNBLFlBQ0EsZ0JBQ0Esc0JBS0EsNERSaUJBLE9RYkUsVUFFQSxDQUVBLDBCQUVBLGlCQUVBLHFCQXJDTixnR0EwQ0ksa0NBT0osV0FFSSxzQ0FLRixlQXVKQSxpQkFFQSxZQUNBLDhGQXJKRSxhQWdLRixpQkFFQSxrQ0E5RUYsdUNBY00sNEJBU04sK0RBRUksMERBcEVGLEdBQ0UsZ0VBRUUsS0FJRixrRUFDRSxrRUFFQSxLQUlGLDBFQUNFLG1FQU9BLE1BSUYsZ0VBRUUscUNDd0lOLEtBQ0Usc0RDMVI2QixzRURnUzNCLElBR0YsK0ZBQ0Usc0NBS0osS0FDRSxnQ0FDRSxVQUNBLElBR0YsdUNBQ0UsdUNBSUosS0FDRSxnQ0FDRSx3Q0FDQSxJQUdGLFNBQ0UsdUJFNVNKLFlBMFVFLGtCQUNBLE1BQ0EsUUFDQSxPQUNBLHNCQUNBLFdBQ0EsZUFDQSxZQUNBLGdCQUVBLG9CQUNBLDhEWDNTRSxnQlcrU0EsMEZBdFZGLHFCQUlJLFlBQ0EscUJBQ0Esd0JBQ0Esb0JBQ0EsK0JBSUoscUJsQnlCQSxrR09FRSxnQlBGRixzRGtCekJBLFVDekJZLGdDRHFDWixnQmxCYUEseUdPRUUscUJQRkYsa0RrQmJBLFdBUUksNkJBSUosYUFFSSxXQUNBLDhCQUNBLDBDQUlKLG9CQUVJLGtCQUNBLGVBQ0EsdURBSUosa0JBRUksaUVBSUoseUJBRUksMkRBTUosY2xCN0JBLDBKT0VFLGdCUEZGLDJFa0I2QkEsZUFJSSw0REFNSixZQUVJLG1FRW1oREoseUJwQjVqREEsNkRvQjRqREEseUJwQjVqREEsNERvQjRuREEsd0JwQjVuREEsZ0ZvQjRuREEsNEJwQjVuREEsc0RvQjRuREEseUJwQjVuREEsbUVvQm1wREUsd0JwQm5wREYsdUZvQm1wREUsWXBCL3BEQSx1Q0FZRiw2RG9CbXBERSx3QnBCbnBERixnRXFCSkEsd0JyQklBLDBEcUJKQSx5QnJCSUEsMERzQktBLHlCdEJMQSxvRHNCS0EseUJ0QkxBLHVFRW9CQSw0RGtCd2lEQSxjcEI1akRBLDZEb0JtcERFLFFwQm5wREYsc0RvQjRuREEsY3BCNW5EQSwyRFEwQkEsNEJSMUJBLDZMa0JrREYscUJsQmxERSxvRHNCS0EsY3RCTEEsMERxQkpBLGNyQklBLGtDdUJrVkYsT0FFSSwyQkFDQSxvQkFDQSxpQ0F1RUosaUJ2QjdaRSxvR09FRSxjUEZGLGtGdUJtYUYsY3ZCbmFFLGdLT0VFLGNQRkYsK0NzQmhDQSxVQWxCUSxtRUYyMkJWLFVFMzJCVSxxRUN5V1YsaUJ2QnZURSx1Sk9FRSxpQlBGRixxRnVCd1VGLGF2QnhVRSx3S09FRSxnQlBGRiw0QnVCMUJGLG1CQXdGSSxrQkFDQSw2SEFpS0osaUJBR0ksTUFDQSxPQUNBLCtEQUlKLG9CQUtJLHNCQUNBLGdFQWFKLFNBRUksb0NBSUEsOERBS0osU0FFSSwrQkFJQSw0QkEzTUYsZ0J2QmxFQSw0Rk9FRSxnQlBGRiw4Q3VCa0VBLG1CQVVJLGtCQUNBLGtCQUNBLG1CQUNBLHVCQUNBLGNBQ0Esb0JBQ0EsdUZBd01OLFNBRUksaUNBSUEscUZBSUosU0FFSSx5Q0FJQSxzRFJqTUosdUNBY00scUJRNUJOLFdIOUZjLFlHc0dWLGNBQ0Esa0JBQ0Esc0JBQ0EsZ0JBQ0EsYUFDQSxlQUNBLHNDQXNQSixZQUVJLHdCQUNBLENBREEsb0JBQ0EsQ0FEQSxlQUNBLG9CQUNBLHNCQUNBLFdBQ0EsWUFDQSxZQUNBLFlIL1dpQixZR2lYakIsYUFDQSxVQUNBLCtCQUlBLGNBQ0EsNEJBSUosaUNWMUhFLG1DQUNBLCtCYnZRRSwrR0FZRixlQVpFLDBEQVlGLG9CQVpFLGlFQVlGLGdCQVpFLDZEQVlGLDBCQVpFLDBFQVlGLHdCQVpFLGlGQVlGLENBWkUsd0VBWUYsdUJBWkUsdUVBWUYsdUJhb1FBLG1CQUNBLGdCQUNBLGNVbUhFLFdBQ0EsZ0JBRUEsMEVoQjFYQSxnQmdCNlhFLHFFSDZ2Q0osYXBCeG9ERSxzQ0FZRix5Rm9CNG5EQSxhcEJ4b0RFLHNDQVlGLDZHcUJRQSxhckJwQkUsc0NBWUYsNEVvQm1wREUsWXBCL3BEQSxxQ0FZRixnR29CbXBERSxZcEIvcERBLHFDQVlGLHVCdUJvSUYsY0FxUUUsb0JBQ0EsNEVBbkZGLGlCdkJ2VEUsNkxPRUUsaUJQRkYsMEZFb0JBLDBCcUJxSUEsaUJyQmpNQSxzQkFDQSxXQUNBLFlBQ0EsTUFDQSxPQUNBLCtCQUNBLHNCQUNBLFdBQ0Esb0JBQ0EseUlBK0NBLDBCcUJ5SUEsdUJyQmxMRSx5R29CbUJKLGF0Qk1FLG9RT0VFLGFQRkYsd1N3QnloQkYsVXhCcmlCSSx3Q0FZRixxYXdCMmtCRixVeEJ2bEJJLHdDQVlGLHlDdUJ1S0YsbUJBRUksbUJBQ0EscUJBSUosaUJ2QjlLRSwrRU9FRSxpQlBGRiw4RXlCb2hCRixXRmpXc0QsNERFMFd0RCxXRnRXc0Qsa0ZBR2xELGVBRUkseUZBSUosYVZpSk0saUdBdUNWLG9CQXlDQSxRQUNBLFlVaE9jLFdWa09kLGlCQXhDSSxnR0FhSixvQkF3QkEsUUFDQSxZVS9OaUIsV1ZpT2pCLHFCQXZCSSx5RlU3TUEsWVZxS0EsbUJBRUEsb0JBSUEsa0hVbktBLGFWeUlNLDBIQXVDVixvQkF5Q0EsUUFDQSxZVXpOcUQsV1YyTnJELGlCQXhDSSxrSFVwTEEsWVY2SkEsbUJBRUEsd0RZZ1VGLGN6QnZxQkEscUpPRUUsaUJQRkYsZ0Z5QjRxQkEsZ0J6QjVxQkEsaUtPRUUsYVBGRixrRnlCNHNCQSxVRjVmK0MsWUFBTSwwQ0FGdkQsY3ZCOU1FLHlIT0VFLGlCUEZGLDZEeUIwckJBLGlCekIxckJBLDRIT0VFLGNQRkYsc0V5QityQkEsZ0J6Qi9yQkEsMElPRUUsZ0JQRkYsMkRvQjZqQ0YsV0F4a0NPLGFBZ2xDTyxxQlA1eEJWLGlEQStFSixvQkF5Q0EsUUFDQSxZTzNhb0IsV1A2YXBCLGlCQXhDSSxpR0E2QkosV0FFSSxtR09pK0JGLFdBQ0Usb0JBQ0EsbUJBQ0Esc0VBR0YsWUFDRSx5Q0FoakJKLDBCcEIvMUJJLG1EQVlGLDRCQVpFLG9EQVlGLDZIb0J3a0RBLHlDcEJ4a0RBLDhEb0J3a0RBLHlDcEJ4a0RBLHlFUTBCQSx1Q1IxQkEsK0VRMEJBLHVDUjFCQSx3RVFnQkEsMkJSNUJFLHNEQVlGLG1FUTBCQSx1Q1IxQkEseUNvQm8vQ0YsMkJBRUksc0RBS0oscUNBR0ksc0RoQnIrQ0osMEJBSUksNEJBQ0EsZ0VzQjVDRixxQkFFSSxVQUNBLHlDQUlKLFMxQk9BLGtIT0VFLFlQRkYsa0ZvQm01Q0YsU3BCbjVDRSw4S09FRSxZUEZGLGtGb0JvL0NGLDJCQUVJLG9GQUtKLHFDQUdJLDBFWnArQ0YsMkJSdENFLG9EQVlGLGdGUTBCQSwyQlJ0Q0Usb0RBWUYseUVRZ0JBLDJCUjVCRSxvREFZRiw0RWV5R0YsdUNBY00sNEVHNkhOLGdCQUVJLG9OSDdJSiwwQ0FjTSxvTkc2SUosY0FFSSxzRUh0SU4sMkVBRUksc0VBcEVGLEdBQ0UsbUVBRUUsS0FJRixrRUFDRSxxRUFFQSxLQUlGLDBFQUNFLHNFQU9BLE1BSUYsbUVBRUUsNENLeWxDTixXQTlyQ08sMEVGNkhQLDBCbEI5SEksbURBWUYscUZBWkUsc0RBWUYsc0tPRUUsd0JQRkYsNEJBWkUsb0RBWUYsK0JBWkUsdURBWUYscURrQjZJSSx5RUEzQk4sMkNBNEJRLDBCQW9CRix1RUFaTiw4REFhUSw0RUFNUix3QmxCektFLDRCQVpFLG9EQVlGLCtCQVpFLHVEQVlGLG9NT0VFLDBCUGRBLG1EQVlGLHFGQVpFLHNEQVlGLHlCb0IrMENFLDBDQXZjRiw4REE0Y0kseUdibDFDRixjYWk1QkkseUJBNGJKLHVHYjcwQ0EsK0RhazFDRSwwQkFMRiw4Q0FqYkYsNkRBc2JJLGlIYmwxQ0YsYWF1NkJJLHlCQXNhSiwrR2I3MENBLDhEYWsxQ0UsdUVBb1BKLDRCcEJ4a0RBLGdFb0J3a0RBLDRCcEJ4a0RBLDZPa0JrREYsZ0NsQmxERSx3Y2tCa0RGLGdDbEJsREUsd1drQjhERixnQkVsRXNCLHdXRnNEdEIsb0JsQjlESSwrQ0FZRiwyTmtCa0RGLGdDbEJsREUsMkdrQm9SRiwyQkVzd0NJLHVCT3prREosV0FtQ0ksc0VaNElKLHNFQUVJLDRFQXpCSix1Q0FjTSw0RUc2SE4sZ0JBRUksb05IN0lKLDBDQWNNLG9ORzZJSixjQUVJLHFHQXZMTixlQ2xJYSw4RU40Y2IsV0FFSSxnRk9pK0JGLFdBQ0Usb0JBQ0EsbUJBQ0EsbURBR0YsWUFDRSwyQ081NENGLFlBZ0JJLHFCQUVBLGlCQUNBLDREQUlKLFlBRUksWUFDQSxVQUNBLCtCQUlBLHlDQUlKLFNBRUksMkNBSUosbUJBRUksUzNCbENKLHNIT0VFLFlQRkYsK0drQitFRixlRW5Gc0IseVNGc0R0QixvQmxCOURJLDZDQVlGLG9nQmtCa0RGLG9CbEI5REksNkNBWUYsb2FrQjhERixnQkVsRXNCLG9hRnNEdEIsb0JsQjlESSw2Q0FZRix5RW9CZzdDRixTcEJoN0NFLGtMT0VFLFlQRkYsaUdleUdGLHlEQUlNLDhMUjNHRix3RFFpSEksc0ZHaUlSLGdCQUVJLHdPSDdJSiw0REFJTSxxZlIzR0YsMkRRaUhJLHdPR2lKTixjQUVJLGdGSHRJTix3RkFFSSxtRkFwRUYsR0FDRSxxRUFFRSxLQUlGLGtFQUNFLHVFQUVBLEtBSUYsMEVBQ0Usd0VBT0EsTUFJRixxRUFFRSxtTEFzQ04sd0ZBRUksdUZBcEVGLEdBQ0Usc0VBRUUsS0FJRixrRUFDRSx3RUFFQSxLQUlGLDBFQUNFLHlFQU9BLE1BSUYsc0VBRUUsMElHMExOLDJCRXN3Q0kseUNPaDlDRixpQkFFSSxxSEFJSixlQUdJLHFCQ2hJTix1QlppRkUscUJBQ0Esb0JBQ0EseUJBQ0EsaUNBQ0EsbUNBQ0EsMENBRUEsOEJBR0UsZ0dBSUosaUJBR0ksa0JBQ0EsVUFDQSxvQkFDQSxXQUNBLGlEQUlKLDJEQUdJLFVoQjVFQSxxQ0FZRixnRGdCNkVGLFNoQnpGSSxxQ0FZRixxRWdCeUZBLDhDQUVJLG9FQUlKLEtBRUksT0FFQSxtQkFDQSwrQkFDQSwrRUFNSiw0QkFFSSwrQkFFQSwyRkFNSix1RkFFSSw2RkFRSix5Q0FFSSxnR0FLQSxnR0FjTixvQkFHSSxzQkFFQSxXQUNBLFlBQ0Esb0VBS0YscUNBRUksdUNBQ0EsZ0dMdkZKLG9DWHhGRSw4REFZRixpSVdxZEYsWVhqZUksOENBWUYseUtXcWRGLHdCQTlRSSxhWG5OQSw4Q0FZRix5QzRCdEJBLGlCWjRPQSxNQUNBLE9BQ0EsV0FDQSxZQUNBLG9CQUdBLDBPTGpKQSxxQlh4RkUsNEVBWUYsMlFXcWRGLFlYamVJLDhDQVlGLG1UV3FkRix3QkE5UUksYVhuTkEsOENBWUYsK0lXaU9FLCtCQUVJLHNKQUtGLHdCQTlRVyxhWDBCYiw4Q0FZRixnR1dxUEEsNkRYclBBLG9OVzRFQSxxQlh4RkUsNEVBWUYscVBXcWRGLFlYamVJLDhDQVlGLDZSV3FkRix3QkE5UUksYVhuTkEsOENBWUYsb0lXaU9FLCtCQUVJLDJJQUtGLHdCQTlRVyxhWDBCYiw4Q0FZRixnR1dxUEEsNkRYclBBLHlCNkIvQ0YsUUFFSSxpQjdCNkNGLHNGT0VFLGdCUEZGLDJDNkIvQ0YsaUNoQnlTRSxtQ0FDQSwrQmJ2UUUsNkdBWUYsa0JBWkUsMkRBWUYsb0JBWkUsK0RBWUYsZ0JBWkUsMkRBWUYsOEJBWkUsNEVBWUYsd0JBWkUsK0VBWUYsQ0FaRSxzRUFZRix1QkFaRSxxRUFZRixjYWlWUSxpQ0F1Q1Ysb0JBeUNBLFFBQ0EsWWdCM2MyQyxXaEI2YzNDLGlCQXhDSSx5QmdCM2FKLFloQm9aSSxtQkFFQSx5Q2dCN1lKLFNBRUksc0RBSUEsaUhBSUosU0FHSSxrRENISixvQkFFSSxzQkFDQSxZQUNBLHFCQUNBLGVBQ0EseUJBQ0EsQ0FEQSxxQkFDQSxDQURBLGdCQUNBLGNBQ0Esa0JBQ0EsK0JBSUEsa0JBQ0Esa0RSUUosZ0J0Qk1FLHdJT0VFLGdCUEZGLHNGOEJ6Q0YsY0FHSSxvQkFDQSx3QmhCbUJKLGlCQUdNLHNCQUNBLG9CQUNBLFVkQ0YsZ0RBWUYsc0RjRkksc0JkVkYsMERBWUYsMkN3QnFsQkYseUJ4QnJsQkUsOEN3QjJrQkYseUJ4QjNrQkUsVytCL0JGLGUvQm1CSSwyQ0FZRixrRldxZEYsV3FCamdCa0IsdUVyQmlnQmxCLFdxQmpnQmtCLGdDRHlCaEIseUIvQm1CQSxvRCtCWkEsaUJ6Qm1QQSxrR0FtQkYsVU4xUEUsa0JNZ1FJLE9BRUEsd0N5QnhRSixZQUVJLHFDQUlKLHdCQUVJLENBRkoscUJBRUksQ0FGSixnQkFFSSwrQ0FJSixXQUVJLDhJQUtKLG1CQUdJLDRCQU9OLFNBRUksa0JBQ0Esc0RBR0YsaUIvQjdCQSxpSk9FRSxpQlBGRiwrRStCd0NBLFMvQnhDQSx3Sk9FRSxZUEZGLHVFK0J3Q0EsWUFJSSxrQkFDQSxRQUVBLDJCQUNBLDBEQU9OLGNBRUksU0VySU4sU0FDRSxXQUNBLFlBQ0EsYUFDQSxPQUdGLFlBQ0UsTUFHRixXQUNFLHVCQUNBLGlCQUNBLGtCQUNBLE1BR0YsV0FDRSxTQUNBLFVBQ0EseUhBRUUseUJBRUYsd0JBQ0EsNEJBQ0EsU0NwQkEsY0NKOEMsc0NEUzVDLFFBTEYsZ0RBT00sdUNBU0osUUFoQkYsY0NKb0QsVUFEdEQsaUNBRUUsY0NGcUIsa0JESXJCLGVFTkYsZUFDRSxnQkFDQSxhQUdGLGlCQUNFLDBFQUVFLGVBQ0YsaUNBRUEsWUFDRSxtQkFDQSw4QkFDQSxzQ0FDQSx5QkFDQSx5QkFDQSxrQkFDQSxlQUNBLGlEQUNBLHlCQUNBLENBREEscUJBQ0EsQ0FEQSxnQkFDQSxXQUNBLHNCQUNBLHVDQUVBLHFDQUNFLHlDQUNBLHdDQUtKLGFEMUJxQixpQkM0Qm5CLGdCQUNBLE9BQ0EseUJBQ0EsWUFDQSxhQUNBLFVBQ0EsU0FDQSx3Q0FJRixhRHZDcUIsZUN5Q25CLG1CQUNBLG9CQUNBLDhCQUNBLGNBQ0EsaUNBSUYsaUJBQ0UsUUFDQSxjQUNBLDJCQUNBLHlCQUNBLGdCQUNBLG9CQUNBLGdEQUNBLHlCQUNBLGNBQ0EsaUVBRUEsU0FDRSxnQkFDQSxjRC9EaUIsZ0JDaUVqQix5QkFDQSw4QkFLSixZQUNFLHVEQUtBLHFDQUNFLHFCRGpGZ0IseUNDbUZoQiw4REFHRixhRHRGa0IsMEJDd0ZoQixtQkFNTixpQkFDRSxxQkFDQSxPQUNBLFFBQ0EsV0FDQSxpQ0FDQSx5QkFDQSxrQkFDQSx5Q0FDQSxhQUNBLGlCQUNBLGdCQUNBLGtCQUNBLGFBQ0EsNkRBQ0EsMENBRUEsYUFDRSw0REFDQSxzQ0FJRixTQUNFLDRDQUdGLDZCQUNFLGtCQUNBLDRDQUdGLDZCQUNFLGtCQUNBLGtEQUVBLDZCQUNFLG9CQUtOLEtBQ0UsU0FDRSwyQkFDQSxJQUVGLFNBQ0Usd0JBQ0Esc0JBSUosS0FDRSxTQUNFLHdCQUNBLElBRUYsU0FDRSwyQkFDQSxZQUtKLGFBQ0UsU0FDQSxnQkFDQSwwQkFFQSx1QkFDRSxjRGxLbUIsZUNvS25CLHlCQUNBLENBREEscUJBQ0EsQ0FEQSxnQkFDQSx5QkFDQSxpQkFDQSxhQUNBLG1CQUNBLGtCQUNBLGdDQUVBLG1DQUNFLGlGQUdGLGFEbkxrQixxQ0NzTGhCLGdCQUNBLGlHQUVBLFdBQ0Usa0JBQ0EsVUFDQSxjRDVMYyxpQkM4TGQsZUFDQSwySEFHRixnQkFDRSwrQ0FJSixhQUNFLE9BQ0EsaUNBR0Ysb0NBQ0Usb0JDbE5OLEtBQ0ksU0FFSSxJQUdKLFNBRUksc0JBSVIsS0FDSSxTQUVJLElBR0osU0FFSSxXQUlSLDZDQUNJLFdBR0osdURBQ0ksY0MxQkosWUFDRSxzQ0FDQSx3QkFDQSxjQUNBLGVBR0YsbUJBQ0Usd0JBR0YsYUFDRSxhQUNFLGdCQUNBLGlCQUNBLGVBRUYsbUJBQ0UsMkJBSUosYUFDRSxhQUNFLGdCQUNBLGlCQUNBLGVBRUYsa0JBQ0UsMkJBSUosYUFDRSxhQUNFLGdCQUNBLGlCQUNBLGVBRUYsa0JBQ0UsMkJBSUosYUFDRSxhQUNFLGdCQUNBLGlCQUNBLGVBRUYsa0JBQ0UsMkJBSUosYUFDRSxhQUNFLGlCQUNBLGtCQUNBLGVBRUYsa0JBQ0UsNEJBSUosYUFDRSxhQUNFLGlCQUNBLGtCQUNBLGVBRUYsa0JBQ0UsWUN6RUosaUJBQ0Usb0JBWUEsK0JBQ0UsY0FDQSxjSlZtQix3QklZbkIsY0FFQSxrQkFDQSxTQUNBLE9BQ0Esa0JBR0Ysb0JBQ0UsbUJBR0YsaUJBQ0UsY0FDQSxhQUNBLFVBQ0EscUJBRUEsZUFDQSw4QkFDQSx5QkFFQSxvQkFDRSxvQ0FHRixVQUNFLFlBQ0EsVUFDQSxhQUNBLG1CQUNBLHVCQUNBLFdBQ0EsZ0NBQ0Esa0JBQ0EseURBRUUsWUFFRixlQUNBLDBDQUVBLCtCQUNFLG9DQUNBLDJDQUdGLCtCQUNFLG1EQUdGLGNBQ0UsY0FDQSwyVSIsInNvdXJjZXMiOlsid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vYXBwL2luZGV4LnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9saW5lYXItcHJvZ3Jlc3MvX2tleWZyYW1lcy5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvdGhlbWUvX2Nzcy5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvbGluZWFyLXByb2dyZXNzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2RvbS9fZG9tLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9saW5lYXItcHJvZ3Jlc3MvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvbWVudS1zdXJmYWNlL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL21lbnUtc3VyZmFjZS9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9lbGV2YXRpb24vX2VsZXZhdGlvbi10aGVtZS5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvcnRsL19ydGwuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2xpbmUtcmlwcGxlL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3RvcC1hcHAtYmFyL21kYy10b3AtYXBwLWJhci5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvdG9wLWFwcC1iYXIvX21peGlucy5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvcmlwcGxlL19yaXBwbGUtdGhlbWUuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3RvcC1hcHAtYmFyL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3R5cG9ncmFwaHkvX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL2VsZXZhdGlvbi9fZWxldmF0aW9uLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9yaXBwbGUvX3JpcHBsZS5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvYW5pbWF0aW9uL19hbmltYXRpb24uc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9ub3RjaGVkLW91dGxpbmUvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvc2VsZWN0L19zZWxlY3QtdGhlbWUuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3NlbGVjdC9fc2VsZWN0LWhlbHBlci10ZXh0LXRoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9zZWxlY3QvX3NlbGVjdC1pY29uLXRoZW1lLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9zZWxlY3QvX3NlbGVjdC5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL25vZGVfbW9kdWxlcy9AbWF0ZXJpYWwvbGlzdC9fbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9saXN0L19ldm9sdXRpb24tbWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9zZWxlY3QvX3NlbGVjdC1maWxsZWQuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3NlbGVjdC9fc2VsZWN0LW91dGxpbmVkLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9zZWxlY3QvX3NlbGVjdC1yaXBwbGUuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL3NlbGVjdC9fc2VsZWN0LWhlbHBlci10ZXh0LnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9zZWxlY3QvX3NlbGVjdC1pY29uLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vbm9kZV9tb2R1bGVzL0BtYXRlcmlhbC9tZW51L19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9ub2RlX21vZHVsZXMvQG1hdGVyaWFsL21lbnUvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL2FwcC9zcmMvc2Nzcy9fYmFzZS5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL2FwcC9zcmMvc2Nzcy9faW50ZXJwb2xhdGUuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9hcHAvc3JjL3Njc3MvX2hlYWRlci5zY3NzIiwid2VicGFjazovL21kYy1tYW5nYS8uL2FwcC9zcmMvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vYXBwL3NyYy9zY3NzL19maWx0ZXIuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9hcHAvc3JjL3Njc3MvX2FuaW1hdGlvbnMuc2NzcyIsIndlYnBhY2s6Ly9tZGMtbWFuZ2EvLi9hcHAvc3JjL3Njc3MvX2xheW91dC1ncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vbWRjLW1hbmdhLy4vYXBwL3NyYy9zY3NzL19sYXlvdXQtZ3JpZC1pdGVtLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cbiAqL1xuXG5odG1sIHtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qIFNlY3Rpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgYG1haW5gIGVsZW1lbnQgY29uc2lzdGVudGx5IGluIElFLlxuICovXG5cbm1haW4ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgYm9yZGVyIG9uIGltYWdlcyBpbnNpZGUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuXG5idXR0b246LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cImJ1dHRvblwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInN1Ym1pdFwiXTotbW96LWZvY3VzcmluZyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuZmllbGRzZXQge1xuICBwYWRkaW5nOiAwLjM1ZW0gMC43NWVtIDAuNjI1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7IC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogMSAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSAxMCsuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC5cbiAqL1xuXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiAqL1xuXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUgMTArLCBhbmQgRmlyZWZveC5cbiAqL1xuXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cblxuLyogTWlzY1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMCsuXG4gKi9cblxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8vIE1hdGVyaWFsIERlc2lnbiBDb21wb25lbnRzIGFuZCBpbnRlcm5hbCBtb2R1bGVzIC0gYWxsIEB1c2Ugc3RhdGVtZW50cyBtdXN0IGNvbWUgZmlyc3RcbkB1c2UgXCJAbWF0ZXJpYWwvbGluZWFyLXByb2dyZXNzL21kYy1saW5lYXItcHJvZ3Jlc3NcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvbWVudS1zdXJmYWNlL21kYy1tZW51LXN1cmZhY2VcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvaWNvbi1idXR0b25cIjtcbkB1c2UgXCJAbWF0ZXJpYWwvbGluZS1yaXBwbGUvbWRjLWxpbmUtcmlwcGxlXCI7XG5AdXNlIFwiQG1hdGVyaWFsL3RvcC1hcHAtYmFyL21kYy10b3AtYXBwLWJhclwiO1xuQHVzZSBcIkBtYXRlcmlhbC90eXBvZ3JhcGh5L21kYy10eXBvZ3JhcGh5XCI7XG5AdXNlIFwiQG1hdGVyaWFsL2ltYWdlLWxpc3RcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvZWxldmF0aW9uL21kYy1lbGV2YXRpb25cIjtcbkB1c2UgXCJAbWF0ZXJpYWwvYW5pbWF0aW9uL3ZhcmlhYmxlc1wiO1xuQHVzZSBcIkBtYXRlcmlhbC9zZWxlY3RcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvc2VsZWN0L21kYy1zZWxlY3RcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvc2hhcGUvZnVuY3Rpb25zXCI7XG5AdXNlIFwiQG1hdGVyaWFsL2NhcmRcIjtcbkB1c2UgXCJAbWF0ZXJpYWwvbGlzdFwiO1xuQHVzZSBcIkBtYXRlcmlhbC9tZW51L21kYy1tZW51XCI7XG5AdXNlIFwiQG1hdGVyaWFsL3NoYXBlL21peGluc1wiO1xuXG4vLyBJbnRlcm5hbCBTQ1NTIG1vZHVsZXMgdXNpbmcgU2FzcyAyLjArIG1vZHVsZSBzeXN0ZW1cbkB1c2UgXCJzcmMvc2Nzcy92YXJpYWJsZXNcIiBhcyAqO1xuQHVzZSBcInNyYy9zY3NzL2ludGVycG9sYXRlXCIgYXMgKjtcbkB1c2UgXCJzcmMvc2Nzcy9iYXNlXCIgYXMgKjtcbkB1c2UgXCJzcmMvc2Nzcy9oZWFkZXJcIiBhcyAqO1xuQHVzZSBcInNyYy9zY3NzL2ZpbHRlclwiIGFzICo7XG5AdXNlIFwic3JjL3Njc3MvYW5pbWF0aW9uc1wiIGFzICo7XG5AdXNlIFwic3JjL3Njc3MvbGF5b3V0LWdyaWRcIiBhcyAqO1xuQHVzZSBcInNyYy9zY3NzL2xheW91dC1ncmlkLWl0ZW1cIiBhcyAqO1xuXG4vLyBOb3RlOiBNYXRlcmlhbCBEZXNpZ24gdjE0IGluY2x1ZGVzIGJhc2Ugc3R5bGVzIGJ5IGRlZmF1bHQsIGNvcmUtc3R5bGVzIG1peGlucyBhcmUgbm8gbG9uZ2VyIG5lZWRlZFxuLy8gQGluY2x1ZGUgc2VsZWN0LmNvcmUtc3R5bGVzO1xuLy8gQGluY2x1ZGUgbGlzdC5jb3JlLXN0eWxlcztcbi8vIEBpbmNsdWRlIGNhcmQuY29yZS1zdHlsZXM7XG4vLyBAaW5jbHVkZSBpY29uLWJ1dHRvbi5jb3JlLXN0eWxlcztcblxuLy8gTm9ybWFsaXplIGNzcyBhbmQgZXh0ZXJuYWwgcmVzb3VyY2VzXG5AaW1wb3J0IHVybChcImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9RnJlZG9rYStPbmUmZGlzcGxheT1zd2FwXCIpO1xuQGltcG9ydCBcIi4uL25vZGVfbW9kdWxlcy9ub3JtYWxpemUuY3NzL25vcm1hbGl6ZS5jc3NcIjtcbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5cbkBtaXhpbiBwcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLWtleWZyYW1lc18ge1xuICBAa2V5ZnJhbWVzIG1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZSB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cblxuICAgIDIwJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41LCAwLCAwLjcwMTczMiwgMC40OTU4MTkpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIH1cblxuICAgIDU5LjE1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoXG4gICAgICAgIDAuMzAyNDM1LFxuICAgICAgICAwLjM4MTM1MixcbiAgICAgICAgMC41NSxcbiAgICAgICAgMC45NTYzNTJcbiAgICAgICk7XG5cbiAgICAgICRwcmltYXJ5LWhhbGY6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXByaW1hcnktaGFsZixcbiAgICAgICAgODMuNjcxNDIlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgYXBwbHktdHJhbnNsYXRlXygkcHJpbWFyeS1oYWxmKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICRwcmltYXJ5LWZ1bGw6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXByaW1hcnktZnVsbCxcbiAgICAgICAgMjAwLjYxMTA1NyVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRwcmltYXJ5LWZ1bGwpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpbWFyeS1pbmRldGVybWluYXRlLXNjYWxlLWtleWZyYW1lc18ge1xuICBAa2V5ZnJhbWVzIG1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXNjYWxlIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG5cbiAgICAzNi42NSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzM0NzMxLCAwLjEyNDgyLCAwLjc4NTg0NCwgMSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG5cbiAgICA2OS4xNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMDYsIDAuMTEsIDAuNiwgMSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjY2MTQ3OSk7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNlY29uZGFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZSB7XG4gICAgMCUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTUsIDAsIDAuNTE1MDU4LCAwLjQwOTY4NSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgMjUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMxMDMzLCAwLjI4NDA1OCwgMC44LCAwLjczMzcxMik7XG4gICAgICAkc2Vjb25kYXJ5LXF1YXJ0ZXI6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1xdWFydGVyLFxuICAgICAgICAzNy42NTE5MTMlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgYXBwbHktdHJhbnNsYXRlXygkc2Vjb25kYXJ5LXF1YXJ0ZXIpO1xuICAgIH1cblxuICAgIDQ4LjM1JSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjYyNzAzNSwgMC42LCAwLjkwMjAyNik7XG4gICAgICAkc2Vjb25kYXJ5LWhhbGY6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1oYWxmLFxuICAgICAgICA4NC4zODYxNjUlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgYXBwbHktdHJhbnNsYXRlXygkc2Vjb25kYXJ5LWhhbGYpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgJHNlY29uZGFyeS1mdWxsOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIC0tbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktZnVsbCxcbiAgICAgICAgMTYwLjI3Nzc4MiVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRzZWNvbmRhcnktZnVsbCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZS1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1pbmRldGVybWluYXRlLXNjYWxlIHtcbiAgICAwJSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoXG4gICAgICAgIDAuMjA1MDI4LFxuICAgICAgICAwLjA1NzA1MSxcbiAgICAgICAgMC41NzY2MSxcbiAgICAgICAgMC40NTM5NzFcbiAgICAgICk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjA4KTtcbiAgICB9XG5cbiAgICAxOS4xNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKFxuICAgICAgICAwLjE1MjMxMyxcbiAgICAgICAgMC4xOTY0MzIsXG4gICAgICAgIDAuNjQ4Mzc0LFxuICAgICAgICAxLjAwNDMxNVxuICAgICAgKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuNDU3MTA0KTtcbiAgICB9XG5cbiAgICA0NC4xNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKFxuICAgICAgICAwLjI1Nzc1OSxcbiAgICAgICAgLTAuMDAzMTYzLFxuICAgICAgICAwLjIxMTc2MixcbiAgICAgICAgMS4zODE3OVxuICAgICAgKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuNzI3OTYpO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC4wOCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidWZmZXJpbmcta2V5ZnJhbWVzXyB7XG4gIEBrZXlmcmFtZXMgbWRjLWxpbmVhci1wcm9ncmVzcy1idWZmZXJpbmcge1xuICAgIGZyb20ge1xuICAgICAgLy8gTm9ybWFsbHkgdGhlIGJ1ZmZlciBkb3RzIHN0YXJ0IGZyb20gdGhlIGxlZnQgYW5kIG92ZXJmbG93IHRvIHRoZSByaWdodC5cbiAgICAgIC8vIFdlIHJvdGF0ZSBieSAxODBkZWcgc28gdGhhdCB0aGUgYnVmZmVyIGRvdHMgc3RhcnQgb24gdGhlIHJpZ2h0IHdoZW5cbiAgICAgIC8vIGluIG5vbi1yZXZlcnNlZCBtb2RlIGFuZCBvdmVyZmxvdyB0byB0aGUgbGVmdC5cbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZykgdHJhbnNsYXRlWCgtMTBweCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uta2V5ZnJhbWVzXyB7XG4gIEBrZXlmcmFtZXMgbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uge1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG5cbiAgICAyMCUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNSwgMCwgMC43MDE3MzIsIDAuNDk1ODE5KTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG5cbiAgICA1OS4xNSUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKFxuICAgICAgICAwLjMwMjQzNSxcbiAgICAgICAgMC4zODEzNTIsXG4gICAgICAgIDAuNTUsXG4gICAgICAgIDAuOTU2MzUyXG4gICAgICApO1xuICAgICAgJHByaW1hcnktaGFsZjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1oYWxmLW5lZyxcbiAgICAgICAgLTgzLjY3MTQyJVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHByaW1hcnktaGFsZik7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAkcHJpbWFyeS1mdWxsOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIC0tbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWZ1bGwtbmVnLFxuICAgICAgICAtMjAwLjYxMTA1NyVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRwcmltYXJ5LWZ1bGwpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uta2V5ZnJhbWVzXyB7XG4gIEBrZXlmcmFtZXMgbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUtcmV2ZXJzZSB7XG4gICAgMCUge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTUsIDAsIDAuNTE1MDU4LCAwLjQwOTY4NSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuXG4gICAgMjUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMxMDMzLCAwLjI4NDA1OCwgMC44LCAwLjczMzcxMik7XG4gICAgICAkc2Vjb25kYXJ5LXF1YXJ0ZXI6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgLS1tZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1xdWFydGVyLW5lZyxcbiAgICAgICAgLTM3LjY1MTkxMyVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRzZWNvbmRhcnktcXVhcnRlcik7XG4gICAgfVxuXG4gICAgNDguMzUlIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuNjI3MDM1LCAwLjYsIDAuOTAyMDI2KTtcbiAgICAgICRzZWNvbmRhcnktaGFsZjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWhhbGYtbmVnLFxuICAgICAgICAtODQuMzg2MTY1JVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGFwcGx5LXRyYW5zbGF0ZV8oJHNlY29uZGFyeS1oYWxmKTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICRzZWNvbmRhcnktZnVsbDogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1saW5lYXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWZ1bGwtbmVnLFxuICAgICAgICAtMTYwLjI3Nzc4MiVcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBhcHBseS10cmFuc2xhdGVfKCRzZWNvbmRhcnktZnVsbCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidWZmZXJpbmctcmV2ZXJzZS1rZXlmcmFtZXNfIHtcbiAgQGtleWZyYW1lcyBtZGMtbGluZWFyLXByb2dyZXNzLWJ1ZmZlcmluZy1yZXZlcnNlIHtcbiAgICBmcm9tIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhcHBseS10cmFuc2xhdGVfKCR2YWx1ZSkge1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShcbiAgICB0cmFuc2Zvcm0sXG4gICAgdHJhbnNsYXRlWCh2YWx1ZSksXG4gICAgJHJlcGxhY2U6ICh2YWx1ZTogJHZhbHVlKVxuICApO1xufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi9nc3MnO1xuXG4vLy8gV2hlbiB0cnVlLCBhZGQgYW4gYWRkaXRpb25hbCBwcm9wZXJ0eS92YWx1ZSBkZWNsYXJhdGlvbiBiZWZvcmUgZGVjbGFyYXRpb25zXG4vLy8gdGhhdCB1c2UgYWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBjdXN0b20gcHJvcGVydGllcyBvciBDU1MgZnVuY3Rpb25zLiBUaGlzXG4vLy8gYWRkcyBmYWxsYmFjayBzdXBwb3J0IGZvciBvbGRlciBicm93c2VycyBzdWNoIGFzIElFMTEgdGhhdCBkbyBub3Qgc3VwcG9ydFxuLy8vIHRoZXNlIGZlYXR1cmVzIGF0IHRoZSBjb3N0IG9mIGFkZGl0aW9uYWwgQ1NTLiBTZXQgdGhpcyB2YXJpYWJsZSB0byBmYWxzZSB0b1xuLy8vIGRpc2FibGUgZ2VuZXJhdGluZyBmYWxsYmFjayBkZWNsYXJhdGlvbnMuXG4kZW5hYmxlLWZhbGxiYWNrLWRlY2xhcmF0aW9uczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFdyaXRlcyBhIENTUyBwcm9wZXJ0eS92YWx1ZSBkZWNsYXJhdGlvbi4gVGhpcyBtaXhpbiBpcyB1c2VkIHRocm91Z2hvdXQgdGhlXG4vLy8gdGhlbWUgcGFja2FnZSBmb3IgY29uc2lzdGVuY3kgZm9yIGR5bmFtaWNhbGx5IHNldHRpbmcgQ1NTIHByb3BlcnR5IHZhbHVlcy5cbi8vL1xuLy8vIFRoaXMgbWl4aW4gbWF5IG9wdGlvbmFsbHkgdGFrZSBhIGZhbGxiYWNrIHZhbHVlLiBGb3IgYWR2YW5jZWQgZmVhdHVyZXMgc3VjaFxuLy8vIGFzIGN1c3RvbSBwcm9wZXJ0aWVzIG9yIENTUyBmdW5jdGlvbnMgbGlrZSBtaW4gYW5kIG1heCwgYSBmYWxsYmFjayB2YWx1ZSBpc1xuLy8vIHJlY29tbWVuZGVkIHRvIHN1cHBvcnQgb2xkZXIgYnJvd3NlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5IC0gVGhlIENTUyBwcm9wZXJ0eSBvZiB0aGUgZGVjbGFyYXRpb24uXG4vLy8gQHBhcmFtIHsqfSAkdmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIENTUyBkZWNsYXJhdGlvbi4gVGhlIHZhbHVlIHNob3VsZCBiZVxuLy8vICAgICByZXNvbHZlZCBieSBvdGhlciB0aGVtZSBmdW5jdGlvbnMgZmlyc3QgKGkuZS4gY3VzdG9tIHByb3BlcnR5IE1hcHMgYW5kXG4vLy8gICAgIE1hdGVyaWFsIHRoZW1lIGtleXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBtaXhpbikuIElmIHRoZSB2YWx1ZSBpc1xuLy8vICAgICBudWxsLCBubyBkZWNsYXJhdGlvbnMgd2lsbCBiZSBlbWl0dGVkLlxuLy8vIEBwYXJhbSB7Kn0gJGZhbGxiYWNrIC0gQW4gb3B0aW9uYWwgZmFsbGJhY2sgdmFsdWUgZm9yIG9sZGVyIGJyb3dzZXJzLiBJZlxuLy8vICAgICBwcm92aWRlZCwgYSBzZWNvbmQgcHJvcGVydHkvdmFsdWUgZGVjbGFyYXRpb24gd2lsbCBiZSBhZGRlZCBiZWZvcmUgdGhlXG4vLy8gICAgIG1haW4gcHJvcGVydHkvdmFsdWUgZGVjbGFyYXRpb24uXG4vLy8gQHBhcmFtIHtNYXB9ICRnc3MgLSBBbiBvcHRpb25hbCBNYXAgb2YgR1NTIGFubm90YXRpb25zIHRvIGFkZC5cbi8vLyBAcGFyYW0ge0Jvb2x9ICRpbXBvcnRhbnQgLSBJZiB0cnVlLCBhZGQgYCFpbXBvcnRhbnRgIHRvIHRoZSBkZWNsYXJhdGlvbi5cbkBtaXhpbiBkZWNsYXJhdGlvbihcbiAgJHByb3BlcnR5LFxuICAkdmFsdWUsXG4gICRmYWxsYmFjay12YWx1ZTogbnVsbCxcbiAgJGdzczogKCksXG4gICRpbXBvcnRhbnQ6IGZhbHNlXG4pIHtcbiAgLy8gTm9ybWFsbHkgc2V0dGluZyBhIG51bGwgdmFsdWUgdG8gYSBwcm9wZXJ0eSB3aWxsIG5vdCBlbWl0IENTUywgc28gbWl4aW5zXG4gIC8vIHdvdWxkbid0IG5lZWQgdG8gY2hlY2sgdGhpcy4gSG93ZXZlciwgU2FzcyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZVxuICAvLyBpbnRlcnBvbGF0ZWQgcHJvcGVydHkgaXMgYSBjdXN0b20gcHJvcGVydHkuXG4gIEBpZiAkdmFsdWUgIT0gbnVsbCB7XG4gICAgJGltcG9ydGFudC1ydWxlOiBpZigkaW1wb3J0YW50LCAnICFpbXBvcnRhbnQnLCAnJyk7XG5cbiAgICBAaWYgJGZhbGxiYWNrLXZhbHVlIGFuZCAkZW5hYmxlLWZhbGxiYWNrLWRlY2xhcmF0aW9ucyB7XG4gICAgICBAaW5jbHVkZSBnc3MuYW5ub3RhdGUoJGdzcyk7XG4gICAgICAjeyRwcm9wZXJ0eX06ICN7JGZhbGxiYWNrLXZhbHVlfSAjeyRpbXBvcnRhbnQtcnVsZX07XG5cbiAgICAgIC8vIEFkZCBAYWx0ZXJuYXRlIHRvIGFubm90YXRpb25zLlxuICAgICAgJGdzczogbWFwLm1lcmdlKFxuICAgICAgICAkZ3NzLFxuICAgICAgICAoXG4gICAgICAgICAgYWx0ZXJuYXRlOiB0cnVlLFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGdzcy5hbm5vdGF0ZSgkZ3NzKTtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSN7JGltcG9ydGFudC1ydWxlfTtcbiAgfVxufVxuXG4vLy8gVW5wYWNrcyBzaG9ydGhhbmQgdmFsdWVzIGZvciBDU1MgcHJvcGVydGllcyAoaS5lLiBsaXN0cyBvZiAxLTMgdmFsdWVzKS5cbi8vLyBJZiBhIGxpc3Qgb2YgNCB2YWx1ZXMgaXMgZ2l2ZW4sIGl0IGlzIHJldHVybmVkIGFzLWlzLlxuLy8vXG4vLy8gRXhhbXBsZXM6XG4vLy9cbi8vLyB1bnBhY2stdmFsdWUoNHB4KSA9PiA0cHggNHB4IDRweCA0cHhcbi8vLyB1bnBhY2stdmFsdWUoNHB4IDJweCkgPT4gNHB4IDJweCA0cHggMnB4XG4vLy8gdW5wYWNrLXZhbHVlKDRweCAycHggMnB4KSA9PiA0cHggMnB4IDJweCAycHhcbi8vLyB1bnBhY2stdmFsdWUoNHB4IDJweCAwIDJweCkgPT4gNHB4IDJweCAwIDJweFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgfCBNYXAgfCBMaXN0fSAkdmFsdWUgLSBMaXN0IG9mIDEgdG8gNCB2YWx1ZSBudW1iZXJzLlxuLy8vIEByZXR1cm4ge0xpc3R9IGEgTGlzdCBvZiA0IHZhbHVlIG51bWJlcnMuXG5AZnVuY3Rpb24gdW5wYWNrLXZhbHVlKCR2YWx1ZSkge1xuICBAaWYgbWV0YS50eXBlLW9mKCR2YWx1ZSkgPT0gJ21hcCcgb3IgbGlzdC5sZW5ndGgoJHZhbHVlKSA9PSAxIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAkdmFsdWUgJHZhbHVlICR2YWx1ZTtcbiAgfSBAZWxzZSBpZiBsaXN0Lmxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIGxpc3QubGVuZ3RoKCR2YWx1ZSkgPT0gMyB7XG4gICAgQHJldHVybiBsaXN0Lm50aCgkdmFsdWUsIDEpIGxpc3QubnRoKCR2YWx1ZSwgMikgbGlzdC5udGgoJHZhbHVlLCAzKVxuICAgICAgbGlzdC5udGgoJHZhbHVlLCAyKTtcbiAgfSBAZWxzZSBpZiBsaXN0Lmxlbmd0aCgkdmFsdWUpID09IDIge1xuICAgIEByZXR1cm4gbGlzdC5udGgoJHZhbHVlLCAxKSBsaXN0Lm50aCgkdmFsdWUsIDIpIGxpc3QubnRoKCR2YWx1ZSwgMSlcbiAgICAgIGxpc3QubnRoKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAZXJyb3IgXCJJbnZhbGlkIENTUyBwcm9wZXJ0eSB2YWx1ZTogJyN7JHZhbHVlfScgaXMgbW9yZSB0aGFuIDQgdmFsdWVzXCI7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG5vLXVua25vd24tYW5pbWF0aW9ucyAtLVxuLy8gQW5pbWF0aW9ucyBrZXlmcmFtZXMgYXJlIGluY2x1ZGVkIGluIGBrZXlmcmFtZXMuc2Nzc2AuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi9mdW5jdGlvbnMnIGFzIGFuaW1hdGlvbi1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvZG9tL2RvbSc7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICcuL3ZhcmlhYmxlcyc7XG5AdXNlICcuL2tleWZyYW1lcyc7XG5cbi8vXG4vLyBQdWJsaWNcbi8vXG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMucHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1rZXlmcmFtZXNfO1xuICAgIEBpbmNsdWRlIGtleWZyYW1lcy5wcmltYXJ5LWluZGV0ZXJtaW5hdGUtc2NhbGUta2V5ZnJhbWVzXztcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMuc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLWtleWZyYW1lc187XG4gICAgQGluY2x1ZGUga2V5ZnJhbWVzLnNlY29uZGFyeS1pbmRldGVybWluYXRlLXNjYWxlLWtleWZyYW1lc187XG4gICAgQGluY2x1ZGUga2V5ZnJhbWVzLmJ1ZmZlcmluZy1rZXlmcmFtZXNfO1xuICAgIEBpbmNsdWRlIGtleWZyYW1lcy5wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uta2V5ZnJhbWVzXztcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMuc2Vjb25kYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlLXJldmVyc2Uta2V5ZnJhbWVzXztcbiAgICBAaW5jbHVkZSBrZXlmcmFtZXMuYnVmZmVyaW5nLXJldmVyc2Uta2V5ZnJhbWVzXztcbiAgfVxuXG4gIC5tZGMtbGluZWFyLXByb2dyZXNzIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgICAvLyBDcmVhdGUgYSBib3JkZXIgYXJvdW5kIHRoZSBiYXIgaW4gV2luZG93cyBIaWdoIENvbnRyYXN0IE1vZGUuXG4gICAgICBvdXRsaW5lOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICBAaW5jbHVkZSBkb20uZm9yY2VkLWNvbG9ycy1tb2RlKCRleGNsdWRlLWllMTE6IHRydWUpIHtcbiAgICAgICAgb3V0bGluZS1jb2xvcjogQ2FudmFzVGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXRlbXBvcmFyeShvcGFjaXR5LCAyNTBtcyk7XG4gICAgfVxuXG4gICAgJl9fYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXRlbXBvcmFyeSh0cmFuc2Zvcm0sIDI1MG1zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19iYXItaW5uZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIC8vIGJvcmRlci10b3AgaXMgdXNlZCByYXRoZXIgdGhhbiBiYWNrZ3JvdW5kLWNvbG9yIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgICAgICAvLyBiYXIgaXMgdmlzaWJsZSBpbiBXaW5kb3dzIEhpZ2ggQ29udHJhc3QgTW9kZS5cbiAgICAgICAgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVmZmVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19idWZmZXItZG90cyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgICAgIC8vIGJhY2tncm91bmQtc2l6ZTogMTBweCB2YXJpYWJsZXMuJGhlaWdodDtcbiAgICAgICAgZmxleDogYXV0bztcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgYW5pbWF0aW9uOiBtZGMtbGluZWFyLXByb2dyZXNzLWJ1ZmZlcmluZyAyNTBtcyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVmZmVyLWJhciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBmbGV4OiAwIDEgMTAwJTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYW5pbWF0aW9uLWZ1bmN0aW9ucy5leGl0LXRlbXBvcmFyeShmbGV4LWJhc2lzLCAyNTBtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fcHJpbWFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fc2Vjb25kYXJ5LWJhciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGluZGV0ZXJtaW5hdGVfKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgIEBpbmNsdWRlIHJ0bC5ydGwoKSB7XG4gICAgICAvLyBUaGUgcnRsKCkgbWl4aW4gZG9lcyBub3QgYWNjb3VudCBmb3IgbmVzdGVkIGBkaXJgIGF0dHJpYnV0ZXMuIFNldFxuICAgICAgLy8gYGRpcmAgYXR0cmlidXRlIG9uIHJvb3QgdG8gdGFrZSBoaWdoZXN0IHByaW9yaXR5LlxuICAgICAgJjpub3QoW2Rpcj0nbHRyJ10pIHtcbiAgICAgICAgQGluY2x1ZGUgX3J0bC1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtLWNsb3NlZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtLWNsb3NlZC1hbmltYXRpb24tb2ZmIHtcbiAgICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19idWZmZXItZG90cyB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYubWRjLWxpbmVhci1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZSB7XG4gICAgICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIsXG4gICAgICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX2Jhci1pbm5lciB7XG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgYmFyLWNvbG9yKHByaW1hcnksICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBidWZmZXItY29sb3IodmFyaWFibGVzLiRiYXNlbGluZS1idWZmZXItY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0cmFjay1oZWlnaHQodmFyaWFibGVzLiRoZWlnaHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gYmFyLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpbmVhci1wcm9ncmVzc19fYmFyLWlubmVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAvLyBCb3JkZXIgaXMgdXNlZCByYXRoZXIgdGhhbiBiYWNrZ3JvdW5kLWNvbG9yIHRvIGVuc3VyZSB0aGF0IHRoZVxuICAgICAgLy8gYmFyIGlzIHZpc2libGUgaW4gV2luZG93cyBIaWdoIENvbnRyYXN0IE1vZGUuXG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBidWZmZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC8vIFdlIG5lZWQgdG8gZXNjYXBlIHRoZSAnIycgY2hhcmFjdGVyIGFzIFwiJTIzXCIgZm9yIFNWRyBiZWNhdXNlICcjJyBpcyBhIHJlc2VydmVkIGNoYXJhY3RlciBpbiBVUklzLlxuICAkY29sb3ItdmFsdWUtZm9yLWNzczogdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpO1xuICAkY29sb3ItdmFsdWUtZm9yLXN2Zzogc3RyLXJlcGxhY2VfKFxuICAgIHN0cmluZy51bnF1b3RlKCcjeyRjb2xvci12YWx1ZS1mb3ItY3NzfScpLFxuICAgICcjJyxcbiAgICAnJTIzJ1xuICApO1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpbmVhci1wcm9ncmVzc19fYnVmZmVyLWRvdHMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIC8vIFNWRyBpcyBvcHRpbWl6ZWQgZm9yIGRhdGEgVVJJIChodHRwczovL2NvZGVwZW4uaW8vdGlndC9wb3N0L29wdGltaXppbmctc3Zncy1pbi1kYXRhLXVyaXMpXG4gICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuY3Rpb24tdXJsLXF1b3Rlc1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyBlbmFibGUtYmFja2dyb3VuZD0nbmV3IDAgMCA1IDInIHhtbDpzcGFjZT0ncHJlc2VydmUnIHZpZXdCb3g9JzAgMCA1IDInIHByZXNlcnZlQXNwZWN0UmF0aW89J25vbmUgc2xpY2UnJTNFJTNDY2lyY2xlIGN4PScxJyBjeT0nMScgcj0nMScgZmlsbD0nI3skY29sb3ItdmFsdWUtZm9yLXN2Z30nLyUzRSUzQy9zdmclM0VcIik7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX2J1ZmZlci1iYXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci12YWx1ZS1mb3ItY3NzO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhY2staGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLm1kYy1saW5lYXItcHJvZ3Jlc3Mge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgJl9fYmFyLWlubmVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnVmZmVyLWRvdHMge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMHB4ICRoZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vXG4vLyBQcml2YXRlXG4vL1xuXG5AbWl4aW4gaW5kZXRlcm1pbmF0ZV8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gICYtLWluZGV0ZXJtaW5hdGUge1xuICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWxpbmVhci1wcm9ncmVzc19fcHJpbWFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgbGVmdDogLTE0NS4xNjY2MTElO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19zZWNvbmRhcnktYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGxlZnQ6IC01NC44ODg4OTElO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1kYy1saW5lYXItcHJvZ3Jlc3MtLWFuaW1hdGlvbi1yZWFkeSB7XG4gICAgICAubWRjLWxpbmVhci1wcm9ncmVzc19fcHJpbWFyeS1iYXIge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1wcmltYXJ5LWluZGV0ZXJtaW5hdGUtdHJhbnNsYXRlIDJzXG4gICAgICAgICAgICBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAgIH1cblxuICAgICAgICA+IC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXItaW5uZXIge1xuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICBhbmltYXRpb246IG1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXNjYWxlIDJzXG4gICAgICAgICAgICAgIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX3NlY29uZGFyeS1iYXIge1xuICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS10cmFuc2xhdGUgMnNcbiAgICAgICAgICAgIGluZmluaXRlIGxpbmVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLm1kYy1saW5lYXItcHJvZ3Jlc3NfX2Jhci1pbm5lciB7XG4gICAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1zZWNvbmRhcnktaW5kZXRlcm1pbmF0ZS1zY2FsZSAyc1xuICAgICAgICAgICAgICBpbmZpbml0ZSBsaW5lYXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfcnRsLXN0eWxlcygkcXVlcnk6ICRxdWVyeSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIC5tZGMtbGluZWFyLXByb2dyZXNzX19iYXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgcmlnaHQ7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gICYubWRjLWxpbmVhci1wcm9ncmVzcy0tYW5pbWF0aW9uLXJlYWR5IHtcbiAgICAubWRjLWxpbmVhci1wcm9ncmVzc19fcHJpbWFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG1kYy1saW5lYXItcHJvZ3Jlc3MtcHJpbWFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtbGluZWFyLXByb2dyZXNzX19zZWNvbmRhcnktYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBtZGMtbGluZWFyLXByb2dyZXNzLXNlY29uZGFyeS1pbmRldGVybWluYXRlLXRyYW5zbGF0ZS1yZXZlcnNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGluZWFyLXByb2dyZXNzX19idWZmZXItZG90cyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIGFuaW1hdGlvbjogbWRjLWxpbmVhci1wcm9ncmVzcy1idWZmZXJpbmctcmV2ZXJzZSAyNTBtcyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDApO1xuICAgIH1cbiAgfVxuXG4gICYubWRjLWxpbmVhci1wcm9ncmVzcy0taW5kZXRlcm1pbmF0ZSB7XG4gICAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX3ByaW1hcnktYmFyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHJpZ2h0OiAtMTQ1LjE2NjYxMSU7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1saW5lYXItcHJvZ3Jlc3NfX3NlY29uZGFyeS1iYXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgcmlnaHQ6IC01NC44ODg4OTElO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBCYXNlZCBvbiBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3Mvc3RyLXJlcGxhY2UtZnVuY3Rpb24vXG5AZnVuY3Rpb24gc3RyLXJlcGxhY2VfKCRzdHJpbmcsICRzZWFyY2gsICRyZXBsYWNlKSB7XG4gICRpbmRleDogc3RyaW5nLmluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgICRoZWFkOiBzdHJpbmcuc2xpY2UoJHN0cmluZywgMSwgJGluZGV4IC0gMSk7XG4gICAgJHRhaWw6IHN0ci1yZXBsYWNlXyhcbiAgICAgIHN0cmluZy5zbGljZSgkc3RyaW5nLCAkaW5kZXggKyBzdHJpbmcubGVuZ3RoKCRzZWFyY2gpKSxcbiAgICAgICRzZWFyY2gsXG4gICAgICAkcmVwbGFjZVxuICAgICk7XG5cbiAgICBAcmV0dXJuICRoZWFkICsgJHJlcGxhY2UgKyAkdGFpbDtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cbiIsIi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbi8vL1xuLy8vIEVtaXRzIG5lY2Vzc2FyeSBsYXlvdXQgc3R5bGVzIHRvIHNldCBhIHRyYW5zcGFyZW50IGJvcmRlciBhcm91bmQgYW4gZWxlbWVudFxuLy8vIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcmVzdCBvZiBpdHMgY29tcG9uZW50IGxheW91dC4gVGhlIGJvcmRlciBpc1xuLy8vIG9ubHkgdmlzaWJsZSBpbiBoaWdoLWNvbnRyYXN0IG1vZGUuIFRoZSB0YXJnZXQgZWxlbWVudCBzaG91bGQgYmUgYSBjaGlsZCBvZlxuLy8vIGEgcmVsYXRpdmVseSBwb3NpdGlvbmVkIHRvcC1sZXZlbCBlbGVtZW50IChpLmUuIGEgOjpiZWZvcmUgcHNldWRvLWVsZW1lbnQpLlxuLy8vXG4vLy8gQHBhcmFtIHtudW1iZXJ9ICRib3JkZXItd2lkdGggLSBUaGUgd2lkdGggb2YgdGhlIHRyYW5zcGFyZW50IGJvcmRlci5cbi8vLyBAcGFyYW0ge3N0cmluZ30gJGJvcmRlci1zdHlsZSAtIFRoZSBzdHlsZSBvZiB0aGUgdHJhbnNwYXJlbnQgYm9yZGVyLlxuLy8vXG5AbWl4aW4gdHJhbnNwYXJlbnQtYm9yZGVyKFxuICAkYm9yZGVyLXdpZHRoOiAxcHgsXG4gICRib3JkZXItc3R5bGU6IHNvbGlkLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLy8gVXNlZCB0byBzYXRpc2Z5IEZpcmVmb3ggdjk0IHdoaWNoIGRvZXMgbm90IHJlbmRlciB0cmFuc3BhcmVudCBib3JkZXJzIGluIEhDTSAoYi8yMDY0NDA4MzgpLlxuICBAaW5jbHVkZSBmb3JjZWQtY29sb3JzLW1vZGUoJGV4Y2x1ZGUtaWUxMTogdHJ1ZSkge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBib3JkZXItY29sb3I6IENhbnZhc1RleHQ7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFZpc3VhbGx5IGhpZGVzIHRleHQgY29udGVudCBmb3IgYWNjZXNzaWJpbGl0eS4gVGhpcyB0ZXh0IHNob3VsZCBvbmx5IGJlXG4vLy8gdmlzaWJsZSB0byBzY3JlZW4gcmVhZGVyIHVzZXJzLlxuLy8vIFNlZSBodHRwczovL2ExMXlwcm9qZWN0LmNvbS9wb3N0cy9ob3ctdG8taGlkZS1jb250ZW50L1xuLy8vXG5AbWl4aW4gdmlzdWFsbHktaGlkZGVuKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAvKiBhZGRlZCBsaW5lICovXG4gICAgd2lkdGg6IDFweDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0cyBmb3IgSUUxMSBzdXBwb3J0LlxuLy8vXG4vLy8gQGNvbnRlbnQgc3R5bGVzIHRvIGVtaXQgZm9yIElFMTEgc3VwcG9ydFxuQG1peGluIGllMTEtc3VwcG9ydCB7XG4gIEBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdHMgZm9yIGBmb3JjZWQtY29sb3JzYCBoaWdoIGNvbnRyYXN0IG1vZGUuXG4vLy9cbi8vLyBXaGlsZSBpbiBgZm9yY2VkLWNvbG9yc2AgbW9kZSwgb25seSBzeXN0ZW0gY29sb3JzIHNob3VsZCBiZSB1c2VkLlxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yX3ZhbHVlI3N5c3RlbV9jb2xvcnNcbi8vLyBAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQG1lZGlhL2ZvcmNlZC1jb2xvcnNcbi8vLyBAY29udGVudCBzdHlsZXMgdG8gZW1pdCBpbiBgZm9yY2VkLWNvbG9yc2AgbW9kZVxuQG1peGluIGZvcmNlZC1jb2xvcnMtbW9kZSgkZXhjbHVkZS1pZTExOiBmYWxzZSkge1xuICBAaWYgJGV4Y2x1ZGUtaWUxMSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4kYmFzZWxpbmUtYnVmZmVyLWNvbG9yOiAjZTZlNmU2ICFkZWZhdWx0O1xuJGhlaWdodDogNHB4O1xuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL3ZhcmlhYmxlcycgYXMgYW5pbWF0aW9uLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vbWl4aW5zJyBhcyBlbGV2YXRpb24tbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnLi92YXJpYWJsZXMnO1xuQHVzZSAnLi9tZW51LXN1cmZhY2UtY3VzdG9tLXByb3BlcnRpZXMnO1xuXG4vL1xuLy8gUHVibGljXG4vL1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIG1lbnUtc3VyZmFjZVxuICAubWRjLW1lbnUtc3VyZmFjZSB7XG4gICAgQGluY2x1ZGUgYmFzZV8oJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24tbWl4aW5zLmVsZXZhdGlvbigkei12YWx1ZTogOCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZpbGwtY29sb3Ioc3VyZmFjZSwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpbmstY29sb3Iob24tc3VyZmFjZSwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBzaGFwZS1yYWRpdXModmFyaWFibGVzLiRzaGFwZS1yYWRpdXMsIGZhbHNlLCAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkodHJhbnNmb3JtLW9yaWdpbiwgdG9wIGxlZnQsIHRvcCByaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1tZW51LXN1cmZhY2UtLWFuY2hvciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtbWVudS1zdXJmYWNlLS1maXhlZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cblxuICAubWRjLW1lbnUtc3VyZmFjZS0tZnVsbHdpZHRoIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZW5kXG59XG5cbkBtaXhpbiBpbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIHNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cygkcmFkaXVzLCAkcnRsLXJlZmxleGl2ZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLyBVc2VkIGJ5IGZpbGxlZCB2YXJpYW50cyBvZiBHTSBjb21wb25lbnRzIHRvIGNvbmRpdGlvbmFsbHkgZmxhdHRlbiB0aGUgdG9wXG4vLyBjb3JuZXJzIG9mIHRoZSBtZW51LlxuQG1peGluIGZsYXR0ZW4tdG9wLXdoZW4tb3BlbmVkLWJlbG93KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1tZW51LXN1cmZhY2UtLWlzLW9wZW4tYmVsb3cge1xuICAgICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMHB4O1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDBweDtcbiAgICB9XG4gIH1cbn1cblxuLy9cbi8vIFByaXZhdGVcbi8vXG5cbkBtaXhpbiBiYXNlXygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgJG1heC13aWR0aDogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgbWVudS1zdXJmYWNlLWN1c3RvbS1wcm9wZXJ0aWVzLiRtYXgtd2lkdGgsXG4gICAgICBjYWxjKDEwMHZ3IC0gI3t2YXJpYWJsZXMuJG1pbi1kaXN0YW5jZS1mcm9tLWVkZ2V9KVxuICAgICk7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkobWF4LXdpZHRoLCAkbWF4LXdpZHRoKTtcbiAgICAkbWF4LWhlaWdodDogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgbWVudS1zdXJmYWNlLWN1c3RvbS1wcm9wZXJ0aWVzLiRtYXgtaGVpZ2h0LFxuICAgICAgY2FsYygxMDB2aCAtICN7dmFyaWFibGVzLiRtaW4tZGlzdGFuY2UtZnJvbS1lZGdlfSlcbiAgICApO1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KG1heC1oZWlnaHQsICRtYXgtaGVpZ2h0KTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xuICAgIG9wYWNpdHk6IDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgICB6LWluZGV4OiB2YXJpYWJsZXMuJHotaW5kZXg7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyaWFibGVzLiRmYWRlLWluLWR1cmF0aW9uIGxpbmVhcixcbiAgICAgIHRyYW5zZm9ybSB2YXJpYWJsZXMuJHNjYWxlLWR1cmF0aW9uXG4gICAgICAgIGFuaW1hdGlvbi12YXJpYWJsZXMuJGRlY2VsZXJhdGlvbi1jdXJ2ZS10aW1pbmctZnVuY3Rpb24sXG4gICAgICBoZWlnaHQgMjUwbXMgYW5pbWF0aW9uLXZhcmlhYmxlcy4kZGVjZWxlcmF0aW9uLWN1cnZlLXRpbWluZy1mdW5jdGlvbjtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYtLWFuaW1hdGluZy1vcGVuIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBSZW5kZXIgdGhpcyBhZnRlciBgLS1hbmltYXRpbmctb3BlbmAgdG8gb3ZlcnJpZGUgYG9wYWNpdHlgICYgYHRyYW5zZm9ybWBcbiAgLy8gQ1NTIHByb3BlcnRpZXMuXG4gICYtLW9wZW4ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAmLS1hbmltYXRpbmctY2xvc2VkIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXJpYWJsZXMuJGZhZGUtb3V0LWR1cmF0aW9uIGxpbmVhcjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4kZmFkZS1pbi1kdXJhdGlvbjogMC4wM3MgIWRlZmF1bHQ7XG4kZmFkZS1vdXQtZHVyYXRpb246IDAuMDc1cyAhZGVmYXVsdDtcbiRzY2FsZS1kdXJhdGlvbjogMC4xMnMgIWRlZmF1bHQ7XG4kbWluLWRpc3RhbmNlLWZyb20tZWRnZTogMzJweCAhZGVmYXVsdDtcbiR6LWluZGV4OiA4ICFkZWZhdWx0OyAvLyBPbmUgYWJvdmUgbWRjLWRpYWxvZ1xuJHNoYXBlLXJhZGl1czogbWVkaXVtICFkZWZhdWx0O1xuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJyBhcyBhbmltYXRpb24tdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC9iYXNlL21peGlucycgYXMgYmFzZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2Nzcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcblxuJGJhc2VsaW5lLWNvbG9yOiBibGFjayAhZGVmYXVsdDtcbiR1bWJyYS1vcGFjaXR5OiAwLjIgIWRlZmF1bHQ7XG4kcGVudW1icmEtb3BhY2l0eTogMC4xNCAhZGVmYXVsdDtcbiRhbWJpZW50LW9wYWNpdHk6IDAuMTIgIWRlZmF1bHQ7XG5cbiR1bWJyYS1tYXA6IChcbiAgMDogJzBweCAwcHggMHB4IDBweCcsXG4gIDE6ICcwcHggMnB4IDFweCAtMXB4JyxcbiAgMjogJzBweCAzcHggMXB4IC0ycHgnLFxuICAzOiAnMHB4IDNweCAzcHggLTJweCcsXG4gIDQ6ICcwcHggMnB4IDRweCAtMXB4JyxcbiAgNTogJzBweCAzcHggNXB4IC0xcHgnLFxuICA2OiAnMHB4IDNweCA1cHggLTFweCcsXG4gIDc6ICcwcHggNHB4IDVweCAtMnB4JyxcbiAgODogJzBweCA1cHggNXB4IC0zcHgnLFxuICA5OiAnMHB4IDVweCA2cHggLTNweCcsXG4gIDEwOiAnMHB4IDZweCA2cHggLTNweCcsXG4gIDExOiAnMHB4IDZweCA3cHggLTRweCcsXG4gIDEyOiAnMHB4IDdweCA4cHggLTRweCcsXG4gIDEzOiAnMHB4IDdweCA4cHggLTRweCcsXG4gIDE0OiAnMHB4IDdweCA5cHggLTRweCcsXG4gIDE1OiAnMHB4IDhweCA5cHggLTVweCcsXG4gIDE2OiAnMHB4IDhweCAxMHB4IC01cHgnLFxuICAxNzogJzBweCA4cHggMTFweCAtNXB4JyxcbiAgMTg6ICcwcHggOXB4IDExcHggLTVweCcsXG4gIDE5OiAnMHB4IDlweCAxMnB4IC02cHgnLFxuICAyMDogJzBweCAxMHB4IDEzcHggLTZweCcsXG4gIDIxOiAnMHB4IDEwcHggMTNweCAtNnB4JyxcbiAgMjI6ICcwcHggMTBweCAxNHB4IC02cHgnLFxuICAyMzogJzBweCAxMXB4IDE0cHggLTdweCcsXG4gIDI0OiAnMHB4IDExcHggMTVweCAtN3B4JyxcbikgIWRlZmF1bHQ7XG5cbiRwZW51bWJyYS1tYXA6IChcbiAgMDogJzBweCAwcHggMHB4IDBweCcsXG4gIDE6ICcwcHggMXB4IDFweCAwcHgnLFxuICAyOiAnMHB4IDJweCAycHggMHB4JyxcbiAgMzogJzBweCAzcHggNHB4IDBweCcsXG4gIDQ6ICcwcHggNHB4IDVweCAwcHgnLFxuICA1OiAnMHB4IDVweCA4cHggMHB4JyxcbiAgNjogJzBweCA2cHggMTBweCAwcHgnLFxuICA3OiAnMHB4IDdweCAxMHB4IDFweCcsXG4gIDg6ICcwcHggOHB4IDEwcHggMXB4JyxcbiAgOTogJzBweCA5cHggMTJweCAxcHgnLFxuICAxMDogJzBweCAxMHB4IDE0cHggMXB4JyxcbiAgMTE6ICcwcHggMTFweCAxNXB4IDFweCcsXG4gIDEyOiAnMHB4IDEycHggMTdweCAycHgnLFxuICAxMzogJzBweCAxM3B4IDE5cHggMnB4JyxcbiAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCcsXG4gIDE1OiAnMHB4IDE1cHggMjJweCAycHgnLFxuICAxNjogJzBweCAxNnB4IDI0cHggMnB4JyxcbiAgMTc6ICcwcHggMTdweCAyNnB4IDJweCcsXG4gIDE4OiAnMHB4IDE4cHggMjhweCAycHgnLFxuICAxOTogJzBweCAxOXB4IDI5cHggMnB4JyxcbiAgMjA6ICcwcHggMjBweCAzMXB4IDNweCcsXG4gIDIxOiAnMHB4IDIxcHggMzNweCAzcHgnLFxuICAyMjogJzBweCAyMnB4IDM1cHggM3B4JyxcbiAgMjM6ICcwcHggMjNweCAzNnB4IDNweCcsXG4gIDI0OiAnMHB4IDI0cHggMzhweCAzcHgnLFxuKSAhZGVmYXVsdDtcblxuJGFtYmllbnQtbWFwOiAoXG4gIDA6ICcwcHggMHB4IDBweCAwcHgnLFxuICAxOiAnMHB4IDFweCAzcHggMHB4JyxcbiAgMjogJzBweCAxcHggNXB4IDBweCcsXG4gIDM6ICcwcHggMXB4IDhweCAwcHgnLFxuICA0OiAnMHB4IDFweCAxMHB4IDBweCcsXG4gIDU6ICcwcHggMXB4IDE0cHggMHB4JyxcbiAgNjogJzBweCAxcHggMThweCAwcHgnLFxuICA3OiAnMHB4IDJweCAxNnB4IDFweCcsXG4gIDg6ICcwcHggM3B4IDE0cHggMnB4JyxcbiAgOTogJzBweCAzcHggMTZweCAycHgnLFxuICAxMDogJzBweCA0cHggMThweCAzcHgnLFxuICAxMTogJzBweCA0cHggMjBweCAzcHgnLFxuICAxMjogJzBweCA1cHggMjJweCA0cHgnLFxuICAxMzogJzBweCA1cHggMjRweCA0cHgnLFxuICAxNDogJzBweCA1cHggMjZweCA0cHgnLFxuICAxNTogJzBweCA2cHggMjhweCA1cHgnLFxuICAxNjogJzBweCA2cHggMzBweCA1cHgnLFxuICAxNzogJzBweCA2cHggMzJweCA1cHgnLFxuICAxODogJzBweCA3cHggMzRweCA2cHgnLFxuICAxOTogJzBweCA3cHggMzZweCA2cHgnLFxuICAyMDogJzBweCA4cHggMzhweCA3cHgnLFxuICAyMTogJzBweCA4cHggNDBweCA3cHgnLFxuICAyMjogJzBweCA4cHggNDJweCA3cHgnLFxuICAyMzogJzBweCA5cHggNDRweCA4cHgnLFxuICAyNDogJzBweCA5cHggNDZweCA4cHgnLFxuKSAhZGVmYXVsdDtcblxuLy8gVGhlIGNzcyBwcm9wZXJ0eSB1c2VkIGZvciBlbGV2YXRpb24uIEluIG1vc3QgY2FzZXMgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQuIEl0IGlzIGV4cG9zZWRcbi8vIGFzIGEgdmFyaWFibGUgZm9yIGFic3RyYWN0aW9uIC8gZWFzeSB1c2Ugd2hlbiBuZWVkaW5nIHRvIHJlZmVyZW5jZSB0aGUgcHJvcGVydHkgZGlyZWN0bHksIGZvclxuLy8gZXhhbXBsZSBpbiBhIGB3aWxsLWNoYW5nZWAgcnVsZS5cbiRwcm9wZXJ0eTogYm94LXNoYWRvdyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgY29sb3IgZm9yIHRoZSBlbGV2YXRpb24gb3ZlcmxheS5cbiRvdmVybGF5LWNvbG9yOiAjZmZmO1xuXG4vLyBUaGUgY3NzIHByb3BlcnR5IHVzZWQgZm9yIGVsZXZhdGlvbiBvdmVybGF5IHRyYW5zaXRpb25zLiBJbiBtb3N0IGNhc2VzIHRoaXMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiBJdCBpcyBleHBvc2VkXG4vLyBhcyBhIHZhcmlhYmxlIGZvciBhYnN0cmFjdGlvbiAvIGVhc3kgdXNlIHdoZW4gbmVlZGluZyB0byByZWZlcmVuY2UgdGhlIHByb3BlcnR5IGRpcmVjdGx5LCBmb3Jcbi8vIGV4YW1wbGUgaW4gYSBgd2lsbC1jaGFuZ2VgIHJ1bGUuXG4kb3ZlcmxheS1wcm9wZXJ0eTogb3BhY2l0eSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGFuaW1hdGlvbi12YXJpYWJsZXMuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuLy8vXG4vLy8gU2V0cyB0aGUgZWxldmF0aW9uIHRyYW5zaXRpb24gdmFsdWUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGR1cmF0aW9uIC0gVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZWFzaW5nIC0gVGhlIGVhc2luZyBmdW5jdGlvbiBmb3IgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHJldHVybiB7U3RyaW5nfVxuLy8vXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi12YWx1ZShcbiAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgJGVhc2luZzogJHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXG4pIHtcbiAgQHJldHVybiAjeyRwcm9wZXJ0eX0gI3skZHVyYXRpb259ICN7JGVhc2luZ307XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGVsZXZhdGlvbiBvdmVybGF5IHRyYW5zaXRpb24gdmFsdWUuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGR1cmF0aW9uIC0gVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZWFzaW5nIC0gVGhlIGVhc2luZyBmdW5jdGlvbiBmb3IgdGhlIHRyYW5zaXRpb24uXG4vLy8gQHJldHVybiB7U3RyaW5nfVxuLy8vXG5AZnVuY3Rpb24gb3ZlcmxheS10cmFuc2l0aW9uLXZhbHVlKFxuICAkZHVyYXRpb246ICR0cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cbikge1xuICBAcmV0dXJuICN7JG92ZXJsYXktcHJvcGVydHl9ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLy9cbi8vLyBDcmVhdGVzIGEgYm94LXNoYWRvdyBmcm9tIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gc3lzdGVtLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGV2ZWwgLSB0aGUgbGV2ZWwgb2YgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBzeXN0ZW0uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRjb2xvciAtIHRoZSBjb2xvciBvZiB0aGUgc2hhZG93LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3BhY2l0eS1ib29zdCBbMF0gLSBvcHRpb25hbCBvcGFjaXR5IGJvb3N0IGZvciB0aGUgc2hhZG93LlxuLy8vIEByZXR1cm4ge0xpc3R9IHRoZSBjb21wbGV0ZSBib3ggc2hhZG93LlxuLy8vXG5AZnVuY3Rpb24gX2JveC1zaGFkb3coJGxldmVsLCAkY29sb3IsICRvcGFjaXR5LWJvb3N0OiAwKSB7XG4gICRjb2xvcjogdGhlbWUtY29sb3IucHJvcC12YWx1ZSgkY29sb3IpO1xuICAkdW1icmEtei12YWx1ZTogbWFwLmdldCgkdW1icmEtbWFwLCAkbGV2ZWwpO1xuICAkcGVudW1icmEtei12YWx1ZTogbWFwLmdldCgkcGVudW1icmEtbWFwLCAkbGV2ZWwpO1xuICAkYW1iaWVudC16LXZhbHVlOiBtYXAuZ2V0KCRhbWJpZW50LW1hcCwgJGxldmVsKTtcblxuICAkdW1icmEtY29sb3I6IHJnYmEoJGNvbG9yLCAkdW1icmEtb3BhY2l0eSArICRvcGFjaXR5LWJvb3N0KTtcbiAgJHBlbnVtYnJhLWNvbG9yOiByZ2JhKCRjb2xvciwgJHBlbnVtYnJhLW9wYWNpdHkgKyAkb3BhY2l0eS1ib29zdCk7XG4gICRhbWJpZW50LWNvbG9yOiByZ2JhKCRjb2xvciwgJGFtYmllbnQtb3BhY2l0eSArICRvcGFjaXR5LWJvb3N0KTtcblxuICBAcmV0dXJuIChcbiAgICAjeycjeyR1bWJyYS16LXZhbHVlfSAjeyR1bWJyYS1jb2xvcn0nfSxcbiAgICAjeycjeyRwZW51bWJyYS16LXZhbHVlfSAjeyRwZW51bWJyYS1jb2xvcn0nfSxcbiAgICAjeyRhbWJpZW50LXotdmFsdWV9ICRhbWJpZW50LWNvbG9yXG4gICk7XG59XG5cbi8vIFJldHVybnMgdGhlIGNvcnJlY3QgYm94LXNoYWRvdyBzcGVjaWZpZWQgYnkgJHotdmFsdWUuXG4vLyBUaGUgJHotdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuLy8gSWYgJGNvbG9yIGhhcyBhbiBhbHBoYSBjaGFubmVsLCBpdCB3aWxsIGJlIGlnbm9yZWQgYW5kIG92ZXJyaWRkZW4uIFRvIGluY3JlYXNlIHRoZSBvcGFjaXR5IG9mIHRoZSBzaGFkb3csIHVzZVxuLy8gJG9wYWNpdHktYm9vc3QuXG5AZnVuY3Rpb24gZWxldmF0aW9uLWJveC1zaGFkb3coXG4gICR6LXZhbHVlLFxuICAkY29sb3I6ICRiYXNlbGluZS1jb2xvcixcbiAgJG9wYWNpdHktYm9vc3Q6IDBcbikge1xuICBAaWYgbWV0YS50eXBlLW9mKCR6LXZhbHVlKSAhPSBudW1iZXIgb3Igbm90IG1hdGguaXMtdW5pdGxlc3MoJHotdmFsdWUpIHtcbiAgICBAZXJyb3IgXCIkei12YWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLCBidXQgcmVjZWl2ZWQgJyN7JHotdmFsdWV9J1wiO1xuICB9XG5cbiAgQGlmICR6LXZhbHVlIDwgMCBvciAkei12YWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgXCIkei12YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQsIGJ1dCByZWNlaXZlZCAnI3skei12YWx1ZX0nXCI7XG4gIH1cblxuICBAcmV0dXJuIF9ib3gtc2hhZG93KCR6LXZhbHVlLCAkY29sb3IsICRvcGFjaXR5LWJvb3N0KTtcbn1cblxuLy8vXG4vLy8gUmV0dXJucyBhIHNoYWRvdyBvciBudWxsIGlmIHBhcmFtcyBhcmUgaW52YWxpZC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldmVsIC0gdGhlIGxldmVsIG9mIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gc3lzdGVtLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSB0aGUgY29sb3Igb2YgdGhlIHNoYWRvdy5cbi8vLyBAcmV0dXJuIHtMaXN0fG51bGx9IHRoZSBjb21wbGV0ZSBib3ggc2hhZG93IG9yIG51bGwuXG4vLy9cbkBmdW5jdGlvbiBfc2hhZG93KCRsZXZlbCwgJGNvbG9yKSB7XG4gIEBpZiAkbGV2ZWwgPT0gbnVsbCBhbmQgJGNvbG9yID09IG51bGwge1xuICAgIC8vIERvIG5vdCBlbWl0IGEgd2FybmluZyBpZiBib3RoIGFyZSBudWxsLCB3aGljaCBtZWFucyB0aGUgdXNlciBkaWQgbm90XG4gICAgLy8gcHJvdmlkZSB0b2tlbnMuXG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgQGlmICRsZXZlbCA9PSBudWxsIG9yICRjb2xvciA9PSBudWxsIHtcbiAgICAvLyBJZiBvbmUgb2YgdGhlIHRva2VucyBpcyBudWxsLCBlbWl0IGEgd2FybmluZzogdGhlIHVzZXIgbWF5IG5vdCByZWFsaXplXG4gICAgLy8gdGhhdCBib3RoIGFyZSByZXF1aXJlZC5cbiAgICBAd2FybiBcImJvdGggJGxldmVsIGFuZCAkY29sb3IgYXJlIHJlcXVpcmVkOyByZWNlaXZlZCAkbGV2ZWw6ICcjeyRsZXZlbH0nLCAkY29sb3I6ICcjeyRjb2xvcn0nXCI7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgQGlmICRsZXZlbCA8IDAgb3IgJGxldmVsID4gMjQge1xuICAgIEB3YXJuIFwiJGxldmVsIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNDsgcmVjZWl2ZWQgJyN7JGxldmVsfSdcIjtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICBAcmV0dXJuIF9ib3gtc2hhZG93KCRsZXZlbCwgJGNvbG9yKTtcbn1cblxuQGZ1bmN0aW9uIGdldC1lbGV2YXRpb24oJGxldmVsKSB7XG4gIEByZXR1cm4gKGJveC1zaGFkb3c6IGVsZXZhdGlvbi1ib3gtc2hhZG93KCRsZXZlbCkpO1xufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBzaGFkb3cgb2YgdGhlIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJveC1zaGFkb3cgLSBUaGUgc2hhZG93IHRvIGFwcGx5IHRvIHRoZSBlbGVtZW50LlxuLy8vXG5AbWl4aW4gX2JveC1zaGFkb3coJHNoYWRvdywgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYm94LXNoYWRvdywgJHNoYWRvdyk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgc2hhZG93IG9mIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRib3gtc2hhZG93IC0gVGhlIHNoYWRvdyB0byBhcHBseSB0byB0aGUgZWxlbWVudC5cbi8vL1xuQG1peGluIHNoYWRvdygkYm94LXNoYWRvdywgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGlmIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRib3gtc2hhZG93KSB7XG4gICAgICAvLyBUT0RPKGIvMTg1MTg4NDU4KTogVXNlIHRoZW1lLnByb3BlcnR5KCkgb25jZSByZXNvbHZlZC5cbiAgICAgICRmYWxsYmFjazogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCRib3gtc2hhZG93KTtcblxuICAgICAgLy8gdmFyKC0tPGJveC1zaGFkb3ctcHJvcD4sIHZhcigtLW0tZWxldmF0aW9uLWJveC1zaGFkb3ctZm9yLWdzcykpXG4gICAgICAkZ3NzLWN1c3RvbS1wcm9wOiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUoXG4gICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmdldC12YXJuYW1lKCRib3gtc2hhZG93KSxcbiAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKGVsZXZhdGlvbi1ib3gtc2hhZG93LWZvci1nc3MpXG4gICAgICApO1xuXG4gICAgICAkdmFsdWU6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZS12YXIoJGdzcy1jdXN0b20tcHJvcCk7XG4gICAgICBAaWYgJHZhbHVlID09IG51bGwge1xuICAgICAgICAvLyBDdXN0b20gcHJvcGVydGllcyBhcmUgZGlzYWJsZWQsIHNpbmNlICRnc3MtY3VzdG9tLXByb3BcbiAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBhIGZhbGxiYWNrLiBBdm9pZCBlbWl0dGluZyB0d28gbm9uLWN1c3RvbVxuICAgICAgICAvLyBwcm9wIGRlY2xhcmF0aW9ucyBieSBzZXR0aW5nICRmYWxsYmFjayB0byBudWxsLlxuICAgICAgICAkdmFsdWU6ICRmYWxsYmFjaztcbiAgICAgICAgJGZhbGxiYWNrOiBudWxsO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydGllcy5kZWNsYXJhdGlvbihcbiAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKGVsZXZhdGlvbi1ib3gtc2hhZG93LWZvci1nc3MsICRmYWxsYmFjaylcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBjc3MuZGVjbGFyYXRpb24oYm94LXNoYWRvdywgJHZhbHVlLCAkZmFsbGJhY2stdmFsdWU6ICRmYWxsYmFjayk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgZWxldmF0aW9uIG92ZXJsYXkgc3VyZmFjZSByZXF1aXJlZCBwb3NpdGlvbmluZy5cbi8vL1xuQG1peGluIG92ZXJsYXktc3VyZmFjZS1wb3NpdGlvbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGVsZXZhdGlvbiBvdmVybGF5LCBpbmNsdWRpbmcgcG9zaXRpb25pbmcgYW5kIHNpemluZy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBUaGUgd2lkdGggb2YgdGhlIGVsZXZhdGlvbiBvdmVybGF5XG4vLy8gQHBhcmFtIHtOdW1iZXJ9IFskaGVpZ2h0XSAtIFRoZSBoZWlnaHQgb2YgdGhlIGVsZXZhdGlvbiBvdmVybGF5XG4vLy8gQHBhcmFtIHtCb29sZWFufSBbJGhhcy1jb250ZW50LXNpemluZ10gLSBTZXQgdG8gZmFsc2UgaWYgdGhlIGNvbnRhaW5lciBoYXMgbm8gY29udGVudCBzaXppbmdcbi8vL1xuQG1peGluIG92ZXJsYXktZGltZW5zaW9ucyhcbiAgJHdpZHRoLFxuICAkaGVpZ2h0OiAkd2lkdGgsXG4gICRoYXMtY29udGVudC1zaXppbmc6IHRydWUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZWxldmF0aW9uLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSh3aWR0aCwgJHdpZHRoKTtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGhlaWdodCwgJGhlaWdodCk7XG5cbiAgICAgIEBpZiAkaGFzLWNvbnRlbnQtc2l6aW5nIHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBlbGV2YXRpb24gb3ZlcmxheSBmaWxsIGNvbG9yLlxuLy8vIEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBkaXJlY3RseSBvbiB0aGUgZWxldmF0aW9uIG92ZXJsYXkgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgZWxldmF0aW9uIG92ZXJsYXkuXG4vLy9cbkBtaXhpbiBvdmVybGF5LWZpbGwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbi8vL1xuLy8vIEFwcGxpZXMgdGhlIGdpdmVuIGNvbG9yIHRvIHRoZSBjb250YWluZXIgb2YgdGhlIG92ZXJsYXkuXG4vLy8gQHBhcmFtIHtjb2xvcn0gJGNvbG9yIC0gdGhlIGNvbG9yIG9mIHRoZSBvdmVybGF5IGNvbnRhaW5lclxuLy8vXG5AbWl4aW4gb3ZlcmxheS1jb250YWluZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtZWxldmF0aW9uLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBlbGV2YXRpb24gb3ZlcmxheSBvcGFjaXR5LlxuLy8vIEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIGEgcGFyZW50IGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG9wYWNpdHkgLSBUaGUgb3BhY2l0eSBvZiB0aGUgZWxldmF0aW9uIG92ZXJsYXkuXG4vLy9cbkBtaXhpbiBvdmVybGF5LW9wYWNpdHkoJG9wYWNpdHksICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1lbGV2YXRpb24tb3ZlcmxheSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkob3BhY2l0eSwgJG9wYWNpdHkpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IENTUyBydWxlcyB0byBhbiBlbGVtZW50IHRvIGdpdmUgaXQgdGhlIGVsZXZhdGlvbiBzcGVjaWZpZWQgYnkgJHotdmFsdWUuXG4vLyBUaGUgJHotdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuLy8gSWYgJGNvbG9yIGhhcyBhbiBhbHBoYSBjaGFubmVsLCBpdCB3aWxsIGJlIGlnbm9yZWQgYW5kIG92ZXJyaWRkZW4uIFRvIGluY3JlYXNlIHRoZSBvcGFjaXR5IG9mIHRoZSBzaGFkb3csIHVzZVxuLy8gJG9wYWNpdHktYm9vc3QuXG5AbWl4aW4gZWxldmF0aW9uKFxuICAkei12YWx1ZSxcbiAgJGNvbG9yOiAkYmFzZWxpbmUtY29sb3IsXG4gICRvcGFjaXR5LWJvb3N0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGJveC1zaGFkb3c6IGVsZXZhdGlvbi1ib3gtc2hhZG93KFxuICAgICR6LXZhbHVlLFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5LWJvb3N0OiAkb3BhY2l0eS1ib29zdFxuICApO1xuXG4gIEBpbmNsdWRlIHNoYWRvdygkYm94LXNoYWRvdywgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy9cbi8vLyBSZXByZXNlbnRzIHRoZSBjb25maWd1cmFibGUgdmFsdWVzIG9mIHRoZSBlbGV2YXRpb24gdGhlbWUuXG4vLy9cbiRfdGhlbWUtdmFsdWVzOiAoXG4gIHNoYWRvdzogbnVsbCxcbiAgb3ZlcmxheS1vcGFjaXR5OiBudWxsLFxuICBvdmVybGF5LWNvbG9yOiBudWxsLFxuKTtcblxuLy8vXG4vLy8gQXBwbGllcyB0aGUgc2hhZG93IHRoZW1lIHdpdGggdGhlIGdpdmVuICRyZXNvbHZlciBmdW5jdGlvbi5cbi8vLyBAcGFyYW0ge0Z1bmN0aW9ufSAkcmVzb2x2ZXIgLSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHZhbGlkIHRoZW1lIGNvbmZpZy5cbi8vLyAgIEBzZWUgcmVzb2x2ZXIgZm9yIGFuIGV4YW1wbGUgYW5kIGV4cGVjdGVkIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZhbHVlLlxuLy8vIEFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBrZXl3b3JkIGFyZ3M6XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbGV2YXRpb24gLSB0aGUgbGV2ZWwgaW4gdGhlIGVsZXZhdGlvbiBzeXN0ZW0uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzaGFkb3ctY29sb3IgLSB0aGUgY29sb3IgdXNlZCBmb3IgdGhlIHNoYWRvdy5cbi8vL1xuQG1peGluIHdpdGgtcmVzb2x2ZXIoJHJlc29sdmVyLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLCAkYXJncy4uLikge1xuICBAaWYgJHJlc29sdmVyIHtcbiAgICBAaW5jbHVkZSBfdGhlbWUobWV0YS5jYWxsKCRyZXNvbHZlciwgJGFyZ3MuLi4pLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gQXBwbGllcyB0aGUgZ2l2ZW4gdGhlbWUgd2l0aCB2YWxpZGF0aW9uLlxuLy8vIEBwYXJhbSB7TWFwfSAkdGhlbWUgLSBAc2VlICRfdGhlbWUtdmFsdWVzIGZvciBhY2NlcHRlZCB0aGVtZSBwcm9wZXJ0aWVzLlxuLy8vXG5AbWl4aW4gdGhlbWUoJHRoZW1lOiAoKSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZSgkX3RoZW1lLXZhbHVlcywgJHRoZW1lKTtcbiAgQGluY2x1ZGUgX3RoZW1lKCR0aGVtZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy9cbi8vLyBBcHBsaWVzIHRoZSBnaXZlbiB0aGVtZS5cbi8vLyBAcGFyYW0ge01hcH0gJHRoZW1lIC0gQHNlZSAkX3RoZW1lLXZhbHVlcyBmb3IgYWNjZXB0ZWQgdGhlbWUgcHJvcGVydGllcy5cbi8vL1xuQG1peGluIF90aGVtZSgkdGhlbWU6ICgpLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHNoYWRvdyhtYXAuZ2V0KCR0aGVtZSwgc2hhZG93KSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBvdmVybGF5LW9wYWNpdHkobWFwLmdldCgkdGhlbWUsIG92ZXJsYXktb3BhY2l0eSksICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgb3ZlcmxheS1jb250YWluZXItY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIG92ZXJsYXktY29sb3IpLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG59XG5cbi8vL1xuLy8vIFRyYW5zZm9ybXMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwYXJhbWV0ZXJzIGludG8gYSB0aGVtZSBjb25maWcuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbGV2YXRpb24gLSB0aGUgbGV2ZWwgb2YgdGhlIGVsZXZhdGlvbiBzeXN0ZW0gaW4gTWF0ZXJpYWwuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzaGFkb3ctY29sb3IgLSB0aGUgY29sb3IgdG8gYmUgdXNlZCBieSB0aGUgc2hhZG93LlxuLy8vIEByZXR1cm4ge01hcH0gQHNlZSAkX3RoZW1lLXZhbHVlcyBmb3IgYWNjZXB0ZWQgdGhlbWUgcHJvcGVydGllcy5cbi8vL1xuQGZ1bmN0aW9uIHJlc29sdmVyKCRhcmdzLi4uKSB7XG4gICRvcHRzOiBtZXRhLmtleXdvcmRzKCRhcmdzKTtcbiAgJGVsZXZhdGlvbjogbWFwLmdldCgkb3B0cywgZWxldmF0aW9uKTtcbiAgJHNoYWRvdy1jb2xvcjogbWFwLmdldCgkb3B0cywgc2hhZG93LWNvbG9yKTtcbiAgQGlmIGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRlbGV2YXRpb24pIHtcbiAgICBAcmV0dXJuIF9yZXNvbHZlLWN1c3RvbS1wcm9wcygkZWxldmF0aW9uLCAkc2hhZG93LWNvbG9yKTtcbiAgfVxuXG4gIEByZXR1cm4gKHNoYWRvdzogX3NoYWRvdygkZWxldmF0aW9uLCAkc2hhZG93LWNvbG9yKSk7XG59XG5cbkBmdW5jdGlvbiBfcmVzb2x2ZS1jdXN0b20tcHJvcHMoJGVsZXZhdGlvbiwgJHNoYWRvdy1jb2xvcikge1xuICAkZmFsbGJhY2stZHA6IGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkZWxldmF0aW9uKTtcbiAgJGZhbGxiYWNrLXNoYWRvdy1jb2xvcjogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCRzaGFkb3ctY29sb3IpO1xuICAkc2hhZG93OiBjdXN0b20tcHJvcGVydGllcy5zZXQtZmFsbGJhY2soXG4gICAgJGVsZXZhdGlvbixcbiAgICBfc2hhZG93KCRmYWxsYmFjay1kcCwgJGZhbGxiYWNrLXNoYWRvdy1jb2xvcilcbiAgKTtcbiAgQHJldHVybiAoc2hhZG93OiAkc2hhZG93KTtcbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6c2VsZWN0b3InO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2dzcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvc2VsZWN0b3ItZXh0JztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5cbiRpbmNsdWRlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyBhIHJ1bGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiBhIGNvbXBvbmVudCBpcyB3aXRoaW4gdGhlIGNvbnRleHRcbi8vLyBvZiBhbiBSVEwgbGF5b3V0LlxuLy8vXG4vLy8gQGV4YW1wbGUgLSBzY3NzXG4vLy8gLm1kYy1mb28ge1xuLy8vICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJ0bCB7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogYXV0bztcbi8vLyAgICAgcGFkZGluZy1yaWdodDogNHB4O1xuLy8vICAgfVxuLy8vIH1cbi8vL1xuLy8vIEBleGFtcGxlIC0gY3NzXG4vLy8gICAubWRjLWZvbyB7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogNHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICBbZGlyPVwicnRsXCJdIC5tZGMtZm9vLFxuLy8vICAgLm1kYy1mb29bZGlyPVwicnRsXCJdIHtcbi8vLyAgICAgcGFkZGluZy1sZWZ0OiBhdXRvO1xuLy8vICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4vLy8gICB9XG4vLy9cbi8vLyBOb3RlIHRoYXQgdGhpcyBtaXhpbiB3b3JrcyBieSBjaGVja2luZyBmb3IgYW4gYW5jZXN0b3IgZWxlbWVudCB3aXRoXG4vLy8gYFtkaXI9XCJydGxcIl1gLiBBcyBhIHJlc3VsdCwgbmVzdGVkIGBkaXJgIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZDpcbi8vL1xuLy8vIEBleGFtcGxlIC0gaHRtbFxuLy8vIDxodG1sIGRpcj1cInJ0bFwiPlxuLy8vICAgPCEtLSAuLi4gLS0+XG4vLy8gICA8ZGl2IGRpcj1cImx0clwiPlxuLy8vICAgICA8ZGl2IGNsYXNzPVwibWRjLWZvb1wiPlN0eWxlZCBpbmNvcnJlY3RseSBhcyBSVEwhPC9kaXY+XG4vLy8gICA8L2Rpdj5cbi8vLyA8L2h0bWw+XG4vLy9cbi8vLyBJbiB0aGUgZnV0dXJlLCBzZWxlY3RvcnMgc3VjaCBhcyB0aGUgYDpkaXJgIHBzZXVkby1jbGFzc1xuLy8vIChodHRwOi8vbWRuLmlvL2Nzcy86ZGlyKSB3aWxsIGhlbHAgdXMgbWl0aWdhdGUgdGhpcy5cbi8vL1xuLy8vIEBjb250ZW50IENvbnRlbnQgdG8gYmUgc3R5bGVkIGluIGFuIFJUTCBjb250ZXh0LlxuQG1peGluIHJ0bCgpIHtcbiAgQGlmICgkaW5jbHVkZSkge1xuICAgICRkaXItcnRsOiAnW2Rpcj1ydGxdJztcblxuICAgICRydGwtc2VsZWN0b3JzOiBsaXN0LmpvaW4oXG4gICAgICBzZWxlY3Rvci5uZXN0KCRkaXItcnRsLCAmKSxcbiAgICAgIHNlbGVjdG9yLWV4dC5hcHBlbmQtc3RyaWN0KCYsICRkaXItcnRsKVxuICAgICk7XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICAjeyRydGwtc2VsZWN0b3JzfSB7XG4gICAgICAgIC8qcnRsOmJlZ2luOmlnbm9yZSovXG4gICAgICAgIEBjb250ZW50O1xuICAgICAgICAvKnJ0bDplbmQ6aWdub3JlKi9cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVGFrZXMgYSBiYXNlIGJveC1tb2RlbCBwcm9wZXJ0eSBuYW1lIChgbWFyZ2luYCwgYGJvcmRlcmAsIGBwYWRkaW5nYCwgZXRjLikgYWxvbmcgd2l0aCBhXG4vLyBkZWZhdWx0IGRpcmVjdGlvbiAoYGxlZnRgIG9yIGByaWdodGApIGFuZCB2YWx1ZSwgYW5kIGVtaXRzIHJ1bGVzIHdoaWNoIGFwcGx5IHRoZSBnaXZlbiB2YWx1ZSB0byB0aGVcbi8vIHNwZWNpZmllZCBkaXJlY3Rpb24gYnkgZGVmYXVsdCBhbmQgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBpbiBSVEwuXG4vL1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gYGBgc2Nzc1xuLy8gLm1kYy1mb28ge1xuLy8gICBAaW5jbHVkZSBydGwtcmVmbGV4aXZlLWJveChtYXJnaW4sIGxlZnQsIDhweCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbWFyZ2luLWxlZnQ6IDhweDtcbi8vICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy9cbi8vICAgQGluY2x1ZGUgcnRsIHtcbi8vICAgICBtYXJnaW4tbGVmdDogMDtcbi8vICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gd2hlcmVhczpcbi8vXG4vLyBgYGBzY3NzXG4vLyAubWRjLWZvbyB7XG4vLyAgIEBpbmNsdWRlIHJ0bC1yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsIDhweCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbWFyZ2luLWxlZnQ6IDA7XG4vLyAgIG1hcmdpbi1yaWdodDogOHB4O1xuLy9cbi8vICAgQGluY2x1ZGUgcnRsIHtcbi8vICAgICBtYXJnaW4tbGVmdDogOHB4O1xuLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gWW91IGNhbiBhbHNvIHBhc3MgYW4gb3B0aW9uYWwgNHRoIGAkcm9vdC1zZWxlY3RvcmAgYXJndW1lbnQgd2hpY2ggd2lsbCBiZSBmb3J3YXJkZWQgdG8gYG1kYy1ydGxgLFxuLy8gZS5nLiBgQGluY2x1ZGUgcnRsLXJlZmxleGl2ZS1ib3gobWFyZ2luLCBsZWZ0LCA4cHgsICcubWRjLWNvbXBvbmVudCcpYC5cbi8vXG4vLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyB6ZXJvIG91dCB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gYW4gUlRMIGNvbnRleHQuXG4vLyBJZiB5b3UncmUgdHJ5aW5nIHRvIGZsaXAgdGhlIHZhbHVlcywgdXNlIGBtZGMtcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eSgpYCBpbnN0ZWFkLlxuQG1peGluIHJlZmxleGl2ZS1ib3goXG4gICRiYXNlLXByb3BlcnR5LFxuICAkZGVmYXVsdC1kaXJlY3Rpb24sXG4gICR2YWx1ZSxcbiAgJHJlcGxhY2U6IG51bGxcbikge1xuICBAaWYgKGxpc3QuaW5kZXgoKHJpZ2h0LCBsZWZ0KSwgJGRlZmF1bHQtZGlyZWN0aW9uKSA9PSBudWxsKSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBkZWZhdWx0IGRpcmVjdGlvbjogJyN7JGRlZmF1bHQtZGlyZWN0aW9ufScuIFBsZWFzZSBzcGVjaWZpeSBlaXRoZXIgJ3JpZ2h0JyBvciAnbGVmdCcuXCI7XG4gIH1cblxuICAkbGVmdC12YWx1ZTogJHZhbHVlO1xuICAkcmlnaHQtdmFsdWU6IDA7XG5cbiAgQGlmICgkZGVmYXVsdC1kaXJlY3Rpb24gPT0gcmlnaHQpIHtcbiAgICAkbGVmdC12YWx1ZTogMDtcbiAgICAkcmlnaHQtdmFsdWU6ICR2YWx1ZTtcbiAgfVxuXG4gIEBpbmNsdWRlIHJlZmxleGl2ZS1wcm9wZXJ0eShcbiAgICAkYmFzZS1wcm9wZXJ0eSxcbiAgICAkbGVmdC12YWx1ZSxcbiAgICAkcmlnaHQtdmFsdWUsXG4gICAgJHJlcGxhY2U6ICRyZXBsYWNlXG4gICk7XG59XG5cbi8vIFRha2VzIGEgYmFzZSBwcm9wZXJ0eSBhbmQgZW1pdHMgcnVsZXMgdGhhdCBhc3NpZ24gPGJhc2UtcHJvcGVydHk+LWxlZnQgdG8gPGxlZnQtdmFsdWU+IGFuZFxuLy8gPGJhc2UtcHJvcGVydHk+LXJpZ2h0IHRvIDxyaWdodC12YWx1ZT4gaW4gYSBMVFIgY29udGV4dCwgYW5kIHZpY2UgdmVyc2EgaW4gYSBSVEwgY29udGV4dC5cbi8vIEZvciBleGFtcGxlOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgQGluY2x1ZGUgcnRsLXJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sIGF1dG8sIDEycHgpO1xuLy8gfVxuLy8gYGBgXG4vL1xuLy8gaXMgZXF1aXZhbGVudCB0bzpcbi8vXG4vLyBgYGBzY3NzXG4vLyAubWRjLWZvbyB7XG4vLyAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuLy8gICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4vL1xuLy8gICBAaW5jbHVkZSBydGwge1xuLy8gICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuLy8gICAgIG1hcmdpbi1yaWdodDogYXV0bztcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gQW4gb3B0aW9uYWwgNHRoIGAkcm9vdC1zZWxlY3RvcmAgYXJndW1lbnQgY2FuIGJlIGdpdmVuLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byBgbWRjLXJ0bGAuXG5AbWl4aW4gcmVmbGV4aXZlLXByb3BlcnR5KFxuICAkYmFzZS1wcm9wZXJ0eSxcbiAgJGxlZnQtdmFsdWUsXG4gICRyaWdodC12YWx1ZSxcbiAgJHJlcGxhY2U6IG51bGxcbikge1xuICAkcHJvcC1sZWZ0OiAjeyRiYXNlLXByb3BlcnR5fS1sZWZ0O1xuICAkcHJvcC1yaWdodDogI3skYmFzZS1wcm9wZXJ0eX0tcmlnaHQ7XG5cbiAgQGluY2x1ZGUgcmVmbGV4aXZlKFxuICAgICRwcm9wLWxlZnQsXG4gICAgJGxlZnQtdmFsdWUsXG4gICAgJHByb3AtcmlnaHQsXG4gICAgJHJpZ2h0LXZhbHVlLFxuICAgICRyZXBsYWNlOiAkcmVwbGFjZVxuICApO1xufVxuXG4vLyBUYWtlcyBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgaG9yaXpvbnRhbCBwb3NpdGlvbiBwcm9wZXJ0eSAoZWl0aGVyICdsZWZ0JyBvciAncmlnaHQnKSBhcyB3ZWxsXG4vLyBhcyBhIHZhbHVlLCBhbmQgYXBwbGllcyB0aGF0IHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBMVFIgY29udGV4dCwgYW5kIGZsaXBzIGl0IGluIGFcbi8vIFJUTCBjb250ZXh0LiBGb3IgZXhhbXBsZTpcbi8vXG4vLyBgYGBzY3NzXG4vLyAubWRjLWZvbyB7XG4vLyAgIEBpbmNsdWRlIHJ0bC1yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgMCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbGVmdDogMDtcbi8vICAgcmlnaHQ6IGluaXRpYWw7XG4vL1xuLy8gICBAaW5jbHVkZSBydGwge1xuLy8gICAgIGxlZnQ6IGluaXRpYWw7XG4vLyAgICAgcmlnaHQ6IDA7XG4vLyAgIH1cbi8vIH1cbi8vIGBgYFxuLy9cbi8vIEFuIG9wdGlvbmFsIHRoaXJkICRyb290LXNlbGVjdG9yIGFyZ3VtZW50IG1heSBhbHNvIGJlIGdpdmVuLCB3aGljaCBpcyBwYXNzZWQgdG8gYG1kYy1ydGxgLlxuQG1peGluIHJlZmxleGl2ZS1wb3NpdGlvbigkcG9zaXRpb24tcHJvcGVydHksICR2YWx1ZSwgJHJlcGxhY2U6IG51bGwpIHtcbiAgQGlmIChsaXN0LmluZGV4KChyaWdodCwgbGVmdCksICRwb3NpdGlvbi1wcm9wZXJ0eSkgPT0gbnVsbCkge1xuICAgIEBlcnJvciBcIkludmFsaWQgcG9zaXRpb24gI3twb3NpdGlvbi1wcm9wZXJ0eX0uIFBsZWFzZSBzcGVjaWZpeSBlaXRoZXIgcmlnaHQgb3IgbGVmdFwiO1xuICB9XG5cbiAgLy8gVE9ETzogJ2luaXRpYWwnIGlzIG5vdCBzdXBwb3J0ZWQgaW4gSUUgMTEuIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLWluaXRpYWwtdmFsdWVcbiAgJGxlZnQtdmFsdWU6ICR2YWx1ZTtcbiAgJHJpZ2h0LXZhbHVlOiBpbml0aWFsO1xuXG4gIEBpZiAoJHBvc2l0aW9uLXByb3BlcnR5ID09IHJpZ2h0KSB7XG4gICAgJHJpZ2h0LXZhbHVlOiAkdmFsdWU7XG4gICAgJGxlZnQtdmFsdWU6IGluaXRpYWw7XG4gIH1cblxuICBAaW5jbHVkZSByZWZsZXhpdmUoXG4gICAgbGVmdCxcbiAgICAkbGVmdC12YWx1ZSxcbiAgICByaWdodCxcbiAgICAkcmlnaHQtdmFsdWUsXG4gICAgJHJlcGxhY2U6ICRyZXBsYWNlXG4gICk7XG59XG5cbi8vIFRha2VzIHBhaXIgb2YgcHJvcGVydGllcyB3aXRoIHZhbHVlcyBhcyBhcmd1bWVudHMgYW5kIGZsaXBzIGl0IGluIFJUTCBjb250ZXh0LlxuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gYGBgc2Nzc1xuLy8gLm1kYy1mb28ge1xuLy8gICBAaW5jbHVkZSBydGwtcmVmbGV4aXZlKGxlZnQsIDJweCwgcmlnaHQsIDVweCk7XG4vLyB9XG4vLyBgYGBcbi8vXG4vLyBpcyBlcXVpdmFsZW50IHRvOlxuLy9cbi8vIGBgYHNjc3Ncbi8vIC5tZGMtZm9vIHtcbi8vICAgbGVmdDogMnB4O1xuLy8gICByaWdodDogNXB4O1xuLy9cbi8vICAgQGluY2x1ZGUgcnRsIHtcbi8vICAgICByaWdodDogMnB4O1xuLy8gICAgIGxlZnQ6IDVweDtcbi8vICAgfVxuLy8gfVxuLy8gYGBgXG4vL1xuLy8gQW4gb3B0aW9uYWwgZmlmdGggYCRyb290LXNlbGVjdG9yYCBhcmd1bWVudCBtYXkgYWxzbyBiZSBnaXZlbiwgd2hpY2ggaXMgcGFzc2VkIHRvIGBtZGMtcnRsYC5cbkBtaXhpbiByZWZsZXhpdmUoXG4gICRsZWZ0LXByb3BlcnR5LFxuICAkbGVmdC12YWx1ZSxcbiAgJHJpZ2h0LXByb3BlcnR5LFxuICAkcmlnaHQtdmFsdWUsXG4gICRyZXBsYWNlOiBudWxsXG4pIHtcbiAgJGxlZnQtcmVwbGFjZTogbnVsbDtcbiAgJHJpZ2h0LXJlcGxhY2U6IG51bGw7XG4gIEBpZiAkcmVwbGFjZSB7XG4gICAgQGlmIG1ldGEudHlwZS1vZigkbGVmdC12YWx1ZSkgPT0gJ3N0cmluZycge1xuICAgICAgJGxlZnQtcmVwbGFjZTogJHJlcGxhY2U7XG4gICAgfVxuXG4gICAgQGlmIG1ldGEudHlwZS1vZigkcmlnaHQtdmFsdWUpID09ICdzdHJpbmcnIHtcbiAgICAgICRyaWdodC1yZXBsYWNlOiAkcmVwbGFjZTtcbiAgICB9XG5cbiAgICBAaWYgJGxlZnQtcmVwbGFjZSA9PSBudWxsIGFuZCAkcmlnaHQtcmVwbGFjZSA9PSBudWxsIHtcbiAgICAgIEBlcnJvciAnbWRjLXJ0bDogJHJlcGxhY2UgbWF5IG9ubHkgYmUgdXNlZCB3aXRoIHN0cmluZ3MgYnV0IG5laXRoZXIgbGVmdCBub3IgcmlnaHQgdmFsdWVzIGFyZSBzdHJpbmdzLic7XG4gICAgfVxuXG4gICAgLy8gSWYgYW55IHJlcGxhY2VtZW50cyBhcmUgbnVsbCwgdHJlYXQgdGhlIGVudGlyZSB2YWx1ZSBhcyBudWxsIChkbyBub3RcbiAgICAvLyBlbWl0IGFueXRoaW5nKS5cbiAgICBAZWFjaCAkbmFtZSwgJHJlcGxhY2VtZW50IGluICRyZXBsYWNlIHtcbiAgICAgIEBpZiAkcmVwbGFjZW1lbnQgPT0gbnVsbCB7XG4gICAgICAgICRsZWZ0LXZhbHVlOiBudWxsO1xuICAgICAgICAkcmlnaHQtdmFsdWU6IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRG8gbm90IGVtaXQgaWYgZWl0aGVyIHZhbHVlIGFyZSBudWxsXG4gIEBpZiAkbGVmdC12YWx1ZSBhbmQgJHJpZ2h0LXZhbHVlIHtcbiAgICBAaW5jbHVkZSBfcHJvcGVydHkoJGxlZnQtcHJvcGVydHksICRsZWZ0LXZhbHVlLCAkcmVwbGFjZTogJGxlZnQtcmVwbGFjZSk7XG4gICAgQGluY2x1ZGUgX3Byb3BlcnR5KCRyaWdodC1wcm9wZXJ0eSwgJHJpZ2h0LXZhbHVlLCAkcmVwbGFjZTogJHJpZ2h0LXJlcGxhY2UpO1xuXG4gICAgQGluY2x1ZGUgcnRsIHtcbiAgICAgIEBpbmNsdWRlIF9wcm9wZXJ0eShcbiAgICAgICAgJGxlZnQtcHJvcGVydHksXG4gICAgICAgICRyaWdodC12YWx1ZSxcbiAgICAgICAgJHJlcGxhY2U6ICRyaWdodC1yZXBsYWNlXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgX3Byb3BlcnR5KCRyaWdodC1wcm9wZXJ0eSwgJGxlZnQtdmFsdWUsICRyZXBsYWNlOiAkbGVmdC1yZXBsYWNlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gQWRkcyBSVEwgaWdub3JlIGFubm90YXRpb24gd2hlbiBgJG1kYy1ydGwtaW5jbHVkZWAgaXMgdHJ1ZS5cbi8vL1xuQG1peGluIGlnbm9yZS1uZXh0LWxpbmUoKSB7XG4gIEBpbmNsdWRlIGdzcy5hbm5vdGF0ZShcbiAgICAoXG4gICAgICBub2ZsaXA6ICRpbmNsdWRlLFxuICAgIClcbiAgKTtcbn1cblxuLy8vXG4vLy8gQWRkcyBgQG5vZmxpcGAgYW5ub3RhdGlvbiB3aGVuIGAkbWRjLXJ0bC1pbmNsdWRlYCBpcyB0cnVlLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcbi8vLyBAcGFyYW0ge01hcH0gJHJlcGxhY2Vcbi8vL1xuQG1peGluIF9wcm9wZXJ0eSgkcHJvcGVydHksICR2YWx1ZSwgJHJlcGxhY2U6IG51bGwpIHtcbiAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgJHByb3BlcnR5LFxuICAgICR2YWx1ZSxcbiAgICAkcmVwbGFjZTogJHJlcGxhY2UsXG4gICAgJGdzczogKG5vZmxpcDogJGluY2x1ZGUpXG4gICk7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnLi9mdW5jdGlvbnMnO1xuXG4vLyBQdWJsaWNcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGRlZmluZSBsaW5lLXJpcHBsZVxuICAubWRjLWxpbmUtcmlwcGxlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgJjo6YmVmb3JlLFxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgaGVpZ2h0KDFweCk7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICB0cmFuc2l0aW9uOiBmdW5jdGlvbnMudHJhbnNpdGlvbi12YWx1ZSh0cmFuc2Zvcm0pLFxuICAgICAgICAgIGZ1bmN0aW9ucy50cmFuc2l0aW9uLXZhbHVlKG9wYWNpdHkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGluZS1yaXBwbGUtLWFjdGl2ZTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saW5lLXJpcHBsZS0tZGVhY3RpdmF0aW5nOjphZnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoZWlnaHQoJGhlaWdodCkge1xuICAmOjpiZWZvcmUge1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gIH1cbn1cblxuQG1peGluIGFjdGl2ZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1ib3R0b20tY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpbmFjdGl2ZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItYm90dG9tLWNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvZWxldmF0aW9uL21peGlucycgYXMgZWxldmF0aW9uLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJyBhcyBhbmltYXRpb24tdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuL21peGlucyc7XG5AdXNlICcuL3ZhcmlhYmxlcyc7XG5cbi8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIHRvcC1hcHAtYmFyXG4ubWRjLXRvcC1hcHAtYmFyIHtcbiAgQGluY2x1ZGUgbWl4aW5zLmZpbGwtY29sb3ItYWNjZXNzaWJsZShwcmltYXJ5KTtcbiAgQGluY2x1ZGUgbWl4aW5zLmljb24taW5rLWNvbG9yKG9uLXByaW1hcnkpO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgei1pbmRleDogNDtcblxuICAmX19yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiB2YXJpYWJsZXMuJHJvdy1oZWlnaHQ7XG4gIH1cblxuICAmX19zZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBwYWRkaW5nOiB2YXJpYWJsZXMuJHNlY3Rpb24tdmVydGljYWwtcGFkZGluZ1xuICAgICAgdmFyaWFibGVzLiRzZWN0aW9uLWhvcml6b250YWwtcGFkZGluZztcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgJi0tYWxpZ24tc3RhcnQge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgb3JkZXI6IC0xO1xuICAgIH1cblxuICAgICYtLWFsaWduLWVuZCB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgb3JkZXI6IDE7XG4gICAgfVxuICB9XG5cbiAgJl9fdGl0bGUge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShoZWFkbGluZTYpO1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KHBhZGRpbmcsIGxlZnQsIHZhcmlhYmxlcy4kdGl0bGUtbGVmdC1wYWRkaW5nKTtcblxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAxO1xuICB9XG59XG5cbkBhdC1yb290IHtcbiAgQGluY2x1ZGUgbWl4aW5zLnNob3J0LXNoYXBlLXJhZGl1cygyNHB4KTtcbn1cblxuLm1kYy10b3AtYXBwLWJhci0tc2hvcnQge1xuICB0b3A6IDA7XG4gIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gIHJpZ2h0OiBhdXRvO1xuICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgYW5pbWF0aW9uLXZhcmlhYmxlcy4kc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuXG4gIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgcmlnaHQ6IDA7XG4gICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fcm93IHtcbiAgICBoZWlnaHQ6IHZhcmlhYmxlcy4kbW9iaWxlLXJvdy1oZWlnaHQ7XG4gIH1cblxuICAubWRjLXRvcC1hcHAtYmFyX19zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXJpYWJsZXMuJG1vYmlsZS1zZWN0aW9uLXBhZGRpbmc7XG4gIH1cblxuICAubWRjLXRvcC1hcHAtYmFyX190aXRsZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtc1xuICAgICAgYW5pbWF0aW9uLXZhcmlhYmxlcy4kc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLm1kYy10b3AtYXBwLWJhci0tc2hvcnQtY29sbGFwc2VkIHtcbiAgQGluY2x1ZGUgZWxldmF0aW9uLW1peGlucy5lbGV2YXRpb24oNCk7XG5cbiAgd2lkdGg6IHZhcmlhYmxlcy4kc2hvcnQtY29sbGFwc2VkLXdpZHRoO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBhbmltYXRpb24tdmFyaWFibGVzLiRzdGFuZGFyZC1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fdGl0bGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAubWRjLXRvcC1hcHAtYmFyX19hY3Rpb24taXRlbSB7XG4gICAgdHJhbnNpdGlvbjogcGFkZGluZyAxNTBtc1xuICAgICAgYW5pbWF0aW9uLXZhcmlhYmxlcy4kc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICB9XG59XG5cbi5tZGMtdG9wLWFwcC1iYXItLXNob3J0LWNvbGxhcHNlZC5tZGMtdG9wLWFwcC1iYXItLXNob3J0LWhhcy1hY3Rpb24taXRlbSB7XG4gIHdpZHRoOiB2YXJpYWJsZXMuJHNob3J0LWNvbGxhcHNlZC13aWR0aCAqIDI7XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fc2VjdGlvbi0tYWxpZ24tZW5kIHtcbiAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChwYWRkaW5nLCByaWdodCwgMTJweCk7XG4gIH1cbn1cblxuLm1kYy10b3AtYXBwLWJhci0tZGVuc2Uge1xuICAubWRjLXRvcC1hcHAtYmFyX19yb3cge1xuICAgIGhlaWdodDogdmFyaWFibGVzLiRkZW5zZS1yb3ctaGVpZ2h0O1xuICB9XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fc2VjdGlvbiB7XG4gICAgcGFkZGluZzogMCB2YXJpYWJsZXMuJGRlbnNlLXNlY3Rpb24taG9yaXpvbnRhbC1wYWRkaW5nO1xuICB9XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fdGl0bGUge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KFxuICAgICAgcGFkZGluZyxcbiAgICAgIGxlZnQsXG4gICAgICB2YXJpYWJsZXMuJGRlbnNlLXRpdGxlLWxlZnQtcGFkZGluZ1xuICAgICk7XG4gIH1cbn1cblxuLm1kYy10b3AtYXBwLWJhci0tcHJvbWluZW50IHtcbiAgLm1kYy10b3AtYXBwLWJhcl9fcm93IHtcbiAgICBoZWlnaHQ6IHZhcmlhYmxlcy4kcHJvbWluZW50LXJvdy1oZWlnaHQ7XG4gIH1cblxuICAubWRjLXRvcC1hcHAtYmFyX190aXRsZSB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcmlhYmxlcy4kcHJvbWluZW50LXRpdGxlLWJvdHRvbS1wYWRkaW5nO1xuICB9XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fYWN0aW9uLWl0ZW0sXG4gIC5tZGMtdG9wLWFwcC1iYXJfX25hdmlnYXRpb24taWNvbiB7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgfVxufVxuXG4ubWRjLXRvcC1hcHAtYmFyLS1maXhlZCB7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgbGluZWFyO1xufVxuXG4ubWRjLXRvcC1hcHAtYmFyLS1maXhlZC1zY3JvbGxlZCB7XG4gIEBpbmNsdWRlIGVsZXZhdGlvbi1taXhpbnMuZWxldmF0aW9uKDQpO1xuXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMjAwbXMgbGluZWFyO1xufVxuXG4vLyBTcGVjaWZpYyBzdHlsZXMgZm9yIGRlbnNlIGFuZCBwcm9taW5lbnQgc3R5bGVkIHRvcCBhcHAgYmFyXG4ubWRjLXRvcC1hcHAtYmFyLS1kZW5zZS5tZGMtdG9wLWFwcC1iYXItLXByb21pbmVudCB7XG4gIC5tZGMtdG9wLWFwcC1iYXJfX3JvdyB7XG4gICAgaGVpZ2h0OiB2YXJpYWJsZXMuJGRlbnNlLXJvdy1oZWlnaHQgKiAyO1xuICB9XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fc2VjdGlvbiB7XG4gICAgcGFkZGluZzogMCB2YXJpYWJsZXMuJHNlY3Rpb24taG9yaXpvbnRhbC1wYWRkaW5nO1xuICB9XG5cbiAgLm1kYy10b3AtYXBwLWJhcl9fdGl0bGUge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KHBhZGRpbmcsIGxlZnQsIHZhcmlhYmxlcy4kdGl0bGUtbGVmdC1wYWRkaW5nKTtcblxuICAgIHBhZGRpbmctYm90dG9tOiB2YXJpYWJsZXMuJGRlbnNlLXByb21pbmVudC10aXRsZS1ib3R0b20tcGFkZGluZztcbiAgfVxufVxuXG4ubWRjLXRvcC1hcHAtYmFyLS1maXhlZC1hZGp1c3Qge1xuICBwYWRkaW5nLXRvcDogdmFyaWFibGVzLiRyb3ctaGVpZ2h0O1xufVxuXG4ubWRjLXRvcC1hcHAtYmFyLS1kZW5zZS1maXhlZC1hZGp1c3Qge1xuICBwYWRkaW5nLXRvcDogdmFyaWFibGVzLiRkZW5zZS1yb3ctaGVpZ2h0O1xufVxuXG4ubWRjLXRvcC1hcHAtYmFyLS1zaG9ydC1maXhlZC1hZGp1c3Qge1xuICBwYWRkaW5nLXRvcDogdmFyaWFibGVzLiRtb2JpbGUtcm93LWhlaWdodDtcbn1cblxuLm1kYy10b3AtYXBwLWJhci0tcHJvbWluZW50LWZpeGVkLWFkanVzdCB7XG4gIHBhZGRpbmctdG9wOiB2YXJpYWJsZXMuJHByb21pbmVudC1yb3ctaGVpZ2h0O1xufVxuXG4ubWRjLXRvcC1hcHAtYmFyLS1kZW5zZS1wcm9taW5lbnQtZml4ZWQtYWRqdXN0IHtcbiAgcGFkZGluZy10b3A6IHZhcmlhYmxlcy4kZGVuc2Utcm93LWhlaWdodCAqIDI7XG59XG5cbi8vIE1vYmlsZSBTdHlsZXNcbkBpbmNsdWRlIG1peGlucy5tb2JpbGUtYnJlYWtwb2ludF87XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi92YXJpYWJsZXMnIGFzIGFuaW1hdGlvbi12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9mdW5jdGlvbnMnO1xuQHVzZSAnLi92YXJpYWJsZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuXG4vL1xuLy8gUHVibGljXG4vL1xuXG5AbWl4aW4gaW5rLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbn1cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG59XG5cbkBtaXhpbiBmaWxsLWNvbG9yLWFjY2Vzc2libGUoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIGZpbGwtY29sb3IoJGNvbG9yKTtcbiAgQGluY2x1ZGUgaW5rLWNvbG9yKHRoZW1lLWNvbG9yLmFjY2Vzc2libGUtaW5rLWNvbG9yKCRjb2xvcikpO1xufVxuXG5AbWl4aW4gaWNvbi1pbmstY29sb3IoJGNvbG9yKSB7XG4gIC5tZGMtdG9wLWFwcC1iYXJfX2FjdGlvbi1pdGVtLFxuICAubWRjLXRvcC1hcHAtYmFyX19uYXZpZ2F0aW9uLWljb24ge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvcnQtc2hhcGUtcmFkaXVzKCRyYWRpdXMsICRydGwtcmVmbGV4aXZlOiB0cnVlKSB7XG4gIEBpZiBtZXRhLnR5cGUtb2YoJHJhZGl1cykgPT0gJ2xpc3QnIGFuZCBsaXN0Lmxlbmd0aCgkcmFkaXVzKSA+IDEge1xuICAgIEBlcnJvciBcIkludmFsaWQgcmFkaXVzOiAnI3skcmFkaXVzfScgY29tcG9uZW50IGRvZXNuJ3QgYWxsb3cgY3VzdG9taXppbmcgYWxsIGNvcm5lcnNcIjtcbiAgfVxuXG4gICRyYWRpdXM6IDAgMCAkcmFkaXVzIDA7XG5cbiAgJHNlbGVjdG9yOiBpZihcbiAgICAmLFxuICAgICcmLm1kYy10b3AtYXBwLWJhci0tc2hvcnQtY29sbGFwc2VkJyxcbiAgICAnLm1kYy10b3AtYXBwLWJhci0tc2hvcnQtY29sbGFwc2VkJ1xuICApO1xuXG4gICN7JHNlbGVjdG9yfSB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OiB2YXJpYWJsZXMuJGRlbnNlLXJvdy1oZWlnaHRcbiAgICApO1xuICB9XG59XG5cbi8vXG4vLyBQcml2YXRlXG4vL1xuXG5AbWl4aW4gbW9iaWxlLWJyZWFrcG9pbnRfKCRtb2JpbGUtYnJlYWtwb2ludDogdmFyaWFibGVzLiRtb2JpbGUtYnJlYWtwb2ludCkge1xuICBAbWVkaWEgKG1heC13aWR0aDogJG1vYmlsZS1icmVha3BvaW50KSB7XG4gICAgLm1kYy10b3AtYXBwLWJhcl9fcm93IHtcbiAgICAgIGhlaWdodDogdmFyaWFibGVzLiRtb2JpbGUtcm93LWhlaWdodDtcbiAgICB9XG5cbiAgICAubWRjLXRvcC1hcHAtYmFyX19zZWN0aW9uIHtcbiAgICAgIHBhZGRpbmc6IHZhcmlhYmxlcy4kbW9iaWxlLXNlY3Rpb24tcGFkZGluZztcbiAgICB9XG5cbiAgICAubWRjLXRvcC1hcHAtYmFyLS1zaG9ydCB7XG4gICAgICB0cmFuc2l0aW9uOiB3aWR0aCAyMDBtc1xuICAgICAgICBhbmltYXRpb24tdmFyaWFibGVzLiRzdGFuZGFyZC1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG4gICAgfVxuXG4gICAgLm1kYy10b3AtYXBwLWJhci0tc2hvcnQtY29sbGFwc2VkIHtcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDI1MG1zXG4gICAgICAgIGFuaW1hdGlvbi12YXJpYWJsZXMuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbjtcblxuICAgICAgLm1kYy10b3AtYXBwLWJhcl9fc2VjdGlvbi0tYWxpZ24tZW5kIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3goXG4gICAgICAgICAgcGFkZGluZyxcbiAgICAgICAgICByaWdodCxcbiAgICAgICAgICB2YXJpYWJsZXMuJHNob3J0LWNvbGxhcHNlZC1yaWdodC1pY29uLXBhZGRpbmdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLXRvcC1hcHAtYmFyLS1wcm9taW5lbnQge1xuICAgICAgLm1kYy10b3AtYXBwLWJhcl9fdGl0bGUge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyaWFibGVzLiRwcm9taW5lbnQtbW9iaWxlLXRpdGxlLWJvdHRvbS1wYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtdG9wLWFwcC1iYXItLWZpeGVkLWFkanVzdCB7XG4gICAgICBwYWRkaW5nLXRvcDogdmFyaWFibGVzLiRtb2JpbGUtcm93LWhlaWdodDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL2Z1bmN0aW9ucycgYXMgZnVuY3Rpb25zMjtcbkB1c2UgJ0BtYXRlcmlhbC9hbmltYXRpb24vdmFyaWFibGVzJyBhcyB2YXJpYWJsZXMyO1xuQHVzZSAnQG1hdGVyaWFsL2Jhc2UvbWl4aW5zJyBhcyBiYXNlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3NzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2tleXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3NoYWRvdy1kb20nO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lLWNvbG9yJztcblxuJGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXg6ICdyaXBwbGUnO1xuXG4kZmFkZS1pbi1kdXJhdGlvbjogNzVtcyAhZGVmYXVsdDtcbiRmYWRlLW91dC1kdXJhdGlvbjogMTUwbXMgIWRlZmF1bHQ7XG4kdHJhbnNsYXRlLWR1cmF0aW9uOiAyMjVtcyAhZGVmYXVsdDtcbiRzdGF0ZXMtd2FzaC1kdXJhdGlvbjogMTVtcyAhZGVmYXVsdDtcblxuLy8gTm90ZXMgb24gc3RhdGVzOlxuLy8gKiBmb2N1cyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgaG92ZXIgKGkuZS4gaWYgYW4gZWxlbWVudCBpcyBib3RoIGZvY3VzZWQgYW5kIGhvdmVyZWQsIG9ubHkgZm9jdXMgdmFsdWUgYXBwbGllcylcbi8vICogcHJlc3Mgc3RhdGUgYXBwbGllcyB0byBhIHNlcGFyYXRlIHBzZXVkby1lbGVtZW50LCBzbyBpdCBoYXMgYW4gYWRkaXRpdmUgZWZmZWN0IG9uIHRvcCBvZiBvdGhlciBzdGF0ZXNcbi8vICogc2VsZWN0ZWQvYWN0aXZhdGVkIGFyZSBhcHBsaWVkIGFkZGl0aXZlbHkgdG8gaG92ZXIvZm9jdXMgdmlhIGNhbGN1bGF0aW9ucyBhdCBwcmVwcm9jZXNzaW5nIHRpbWVcblxuJGRhcmstaW5rLW9wYWNpdGllczogKFxuICBob3ZlcjogMC4wNCxcbiAgZm9jdXM6IDAuMTIsXG4gIHByZXNzOiAwLjEyLFxuICBzZWxlY3RlZDogMC4wOCxcbiAgYWN0aXZhdGVkOiAwLjEyLFxuKSAhZGVmYXVsdDtcblxuJGxpZ2h0LWluay1vcGFjaXRpZXM6IChcbiAgaG92ZXI6IDAuMDgsXG4gIGZvY3VzOiAwLjI0LFxuICBwcmVzczogMC4yNCxcbiAgc2VsZWN0ZWQ6IDAuMTYsXG4gIGFjdGl2YXRlZDogMC4yNCxcbikgIWRlZmF1bHQ7XG5cbi8vIExlZ2FjeVxuXG4kcHJlc3NlZC1kYXJrLWluay1vcGFjaXR5OiAwLjE2ICFkZWZhdWx0O1xuJHByZXNzZWQtbGlnaHQtaW5rLW9wYWNpdHk6IDAuMzIgIWRlZmF1bHQ7XG5cbi8vIFN0YXRlIHNlbGVjdG9yIHZhcmlhYmxlcyB1c2VkIGZvciBzdGF0ZSBzZWxlY3RvciBtaXhpbnMgYmVsb3cuXG4kX2hvdmVyLXNlbGVjdG9yOiAnJjpob3Zlcic7XG4kX2ZvY3VzLXNlbGVjdG9yOiAnJi5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWZvY3VzZWQsICY6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkKTpmb2N1cyc7XG4kX2FjdGl2ZS1zZWxlY3RvcjogJyY6bm90KDpkaXNhYmxlZCk6YWN0aXZlJztcblxuJGxpZ2h0LXRoZW1lOiAoXG4gIGZvY3VzLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kb24tc3VyZmFjZSxcbiAgZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eTogbWFwLmdldCgkZGFyay1pbmstb3BhY2l0aWVzLCBmb2N1cyksXG4gIGhvdmVyLXN0YXRlLWxheWVyLWNvbG9yOiB0aGVtZS1jb2xvci4kb24tc3VyZmFjZSxcbiAgaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eTogbWFwLmdldCgkZGFyay1pbmstb3BhY2l0aWVzLCBob3ZlciksXG4gIHByZXNzZWQtc3RhdGUtbGF5ZXItY29sb3I6IHRoZW1lLWNvbG9yLiRvbi1zdXJmYWNlLFxuICBwcmVzc2VkLXN0YXRlLWxheWVyLW9wYWNpdHk6IG1hcC5nZXQoJGRhcmstaW5rLW9wYWNpdGllcywgcHJlc3MpLFxuKTtcblxuQG1peGluIHRoZW1lKCR0aGVtZSkge1xuICBAaW5jbHVkZSBrZXlzLmRlY2xhcmUtY3VzdG9tLXByb3BlcnRpZXMoXG4gICAgJHRoZW1lLFxuICAgICRwcmVmaXg6ICRjdXN0b20tcHJvcGVydHktcHJlZml4XG4gICk7XG5cbiAgQGlmIHNoYWRvdy1kb20uJGNzcy1zZWxlY3Rvci1mYWxsYmFjay1kZWNsYXJhdGlvbnMge1xuICAgIC5tZGMtcmlwcGxlLXN1cmZhY2Uge1xuICAgICAgQGluY2x1ZGUgdGhlbWUtc3R5bGVzKCR0aGVtZSk7XG4gICAgfVxuICB9XG59XG5cbiRfcmlwcGxlLXRoZW1lOiAoXG4gIGhvdmVyLXN0YXRlLWxheWVyLWNvbG9yOiBudWxsLFxuICBmb2N1cy1zdGF0ZS1sYXllci1jb2xvcjogbnVsbCxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1jb2xvcjogbnVsbCxcbiAgaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eTogbnVsbCxcbiAgZm9jdXMtc3RhdGUtbGF5ZXItb3BhY2l0eTogbnVsbCxcbiAgcHJlc3NlZC1zdGF0ZS1sYXllci1vcGFjaXR5OiBudWxsLFxuKTtcblxuQG1peGluIHRoZW1lLXN0eWxlcygkdGhlbWUsICRyaXBwbGUtdGFyZ2V0OiAnJicpIHtcbiAgJHRoZW1lOiBrZXlzLmNyZWF0ZS10aGVtZS1wcm9wZXJ0aWVzKFxuICAgICR0aGVtZSxcbiAgICAkcHJlZml4OiAkY3VzdG9tLXByb3BlcnR5LXByZWZpeFxuICApO1xuXG4gIC8vIFRPRE8oYi8xOTEyOTg3OTYpOiBTdXBwb3J0IHN0YXRlcyBsYXllciBjb2xvciBmb3IgZXZlcnkgaW50ZXJhY3RpdmUgc3RhdGVzLlxuICAvLyBVc2Ugb25seSBob3ZlciBzdGF0ZSBsYXllciBjb2xvciwgaWdub3JpbmcgZm9jdXMgYW5kIHByZXNzZWQgY29sb3IuXG4gIEBpbmNsdWRlIGludGVybmFsLXRoZW1lLXN0eWxlcygkdGhlbWUsICRyaXBwbGUtdGFyZ2V0KTtcbn1cblxuQG1peGluIGludGVybmFsLXRoZW1lLXN0eWxlcygkdGhlbWUsICRyaXBwbGUtdGFyZ2V0OiAnJicpIHtcbiAgQGluY2x1ZGUgdGhlbWUudmFsaWRhdGUtdGhlbWUta2V5cygkX3JpcHBsZS10aGVtZSwgJHRoZW1lKTtcblxuICBAaW5jbHVkZSBzdGF0ZXMtYmFzZS1jb2xvcihcbiAgICBtYXAuZ2V0KCR0aGVtZSwgaG92ZXItc3RhdGUtbGF5ZXItY29sb3IpLFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldFxuICApO1xuICBAaW5jbHVkZSBzdGF0ZXMtaG92ZXItb3BhY2l0eShcbiAgICBtYXAuZ2V0KCR0aGVtZSwgaG92ZXItc3RhdGUtbGF5ZXItb3BhY2l0eSksXG4gICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICk7XG4gIEBpbmNsdWRlIHN0YXRlcy1mb2N1cy1vcGFjaXR5KFxuICAgIG1hcC5nZXQoJHRoZW1lLCBmb2N1cy1zdGF0ZS1sYXllci1vcGFjaXR5KSxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgKTtcbiAgQGluY2x1ZGUgc3RhdGVzLXByZXNzLW9wYWNpdHkoXG4gICAgbWFwLmdldCgkdGhlbWUsIHByZXNzZWQtc3RhdGUtbGF5ZXItb3BhY2l0eSksXG4gICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICk7XG59XG5cbkBtaXhpbiBzdGF0ZXMtYmFzZS1jb2xvcihcbiAgJGNvbG9yLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLFxuICAkcmlwcGxlLXRhcmdldDogJyYnXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgQGlmIG5vdCBjdXN0b20tcHJvcGVydGllcy5pcy1jdXN0b20tcHJvcCgkY29sb3IpIHtcbiAgICAgICRjb2xvcjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICByaXBwbGUtY29sb3IsXG4gICAgICAgIHRoZW1lLWNvbG9yLmdldC1jdXN0b20tcHJvcGVydHkoJGNvbG9yKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlLFxuICAgICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIEN1c3RvbWl6ZXMgcmlwcGxlIG9wYWNpdGllcyBpbiBgaG92ZXJgLCBgZm9jdXNgLCBvciBgcHJlc3NgIHN0YXRlc1xuLy8vIEBwYXJhbSB7bWFwfSAkb3BhY2l0eS1tYXAgLSBtYXAgc3BlY2lmeWluZyBjdXN0b20gb3BhY2l0eSBvZiB6ZXJvIG9yIG1vcmUgc3RhdGVzXG4vLy8gQHBhcmFtIHtib29sfSAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudCAtIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBjb250YWlucyBhIGZvY3VzYWJsZSBlbGVtZW50IGluIHRoZSByb290XG4vLy8gQHBhcmFtIHtzdHJpbmd9ICRyaXBwbGUtdGFyZ2V0IC0gdGhlIG9wdGlvbmFsIHNlbGVjdG9yIGZvciB0aGUgcmlwcGxlIGVsZW1lbnRcbi8vL1xuQG1peGluIHN0YXRlcy1vcGFjaXRpZXMoXG4gICRvcGFjaXR5LW1hcDogKCksXG4gICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50OiBmYWxzZSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJyxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIC8vIEVuc3VyZSBzdWZmaWNpZW50IHNwZWNpZmljaXR5IHRvIG92ZXJyaWRlIGJhc2Ugc3RhdGUgb3BhY2l0aWVzXG4gIEBpZiBtYXAuZ2V0KCRvcGFjaXR5LW1hcCwgaG92ZXIpIHtcbiAgICBAaW5jbHVkZSBzdGF0ZXMtaG92ZXItb3BhY2l0eShcbiAgICAgIG1hcC5nZXQoJG9wYWNpdHktbWFwLCBob3ZlciksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICBAaWYgbWFwLmdldCgkb3BhY2l0eS1tYXAsIGZvY3VzKSB7XG4gICAgQGluY2x1ZGUgc3RhdGVzLWZvY3VzLW9wYWNpdHkoXG4gICAgICBtYXAuZ2V0KCRvcGFjaXR5LW1hcCwgZm9jdXMpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0LFxuICAgICAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6ICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgQGlmIG1hcC5nZXQoJG9wYWNpdHktbWFwLCBwcmVzcykge1xuICAgIEBpbmNsdWRlIHN0YXRlcy1wcmVzcy1vcGFjaXR5KFxuICAgICAgbWFwLmdldCgkb3BhY2l0eS1tYXAsIHByZXNzKSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gc3RhdGVzLWhvdmVyLW9wYWNpdHkoXG4gICRvcGFjaXR5LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLFxuICAkcmlwcGxlLXRhcmdldDogJyYnXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRvcGFjaXR5IGFuZCBub3QgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJG9wYWNpdHkpIHtcbiAgICAkb3BhY2l0eTogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKHJpcHBsZS1ob3Zlci1vcGFjaXR5LCAkb3BhY2l0eSk7XG4gIH1cblxuICAvLyBCYWNrZ3JvdW5kIHdhc2ggc3R5bGVzLCBmb3IgYm90aCBDU1Mtb25seSBhbmQgdXBncmFkZWQgc3RhdGVmdWwgc3VyZmFjZXNcbiAgJjpob3ZlcixcbiAgJi5tZGMtcmlwcGxlLXN1cmZhY2UtLWhvdmVyIHtcbiAgICBAaW5jbHVkZSBzdGF0ZXMtYmFja2dyb3VuZC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldCkge1xuICAgICAgLy8gT3BhY2l0eSBmYWxscyB1bmRlciBjb2xvciBiZWNhdXNlIHRoZSBjaG9zZW4gb3BhY2l0eSBpcyBjb2xvci1kZXBlbmRlbnQgaW4gdHlwaWNhbCB1c2FnZVxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShvcGFjaXR5LCAkb3BhY2l0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzdGF0ZXMtZm9jdXMtb3BhY2l0eShcbiAgJG9wYWNpdHksXG4gICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50OiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJ1xuKSB7XG4gIC8vIEZvY3VzIG92ZXJyaWRlcyBob3ZlciBieSByZXVzaW5nIHRoZSA6OmJlZm9yZSBwc2V1ZG8tZWxlbWVudC5cbiAgLy8gOmZvY3VzLXdpdGhpbiBnZW5lcmFsbHkgd29ya3Mgb24gbm9uLU1TIGJyb3dzZXJzIGFuZCBtYXRjaGVzIHdoZW4gYSAqY2hpbGQqIG9mIHRoZSBlbGVtZW50IGhhcyBmb2N1cy5cbiAgLy8gSXQgaXMgdXNlZnVsIGZvciBjYXNlcyB3aGVyZSBhIGNvbXBvbmVudCBoYXMgYSBmb2N1c2FibGUgZWxlbWVudCB3aXRoaW4gdGhlIHJvb3Qgbm9kZSwgZS5nLiB0ZXh0IGZpZWxkLFxuICAvLyBidXQgdW5kZXNpcmFibGUgaW4gZ2VuZXJhbCBpbiBjYXNlIG9mIG5lc3RlZCBzdGF0ZWZ1bCBjb21wb25lbnRzLlxuICAvLyBXZSB1c2UgYSBtb2RpZmllciBjbGFzcyBmb3IgSlMtZW5hYmxlZCBzdXJmYWNlcyB0byBzdXBwb3J0IGFsbCB1c2UgY2FzZXMgaW4gYWxsIGJyb3dzZXJzLlxuICBAaWYgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQge1xuICAgIC8vIEpTLWVuYWJsZWQgc2VsZWN0b3JzLlxuICAgICYubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1mb2N1c2VkLFxuICAgICYubWRjLXJpcHBsZS11cGdyYWRlZDpmb2N1cy13aXRoaW4sXG4gICAgLy8gQ1NTLW9ubHkgc2VsZWN0b3JzLlxuICAgICY6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkKTpmb2N1cyxcbiAgICAmOm5vdCgubWRjLXJpcHBsZS11cGdyYWRlZCk6Zm9jdXMtd2l0aGluIHtcbiAgICAgIEBpbmNsdWRlIHN0YXRlcy1iYWNrZ3JvdW5kLXNlbGVjdG9yKCRyaXBwbGUtdGFyZ2V0KSB7XG4gICAgICAgIEBpbmNsdWRlIHN0YXRlcy1mb2N1cy1vcGFjaXR5LXByb3BlcnRpZXNfKFxuICAgICAgICAgICRvcGFjaXR5OiAkb3BhY2l0eSxcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgLy8gSlMtZW5hYmxlZCBzZWxlY3RvcnMuXG4gICAgJi5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWZvY3VzZWQsXG4gICAgLy8gQ1NTLW9ubHkgc2VsZWN0b3JzLlxuICAgICY6bm90KC5tZGMtcmlwcGxlLXVwZ3JhZGVkKTpmb2N1cyB7XG4gICAgICBAaW5jbHVkZSBzdGF0ZXMtYmFja2dyb3VuZC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldCkge1xuICAgICAgICBAaW5jbHVkZSBzdGF0ZXMtZm9jdXMtb3BhY2l0eS1wcm9wZXJ0aWVzXyhcbiAgICAgICAgICAkb3BhY2l0eTogJG9wYWNpdHksXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHN0YXRlcy1mb2N1cy1vcGFjaXR5LXByb3BlcnRpZXNfKCRvcGFjaXR5LCAkcXVlcnkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgLy8gT3BhY2l0eSBmYWxscyB1bmRlciBjb2xvciBiZWNhdXNlIHRoZSBjaG9zZW4gb3BhY2l0eSBpcyBjb2xvci1kZXBlbmRlbnQgaW4gdHlwaWNhbCB1c2FnZVxuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaWYgJG9wYWNpdHkge1xuICAgIEBpZiBub3QgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJG9wYWNpdHkpIHtcbiAgICAgICRvcGFjaXR5OiBjdXN0b20tcHJvcGVydGllcy5jcmVhdGUocmlwcGxlLWZvY3VzLW9wYWNpdHksICRvcGFjaXR5KTtcbiAgICB9XG5cbiAgICAvLyBOb3RlIHRoYXQgdGhpcyBkdXJhdGlvbiBpcyBvbmx5IGVmZmVjdGl2ZSBvbiBmb2N1cywgbm90IGJsdXJcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNzVtcztcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShvcGFjaXR5LCAkb3BhY2l0eSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzdGF0ZXMtcHJlc3Mtb3BhY2l0eShcbiAgJG9wYWNpdHksXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJidcbikge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAvLyBTdHlsZXMgZm9yIG5vbi11cGdyYWRlZCAoQ1NTLW9ubHkpIHN0YXRlZnVsIHN1cmZhY2VzXG5cbiAgQGlmICRvcGFjaXR5IHtcbiAgICBAaWYgbm90IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRvcGFjaXR5KSB7XG4gICAgICAkb3BhY2l0eTogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKHJpcHBsZS1wcmVzcy1vcGFjaXR5LCAkb3BhY2l0eSk7XG4gICAgfVxuXG4gICAgJjpub3QoLm1kYy1yaXBwbGUtdXBncmFkZWQpIHtcbiAgICAgIC8vIEFwcGx5IHByZXNzIGFkZGl0aXZlbHkgYnkgdXNpbmcgdGhlIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRcbiAgICAgICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZmFkZS1vdXQtZHVyYXRpb24gbGluZWFyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICAgICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGZhZGUtaW4tZHVyYXRpb247XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gT3BhY2l0eSBmYWxscyB1bmRlciBjb2xvciBiZWNhdXNlIHRoZSBjaG9zZW4gb3BhY2l0eSBpcyBjb2xvci1kZXBlbmRlbnQgaW4gdHlwaWNhbCB1c2FnZVxuICAgICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KG9wYWNpdHksICRvcGFjaXR5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICAvLyBVcGdyYWRlZCByaXBwbGUgc2hvdWxkIGFsd2F5cyBlbWl0IGN1c3RvbSBwcm9wZXJ0eSwgcmVnYXJkbGVzcyBvZlxuICAgICAgICAvLyBjb25maWd1cmF0aW9uLCBzaW5jZSByaXBwbGUgaXRzZWxmIGZlYXR1cmUgZGV0ZWN0cyBjdXN0b20gcHJvcGVydHlcbiAgICAgICAgLy8gc3VwcG9ydCBhdCBydW50aW1lLlxuICAgICAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydGllcy5jb25maWd1cmUoJGVtaXQtY3VzdG9tLXByb3BlcnRpZXM6IHRydWUpIHtcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShcbiAgICAgICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShyaXBwbGUtZmctb3BhY2l0eSwgJG9wYWNpdHkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTaW1wbGUgbWl4aW4gZm9yIGJhc2Ugc3RhdGVzIHdoaWNoIGF1dG9tYXRpY2FsbHkgc2VsZWN0cyBvcGFjaXR5IHZhbHVlcyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBpbmsgY29sb3IgaXNcbi8vIGxpZ2h0IG9yIGRhcmsuXG5AbWl4aW4gc3RhdGVzKFxuICAkY29sb3I6IHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50OiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJyxcbiAgJG9wYWNpdHktbWFwOiBudWxsXG4pIHtcbiAgQGluY2x1ZGUgc3RhdGVzLWludGVyYWN0aW9uc18oXG4gICAgJGNvbG9yOiAkY29sb3IsXG4gICAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6ICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50LFxuICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICRyaXBwbGUtdGFyZ2V0OiAkcmlwcGxlLXRhcmdldCxcbiAgICAkb3BhY2l0eS1tYXA6ICRvcGFjaXR5LW1hcFxuICApO1xufVxuXG4vLyBTaW1wbGUgbWl4aW4gZm9yIGFjdGl2YXRlZCBzdGF0ZXMgd2hpY2ggYXV0b21hdGljYWxseSBzZWxlY3RzIG9wYWNpdHkgdmFsdWVzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGluayBjb2xvciBpc1xuLy8gbGlnaHQgb3IgZGFyay5cbkBtaXhpbiBzdGF0ZXMtYWN0aXZhdGVkKFxuICAkY29sb3IsXG4gICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50OiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJ1xuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuICAkYWN0aXZhdGVkLW9wYWNpdHk6IHN0YXRlcy1vcGFjaXR5KCRjb2xvciwgYWN0aXZhdGVkKTtcblxuICAmLS1hY3RpdmF0ZWQge1xuICAgIC8vIFN0eWxlbGludCBzZWVtcyB0byB0aGluayB0aGF0ICcmJyBxdWFsaWZpZXMgYXMgYSB0eXBlIHNlbGVjdG9yIGhlcmU/XG4gICAgQGluY2x1ZGUgc3RhdGVzLWJhY2tncm91bmQtc2VsZWN0b3IoJHJpcHBsZS10YXJnZXQpIHtcbiAgICAgIC8vIE9wYWNpdHkgZmFsbHMgdW5kZXIgY29sb3IgYmVjYXVzZSB0aGUgY2hvc2VuIG9wYWNpdHkgaXMgY29sb3ItZGVwZW5kZW50LlxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShcbiAgICAgICAgICBvcGFjaXR5LFxuICAgICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgICAgICAgIC0tbWRjLXJpcHBsZS1hY3RpdmF0ZWQtb3BhY2l0eSxcbiAgICAgICAgICAgICRhY3RpdmF0ZWQtb3BhY2l0eVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdGF0ZXMtaW50ZXJhY3Rpb25zXyhcbiAgICAgICRjb2xvcjogJGNvbG9yLFxuICAgICAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6ICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50LFxuICAgICAgJG9wYWNpdHktbW9kaWZpZXI6ICRhY3RpdmF0ZWQtb3BhY2l0eSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5LFxuICAgICAgJHJpcHBsZS10YXJnZXQ6ICRyaXBwbGUtdGFyZ2V0XG4gICAgKTtcbiAgfVxufVxuXG4vLyBTaW1wbGUgbWl4aW4gZm9yIHNlbGVjdGVkIHN0YXRlcyB3aGljaCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgb3BhY2l0eSB2YWx1ZXMgYmFzZWQgb24gd2hldGhlciB0aGUgaW5rIGNvbG9yIGlzXG4vLyBsaWdodCBvciBkYXJrLlxuQG1peGluIHN0YXRlcy1zZWxlY3RlZChcbiAgJGNvbG9yLFxuICAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudDogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJidcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcbiAgJHNlbGVjdGVkLW9wYWNpdHk6IHN0YXRlcy1vcGFjaXR5KCRjb2xvciwgc2VsZWN0ZWQpO1xuXG4gICYtLXNlbGVjdGVkIHtcbiAgICBAaW5jbHVkZSBzdGF0ZXMtYmFja2dyb3VuZC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldCkge1xuICAgICAgLy8gT3BhY2l0eSBmYWxscyB1bmRlciBjb2xvciBiZWNhdXNlIHRoZSBjaG9zZW4gb3BhY2l0eSBpcyBjb2xvci1kZXBlbmRlbnQuXG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KFxuICAgICAgICAgIG9wYWNpdHksXG4gICAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAgICAgLS1tZGMtcmlwcGxlLXNlbGVjdGVkLW9wYWNpdHksXG4gICAgICAgICAgICAkc2VsZWN0ZWQtb3BhY2l0eVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdGF0ZXMtaW50ZXJhY3Rpb25zXyhcbiAgICAgICRjb2xvcjogJGNvbG9yLFxuICAgICAgJGhhcy1uZXN0ZWQtZm9jdXNhYmxlLWVsZW1lbnQ6ICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50LFxuICAgICAgJG9wYWNpdHktbW9kaWZpZXI6ICRzZWxlY3RlZC1vcGFjaXR5LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnksXG4gICAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXRcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0ZXMtaW50ZXJhY3Rpb25zXyhcbiAgJGNvbG9yLFxuICAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudCxcbiAgJG9wYWNpdHktbW9kaWZpZXI6IDAsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRyaXBwbGUtdGFyZ2V0OiAnJicsXG4gICRvcGFjaXR5LW1hcDogbnVsbFxuKSB7XG4gIEBpbmNsdWRlIHRhcmdldC1zZWxlY3RvcigkcmlwcGxlLXRhcmdldCkge1xuICAgIEBpbmNsdWRlIHN0YXRlcy1iYXNlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpZiAkb3BhY2l0eS1tYXAgPT0gbnVsbCB7XG4gICAgJG9wYWNpdHktbWFwOiAoXG4gICAgICBob3Zlcjogc3RhdGVzLW9wYWNpdHkoJGNvbG9yLCBob3ZlcikgKyAkb3BhY2l0eS1tb2RpZmllcixcbiAgICAgIGZvY3VzOiBzdGF0ZXMtb3BhY2l0eSgkY29sb3IsIGZvY3VzKSArICRvcGFjaXR5LW1vZGlmaWVyLFxuICAgICAgcHJlc3M6IHN0YXRlcy1vcGFjaXR5KCRjb2xvciwgcHJlc3MpICsgJG9wYWNpdHktbW9kaWZpZXIsXG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN0YXRlcy1vcGFjaXRpZXMoXG4gICAgJG9wYWNpdHktbWFwLFxuICAgICRoYXMtbmVzdGVkLWZvY3VzYWJsZS1lbGVtZW50OiAkaGFzLW5lc3RlZC1mb2N1c2FibGUtZWxlbWVudCxcbiAgICAkcmlwcGxlLXRhcmdldDogJHJpcHBsZS10YXJnZXQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbn1cblxuLy8gV3JhcHMgY29udGVudCBpbiB0aGUgYHJpcHBsZS10YXJnZXRgIHNlbGVjdG9yIGlmIGl0IGV4aXN0cy5cbkBtaXhpbiB0YXJnZXQtc2VsZWN0b3IoJHJpcHBsZS10YXJnZXQ6ICcmJykge1xuICBAaWYgJHJpcHBsZS10YXJnZXQgPT0gJyYnIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgI3skcmlwcGxlLXRhcmdldH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZWxlY3RvciBmb3IgaG92ZXIsIGFjdGl2ZSBhbmQgZm9jdXMgc3RhdGVzLlxuQG1peGluIHN0YXRlcy1zZWxlY3RvcigpIHtcbiAgI3skX2hvdmVyLXNlbGVjdG9yfSxcbiAgI3skX2ZvY3VzLXNlbGVjdG9yfSxcbiAgI3skX2FjdGl2ZS1zZWxlY3Rvcn0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBob3ZlcigpIHtcbiAgI3skX2hvdmVyLXNlbGVjdG9yfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU2VsZWN0b3IgZm9yIGZvY3VzIHN0YXRlLiBVc2luZyAnOm5vdCgubWRjLXJpcHBsZS11cGdyYWRlZCknIHRvIGNvbnRpbnVlXG4vLyBhcHBseWluZyBmb2N1cyBzdHlsZXMgb24gSlMtZGlzYWJsZWQgY29tcG9uZW50cywgYW5kIGNvbnRyb2wgZm9jdXNcbi8vIG9uIEpTLWVuYWJsZWQgY29tcG9uZW50cyB3aXRoICcubWRjLXJpcHBsZS11cGdyYWRlZC0tYmFja2dyb3VuZC1mb2N1c2VkJy5cbkBtaXhpbiBmb2N1cygpIHtcbiAgI3skX2ZvY3VzLXNlbGVjdG9yfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU2VsZWN0b3IgZm9yIGFjdGl2ZSBzdGF0ZS4gVXNpbmcgYDphY3RpdmU6YWN0aXZlYCB0byBvdmVycmlkZSBmb2N1cyBzdHlsZXMuXG5AbWl4aW4gcHJlc3NlZCgpIHtcbiAgI3skX2FjdGl2ZS1zZWxlY3Rvcn0ge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIEBkZXByZWNhdGVkIFVzZSBgcHJlc3NlZCgpYCBtaXhpbiAtIHJlbmFtZWQgZm9yIGNvbnNpc3RlbmN5LlxuQG1peGluIGFjdGl2ZSgpIHtcbiAgQGluY2x1ZGUgcHJlc3NlZCgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gS2VlcCB0aGUgcmlwcGxlIChTdGF0ZSBvdmVybGF5KSBiZWhpbmQgdGhlIGNvbnRlbnQuXG5AbWl4aW4gYmVoaW5kLWNvbnRlbnQoXG4gICRyaXBwbGUtdGFyZ2V0LFxuICAkY29udGVudC1yb290LXNlbGVjdG9yOiAnJicsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAvLyBOZWVkZWQgZm9yIElFMTEuIFdpdGhvdXQgdGhpcywgSUUxMSByZW5kZXJzIHRoZSBzdGF0ZSBsYXllciBjb21wbGV0ZWx5XG4gIC8vIHVuZGVybmVhdGggdGhlIGNvbnRhaW5lciwgbWFraW5nIGl0IGludmlzaWJsZS5cbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAjeyRjb250ZW50LXJvb3Qtc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgei1pbmRleDogMDtcbiAgICB9XG4gIH1cblxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlLFxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShcbiAgICAgICAgei1pbmRleCxcbiAgICAgICAgY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKC0tbWRjLXJpcHBsZS16LWluZGV4LCAtMSlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBzdGF0ZXMtb3BhY2l0eSgkY29sb3IsICRzdGF0ZSkge1xuICAkY29sb3ItdmFsdWU6IHRoZW1lLWNvbG9yLnByb3AtdmFsdWUoJGNvbG9yKTtcbiAgJG9wYWNpdHktbWFwOiBpZihcbiAgICB0aGVtZS1jb2xvci50b25lKCRjb2xvci12YWx1ZSkgPT0gJ2xpZ2h0JyxcbiAgICAkbGlnaHQtaW5rLW9wYWNpdGllcyxcbiAgICAkZGFyay1pbmstb3BhY2l0aWVzXG4gICk7XG5cbiAgQGlmIG5vdCBtYXAuaGFzLWtleSgkb3BhY2l0eS1tYXAsICRzdGF0ZSkge1xuICAgIEBlcnJvciBcIkludmFsaWQgc3RhdGU6ICcjeyRzdGF0ZX0nLiBDaG9vc2Ugb25lIG9mOiAje21hcC5rZXlzKCRvcGFjaXR5LW1hcCl9XCI7XG4gIH1cblxuICBAcmV0dXJuIG1hcC5nZXQoJG9wYWNpdHktbWFwLCAkc3RhdGUpO1xufVxuXG5AbWl4aW4gc3RhdGVzLWJhY2tncm91bmQtc2VsZWN0b3IoJHJpcHBsZS10YXJnZXQpIHtcbiAgI3skcmlwcGxlLXRhcmdldH06OmJlZm9yZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBEZWZhdWx0IHN0eWxlc1xuJHJvdy1oZWlnaHQ6IDY0cHggIWRlZmF1bHQ7XG4kdGl0bGUtbGVmdC1wYWRkaW5nOiAyMHB4ICFkZWZhdWx0O1xuJHNlY3Rpb24tdmVydGljYWwtcGFkZGluZzogOHB4ICFkZWZhdWx0O1xuJHNlY3Rpb24taG9yaXpvbnRhbC1wYWRkaW5nOiAxMnB4ICFkZWZhdWx0O1xuXG4kbW9iaWxlLWJyZWFrcG9pbnQ6IDU5OXB4ICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IG1vYmlsZSBzdHlsZXNcbiRtb2JpbGUtcm93LWhlaWdodDogNTZweCAhZGVmYXVsdDtcbiRtb2JpbGUtc2VjdGlvbi1wYWRkaW5nOiA0cHggIWRlZmF1bHQ7XG5cbi8vIFNob3J0IHRvcCBhcHAgYmFyXG4kc2hvcnQtY29sbGFwc2VkLWJvcmRlci1yYWRpdXM6IDRweCAhZGVmYXVsdDtcbiRzaG9ydC1jb2xsYXBzZWQtd2lkdGg6IDU2cHggIWRlZmF1bHQ7XG4kc2hvcnQtY29sbGFwc2VkLXJpZ2h0LWljb24tcGFkZGluZzogMTJweCAhZGVmYXVsdDtcblxuLy8gUHJvbWluZW50IHN0eWxlc1xuJHByb21pbmVudC1yb3ctaGVpZ2h0OiAxMjhweCAhZGVmYXVsdDtcbiRwcm9taW5lbnQtdGl0bGUtYm90dG9tLXBhZGRpbmc6IDJweCAhZGVmYXVsdDtcblxuLy8gUHJvbWluZW50IG1vYmlsZSBzdHlsZXNcbiRwcm9taW5lbnQtbW9iaWxlLXRpdGxlLWJvdHRvbS1wYWRkaW5nOiA2cHggIWRlZmF1bHQ7XG5cbi8vIERlbnNlIHN0eWxlc1xuJGRlbnNlLXJvdy1oZWlnaHQ6IDQ4cHggIWRlZmF1bHQ7XG4kZGVuc2Utc2VjdGlvbi1ob3Jpem9udGFsLXBhZGRpbmc6IDRweCAhZGVmYXVsdDtcbiRkZW5zZS10aXRsZS1sZWZ0LXBhZGRpbmc6IDEycHggIWRlZmF1bHQ7XG5cbi8vIERlbnNlICYgUHJvbWluZW50IHN0eWxlc1xuJGRlbnNlLXByb21pbmVudC10aXRsZS1ib3R0b20tcGFkZGluZzogOXB4ICFkZWZhdWx0O1xuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczpsaXN0JztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2tleXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcblxuLy8vIEBkZXByZWNhdGVkIEF2b2lkIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBkaXJlY3RseS4gSW5zdGVhZCwgY29uZmlndXJlIHRoZVxuLy8vIGAkc3R5bGVzLTxzdHlsZT5gIHZhcmlhYmxlIE1hcHMuXG5AZnVuY3Rpb24gc2V0LXN0eWxlc18oJGJhc2Utc3R5bGVzLCAkc2NhbGUtc3R5bGVzLCAkb3ZlcnJpZGUtc3R5bGVzKSB7XG4gICRvcHRpb25zOiAoXG4gICAgY3VzdG9tLXByb3BlcnR5LXByZWZpeDogdHlwb2dyYXBoeSxcbiAgKTtcblxuICAkYmFzZS1zdHlsZXM6IGtleXMuc2V0LXZhbHVlcygkYmFzZS1zdHlsZXMsICRvcHRpb25zOiAkb3B0aW9ucyk7XG5cbiAgQGVhY2ggJHN0eWxlLCAkc3R5bGUtcHJvcHMgaW4gJHNjYWxlLXN0eWxlcyB7XG4gICAgQGVhY2ggJGJhc2Uta2V5IGluIG1hcC5rZXlzKCRiYXNlLXN0eWxlcykge1xuICAgICAgLy8gSWdub3JlIHRoZSByZXR1cm4gcmVzdWx0LCBpdCdzIG5vdCBuZWVkZWRcbiAgICAgICR1bnVzZWQ6IGtleXMuYWRkLWxpbmsoa2V5cy5jb21iaW5lKCRzdHlsZSwgJGJhc2Uta2V5KSwgJGJhc2Uta2V5KTtcbiAgICB9XG5cbiAgICAvLyBNZXJnZSBiYXNlIHByb3BlcnRpZXMgZm9yIGFsbCBzdHlsZXMuXG4gICAgJHN0eWxlLXByb3BzOiBtYXAubWVyZ2UoJGJhc2Utc3R5bGVzLCAkc3R5bGUtcHJvcHMpO1xuXG4gICAgLy8gTWVyZ2Ugb3ZlcnJpZGVzIG9udG8gZWFjaCBzdHlsZS5cbiAgICAkc3R5bGUtcHJvcHM6IG1hcC5tZXJnZSgkc3R5bGUtcHJvcHMsIG1hcC5nZXQoJG92ZXJyaWRlLXN0eWxlcywgJHN0eWxlKSk7XG5cbiAgICAvLyBSZWdpc3RlciBrZXlzIGZvciB0aGlzIHN0eWxlXG4gICAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHN0eWxlLXByb3BzIHtcbiAgICAgICR1bnVzZWQ6IGtleXMuc2V0LXZhbHVlKFxuICAgICAgICBrZXlzLmNvbWJpbmUoJHN0eWxlLCAkcHJvcGVydHkpLFxuICAgICAgICAkdmFsdWUsXG4gICAgICAgICRvcHRpb25zOiAkb3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZSBvcmlnaW5hbCBzdHlsZXMgd2l0aCBuZXcgc3R5bGVzLlxuICAgICRzY2FsZS1zdHlsZXM6IG1hcC5tZXJnZSgkc2NhbGUtc3R5bGVzLCAoI3skc3R5bGV9OiAkc3R5bGUtcHJvcHMpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHNjYWxlLXN0eWxlcztcbn1cblxuQGZ1bmN0aW9uIGdldC1sZXR0ZXItc3BhY2luZ18oJHRyYWNraW5nLCAkZm9udC1zaXplKSB7XG4gIEByZXR1cm4gbWF0aC5kaXYoJHRyYWNraW5nLCAkZm9udC1zaXplICogMTYpICogMWVtO1xufVxuXG5AZnVuY3Rpb24gcHgtdG8tcmVtKCRweCkge1xuICBAaWYgY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJHB4KSB7XG4gICAgQHJldHVybiBjdXN0b20tcHJvcGVydGllcy5zZXQtZmFsbGJhY2soXG4gICAgICAkcHgsXG4gICAgICBfcHgtdG8tcmVtKGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkcHgpKVxuICAgICk7XG4gIH1cbiAgQHJldHVybiBfcHgtdG8tcmVtKCRweCk7XG59XG5cbkBmdW5jdGlvbiBfcHgtdG8tcmVtKCRweCkge1xuICBAaWYgJHB4ID09IG51bGwge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICBAcmV0dXJuIG1hdGguZGl2KCRweCwgMTZweCkgKiAxcmVtO1xufVxuXG4kZm9udC1mYW1pbHk6IHN0cmluZy51bnF1b3RlKCdSb2JvdG8sIHNhbnMtc2VyaWYnKSAhZGVmYXVsdDtcblxuLy8gT3ZlcnJpZGUgc3R5bGVzXG4kc3R5bGVzLWhlYWRsaW5lMTogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWhlYWRsaW5lMjogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWhlYWRsaW5lMzogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWhlYWRsaW5lNDogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWhlYWRsaW5lNTogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWhlYWRsaW5lNjogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLXN1YnRpdGxlMTogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLXN1YnRpdGxlMjogKCkgIWRlZmF1bHQ7XG4kc3R5bGVzLWJvZHkxOiAoKSAhZGVmYXVsdDtcbiRzdHlsZXMtYm9keTI6ICgpICFkZWZhdWx0O1xuJHN0eWxlcy1jYXB0aW9uOiAoKSAhZGVmYXVsdDtcbiRzdHlsZXMtYnV0dG9uOiAoKSAhZGVmYXVsdDtcbiRzdHlsZXMtb3ZlcmxpbmU6ICgpICFkZWZhdWx0O1xuXG4vLy8gQGRlcHJlY2F0ZWQgRG8gbm90IG92ZXJyaWRlIHRoaXMgdmFyaWFibGUuIFVzZSB0aGUgJHN0eWxlcy08c3R5bGU+IG92ZXJyaWRlXG4vLy8gTWFwIHZhcmlhYmxlcyBpbnN0ZWFkLCBvciAkZm9udC1mYW1pbHkgdG8gc2V0IHRoZSBiYXNlIGZvbnQgZmFtaWx5LlxuJGJhc2U6IChcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbikgIWRlZmF1bHQ7XG5cbiRmb250LXdlaWdodC12YWx1ZXM6IChcbiAgdGhpbjogMTAwLFxuICBsaWdodDogMzAwLFxuICByZWd1bGFyOiA0MDAsXG4gIG1lZGl1bTogNTAwLFxuICBib2xkOiA3MDAsXG4gIGJsYWNrOiA5MDAsXG4pICFkZWZhdWx0O1xuXG4vLy8gQGRlcHJlY2F0ZWQgRG8gbm90IG92ZXJyaWRlIHRoaXMgdmFyaWFibGUuIFVzZSB0aGUgJHN0eWxlcy08c3R5bGU+IG92ZXJyaWRlXG4vLy8gTWFwIHZhcmlhYmxlcyBpbnN0ZWFkLlxuJHN0eWxlczogc2V0LXN0eWxlc18oXG4gICRiYXNlLFxuICAoXG4gICAgaGVhZGxpbmUxOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSg5NnB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oOTZweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCBsaWdodCksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygtMS41LCA2KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgaGVhZGxpbmUyOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSg2MHB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oNjBweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCBsaWdodCksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygtMC41LCAzLjc1KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgaGVhZGxpbmUzOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSg0OHB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oNTBweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCByZWd1bGFyKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWwsXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGhlYWRsaW5lNDogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oMzRweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDQwcHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgcmVndWxhciksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygwLjI1LCAyLjEyNSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGhlYWRsaW5lNTogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oMjRweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDMycHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgcmVndWxhciksXG4gICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0LFxuICAgICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQsXG4gICAgKSxcbiAgICBoZWFkbGluZTY6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDIwcHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgzMnB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIG1lZGl1bSksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygwLjI1LCAxLjI1KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgc3VidGl0bGUxOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSgxNnB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oMjhweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCByZWd1bGFyKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBnZXQtbGV0dGVyLXNwYWNpbmdfKDAuMTUsIDEpLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0LFxuICAgICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQsXG4gICAgKSxcbiAgICBzdWJ0aXRsZTI6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDE0cHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgyMnB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIG1lZGl1bSksXG4gICAgICBsZXR0ZXItc3BhY2luZzogZ2V0LWxldHRlci1zcGFjaW5nXygwLjEsIDAuODc1KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgYm9keTE6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDE2cHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgyNHB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIHJlZ3VsYXIpLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oMC41LCAxKSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdCxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbmhlcml0LFxuICAgICksXG4gICAgYm9keTI6IChcbiAgICAgIGZvbnQtc2l6ZTogcHgtdG8tcmVtKDE0cHgpLFxuICAgICAgbGluZS1oZWlnaHQ6IHB4LXRvLXJlbSgyMHB4KSxcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXAuZ2V0KCRmb250LXdlaWdodC12YWx1ZXMsIHJlZ3VsYXIpLFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IGdldC1sZXR0ZXItc3BhY2luZ18oMC4yNSwgMC44NzUpLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0LFxuICAgICAgdGV4dC10cmFuc2Zvcm06IGluaGVyaXQsXG4gICAgKSxcbiAgICBjYXB0aW9uOiAoXG4gICAgICBmb250LXNpemU6IHB4LXRvLXJlbSgxMnB4KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBweC10by1yZW0oMjBweCksXG4gICAgICBmb250LXdlaWdodDogbWFwLmdldCgkZm9udC13ZWlnaHQtdmFsdWVzLCByZWd1bGFyKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBnZXQtbGV0dGVyLXNwYWNpbmdfKDAuNCwgMC43NSksXG4gICAgICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQsXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogaW5oZXJpdCxcbiAgICApLFxuICAgIGJ1dHRvbjogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oMTRweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDM2cHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgbWVkaXVtKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBnZXQtbGV0dGVyLXNwYWNpbmdfKDEuMjUsIDAuODc1KSxcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZSxcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UsXG4gICAgKSxcbiAgICBvdmVybGluZTogKFxuICAgICAgZm9udC1zaXplOiBweC10by1yZW0oMTJweCksXG4gICAgICBsaW5lLWhlaWdodDogcHgtdG8tcmVtKDMycHgpLFxuICAgICAgZm9udC13ZWlnaHQ6IG1hcC5nZXQoJGZvbnQtd2VpZ2h0LXZhbHVlcywgbWVkaXVtKSxcbiAgICAgIGxldHRlci1zcGFjaW5nOiBnZXQtbGV0dGVyLXNwYWNpbmdfKDIsIDAuNzUpLFxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lLFxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSxcbiAgICApLFxuICApLFxuICAoXG4gICAgaGVhZGxpbmUxOiAkc3R5bGVzLWhlYWRsaW5lMSxcbiAgICBoZWFkbGluZTI6ICRzdHlsZXMtaGVhZGxpbmUyLFxuICAgIGhlYWRsaW5lMzogJHN0eWxlcy1oZWFkbGluZTMsXG4gICAgaGVhZGxpbmU0OiAkc3R5bGVzLWhlYWRsaW5lNCxcbiAgICBoZWFkbGluZTU6ICRzdHlsZXMtaGVhZGxpbmU1LFxuICAgIGhlYWRsaW5lNjogJHN0eWxlcy1oZWFkbGluZTYsXG4gICAgc3VidGl0bGUxOiAkc3R5bGVzLXN1YnRpdGxlMSxcbiAgICBzdWJ0aXRsZTI6ICRzdHlsZXMtc3VidGl0bGUyLFxuICAgIGJvZHkxOiAkc3R5bGVzLWJvZHkxLFxuICAgIGJvZHkyOiAkc3R5bGVzLWJvZHkyLFxuICAgIGNhcHRpb246ICRzdHlsZXMtY2FwdGlvbixcbiAgICBidXR0b246ICRzdHlsZXMtYnV0dG9uLFxuICAgIG92ZXJsaW5lOiAkc3R5bGVzLW92ZXJsaW5lLFxuICApXG4pICFkZWZhdWx0O1xuXG4vLyBBIGNvcHkgb2YgdGhlIHN0eWxlcyBNYXAgdGhhdCBpcyB1c2VkIHRvIGRldGVjdCBjb21waWxlLXRpbWUgY2hhbmdlcyBmb3Jcbi8vIEFuZ3VsYXIgc3VwcG9ydC5cbiRfc3R5bGVzLWNvcHk6ICRzdHlsZXM7XG5cbkBmdW5jdGlvbiBpcy10eXBvZ3JhcGh5LXN0eWxlKCRzdHlsZSkge1xuICBAcmV0dXJuIG1hcC5oYXMta2V5KCRzdHlsZXMsICRzdHlsZSk7XG59XG5cbkBmdW5jdGlvbiBnZXQtdHlwb2dyYXBoeS1zdHlsZXMoKSB7XG4gIEByZXR1cm4gbWFwLmtleXMoJHN0eWxlcyk7XG59XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIC5tZGMtdHlwb2dyYXBoeSB7XG4gICAgQGluY2x1ZGUgYmFzZSgkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICBAZWFjaCAkc3R5bGUgaW4gZ2V0LXR5cG9ncmFwaHktc3R5bGVzKCkge1xuICAgIC5tZGMtdHlwb2dyYXBoeS0tI3skc3R5bGV9IHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHN0eWxlLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBiYXNlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtdHlwb2dyYXBoeTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHR5cG9ncmFwaHkpO1xuXG4gIEBpbmNsdWRlIHNtb290aC1mb250KCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoZm9udC1mYW1pbHksIGZvbnQtZmFtaWx5KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkc3R5bGUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksICRleGNsdWRlLXByb3BzOiAoKSkge1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgQGlmIG5vdCBpcy10eXBvZ3JhcGh5LXN0eWxlKCRzdHlsZSkge1xuICAgIEBlcnJvciBcIkludmFsaWQgc3R5bGUgc3BlY2lmaWVkISAjeyRzdHlsZX0gZG9lc24ndCBleGlzdC4gQ2hvb3NlIG9uZSBvZiAje2dldC10eXBvZ3JhcGh5LXN0eWxlcygpfVwiO1xuICB9XG5cbiAgQGluY2x1ZGUgc21vb3RoLWZvbnQoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXR5cG9ncmFwaHkpIHtcbiAgICBAZWFjaCAka2V5IGluIGtleXMuZ2V0LWtleXMoJHN0eWxlKSB7XG4gICAgICAvLyA8c3R5bGU+LTxwcm9wZXJ0eT46IGhlYWRsaW5lMS1mb250LXNpemVcbiAgICAgIC8vIFNsaWNlIHRoZSBzdHJpbmcgcGFzdCB0aGUgZmlyc3Qga2V5IHNlcGFyYXRvciB0byByZXRyaWV2ZSB0aGVcbiAgICAgIC8vIHByb3BlcnR5IG5hbWVcbiAgICAgICRwcm9wZXJ0eTogc3RyaW5nLnNsaWNlKCRrZXksIHN0cmluZy5pbmRleCgka2V5LCAnLScpICsgMSk7XG4gICAgICBAaWYgbGlzdC5pbmRleCgkZXhjbHVkZS1wcm9wcywgJHByb3BlcnR5KSA9PSBudWxsIHtcbiAgICAgICAgJGN1cnJlbnQtZ2xvYmFsLXZhbHVlOiBtYXAuZ2V0KCRzdHlsZXMsICRzdHlsZSwgJHByb3BlcnR5KTtcbiAgICAgICAgJGNvbmZpZ3VyZWQtZ2xvYmFsLXZhbHVlOiBtYXAuZ2V0KCRfc3R5bGVzLWNvcHksICRzdHlsZSwgJHByb3BlcnR5KTtcbiAgICAgICAgQGlmICRjdXJyZW50LWdsb2JhbC12YWx1ZSAhPSAkY29uZmlndXJlZC1nbG9iYWwtdmFsdWUge1xuICAgICAgICAgIC8vIEEgY29tcGlsZSB0aW1lIGNoYW5nZSB3YXMgbWFkZSB0byAkbWRjLXR5cG9ncmFwaHktc3R5bGVzLiBUb1xuICAgICAgICAgIC8vIHN1cHBvcnQgQW5ndWxhciwgdXNlIHRoaXMgdmFsdWUgaW5zdGVhZCBvZiB0aGUga2V5J3MgdmFsdWUuXG4gICAgICAgICAgQGlmICRjdXJyZW50LWdsb2JhbC12YWx1ZSB7XG4gICAgICAgICAgICAvLyBPbmx5IGVtaXQgaWYgdGhlIG92ZXJyaWRkZW4gdmFsdWUgZXhpc3RzXG4gICAgICAgICAgICAkY3VzdG9tLXByb3A6IGtleXMuY3JlYXRlLWN1c3RvbS1wcm9wZXJ0eSgka2V5KTtcbiAgICAgICAgICAgICRjdXN0b20tcHJvcDogY3VzdG9tLXByb3BlcnRpZXMuc2V0LWZhbGxiYWNrKFxuICAgICAgICAgICAgICAkY3VzdG9tLXByb3AsXG4gICAgICAgICAgICAgICRjdXJyZW50LWdsb2JhbC12YWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KCRwcm9wZXJ0eSwgJGN1c3RvbS1wcm9wKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSwgdXNlIHRoZSBrZXksIHdoaWNoIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWxcbiAgICAgICAgICAvLyBjb25maWd1cmVkIGdsb2JhbCB2YWx1ZS5cbiAgICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eSgkcHJvcGVydHksICRrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIGFudGlhbGlhc2luZyB2aWEgZm9udC1zbW9vdGhpbmcgdG8gdGV4dC5cbkBtaXhpbiBzbW9vdGgtZm9udCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXR5cG9ncmFwaHk6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCB0eXBvZ3JhcGh5KTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXR5cG9ncmFwaHkpIHtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG59XG5cbi8vIEVsZW1lbnQgbXVzdCBiZSBgZGlzcGxheTogYmxvY2tgIG9yIGBkaXNwbGF5OiBpbmxpbmUtYmxvY2tgIGZvciB0aGlzIHRvIHdvcmsuXG5AbWl4aW4gb3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi8vLyBTZXRzIGEgY29udGFpbmVyJ3MgYmFzZWxpbmUgdGhhdCB0ZXh0IGNvbnRlbnQgd2lsbCBhbGlnbiB0by5cbi8vL1xuLy8vIElmIHRoZSBgJGRpc3BsYXlgIGlzIHNldCB0byBhIGZsZXhib3ggZGlzcGxheSwgb25seSBgJHRvcGAgYmFzZWxpbmUgbWF5IGJlXG4vLy8gc2V0LiBBIHNlcGFyYXRlIGVsZW1lbnQgbXVzdCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIHRoZSBjb250YWluZXIgd2l0aCBhXG4vLy8gYCRib3R0b21gIGJhc2VsaW5lLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgLSB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgdG9wIG9mIHRoZSBjb250YWluZXIgdG8gdGhlXG4vLy8gICAgIHRleHQncyBiYXNlbGluZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSAtIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0ZXh0J3MgYmFzZWxpbmUgdG8gdGhlXG4vLy8gICAgIGJvdHRvbSBvZiB0aGUgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSAtIHRoZSBkaXNwbGF5IHR5cGUgb2YgdGhlIGNvbnRhaW5lci4gTWF5IGJlIGBmbGV4YCxcbi8vLyAgICAgYGlubGluZS1mbGV4YCwgYGJsb2NrYCwgb3IgYGlubGluZS1ibG9ja2AuXG5AbWl4aW4gYmFzZWxpbmUoXG4gICR0b3A6IDAsXG4gICRib3R0b206IDAsXG4gICRkaXNwbGF5OiBibG9jayxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICR2YWxpZERpc3BsYXlUeXBlczogKGZsZXgsIGlubGluZS1mbGV4LCBibG9jaywgaW5saW5lLWJsb2NrKTtcblxuICBAaWYgbGlzdC5pbmRleCgkdmFsaWREaXNwbGF5VHlwZXMsICRkaXNwbGF5KSA9PSBudWxsIHtcbiAgICBAZXJyb3IgXCJtZGMtdHlwb2dyYXBoeTogaW52YWxpZCBkaXNwbGF5IHNwZWNpZmllZCEgI3skZGlzcGxheX0gbXVzdCBiZSBvbmUgb2YgI3skdmFsaWREaXNwbGF5VHlwZXN9XCI7XG4gIH1cblxuICAkaXNGbGV4Ym94OiAkZGlzcGxheSA9PSAnZmxleCcgb3IgJGRpc3BsYXkgPT0gJ2lubGluZS1mbGV4JztcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuXG4gICAgQGlmICRpc0ZsZXhib3gge1xuICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdG9wID4gMCB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtdG9wKCR0b3AsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpZiAkYm90dG9tID4gMCB7XG4gICAgQGlmICRpc0ZsZXhib3gge1xuICAgICAgQGVycm9yIFwibWRjLXR5cG9ncmFwaHk6IGludmFsaWQgYmFzZWxpbmUgd2l0aCBkaXNwbGF5IHR5cGUuICN7JGRpc3BsYXl9IGNhbm5vdCBzcGVjaWZpeSAkYm90dG9tLiBBZGQgYSBzZXBhcmF0ZSBjaGlsZCBlbGVtZW50IHdpdGggaXRzIG93biAkYm90dG9tLlwiO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJhc2VsaW5lLWJvdHRvbSgkYm90dG9tLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIGJhc2VsaW5lIG9mIGZsb3cgdGV4dCBjb250ZW50LlxuLy8vXG4vLy8gU2VwYXJhdGUgYCR0b3BgIGFuZCBgJGJvdHRvbWAgYmFzZWxpbmVzIG1heSBiZSBzcGVjaWZpZWQuIFlvdSBzaG91bGQgZW5zdXJlXG4vLy8gdGhhdCB0aGUgYCR0b3BgIGJhc2VsaW5lIG1hdGNoZXMgdGhlIHByZXZpb3VzIHRleHQgY29udGVudCdzICRib3R0b21cbi8vLyBiYXNlbGluZSB0byBlbnN1cmUgdGV4dCBpcyBwb3NpdGlvbmVkIGFwcHJvcHJpYXRlbHkuXG4vLy9cbi8vLyBTZWUgZ28vY3NzLWJhc2VsaW5lIGZvciByZWZlcmVuY2Ugb24gaG93IHRoaXMgbWl4aW4gd29ya3MuXG4vLy9cbi8vLyBUaGlzIGlzIGludGVuZGVkIGZvciB0ZXh0IGZsb3cgY29udGVudCBvbmx5IChlLmcuIGA8aDE+YCwgYDxwPmAsIGA8c3Bhbj5gLFxuLy8vIG9yIGA8ZGl2PmAgd2l0aCBvbmx5IHRleHQgY29udGVudCkuIFVzZSBgYmFzZWxpbmUoKWAgdG8gc2V0IHRoZSBiYXNlbGluZSBvZlxuLy8vIGNvbnRhaW5lcnMgdGhhdCBhcmUgZmxleGJveCBvciBoYXZlIG5vbi1mbG93IGNvbnRlbnQgY2hpbGRyZW4uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCAtIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5lciB0byB0aGVcbi8vLyAgICAgdGV4dCdzIGJhc2VsaW5lLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYm90dG9tIC0gdGhlIGRpc3RhbmNlIGZyb20gdGhlIHRleHQncyBiYXNlbGluZSB0byB0aGVcbi8vLyAgICAgYm90dG9tIG9mIHRoZSBjb250YWluZXIuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkbGluZUhlaWdodCAtIHRoZSBsaW5lLWhlaWdodCB0byB1c2UgZm9yIHRoZSB0ZXh0LiBUaGlzXG4vLy8gICAgIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIGJhc2VsaW5lcyBvZiBtdWx0aXBsZSBsaW5lcyBvZiB0ZXh0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSAtIHRoZSBkaXNwbGF5IHR5cGUgb2YgdGhlIGNvbnRhaW5lci4gTWF5IGJlIGBibG9ja2Bcbi8vLyAgICAgb3IgYGlubGluZS1ibG9ja2AuXG5AbWl4aW4gdGV4dC1iYXNlbGluZShcbiAgJHRvcDogMCxcbiAgJGJvdHRvbTogMCxcbiAgJGRpc3BsYXk6IGJsb2NrLFxuICAkbGluZUhlaWdodDogbm9ybWFsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJHZhbGlkRGlzcGxheVR5cGVzOiAoYmxvY2ssIGlubGluZS1ibG9jayk7XG5cbiAgQGlmIGxpc3QuaW5kZXgoJHZhbGlkRGlzcGxheVR5cGVzLCAkZGlzcGxheSkgPT0gbnVsbCB7XG4gICAgQGVycm9yIFwibWRjLXR5cG9ncmFwaHk6IGludmFsaWQgZGlzcGxheSBzcGVjaWZpZWQhICN7JGRpc3BsYXl9IG11c3QgYmUgb25lIG9mICN7JHZhbGlkRGlzcGxheVR5cGVzfVwiO1xuICB9XG5cbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBiYXNlbGluZShcbiAgICAkZGlzcGxheTogJGRpc3BsYXksXG4gICAgJHRvcDogJHRvcCxcbiAgICAkYm90dG9tOiAkYm90dG9tLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgQGlmICR0b3AgPiAwIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgICBsaW5lLWhlaWdodDogI3skbGluZUhlaWdodH07XG4gICAgfVxuXG4gICAgQGlmICRib3R0b20gPiAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IC0xICogJGJvdHRvbTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBiYXNlbGluZSBzdHJ1dCBmcm9tIHRoZSB0b3Agb2YgYSBjb250YWluZXIuIFRoaXMgbWl4aW4gaXMgZm9yXG4vLy8gYWR2YW5jZWQgdXNlcnMsIHByZWZlciBgYmFzZWxpbmUoKWAuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGRpc3RhbmNlIC0gVGhlIGRpc3RhbmNlIGZyb20gdGhlIHRvcCBvZiB0aGUgY29udGFpbmVyIHRvXG4vLy8gICAgIHRoZSB0ZXh0J3MgYmFzZWxpbmUuXG5AbWl4aW4gYmFzZWxpbmUtdG9wKCRkaXN0YW5jZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLXN0cnV0XygkZGlzdGFuY2UpO1xuXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBiYXNlbGluZSBzdHJ1dCBmcm9tIHRoZSBiYXNlbGluZSB0byB0aGUgYm90dG9tIG9mIGEgY29udGFpbmVyLlxuLy8vIFRoaXMgbWl4aW4gaXMgZm9yIGFkdmFuY2VkIHVzZXJzLCBwcmVmZXIgYGJhc2VsaW5lKClgLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkaXN0YW5jZSAtIFRoZSBkaXN0YW5jZSBmcm9tIHRoZSB0ZXh0J3MgYmFzZWxpbmUgdG8gdGhlXG4vLy8gICAgIGJvdHRvbSBvZiB0aGUgY29udGFpbmVyLlxuQG1peGluIGJhc2VsaW5lLWJvdHRvbSgkZGlzdGFuY2UsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAmOjphZnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLXN0cnV0XygkZGlzdGFuY2UpO1xuXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogLTEgKiAkZGlzdGFuY2U7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGFuIGludmlzaWJsZSwgemVyby13aWR0aCBwcmVmaXggdG8gYSBjb250YWluZXIncyB0ZXh0LlxuLy8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBiYXNlbGluZSBpcyBhbHdheXMgd2hlcmUgdGhlIHRleHQgd291bGQgYmUsIGluc3RlYWRcbi8vLyBvZiBkZWZhdWx0aW5nIHRvIHRoZSBjb250YWluZXIgYm90dG9tIHdoZW4gdGV4dCBpcyBlbXB0eS4gRG8gbm90IHVzZSB0aGlzXG4vLy8gbWl4aW4gaWYgdGhlIGBiYXNlbGluZWAgbWl4aW4gaXMgYWxyZWFkeSBhcHBsaWVkLlxuQG1peGluIHplcm8td2lkdGgtcHJlZml4KCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAmOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBjb250ZW50OiAnXFwyMDBiJztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJhc2VsaW5lLXN0cnV0XygkZGlzdGFuY2UpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAkZGlzdGFuY2U7XG4gIGNvbnRlbnQ6ICcnO1xufVxuXG5AZnVuY3Rpb24gZ2V0LWZvbnQoJHR5cG9ncmFwaHkpIHtcbiAgQHJldHVybiBtYXAuZ2V0KCRzdHlsZXMsICR0eXBvZ3JhcGh5LCBmb250LWZhbWlseSk7XG59XG5cbkBmdW5jdGlvbiBnZXQtbGluZS1oZWlnaHQoJHR5cG9ncmFwaHkpIHtcbiAgQHJldHVybiBtYXAuZ2V0KCRzdHlsZXMsICR0eXBvZ3JhcGh5LCBsaW5lLWhlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBnZXQtc2l6ZSgkdHlwb2dyYXBoeSkge1xuICBAcmV0dXJuIG1hcC5nZXQoJHN0eWxlcywgJHR5cG9ncmFwaHksIGZvbnQtc2l6ZSk7XG59XG5cbkBmdW5jdGlvbiBnZXQtd2VpZ2h0KCR0eXBvZ3JhcGh5KSB7XG4gIEByZXR1cm4gbWFwLmdldCgkc3R5bGVzLCAkdHlwb2dyYXBoeSwgZm9udC13ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gZ2V0LXRyYWNraW5nKCR0eXBvZ3JhcGh5KSB7XG4gIEByZXR1cm4gbWFwLmdldCgkc3R5bGVzLCAkdHlwb2dyYXBoeSwgbGV0dGVyLXNwYWNpbmcpO1xufVxuXG4kX3R5cG9ncmFwaHktdGhlbWU6IChcbiAgZm9udDogbnVsbCxcbiAgbGluZS1oZWlnaHQ6IG51bGwsXG4gIHNpemU6IG51bGwsXG4gIHdlaWdodDogbnVsbCxcbiAgdHJhY2tpbmc6IG51bGwsXG4pO1xuXG5AbWl4aW4gdGhlbWUtc3R5bGVzKCR0aGVtZSkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRfdHlwb2dyYXBoeS10aGVtZSwgJHRoZW1lKTtcblxuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LWZhbWlseSwgbWFwLmdldCgkdGhlbWUsIGZvbnQpKTtcbiAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkobGluZS1oZWlnaHQsIG1hcC5nZXQoJHRoZW1lLCBsaW5lLWhlaWdodCkpO1xuICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShmb250LXNpemUsIG1hcC5nZXQoJHRoZW1lLCBzaXplKSk7XG4gIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGZvbnQtd2VpZ2h0LCBtYXAuZ2V0KCR0aGVtZSwgd2VpZ2h0KSk7XG4gIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGxldHRlci1zcGFjaW5nLCBtYXAuZ2V0KCR0aGVtZSwgdHJhY2tpbmcpKTtcbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNyBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2N1c3RvbS1wcm9wZXJ0aWVzJztcbkB1c2UgJ0BtYXRlcmlhbC9iYXNlL21peGlucycgYXMgYmFzZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICcuL2VsZXZhdGlvbi10aGVtZSc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGZvciAkei12YWx1ZSBmcm9tIDAgdGhyb3VnaCAyNCB7XG4gICAgLm1kYy1lbGV2YXRpb24tLXojeyR6LXZhbHVlfSB7XG4gICAgICBAaW5jbHVkZSBlbGV2YXRpb24tdGhlbWUuZWxldmF0aW9uKCR6LXZhbHVlLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1lbGV2YXRpb24tdHJhbnNpdGlvbiB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246IGVsZXZhdGlvbi10aGVtZS50cmFuc2l0aW9uLXZhbHVlKCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHdpbGwtY2hhbmdlOiBlbGV2YXRpb24tdGhlbWUuJHByb3BlcnR5O1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBDYWxsZWQgb25jZSBwZXIgYXBwbGljYXRpb24gdG8gc2V0IHVwIHRoZSBnbG9iYWwgZGVmYXVsdCBlbGV2YXRpb24gc3R5bGVzLlxuLy8vXG5AbWl4aW4gb3ZlcmxheS1jb21tb24oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZWxldmF0aW9uLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBiYXNlLW1peGlucy5lbWl0LW9uY2UoJ21kYy1lbGV2YXRpb24vY29tbW9uL3N0cnVjdHVyZScpIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShcbiAgICAgICAgICBvcGFjaXR5LFxuICAgICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZSgtLW1kYy1lbGV2YXRpb24tb3ZlcmxheS1vcGFjaXR5LCAwKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICBAaW5jbHVkZSBiYXNlLW1peGlucy5lbWl0LW9uY2UoJ21kYy1lbGV2YXRpb24vY29tbW9uL2FuaW1hdGlvbicpIHtcbiAgICAgICAgdHJhbnNpdGlvbjogZWxldmF0aW9uLXRoZW1lLm92ZXJsYXktdHJhbnNpdGlvbi12YWx1ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJhc2UtbWl4aW5zLmVtaXQtb25jZSgnbWRjLWVsZXZhdGlvbi9jb21tb24vY29sb3InKSB7XG4gICAgICAkZmlsbC1jb2xvcjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlKFxuICAgICAgICAtLW1kYy1lbGV2YXRpb24tb3ZlcmxheS1jb2xvcixcbiAgICAgICAgZWxldmF0aW9uLXRoZW1lLiRvdmVybGF5LWNvbG9yXG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgZWxldmF0aW9uLXRoZW1lLm92ZXJsYXktZmlsbC1jb2xvcigkZmlsbC1jb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuXG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL3ZhcmlhYmxlcycgYXMgYW5pbWF0aW9uLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi92YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIC8vIHBvc3Rjc3MtYmVtLWxpbnRlcjogZGVmaW5lIGZsb2F0aW5nLWxhYmVsXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShcbiAgICAgIHN1YnRpdGxlMSxcbiAgICAgICRleGNsdWRlLXByb3BzOiAobGluZS1oZWlnaHQpLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7XG4gICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7XG4gICAgICBsaW5lLWhlaWdodDogMS4xNXJlbTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBjdXJzb3I6IHRleHQ7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAvKiBAYWx0ZXJuYXRlICovXG4gICAgICAvLyBGb3JjZSB0aGUgbGFiZWwgaW50byBpdHMgb3duIGxheWVyIHRvIHByZXZlbnQgdmlzaWJsZSBsYXllciBwcm9tb3Rpb24gYWRqdXN0bWVudHNcbiAgICAgIC8vIHdoZW4gdGhlIHJpcHBsZSBpcyBhY3RpdmF0ZWQgYmVoaW5kIGl0LlxuICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcblxuICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcmlhYmxlcy4kdHJhbnNpdGlvbi1kdXJhdGlvblxuICAgICAgICAgIGFuaW1hdGlvbi12YXJpYWJsZXMuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbixcbiAgICAgICAgY29sb3IgdmFyaWFibGVzLiR0cmFuc2l0aW9uLWR1cmF0aW9uXG4gICAgICAgICAgYW5pbWF0aW9uLXZhcmlhYmxlcy4kc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgY3Vyc29yOiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLXJlcXVpcmVkIHtcbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBfcmVxdWlyZWQtY29udGVudCgkcXVlcnkpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBfcmVxdWlyZWQtY29udGVudC1ydGwoJHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgZmxvYXQtcG9zaXRpb24odmFyaWFibGVzLiRwb3NpdGlvbi15LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgc2hha2UtYW5pbWF0aW9uKHN0YW5kYXJkLCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICBAaW5jbHVkZSBzaGFrZS1rZXlmcmFtZXMoc3RhbmRhcmQsIHZhcmlhYmxlcy4kcG9zaXRpb24teSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuLy8gVXNlZCBmb3IgdGV4dGFyZWEgaW4gY2FzZSBvZiBzY3JvbGxpbmdcbkBtaXhpbiBmaWxsLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hha2Uta2V5ZnJhbWVzKFxuICAkbW9kaWZpZXIsXG4gICRwb3NpdGlvblksXG4gICRwb3NpdGlvblg6IDAlLFxuICAkc2NhbGU6IHZhcmlhYmxlcy4kZmxvYXQtc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1hbmltYXRpb246IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBhbmltYXRpb24pO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgQGtleWZyYW1lcyBtZGMtZmxvYXRpbmctbGFiZWwtc2hha2UtZmxvYXQtYWJvdmUtI3skbW9kaWZpZXJ9IHtcbiAgICAgIDAlIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMCAtICN7JHBvc2l0aW9uWH0pKVxuICAgICAgICAgIHRyYW5zbGF0ZVkoLSN7JHBvc2l0aW9uWX0pIHNjYWxlKCN7JHNjYWxlfSk7XG4gICAgICB9XG5cbiAgICAgIDMzJSB7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjUsIDAsIDAuNzAxNzMyLCAwLjQ5NTgxOSk7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDQlIC0gI3skcG9zaXRpb25YfSkpXG4gICAgICAgICAgdHJhbnNsYXRlWSgtI3skcG9zaXRpb25ZfSkgc2NhbGUoI3skc2NhbGV9KTtcbiAgICAgIH1cblxuICAgICAgNjYlIHtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKFxuICAgICAgICAgIDAuMzAyNDM1LFxuICAgICAgICAgIDAuMzgxMzUyLFxuICAgICAgICAgIDAuNTUsXG4gICAgICAgICAgMC45NTYzNTJcbiAgICAgICAgKTtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTQlIC0gI3skcG9zaXRpb25YfSkpXG4gICAgICAgICAgdHJhbnNsYXRlWSgtI3skcG9zaXRpb25ZfSkgc2NhbGUoI3skc2NhbGV9KTtcbiAgICAgIH1cblxuICAgICAgMTAwJSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDAgLSAjeyRwb3NpdGlvblh9KSlcbiAgICAgICAgICB0cmFuc2xhdGVZKC0jeyRwb3NpdGlvbll9KSBzY2FsZSgjeyRzY2FsZX0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZmxvYXQtcG9zaXRpb24oXG4gICRwb3NpdGlvblksXG4gICRwb3NpdGlvblg6IDAlLFxuICAkc2NhbGU6IHZhcmlhYmxlcy4kZmxvYXQtc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGlmICRwb3NpdGlvblggPiAwIG9yICRwb3NpdGlvblggPCAwIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xICogJHBvc2l0aW9uWSlcbiAgICAgICAgICB0cmFuc2xhdGVYKC0xICogJHBvc2l0aW9uWClcbiAgICAgICAgICBzY2FsZSgkc2NhbGUpO1xuXG4gICAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xICogJHBvc2l0aW9uWSkgdHJhbnNsYXRlWCgkcG9zaXRpb25YKVxuICAgICAgICAgICAgc2NhbGUoJHNjYWxlKTtcbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMSAqICRwb3NpdGlvblkpIHNjYWxlKCRzY2FsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzaGFrZS1hbmltYXRpb24oJG1vZGlmaWVyLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tc2hha2Uge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICBhbmltYXRpb246IG1kYy1mbG9hdGluZy1sYWJlbC1zaGFrZS1mbG9hdC1hYm92ZS0jeyRtb2RpZmllcn0gMjUwbXMgMTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1heC13aWR0aCgkbWF4LXdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgQ1NTIHRyYW5zaXRpb24gZm9yIHRoZSBmbG9hdGluZyBhbmltYXRpb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGR1cmF0aW9uLW1zIC0gRHVyYXRpb24gKGluIG1zKSBvZiB0aGUgYW5pbWF0aW9uLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdGltaW5nLWZ1bmN0aW9uIC0gT3B0aW9uYWxseSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgYW5pbWF0aW9uIHRpbWluZyBmdW5jdGlvbi5cbi8vL1xuQG1peGluIGZsb2F0LXRyYW5zaXRpb24oXG4gICRkdXJhdGlvbi1tcyxcbiAgJHRpbWluZy1mdW5jdGlvbjogYW5pbWF0aW9uLXZhcmlhYmxlcy4kc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgIHRyYW5zaXRpb246IGNvbG9yICRkdXJhdGlvbi1tcyAkdGltaW5nLWZ1bmN0aW9uLFxuICAgICAgdHJhbnNmb3JtICRkdXJhdGlvbi1tcyAkdGltaW5nLWZ1bmN0aW9uO1xuICB9XG59XG5cbkBtaXhpbiBfcmVxdWlyZWQtY29udGVudCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIG1hcmdpbi1sZWZ0OiAxcHg7XG4gICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICBtYXJnaW4tcmlnaHQ6IDBweDtcbiAgICBjb250ZW50OiAnKic7XG4gIH1cbn1cblxuLy8gTmVlZCB0byBzcGVjaWZ5IExUUi9SVEwgbWFudWFsbHkgc2luY2UgcnRsIG1peGlucyB3aWxsIGFkZCA6OmFmdGVyW2Rpcj1ydGxdXG4vLyBzZWxlY3RvciBhbmQgdGhhdCBicmVha3Mgc29tZSBicm93c2Vyc1xuQG1peGluIF9yZXF1aXJlZC1jb250ZW50LXJ0bCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcHg7XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi9mdW5jdGlvbnMnIGFzIGZ1bmN0aW9uczI7XG5AdXNlICdAbWF0ZXJpYWwvYW5pbWF0aW9uL3ZhcmlhYmxlcycgYXMgdmFyaWFibGVzMjtcbkB1c2UgJ0BtYXRlcmlhbC9iYXNlL21peGlucycgYXMgYmFzZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICcuL3JpcHBsZS10aGVtZSc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHN0YXRpYy1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC5tZGMtcmlwcGxlLXN1cmZhY2Uge1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBzdGF0aWMtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXJpcHBsZS1zdXJmYWNlIHtcbiAgICBAaW5jbHVkZSBzdXJmYWNlKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSByYWRpdXMtYm91bmRlZCgkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgc3VyZmFjZS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1yaXBwbGUtc3VyZmFjZVtkYXRhLW1kYy1yaXBwbGUtaXMtdW5ib3VuZGVkXSxcbiAgLm1kYy1yaXBwbGUtdXBncmFkZWQtLXVuYm91bmRlZCB7XG4gICAgQGluY2x1ZGUgcmFkaXVzLXVuYm91bmRlZCgkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgdW5ib3VuZGVkLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG4gIH1cbn1cblxuLy8vIFNldHMgYWxsIHN0YXRlcyAoaW5jbHVkaW5nIGhvdmVyLCBmb2N1cywgcHJlc3MsIGFjdGl2YXRlZCBhbmQgc2VsZWN0ZWQpIHdpdGhcbi8vLyBnaXZlbiBjb2xvciBhcyBiYXNlIGNvbG9yLlxuLy8vXG4vLy8gVGhpcyBtaXhpbiBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIFVzZSBgcmlwcGxlLXRoZW1lLnN0YXRlcygkY29sb3IpYCBtaXhpblxuLy8vIHRvIHNldCBpbnRlcmFjdGl2ZSBzdGF0ZXMgKGhvdmVyLCBmb2N1cyAmIHByZXNzKSBjb2xvci5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J8U3RyaW5nfSAkY29sb3IgLSBUYXJnZXQgYmFzZSBjb2xvci4gQ2FuIGJlIHZhbGlkIENTUyBjb2xvciBvclxuLy8vICAgICBhIGNvbG9yIHN0cmluZyBsaXRlcmFsIChpLmUuLCBgcHJpbWFyeWAsIGBzZWNvbmRhcnlgLCBldGMpLlxuQG1peGluIHN0YXRlcy1mb3ItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtYWN0aXZhdGVkKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLXNlbGVjdGVkKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gc3VyZmFjZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG5AbWl4aW4gdW5ib3VuZGVkLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cbn1cblxuQG1peGluIGNvbW1vbigkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgc3R5bGVzIG5lZWRlZCBieSBhbnkgY29tcG9uZW50IHVzaW5nIE1EQyBSaXBwbGUgYXJlIGVtaXR0ZWQsIGJ1dCBvbmx5IG9uY2UuXG4gIC8vIChFdmVyeSBjb21wb25lbnQgdXNpbmcgTURDIFJpcHBsZSBpbXBvcnRzIHRoZXNlIG1peGlucywgYnV0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgaW1wb3J0XG4gIC8vIG1kYy1yaXBwbGUuc2Nzcy4pXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgQGluY2x1ZGUgYmFzZS1taXhpbnMuZW1pdC1vbmNlKCdtZGMtcmlwcGxlL2NvbW1vbi9hbmltYXRpb24nKSB7XG4gICAgICBAaW5jbHVkZSBrZXlmcmFtZXNfO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3VyZmFjZShcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJyxcbiAgJGluY2x1ZGUtd2lsbC1jaGFuZ2U6IHRydWUgLy8gVE9ETyhiLzE1MTkzMTk2MSk6IFJlbW92ZSBvbmNlIHJlc29sdmVkXG4pIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC0tbWRjLXJpcHBsZS1mZy1zaXplOiAwO1xuICAgIC0tbWRjLXJpcHBsZS1sZWZ0OiAwO1xuICAgIC0tbWRjLXJpcHBsZS10b3A6IDA7XG4gICAgLS1tZGMtcmlwcGxlLWZnLXNjYWxlOiAxO1xuICAgIC0tbWRjLXJpcHBsZS1mZy10cmFuc2xhdGUtZW5kOiAwO1xuICAgIC0tbWRjLXJpcHBsZS1mZy10cmFuc2xhdGUtc3RhcnQ6IDA7XG5cbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XG4gICAgLy8gVE9ETyhiLzE1MTkzMTk2MSk6IFJlbW92ZSB0aGUgZm9sbG93aW5nIGJsb2NrIG9uY2UgcmVzb2x2ZWRcbiAgICBAaWYgJGluY2x1ZGUtd2lsbC1jaGFuZ2Uge1xuICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgb3BhY2l0eTtcbiAgICB9XG4gIH1cblxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlLFxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBjb250ZW50OiAnJztcbiAgICB9XG4gIH1cblxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgLy8gQWxzbyB0cmFuc2l0aW9uIGJhY2tncm91bmQtY29sb3IgdG8gYXZvaWQgdW5uYXR1cmFsIGNvbG9yIGZsYXNoZXMgd2hlbiB0b2dnbGluZyBhY3RpdmF0ZWQvc2VsZWN0ZWQgc3RhdGVcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgcmlwcGxlLXRoZW1lLiRzdGF0ZXMtd2FzaC1kdXJhdGlvbiBsaW5lYXIsXG4gICAgICAgIGJhY2tncm91bmQtY29sb3IgcmlwcGxlLXRoZW1lLiRzdGF0ZXMtd2FzaC1kdXJhdGlvbiBsaW5lYXI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSByaXBwbGUgd2FzaCBmb3IgaG92ZXIvZm9jdXMgc3RhdGVzIGlzIGRpc3BsYXllZCBvbiB0b3Agb2YgcG9zaXRpb25lZCBjaGlsZCBlbGVtZW50c1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgIHotaW5kZXgsXG4gICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZSgtLW1kYy1yaXBwbGUtei1pbmRleCwgMSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI3skcmlwcGxlLXRhcmdldH06OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoXG4gICAgICAgIHotaW5kZXgsXG4gICAgICAgIGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZSgtLW1kYy1yaXBwbGUtei1pbmRleCwgMClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29tbW9uIHN0eWxlcyBmb3IgdXBncmFkZWQgc3VyZmFjZXMgKHNvbWUgb2YgdGhlc2UgZGVwZW5kIG9uIGN1c3RvbSBwcm9wZXJ0aWVzIHNldCB2aWEgSlMgb3Igb3RoZXIgbWl4aW5zKVxuXG4gICYubWRjLXJpcHBsZS11cGdyYWRlZCB7XG4gICAgI3skcmlwcGxlLXRhcmdldH06OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLW1kYy1yaXBwbGUtZmctc2NhbGUsIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubWRjLXJpcHBsZS11cGdyYWRlZC0tdW5ib3VuZGVkIHtcbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdG9wOiB2YXIoLS1tZGMtcmlwcGxlLXRvcCwgMCk7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIGxlZnQ6IHZhcigtLW1kYy1yaXBwbGUtbGVmdCwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1mb3JlZ3JvdW5kLWFjdGl2YXRpb24ge1xuICAgICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICBhbmltYXRpb246IG1kYy1yaXBwbGUtZmctcmFkaXVzLWluIHJpcHBsZS10aGVtZS4kdHJhbnNsYXRlLWR1cmF0aW9uXG4gICAgICAgICAgICBmb3J3YXJkcyxcbiAgICAgICAgICBtZGMtcmlwcGxlLWZnLW9wYWNpdHktaW4gcmlwcGxlLXRoZW1lLiRmYWRlLWluLWR1cmF0aW9uIGZvcndhcmRzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubWRjLXJpcHBsZS11cGdyYWRlZC0tZm9yZWdyb3VuZC1kZWFjdGl2YXRpb24ge1xuICAgICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgICBhbmltYXRpb246IG1kYy1yaXBwbGUtZmctb3BhY2l0eS1vdXQgcmlwcGxlLXRoZW1lLiRmYWRlLW91dC1kdXJhdGlvbjtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgLy8gUmV0YWluIHRyYW5zZm9ybSBmcm9tIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluIGFjdGl2YXRpb25cbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tbWRjLXJpcHBsZS1mZy10cmFuc2xhdGUtZW5kLCAwKSlcbiAgICAgICAgICBzY2FsZSh2YXIoLS1tZGMtcmlwcGxlLWZnLXNjYWxlLCAxKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiByYWRpdXMtYm91bmRlZChcbiAgJHJhZGl1czogMTAwJSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSxcbiAgJHJpcHBsZS10YXJnZXQ6ICcmJ1xuKSB7XG4gICRmZWF0LXN0cnV0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YmVmb3JlLFxuICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydXR1cmUpIHtcbiAgICAgIHRvcDogY2FsYyg1MCUgLSAjeyRyYWRpdXN9KTtcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtICN7JHJhZGl1c30pO1xuICAgICAgd2lkdGg6ICRyYWRpdXMgKiAyO1xuICAgICAgaGVpZ2h0OiAkcmFkaXVzICogMjtcbiAgICB9XG4gIH1cblxuICAmLm1kYy1yaXBwbGUtdXBncmFkZWQge1xuICAgICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnV0dXJlKSB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUsICRyYWRpdXMpO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSwgJHJhZGl1cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiByYWRpdXMtdW5ib3VuZGVkKFxuICAkcmFkaXVzOiAxMDAlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpLFxuICAkcmlwcGxlLXRhcmdldDogJyYnXG4pIHtcbiAgJGZlYXQtc3RydXR1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gICN7JHJpcHBsZS10YXJnZXR9OjpiZWZvcmUsXG4gICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1dHVyZSkge1xuICAgICAgdG9wOiBjYWxjKDUwJSAtICN7bWF0aC5kaXYoJHJhZGl1cywgMil9KTtcbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtICN7bWF0aC5kaXYoJHJhZGl1cywgMil9KTtcbiAgICAgIHdpZHRoOiAkcmFkaXVzO1xuICAgICAgaGVpZ2h0OiAkcmFkaXVzO1xuICAgIH1cbiAgfVxuXG4gICYubWRjLXJpcHBsZS11cGdyYWRlZCB7XG4gICAgI3skcmlwcGxlLXRhcmdldH06OmJlZm9yZSxcbiAgICAjeyRyaXBwbGUtdGFyZ2V0fTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1dHVyZSkge1xuICAgICAgICB0b3A6IHZhcigtLW1kYy1yaXBwbGUtdG9wLCBjYWxjKDUwJSAtICN7bWF0aC5kaXYoJHJhZGl1cywgMil9KSk7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgIGxlZnQ6IHZhcigtLW1kYy1yaXBwbGUtbGVmdCwgY2FsYyg1MCUgLSAje21hdGguZGl2KCRyYWRpdXMsIDIpfSkpO1xuICAgICAgICB3aWR0aDogdmFyKC0tbWRjLXJpcHBsZS1mZy1zaXplLCAkcmFkaXVzKTtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUsICRyYWRpdXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgICN7JHJpcHBsZS10YXJnZXR9OjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnV0dXJlKSB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1tZGMtcmlwcGxlLWZnLXNpemUsICRyYWRpdXMpO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLW1kYy1yaXBwbGUtZmctc2l6ZSwgJHJhZGl1cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIENvbW1vbiBzdHlsZXMgZm9yIGEgcmlwcGxlIHRhcmdldCBlbGVtZW50LlxuLy8gVXNlZCBmb3IgY29tcG9uZW50cyB3aGljaCBoYXZlIGFuIGlubmVyIHJpcHBsZSB0YXJnZXQgZWxlbWVudC5cbkBtaXhpbiB0YXJnZXQtY29tbW9uKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgLy8gTmVjZXNzYXJ5IGZvciBjbGlja3Mgb24gb3RoZXIgaW5uZXIgZWxlbWVudHMgKGUuZy4gY2xvc2UgaWNvbiBpbiBjaGlwKVxuICAgIC8vIHRvIGdvIHRocm91Z2guXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGtleWZyYW1lc18ge1xuICBAa2V5ZnJhbWVzIG1kYy1yaXBwbGUtZmctcmFkaXVzLWluIHtcbiAgICBmcm9tIHtcbiAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcmlhYmxlczIuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbjtcbiAgICAgIC8vIE5PVEU6IEZvciB0aGVzZSBrZXlmcmFtZXMsIHdlIGRvIG5vdCBuZWVkIGN1c3RvbSBwcm9wZXJ0eSBmYWxsYmFja3MgYmVjYXVzZSB0aGV5IGFyZSBvbmx5XG4gICAgICAvLyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYC5tZGMtcmlwcGxlLXVwZ3JhZGVkYC4gU2luY2UgTURDUmlwcGxlRm91bmRhdGlvbiBjaGVja3MgdG8gZW5zdXJlXG4gICAgICAvLyB0aGF0IGN1c3RvbSBwcm9wZXJ0aWVzIGFyZSBzdXBwb3J0ZWQgd2l0aGluIHRoZSBicm93c2VyIGJlZm9yZSBhZGRpbmcgdGhpcyBjbGFzcywgd2UgY2FuXG4gICAgICAvLyBzYWZlbHkgdXNlIHRoZW0gd2l0aG91dCBhIGZhbGxiYWNrLlxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tbWRjLXJpcHBsZS1mZy10cmFuc2xhdGUtc3RhcnQsIDApKSBzY2FsZSgxKTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1tZGMtcmlwcGxlLWZnLXRyYW5zbGF0ZS1lbmQsIDApKVxuICAgICAgICBzY2FsZSh2YXIoLS1tZGMtcmlwcGxlLWZnLXNjYWxlLCAxKSk7XG4gICAgfVxuICB9XG5cbiAgQGtleWZyYW1lcyBtZGMtcmlwcGxlLWZnLW9wYWNpdHktaW4ge1xuICAgIGZyb20ge1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICBvcGFjaXR5OiB2YXIoLS1tZGMtcmlwcGxlLWZnLW9wYWNpdHksIDApO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgbWRjLXJpcHBsZS1mZy1vcGFjaXR5LW91dCB7XG4gICAgZnJvbSB7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gICAgICBvcGFjaXR5OiB2YXIoLS1tZGMtcmlwcGxlLWZnLW9wYWNpdHksIDApO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuJGRlY2VsZXJhdGlvbi1jdXJ2ZS10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpICFkZWZhdWx0O1xuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAhZGVmYXVsdDtcbiRhY2NlbGVyYXRpb24tY3VydmUtdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSAhZGVmYXVsdDtcbiRzaGFycC1jdXJ2ZS10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSkgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBlbnRlcigkbmFtZSwgJGR1cmF0aW9uLCAkZGVsYXk6IDBtcykge1xuICBAcmV0dXJuICRuYW1lICRkdXJhdGlvbiAkZGVsYXkgJGRlY2VsZXJhdGlvbi1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG59XG5cbkBmdW5jdGlvbiBleGl0LXBlcm1hbmVudCgkbmFtZSwgJGR1cmF0aW9uLCAkZGVsYXk6IDBtcykge1xuICBAcmV0dXJuICRuYW1lICRkdXJhdGlvbiAkZGVsYXkgJGFjY2VsZXJhdGlvbi1jdXJ2ZS10aW1pbmctZnVuY3Rpb247XG59XG5cbkBmdW5jdGlvbiBleGl0LXRlbXBvcmFyeSgkbmFtZSwgJGR1cmF0aW9uLCAkZGVsYXk6IDBtcykge1xuICBAcmV0dXJuICRuYW1lICRkdXJhdGlvbiAkZGVsYXkgJHNoYXJwLWN1cnZlLXRpbWluZy1mdW5jdGlvbjtcbn1cblxuQGZ1bmN0aW9uIHN0YW5kYXJkKCRuYW1lLCAkZHVyYXRpb24sICRkZWxheTogMG1zKSB7XG4gIEByZXR1cm4gJG5hbWUgJGR1cmF0aW9uICRkZWxheSAkc3RhbmRhcmQtY3VydmUtdGltaW5nLWZ1bmN0aW9uO1xufVxuXG5AZnVuY3Rpb24gbGluZWFyKCRuYW1lLCAkZHVyYXRpb24sICRkZWxheTogMG1zKSB7XG4gIEByZXR1cm4gJG5hbWUgJGR1cmF0aW9uICRkZWxheSBsaW5lYXI7XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG5cbkB1c2UgJ3Nhc3M6bGlzdCc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9mdW5jdGlvbnMnIGFzIHNoYXBlLWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC9taXhpbnMnIGFzIGZsb2F0aW5nLWxhYmVsLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICcuL3ZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmUge1xuICAgIEBpbmNsdWRlIGJhc2VfKCRxdWVyeSk7XG5cbiAgICAmX19sZWFkaW5nLFxuICAgICZfX25vdGNoLFxuICAgICZfX3RyYWlsaW5nIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYm9yZGVyLXRvcDogdmFyaWFibGVzLiRib3JkZXItd2lkdGggc29saWQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IHZhcmlhYmxlcy4kYm9yZGVyLXdpZHRoIHNvbGlkO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19sZWFkaW5nIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkoXG4gICAgICAgICAgYm9yZGVyLFxuICAgICAgICAgIHZhcmlhYmxlcy4kYm9yZGVyLXdpZHRoIHNvbGlkLFxuICAgICAgICAgIG5vbmVcbiAgICAgICAgKTtcblxuICAgICAgICB3aWR0aDogdmFyaWFibGVzLiRsZWFkaW5nLXdpZHRoO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX3RyYWlsaW5nIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkoXG4gICAgICAgICAgYm9yZGVyLFxuICAgICAgICAgIG5vbmUsXG4gICAgICAgICAgdmFyaWFibGVzLiRib3JkZXItd2lkdGggc29saWRcbiAgICAgICAgKTtcblxuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fbm90Y2gge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtICN7dmFyaWFibGVzLiRsZWFkaW5nLXdpZHRofSAqIDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBjbGlwO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtLXVwZ3JhZGVkIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC8gMC43NSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmUtLW5vdGNoZWQge1xuICAgIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChwYWRkaW5nLCByaWdodCwgOHB4KTtcblxuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lLS1uby1sYWJlbCB7XG4gICAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX25vdGNoIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShib3JkZXItY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzdHJva2Utd2lkdGgoJHdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcsXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCxcbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX3RyYWlsaW5nIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYm9yZGVyLXdpZHRoOiAkd2lkdGg7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIEFkZHMgdG9wIG9mZnNldCB0byBjb21wZW5zYXRlIGZvciBib3JkZXIgd2lkdGggYm94IHNpemUgd2hlbiBpdCBpcyBub3RjaGVkLlxuLy8vIFVzZSB0aGlzIHdoZW4gZmxvYXRpbmcgbGFiZWwgaXMgYWxpZ25lZCB0byBjZW50ZXIgdG8gcHJldmVudCBsYWJlbCBqdW1wIG9uIGZvY3VzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3Ryb2tlLXdpZHRoIFN0cm9rZSB3aWR0aCBvZiBub3RjaGVkIG91dGxpbmUgdGhhdCBuZWVkcyB0byBiZSBvZmZzZXQuXG4vLy9cbkBtaXhpbiBub3RjaC1vZmZzZXQoJHN0cm9rZS13aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lLS1ub3RjaGVkIC5tZGMtbm90Y2hlZC1vdXRsaW5lX19ub3RjaCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkc3Ryb2tlLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2hhcGUtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRjb21wb25lbnQtaGVpZ2h0OiBudWxsLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLy8gUmVzb2x2ZSB0aGUgcmFkaXVzIHJlbGF0aXZlIHRvIHRoZSBub3RjaGVkIG91dGxpbmUgY29tcG9uZW50J3MgaGVpZ2h0LiBUaGVcbiAgLy8gY29tcG9uZW50IHNob3VsZCBwcm92aWRlIGl0cyBjdXJyZW50IGhlaWdodCBmcm9tIGl0cyBkZW5zaXR5LiBUaGUgcmVzb2x2ZWRcbiAgLy8gcmFkaXVzIGFsbG93cyBwZXJjZW50YWdlIHJhZGlpIHRvIGJlIGNvbnZlcnRlZCB0byBwaXhlbHMuXG4gICRyZXNvbHZlZC1yYWRpdXM6IHNoYXBlLWZ1bmN0aW9ucy5yZXNvbHZlLXJhZGl1cyhcbiAgICAkcmFkaXVzLFxuICAgICRjb21wb25lbnQtaGVpZ2h0OiAkY29tcG9uZW50LWhlaWdodFxuICApO1xuXG4gIC8vIEdyYWIgdGhlIHRvcC1sZWZ0IHJhZGl1cy4gV2UnbGwgbmVlZCBpdCB0byBhZGp1c3QgdGhlIGxlYWRpbmcgZm9yIHRoZVxuICAvLyBsYWJlbCBub3RjaCBpZiB0aGUgcmVzdWx0aW5nIHJhZGl1cyBzaGFwZSBpcyBsYXJnZXIgdGhhbiB0aGUgZGVmYXVsdFxuICAvLyBsZWFkaW5nLlxuICAkdG9wLWxlZnQtcmFkaXVzOiBsaXN0Lm50aChcbiAgICBzaGFwZS1mdW5jdGlvbnMudW5wYWNrLXJhZGl1cygkcmVzb2x2ZWQtcmFkaXVzKSxcbiAgICAxXG4gICk7XG4gICR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcDogY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJHRvcC1sZWZ0LXJhZGl1cyk7XG4gICR0b3AtbGVmdC1yYWRpdXMtcHg6ICR0b3AtbGVmdC1yYWRpdXM7XG4gIEBpZiAoJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgJHRvcC1sZWZ0LXJhZGl1cy1weDogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCR0b3AtbGVmdC1yYWRpdXMpO1xuICB9XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmVfX2xlYWRpbmcge1xuICAgIC8vIG1hc2sgdGhlIGxlYWRpbmcgdG8gYXBwbHkgdGhlIHRvcC1sZWZ0IGFuZCBib3R0b20tbGVmdCBjb3JuZXJzXG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgIHNoYXBlLWZ1bmN0aW9ucy5tYXNrLXJhZGl1cygkcmFkaXVzLCAxIDAgMCAxKSxcbiAgICAgICRydGwtcmVmbGV4aXZlOiB0cnVlLFxuICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRjb21wb25lbnQtaGVpZ2h0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpZiAoJHRvcC1sZWZ0LXJhZGl1cy1weCA+IHZhcmlhYmxlcy4kbGVhZGluZy13aWR0aCkge1xuICAgICAgICAvLyBJZiB0aGUgcmFkaXVzIGlzIGJpZ2dlciB0aGFuIHRoZSBkZWZhdWx0IGxlYWRpbmcgd2lkdGgsIHdlIG5lZWQgdG9cbiAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGxlYWRpbmcgd2lkdGhcbiAgICAgICAgd2lkdGg6ICR0b3AtbGVmdC1yYWRpdXMtcHg7XG4gICAgICAgIEBpZiAoJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgICAgICAgLy8gVGhlIHJhZGl1cyBtYXkgYmUgYSBjdXN0b20gcHJvcGVydHksIGluIHdoaWNoIGNhc2UgdGhlIGFib3ZlIHdpZHRoXG4gICAgICAgICAgLy8gaXMgdGhlIElFMTEgZmFsbGJhY2sgdmFsdWUuXG4gICAgICAgICAgLyogQGFsdGVybmF0ZSAqL1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgICAgIC8vIElmIHRoZSB0b3AtbGVmdCByYWRpdXMgaXMgZHluYW1pYywgdGhlIHdpZHRoIG9mIHRoZSBsZWFkaW5nIGlzXG4gICAgICAgIC8vIHRoZSBtYXggb2Ygd2hpY2hldmVyIGlzIGxhcmdlcjogdGhlIGRlZmF1bHQgbGVhZGluZyB3aWR0aCBvciB0aGVcbiAgICAgICAgLy8gdmFsdWUgb2YgdGhlIGN1c3RvbSBwcm9wZXJ0eS5cbiAgICAgICAgJHZhcjogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlLXZhcigkdG9wLWxlZnQtcmFkaXVzKTtcbiAgICAgICAgLy8gSW50ZXJwb2xhdGlvbiBpcyBhIHdvcmthcm91bmQgZm9yIHNhc3Mvc2FzcyMzMjU5LlxuICAgICAgICBAc3VwcG9ydHMgKHRvcDogbWF4KCN7MCV9KSkge1xuICAgICAgICAgIHdpZHRoOiBtYXgoI3t2YXJpYWJsZXMuJGxlYWRpbmctd2lkdGh9LCAjeyR2YXJ9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNpbWlsYXIgdG8gYWJvdmUsIGFkanVzdCB0aGUgbWF4LXdpZHRoIG9mIHRoZSBub3RjaCBpZiB3ZSBhZGp1c3RlZCB0aGVcbiAgLy8gbGVhZGluZydzIHdpZHRoLlxuICAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaWYgKCR0b3AtbGVmdC1yYWRpdXMtcHggPiB2YXJpYWJsZXMuJGxlYWRpbmctd2lkdGgpIHtcbiAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAjeyR0b3AtbGVmdC1yYWRpdXMtcHh9ICogMik7XG4gICAgICAgIEBpZiAoJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgICAgICAgLyogQGFsdGVybmF0ZSAqL1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgICAgICR2YXI6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZS12YXIoJHRvcC1sZWZ0LXJhZGl1cyk7XG4gICAgICAgIC8vIEludGVycG9sYXRpb24gaXMgYSB3b3JrYXJvdW5kIGZvciBzYXNzL3Nhc3MjMzI1OS5cbiAgICAgICAgQHN1cHBvcnRzICh0b3A6IG1heCgjezAlfSkpIHtcbiAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIG1heCgje3ZhcmlhYmxlcy4kbGVhZGluZy13aWR0aH0sICN7JHZhcn0pICogMik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLW5vdGNoZWQtb3V0bGluZV9fdHJhaWxpbmcge1xuICAgIC8vIG1hc2sgdGhlIGxlYWRpbmcgdG8gYXBwbHkgdGhlIHRvcC1yaWdodCBhbmQgYm90dG9tLXJpZ2h0IGNvcm5lcnNcbiAgICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICAgc2hhcGUtZnVuY3Rpb25zLm1hc2stcmFkaXVzKCRyYWRpdXMsIDAgMSAxIDApLFxuICAgICAgJHJ0bC1yZWZsZXhpdmU6IHRydWUsXG4gICAgICAkY29tcG9uZW50LWhlaWdodDogJGNvbXBvbmVudC1oZWlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIGZsb2F0aW5nLWxhYmVsLWZsb2F0LXBvc2l0aW9uKFxuICAkcG9zaXRpb25ZLFxuICAkcG9zaXRpb25YOiAwJSxcbiAgJHNjYWxlOiAwLjc1LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuZmxvYXQtcG9zaXRpb24oXG4gICAgJHBvc2l0aW9uWSArIHZhcmlhYmxlcy4kbGFiZWwtYWRqdXN0LFxuICAgICRwb3NpdGlvblgsXG4gICAgMSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZm9udC1zaXplOiAoJHNjYWxlICogMXJlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVHdvIHNlbGVjdG9ycyB0byBlbnN1cmUgd2Ugc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBjbGFzcyB3aGVuIGFwcGxpZWQgZnJvbSB0aGlzIGNvbXBvbmVudCBvciBhIHBhcmVudCBjb21wb25lbnQuXG4gICYubWRjLW5vdGNoZWQtb3V0bGluZS0tdXBncmFkZWQsXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lLS11cGdyYWRlZCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmZsb2F0LXBvc2l0aW9uKFxuICAgICAgJHBvc2l0aW9uWSxcbiAgICAgICRwb3NpdGlvblgsXG4gICAgICAkc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgZmxvYXRpbmcgbGFiZWwgcG9zaXRpb24gaW4gbm90Y2hlZCBvdXRsaW5lIHdoZW4gbGFiZWwgaXMgYWZsb2F0LlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwb3NpdGlvblkgQWJzb2x1dGUgWS1heGlzIHBvc2l0aW9uIGluIGBweGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwb3NpdGlvblggQWJzb2x1dGUgWC1heGlzIHBvc2l0aW9uIGluIGBweGAuIERlZmF1bHRzIHRvIGAwYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNjYWxlIERlZmF1bHRzIHRvIGAuNzVgLlxuLy8vXG4vLy8gQHRvZG8gUmVwbGFjZSBtaXhpbiBgbWRjLW5vdGNoZWQtb3V0bGluZS1mbG9hdGluZy1sYWJlbC1mbG9hdC1wb3NpdGlvbmAgd2l0aCB0aGlzIG1peGluIHdoZW4gZmxvYXRpbmcgbGFiZWwgaXNcbi8vLyAgICAgY2VudGVyIGFsaWduZWQgaW4gYWxsIHRoZSBwbGFjZXMuXG4vLy9cbkBtaXhpbiBmbG9hdGluZy1sYWJlbC1mbG9hdC1wb3NpdGlvbi1hYnNvbHV0ZShcbiAgJHBvc2l0aW9uWSxcbiAgJHBvc2l0aW9uWDogMCxcbiAgJHNjYWxlOiAwLjc1LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuZmxvYXQtcG9zaXRpb24oXG4gICAgJHBvc2l0aW9uWSArIHZhcmlhYmxlcy4kbGFiZWwtYWRqdXN0LWFic29sdXRlLFxuICAgICRwb3NpdGlvblgsXG4gICAgMSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZm9udC1zaXplOiAoJHNjYWxlICogMXJlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVHdvIHNlbGVjdG9ycyB0byBlbnN1cmUgd2Ugc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBjbGFzcyB3aGVuIGFwcGxpZWQgZnJvbSB0aGlzIGNvbXBvbmVudCBvciBhIHBhcmVudCBjb21wb25lbnQuXG4gICYubWRjLW5vdGNoZWQtb3V0bGluZS0tdXBncmFkZWQsXG4gIC5tZGMtbm90Y2hlZC1vdXRsaW5lLS11cGdyYWRlZCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmZsb2F0LXBvc2l0aW9uKFxuICAgICAgJHBvc2l0aW9uWSxcbiAgICAgICRwb3NpdGlvblgsXG4gICAgICAkc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIG1heC13aWR0aCBmb3IgdGhlIG5vdGNoXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heC13aWR0aCBNYXgtd2lkdGggZm9yIHRoZSBub3RjaFxuLy8vXG5AbWl4aW4gbm90Y2gtbWF4LXdpZHRoKCRtYXgtd2lkdGgsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICA6bm90KC5tZGMtbm90Y2hlZC1vdXRsaW5lLS1ub3RjaGVkKSAubWRjLW5vdGNoZWQtb3V0bGluZV9fbm90Y2gge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgfVxuICB9XG59XG5cbi8vXG4vLyBQcml2YXRlXG4vL1xuQG1peGluIGJhc2VfKCRxdWVyeSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDE4IEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggY29uc3RhbnRzLm51bWJlcnMuTUlOX0xFQURJTkdfU1RST0tFX0VER0VfUE9TSVRJT05cbiRtaW4tbGVhZGluZy1zdHJva2UtZWRnZS1wb3NpdGlvbjogMTJweCAhZGVmYXVsdDtcbi8vIFRoZSBnYXAgYmV0d2VlbiB0aGUgc3Ryb2tlIGVuZCBhbmQgZmxvYXRpbmcgbGFiZWxcbi8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggY29uc3RhbnRzLm51bWJlcnMuTk9UQ0hfR1VUVEVSX1NJWkVcbiRub3RjaC1ndXR0ZXItc2l6ZTogNHB4ICFkZWZhdWx0O1xuJGJvcmRlci13aWR0aDogMXB4ICFkZWZhdWx0O1xuJGxlYWRpbmctd2lkdGg6IDEycHggIWRlZmF1bHQ7XG4kcGFkZGluZzogNHB4ICFkZWZhdWx0O1xuLy8gVGhpcyB2YXJpYWJsZSBrZWVwcyB0aGUgYmVmb3JlL2FmdGVyIEpTIGxhYmVsIGNlbnRlcmVkIGluIHRoZSBub3RjaCB3aGVuIHRoZSBmb250LXNpemUgaXMgY2hhbmdlZC5cbiRsYWJlbC1hZGp1c3Q6IDE0JSAhZGVmYXVsdDtcblxuLy8vIExhYmVsIGJveCBoZWlnaHQgd2hlbiBpdCBpcyBmbG9hdGluZyBhYm92ZSBmb3Igbm90Y2hlZCB1cGdyYWRlZC4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIHB1dCB0aGUgbGFiZWwgdmVydGljYWxseSBpblxuLy8vIHRoZSBtaWRkbGUgd2hlbiBpdCBpcyBub3RjaGVkLlxuJGxhYmVsLWJveC1oZWlnaHQ6IDEzLjVweCAhZGVmYXVsdDtcblxuLy8vIExhYmVsIGFkanVzdCBvZmZzZXQgYXBwbGllZCB0byBmbG9hdGluZyBsYWJlbCB3aGVuIGl0IGlzIG5vdGNoZWQuIFNpbmNlIG5vdGNoIHdpdGhvdXQgdXBncmFkZWQgaGFzIGRpZmZlcmVudCBmb250XG4vLy8gc2l6ZSB3ZSBhZGQgYWRkaXRpb25hbCBvZmZzZXQgdmFsdWUuXG4kbGFiZWwtYWRqdXN0LWFic29sdXRlOiAyLjVweCAhZGVmYXVsdDtcbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIE5PVEU6IHRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZm9yZW1lbnRpb25lZCBjbGFzc2VzLlxuXG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ0BtYXRlcmlhbC90b2tlbnMvcmVzb2x2ZXJzJztcbkB1c2UgJ0BtYXRlcmlhbC9kZW5zaXR5L2Z1bmN0aW9ucycgYXMgZGVuc2l0eS1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS92YXJpYWJsZXMnIGFzIGRlbnNpdHktdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL2VsZXZhdGlvbi9lbGV2YXRpb24tdGhlbWUnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC9taXhpbnMnIGFzIGZsb2F0aW5nLWxhYmVsLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC92YXJpYWJsZXMnIGFzIGZsb2F0aW5nLWxhYmVsLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC9saW5lLXJpcHBsZS9taXhpbnMnIGFzIGxpbmUtcmlwcGxlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9saXN0L21peGlucycgYXMgbGlzdC1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbGlzdC9ldm9sdXRpb24tbWl4aW5zJyBhcyBsaXN0LWV2b2x1dGlvbi1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbWVudS1zdXJmYWNlL21peGlucycgYXMgbWVudS1zdXJmYWNlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9ub3RjaGVkLW91dGxpbmUvbWl4aW5zJyBhcyBub3RjaGVkLW91dGxpbmUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS92YXJpYWJsZXMnIGFzIG5vdGNoZWQtb3V0bGluZS12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvZnVuY3Rpb25zJyBhcyBzaGFwZS1mdW5jdGlvbnM7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL2dzcyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvbWl4aW5zJyBhcyB0aGVtZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvc3RhdGUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS92YXJpYWJsZXMnIGFzIHRoZW1lLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L21peGlucycgYXMgdHlwb2dyYXBoeS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4vc2VsZWN0LWljb24tdGhlbWUnO1xuQHVzZSAnLi9zZWxlY3QtaGVscGVyLXRleHQtdGhlbWUnO1xuXG4kcmlwcGxlLXRhcmdldDogJy5tZGMtc2VsZWN0X19yaXBwbGUnO1xuXG5AZnVuY3Rpb24gZ2V0LW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkoJHNlbGVjdC1hbmNob3ItaGVpZ2h0KSB7XG4gIEByZXR1cm4gbWF0aC5kaXYoJHNlbGVjdC1hbmNob3ItaGVpZ2h0LCAyKSArXG4gICAgbWF0aC5kaXYobm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGFiZWwtYm94LWhlaWdodCwgMik7XG59XG5cbiRhcnJvdy1wYWRkaW5nOiA1MnB4ICFkZWZhdWx0O1xuJGxhYmVsLXBhZGRpbmc6IDE2cHggIWRlZmF1bHQ7XG4kaGVpZ2h0OiA1NnB4ICFkZWZhdWx0O1xuJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWw6IDUycHggIWRlZmF1bHQ7XG4kZmlsbGVkLWJhc2VsaW5lLXRvcDogNDBweCAhZGVmYXVsdDtcbiRzZWxlY3RlZC10ZXh0LWhlaWdodDogMjhweCAhZGVmYXVsdDtcbiRhbmNob3ItcGFkZGluZy1sZWZ0OiAxNnB4ICFkZWZhdWx0O1xuJGFuY2hvci1wYWRkaW5nLWxlZnQtd2l0aC1sZWFkaW5nLWljb246IDAgIWRlZmF1bHQ7XG4kYW5jaG9yLXBhZGRpbmctcmlnaHQ6IDAgIWRlZmF1bHQ7XG4kb3V0bGluZWQtc3Ryb2tlLXdpZHRoOiAycHggIWRlZmF1bHQ7XG4kZGVmYXVsdC13aWR0aDogMjAwcHggIWRlZmF1bHQ7XG4kc2hhcGUtcmFkaXVzOiBzbWFsbCAhZGVmYXVsdDtcblxuJG1pbmltdW0taGVpZ2h0OiA0MHB4ICFkZWZhdWx0O1xuJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWw6IDUycHggIWRlZmF1bHQ7XG4kbWF4aW11bS1oZWlnaHQ6ICRoZWlnaHQgIWRlZmF1bHQ7XG4kZGVuc2l0eS1zY2FsZTogZGVuc2l0eS12YXJpYWJsZXMuJGRlZmF1bHQtc2NhbGUgIWRlZmF1bHQ7XG4kZGVuc2l0eS1jb25maWc6IChcbiAgaGVpZ2h0OiAoXG4gICAgZGVmYXVsdDogJGhlaWdodCxcbiAgICBtYXhpbXVtOiAkbWF4aW11bS1oZWlnaHQsXG4gICAgbWluaW11bTogJG1pbmltdW0taGVpZ2h0LFxuICApLFxuKSAhZGVmYXVsdDtcblxuJGluay1jb2xvcjogcmdiYSh0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC44NykgIWRlZmF1bHQ7XG4kZHJvcGRvd24taWNvbi1jb2xvcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuNTRcbikgIWRlZmF1bHQ7XG4kbGFiZWwtY29sb3I6IHJnYmEodGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNikgIWRlZmF1bHQ7XG4kZm9jdXNlZC1sYWJlbC1jb2xvcjogcmdiYSh0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShwcmltYXJ5KSwgMC44NykgIWRlZmF1bHQ7XG4kYm90dG9tLWxpbmUtaWRsZS1jb2xvcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuNDJcbikgIWRlZmF1bHQ7XG4kYm90dG9tLWxpbmUtaG92ZXItY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjg3XG4pICFkZWZhdWx0O1xuXG4kZmlsbC1jb2xvcjogY29sb3IubWl4KFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUoc3VyZmFjZSksXG4gIDQlXG4pICFkZWZhdWx0O1xuXG4vLyBEaXNhYmxlZCBTdHlsZXNcbiRkaXNhYmxlZC1sYWJlbC1jb2xvcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuMzhcbikgIWRlZmF1bHQ7XG4kZGlzYWJsZWQtaW5rLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC4zOFxuKSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1maWxsLWNvbG9yOiBjb2xvci5taXgoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShzdXJmYWNlKSxcbiAgMiVcbikgIWRlZmF1bHQ7XG4kZGlzYWJsZWQtZmlsbC1ib3JkZXI6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjA2XG4pICFkZWZhdWx0O1xuJGRpc2FibGVkLWJvdHRvbS1saW5lLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC4wNlxuKSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1kcm9wZG93bi1pY29uLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC4zOFxuKSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1vdXRsaW5lLWNvbG9yOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC4wNlxuKSAhZGVmYXVsdDtcblxuJG91dGxpbmVkLWlkbGUtYm9yZGVyOiByZ2JhKFxuICB0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgMC4zOFxuKSAhZGVmYXVsdDtcbiRvdXRsaW5lZC1ob3Zlci1ib3JkZXI6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjg3XG4pICFkZWZhdWx0O1xuXG4kbGFiZWwtcG9zaXRpb24teTogMTA2JSAhZGVmYXVsdDtcbiRvdXRsaW5lLWxhYmVsLW9mZnNldDogMTZweCAhZGVmYXVsdDtcbiRvdXRsaW5lZC1sYWJlbC1wb3NpdGlvbi15OiBnZXQtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSgkaGVpZ2h0KSAhZGVmYXVsdDtcbiRvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1sYWJlbC1wb3NpdGlvbi14OiAzMnB4ICFkZWZhdWx0O1xuXG4kZHJvcGRvd24tdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXMgIWRlZmF1bHQ7XG4vLyBUcmFuc2l0aW9uIGR1cmFydGlvbnMgdG8gYWN0aXZlIHN0YXRlXG4kaWNvbi1hY3RpdmUtZmFkZS1vdXQtZHVyYXRpb246IDAuMzMgKiAkZHJvcGRvd24tdHJhbnNpdGlvbi1kdXJhdGlvbiAhZGVmYXVsdDtcbiRpY29uLWFjdGl2ZS1mYWRlLWluLWR1cmF0aW9uOiAwLjY3ICogJGRyb3Bkb3duLXRyYW5zaXRpb24tZHVyYXRpb24gIWRlZmF1bHQ7XG4vLyBUcmFuc2l0aW9uIGR1cmFydGlvbnMgdG8gaW5hY3RpdmUgc3RhdGVcbiRpY29uLWluYWN0aXZlLWZhZGUtb3V0LWR1cmF0aW9uOiAwLjUgKiAkZHJvcGRvd24tdHJhbnNpdGlvbi1kdXJhdGlvbiAhZGVmYXVsdDtcbiRpY29uLWluYWN0aXZlLWZhZGUtaW4tZHVyYXRpb246IDAuNSAqICRkcm9wZG93bi10cmFuc2l0aW9uLWR1cmF0aW9uICFkZWZhdWx0O1xuXG4vLyBFcnJvciBjb2xvcnNcbiRlcnJvci1jb2xvcjogZXJyb3IgIWRlZmF1bHQ7XG5cbiRfbGlnaHQtdGhlbWU6IChcbiAgLy8gSW1wbGVtZW50IGBtZW51LWNhc2NhZGluZy1tZW51LWluZGljYXRvci1pY29uLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGBtZW51LWNhc2NhZGluZy1tZW51LWluZGljYXRvci1pY29uLXNpemVgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYG1lbnUtY29udGFpbmVyLXN1cmZhY2UtdGludC1sYXllci1jb2xvcmAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC1kaXNhYmxlZC10cmFpbGluZy1pY29uLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWhvdmVyLXRyYWlsaW5nLWljb24tY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtZm9jdXMtdHJhaWxpbmctaWNvbi1jb2xvcmAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC1lcnJvci10cmFpbGluZy1pY29uLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLXRyYWlsaW5nLWljb24tY29sb3JgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICAvLyBJbXBsZW1lbnQgYHRleHQtZmllbGQtZXJyb3ItZm9jdXMtdHJhaWxpbmctaWNvbi1jb2xvcmAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC10cmFpbGluZy1pY29uLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLXRyYWlsaW5nLWljb24tc2l6ZWAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1zdGF0ZS1sYXllci1jb2xvcmAgd2hlbiBzZWxlY3Qgc3VwcG9ydHMuXG4gIC8vIEltcGxlbWVudCBgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1zdGF0ZS1sYXllci1vcGFjaXR5YCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWhvdmVyLXN0YXRlLWxheWVyLWNvbG9yYCB3aGVuIHNlbGVjdCBzdXBwb3J0cy5cbiAgLy8gSW1wbGVtZW50IGB0ZXh0LWZpZWxkLWhvdmVyLXN0YXRlLWxheWVyLW9wYWNpdHlgIHdoZW4gc2VsZWN0IHN1cHBvcnRzLlxuICBtZW51LWNvbnRhaW5lci1jb2xvcjogbnVsbCxcbiAgbWVudS1jb250YWluZXItZWxldmF0aW9uOiBudWxsLFxuICBtZW51LWNvbnRhaW5lci1zaGFkb3ctY29sb3I6IG51bGwsXG4gIG1lbnUtY29udGFpbmVyLXNoYXBlOiBudWxsLFxuICBtZW51LWRpdmlkZXItY29sb3I6IG51bGwsXG4gIG1lbnUtZGl2aWRlci1oZWlnaHQ6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLWNvbnRhaW5lci1oZWlnaHQ6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtY29sb3I6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtZm9udDogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC1saW5lLWhlaWdodDogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC1zaXplOiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXRyYWNraW5nOiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXdlaWdodDogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0tc2VsZWN0ZWQtY29udGFpbmVyLWNvbG9yOiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIG1lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1zaXplOiBudWxsLFxuICBtZW51LWxpc3QtaXRlbS13aXRoLXRyYWlsaW5nLWljb24tdHJhaWxpbmctaWNvbi1jb2xvcjogbnVsbCxcbiAgbWVudS1saXN0LWl0ZW0td2l0aC10cmFpbGluZy1pY29uLXRyYWlsaW5nLWljb24tc2l6ZTogbnVsbCxcbiAgdGV4dC1maWVsZC1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWFjdGl2ZS1pbmRpY2F0b3ItaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWNhcmV0LWNvbG9yOiBudWxsLFxuICAvLyBUb2tlbiBrZXkgYHRleHQtZmllbGQtaG92ZXItY2FyZXQtY29sb3JgIG5vdCBhdmFpbGFibGUgb24gRFNEQi5cbiAgdGV4dC1maWVsZC1ob3Zlci1jYXJldC1jb2xvcjogbnVsbCxcbiAgLy8gVG9rZW4ga2V5IGB0ZXh0LWZpZWxkLWZvY3VzLWNhcmV0LWNvbG9yYCBub3QgYXZhaWxhYmxlIG9uIERTREIuXG4gIHRleHQtZmllbGQtZm9jdXMtY2FyZXQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtY29udGFpbmVyLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWNvbnRhaW5lci1oZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtY29udGFpbmVyLXNoYXBlOiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtYWN0aXZlLWluZGljYXRvci1oZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtYWN0aXZlLWluZGljYXRvci1vcGFjaXR5OiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWNvbnRhaW5lci1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1jb250YWluZXItb3BhY2l0eTogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1pbnB1dC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWlucHV0LXRleHQtb3BhY2l0eTogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1sYWJlbC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWRpc2FibGVkLWxhYmVsLXRleHQtb3BhY2l0eTogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtbGVhZGluZy1pY29uLW9wYWNpdHk6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1vdXRsaW5lLW9wYWNpdHk6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtb3V0bGluZS13aWR0aDogbnVsbCxcbiAgdGV4dC1maWVsZC1kaXNhYmxlZC1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtc3VwcG9ydGluZy10ZXh0LW9wYWNpdHk6IG51bGwsXG4gIHRleHQtZmllbGQtZGlzYWJsZWQtdHJhaWxpbmctaWNvbi1vcGFjaXR5OiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtYWN0aXZlLWluZGljYXRvci1jb2xvcjogbnVsbCxcbiAgLy8gVG9rZW4ga2V5IGB0ZXh0LWZpZWxkLWVycm9yLWNhcmV0LWNvbG9yYCBub3QgYXZhaWxhYmxlIG9uIERTREIuXG4gIHRleHQtZmllbGQtZXJyb3ItY2FyZXQtY29sb3I6IG51bGwsXG4gIC8vIFRva2VuIGtleSBgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1jYXJldC1jb2xvcmAgbm90IGF2YWlsYWJsZSBvbiBEU0RCLlxuICB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWNhcmV0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWNhcmV0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWlucHV0LXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItZm9jdXMtb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItaG92ZXItYWN0aXZlLWluZGljYXRvci1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1pbnB1dC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWxhYmVsLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItaG92ZXItbGVhZGluZy1pY29uLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLW91dGxpbmUtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItaG92ZXItc3VwcG9ydGluZy10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWVycm9yLWlucHV0LXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3ItbGFiZWwtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1sZWFkaW5nLWljb24tY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZXJyb3Itb3V0bGluZS1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1lcnJvci1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZm9jdXMtYWN0aXZlLWluZGljYXRvci1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1mb2N1cy1hY3RpdmUtaW5kaWNhdG9yLWhlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1mb2N1cy1pbnB1dC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWZvY3VzLWxhYmVsLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZm9jdXMtbGVhZGluZy1pY29uLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWZvY3VzLW91dGxpbmUtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtZm9jdXMtb3V0bGluZS13aWR0aDogbnVsbCxcbiAgdGV4dC1maWVsZC1mb2N1cy1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtaG92ZXItYWN0aXZlLWluZGljYXRvci1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1ob3Zlci1hY3RpdmUtaW5kaWNhdG9yLWhlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1ob3Zlci1pbnB1dC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWhvdmVyLWxhYmVsLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtaG92ZXItbGVhZGluZy1pY29uLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWhvdmVyLW91dGxpbmUtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtaG92ZXItb3V0bGluZS13aWR0aDogbnVsbCxcbiAgdGV4dC1maWVsZC1ob3Zlci1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtaW5wdXQtdGV4dC1jb2xvcjogbnVsbCxcbiAgdGV4dC1maWVsZC1pbnB1dC10ZXh0LWZvbnQ6IG51bGwsXG4gIHRleHQtZmllbGQtaW5wdXQtdGV4dC1saW5lLWhlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1pbnB1dC10ZXh0LXNpemU6IG51bGwsXG4gIHRleHQtZmllbGQtaW5wdXQtdGV4dC10cmFja2luZzogbnVsbCxcbiAgdGV4dC1maWVsZC1pbnB1dC10ZXh0LXdlaWdodDogbnVsbCxcbiAgdGV4dC1maWVsZC1sYWJlbC10ZXh0LWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtZm9udDogbnVsbCxcbiAgdGV4dC1maWVsZC1sYWJlbC10ZXh0LWxpbmUtaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtcG9wdWxhdGVkLWxpbmUtaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtcG9wdWxhdGVkLXNpemU6IG51bGwsXG4gIHRleHQtZmllbGQtbGFiZWwtdGV4dC1zaXplOiBudWxsLFxuICB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtdHJhY2tpbmc6IG51bGwsXG4gIHRleHQtZmllbGQtbGFiZWwtdGV4dC13ZWlnaHQ6IG51bGwsXG4gIHRleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yOiBudWxsLFxuICB0ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1zaXplOiBudWxsLFxuICB0ZXh0LWZpZWxkLW91dGxpbmUtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtb3V0bGluZS13aWR0aDogbnVsbCxcbiAgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtY29sb3I6IG51bGwsXG4gIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LWZvbnQ6IG51bGwsXG4gIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LWxpbmUtaGVpZ2h0OiBudWxsLFxuICB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC1zaXplOiBudWxsLFxuICB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC10cmFja2luZzogbnVsbCxcbiAgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtd2VpZ2h0OiBudWxsXG4pO1xuXG5AbWl4aW4gdGhlbWUtc3R5bGVzKCR0aGVtZSwgJHJlc29sdmVyczogcmVzb2x2ZXJzLiRtYXRlcmlhbCkge1xuICBAaW5jbHVkZSB0aGVtZS52YWxpZGF0ZS10aGVtZS1rZXlzKCRfbGlnaHQtdGhlbWUsICR0aGVtZSk7XG5cbiAgQGluY2x1ZGUgY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtY29udGFpbmVyLWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1kaXNhYmxlZC1jb250YWluZXItY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgb3V0bGluZS1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1vdXRsaW5lLWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1ob3Zlci1vdXRsaW5lLWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1mb2N1cy1vdXRsaW5lLWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1kaXNhYmxlZC1vdXRsaW5lLWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF9lcnJvci1vdXRsaW5lLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLW91dGxpbmUtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLW91dGxpbmUtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLW91dGxpbmUtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgb3V0bGluZS13aWR0aChcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1vdXRsaW5lLXdpZHRoKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1ob3Zlci1vdXRsaW5lLXdpZHRoKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1mb2N1cy1vdXRsaW5lLXdpZHRoKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF9tZW51LWNvbnRhaW5lci1jb2xvcihtYXAuZ2V0KCR0aGVtZSwgbWVudS1jb250YWluZXItY29sb3IpKTtcbiAgQGluY2x1ZGUgX21lbnUtY29udGFpbmVyLWVsZXZhdGlvbihcbiAgICBtYXAuZ2V0KCRyZXNvbHZlcnMsIGVsZXZhdGlvbiksXG4gICAgJHNoYWRvdy1jb2xvcjogbWFwLmdldCgkdGhlbWUsIG1lbnUtY29udGFpbmVyLXNoYWRvdy1jb2xvciksXG4gICAgJGVsZXZhdGlvbjogbWFwLmdldCgkdGhlbWUsIG1lbnUtY29udGFpbmVyLWVsZXZhdGlvbilcbiAgKTtcbiAgQGluY2x1ZGUgX21lbnUtY29udGFpbmVyLXNoYXBlKG1hcC5nZXQoJHRoZW1lLCBtZW51LWNvbnRhaW5lci1zaGFwZSkpO1xuICBAaW5jbHVkZSBfbWVudS1kaXZpZGVyLWNvbG9yKG1hcC5nZXQoJHRoZW1lLCBtZW51LWRpdmlkZXItY29sb3IpKTtcbiAgQGluY2x1ZGUgX21lbnUtZGl2aWRlci1oZWlnaHQobWFwLmdldCgkdGhlbWUsIG1lbnUtZGl2aWRlci1oZWlnaHQpKTtcbiAgQGluY2x1ZGUgX21lbnUtbGlzdC1pdGVtLWNvbnRhaW5lci1oZWlnaHQoXG4gICAgbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWNvbnRhaW5lci1oZWlnaHQpXG4gICk7XG4gIEBpbmNsdWRlIF9tZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LWNvbG9yKFxuICAgIG1hcC5nZXQoJHRoZW1lLCBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LWNvbG9yKVxuICApO1xuICBAaW5jbHVkZSBfbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC10eXBvZ3JhcGh5KFxuICAgIChcbiAgICAgIGZvbnQ6IG1hcC5nZXQoJHRoZW1lLCBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LWZvbnQpLFxuICAgICAgbGluZS1oZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LWxpbmUtaGVpZ2h0KSxcbiAgICAgIHNpemU6IG1hcC5nZXQoJHRoZW1lLCBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXNpemUpLFxuICAgICAgdHJhY2tpbmc6IG1hcC5nZXQoJHRoZW1lLCBtZW51LWxpc3QtaXRlbS1sYWJlbC10ZXh0LXRyYWNraW5nKSxcbiAgICAgIHdlaWdodDogbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLWxhYmVsLXRleHQtd2VpZ2h0KSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF9tZW51LWxpc3QtaXRlbS1zZWxlY3RlZC1jb250YWluZXItY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLXNlbGVjdGVkLWNvbnRhaW5lci1jb2xvcilcbiAgKTtcbiAgQGluY2x1ZGUgX21lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1jb2xvcihcbiAgICBtYXAuZ2V0KCR0aGVtZSwgbWVudS1saXN0LWl0ZW0td2l0aC1sZWFkaW5nLWljb24tbGVhZGluZy1pY29uLWNvbG9yKVxuICApO1xuICBAaW5jbHVkZSBfbWVudS1saXN0LWl0ZW0td2l0aC1sZWFkaW5nLWljb24tbGVhZGluZy1pY29uLXNpemUoXG4gICAgbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLXdpdGgtbGVhZGluZy1pY29uLWxlYWRpbmctaWNvbi1zaXplKVxuICApO1xuICAvLyBUT0RPOiBDcmVhdGUgbmV3IG1peGluIGZvciB0cmFpbGluZyBpY29uIHRoZW1pbmcgd2hlbiBzZWxlY3Qgc3VwcG9ydHMgaXQuXG4gIEBpbmNsdWRlIF9tZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tY29sb3IoXG4gICAgbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLXdpdGgtdHJhaWxpbmctaWNvbi10cmFpbGluZy1pY29uLWNvbG9yKVxuICApO1xuICBAaW5jbHVkZSBfbWVudS1saXN0LWl0ZW0td2l0aC1sZWFkaW5nLWljb24tbGVhZGluZy1pY29uLXNpemUoXG4gICAgbWFwLmdldCgkdGhlbWUsIG1lbnUtbGlzdC1pdGVtLXdpdGgtdHJhaWxpbmctaWNvbi10cmFpbGluZy1pY29uLXNpemUpXG4gICk7XG4gIEBpbmNsdWRlIGJvdHRvbS1saW5lLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWhvdmVyLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWZvY3VzLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWRpc2FibGVkLWluZGljYXRvci1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfdGV4dC1maWVsZC1lcnJvci1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWZvY3VzLWFjdGl2ZS1pbmRpY2F0b3ItY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtYWN0aXZlLWluZGljYXRvci1oZWlnaHQoXG4gICAgbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtYWN0aXZlLWluZGljYXRvci1oZWlnaHQpXG4gICk7XG4gIEBpbmNsdWRlIF90ZXh0LWZpZWxkLWNhcmV0LWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWNhcmV0LWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1ob3Zlci1jYXJldC1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZm9jdXMtY2FyZXQtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtZXJyb3ItY2FyZXQtY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItY2FyZXQtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWhvdmVyLWNhcmV0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1jYXJldC1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBpbmstY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaW5wdXQtdGV4dC1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaG92ZXItaW5wdXQtdGV4dC1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZm9jdXMtaW5wdXQtdGV4dC1jb2xvciksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZGlzYWJsZWQtaW5wdXQtdGV4dC1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfZXJyb3ItaW5wdXQtdGV4dC1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1pbnB1dC10ZXh0LWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIGxhYmVsLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWhvdmVyLWxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgZm9jdXM6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWZvY3VzLWxhYmVsLXRleHQtY29sb3IpLFxuICAgICAgZGlzYWJsZWQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWRpc2FibGVkLWxhYmVsLXRleHQtY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgbGFiZWwtZmxvYXRpbmctY29sb3IoXG4gICAgKFxuICAgICAgZGVmYXVsdDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaG92ZXItbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZm9jdXMtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZGlzYWJsZWQtbGFiZWwtdGV4dC1jb2xvciksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfZXJyb3ItbGFiZWwtdGV4dC1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGhvdmVyOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1ob3Zlci1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1sYWJlbC10ZXh0LWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF90ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvcihcbiAgICAoXG4gICAgICBkZWZhdWx0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IpLFxuICAgICAgaG92ZXI6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWhvdmVyLWxlYWRpbmctaWNvbi1jb2xvciksXG4gICAgICBmb2N1czogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZm9jdXMtbGVhZGluZy1pY29uLWNvbG9yKSxcbiAgICAgIGRpc2FibGVkOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1kaXNhYmxlZC1sZWFkaW5nLWljb24tY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX2Vycm9yLXRleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLWxlYWRpbmctaWNvbi1jb2xvciksXG4gICAgICBob3ZlcjogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZXJyb3ItaG92ZXItbGVhZGluZy1pY29uLWNvbG9yKSxcbiAgICAgIGZvY3VzOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1lcnJvci1mb2N1cy1sZWFkaW5nLWljb24tY29sb3IpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgc2VsZWN0LWhlbHBlci10ZXh0LXRoZW1lLmhlbHBlci10ZXh0LWNvbG9yKFxuICAgIChcbiAgICAgIGRlZmF1bHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC1jb2xvciksXG4gICAgICBkaXNhYmxlZDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtZGlzYWJsZWQtc3VwcG9ydGluZy10ZXh0LWNvbG9yKSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIHNlbGVjdC1oZWxwZXItdGV4dC10aGVtZS5oZWxwZXItdGV4dC12YWxpZGF0aW9uLWNvbG9yKFxuICAgIG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWVycm9yLXN1cHBvcnRpbmctdGV4dC1jb2xvcilcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtaW5wdXQtdGV4dC10eXBvZ3JhcGh5KFxuICAgIChcbiAgICAgIGZvbnQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWlucHV0LXRleHQtZm9udCksXG4gICAgICBsaW5lLWhlaWdodDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtaW5wdXQtdGV4dC1saW5lLWhlaWdodCksXG4gICAgICBzaXplOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1pbnB1dC10ZXh0LXNpemUpLFxuICAgICAgdHJhY2tpbmc6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWlucHV0LXRleHQtdHJhY2tpbmcpLFxuICAgICAgd2VpZ2h0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1pbnB1dC10ZXh0LXdlaWdodCksXG4gICAgKVxuICApO1xuICBAaW5jbHVkZSBfdGV4dC1maWVsZC1sYWJlbC10ZXh0LXR5cG9ncmFwaHkoXG4gICAgKFxuICAgICAgZm9udDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC1mb250KSxcbiAgICAgIGxpbmUtaGVpZ2h0OiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1sYWJlbC10ZXh0LWxpbmUtaGVpZ2h0KSxcbiAgICAgIHNpemU6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtc2l6ZSksXG4gICAgICB0cmFja2luZzogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtbGFiZWwtdGV4dC10cmFja2luZyksXG4gICAgICB3ZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtd2VpZ2h0KSxcbiAgICApXG4gICk7XG4gIEBpbmNsdWRlIF90ZXh0LWZpZWxkLWxhYmVsLXRleHQtcG9wdWxhdGVkLXR5cG9ncmFwaHkoXG4gICAgKFxuICAgICAgbGluZS1oZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtcG9wdWxhdGVkLWxpbmUtaGVpZ2h0KSxcbiAgICAgIHNpemU6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLWxhYmVsLXRleHQtcG9wdWxhdGVkLXNpemUpLFxuICAgIClcbiAgKTtcbiAgQGluY2x1ZGUgX3RleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LXR5cG9ncmFwaHkoXG4gICAgKFxuICAgICAgZm9udDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LWZvbnQpLFxuICAgICAgbGluZS1oZWlnaHQ6IG1hcC5nZXQoJHRoZW1lLCB0ZXh0LWZpZWxkLXN1cHBvcnRpbmctdGV4dC1saW5lLWhlaWdodCksXG4gICAgICBzaXplOiBtYXAuZ2V0KCR0aGVtZSwgdGV4dC1maWVsZC1zdXBwb3J0aW5nLXRleHQtc2l6ZSksXG4gICAgICB0cmFja2luZzogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LXRyYWNraW5nKSxcbiAgICAgIHdlaWdodDogbWFwLmdldCgkdGhlbWUsIHRleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LXdlaWdodCksXG4gICAgKVxuICApO1xufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtc3VwcG9ydGluZy10ZXh0LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHktdGhlbWUpIHtcbiAgJiArIC5tZGMtc2VsZWN0LWhlbHBlci10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRoZW1lLXN0eWxlcygkdHlwb2dyYXBoeS10aGVtZSk7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0LWZpZWxkLWlucHV0LXRleHQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS10aGVtZSkge1xuICAubWRjLXNlbGVjdF9fc2VsZWN0ZWQtdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50aGVtZS1zdHlsZXMoJHR5cG9ncmFwaHktdGhlbWUpO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dC1maWVsZC1sYWJlbC10ZXh0LXBvcHVsYXRlZC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LXRoZW1lKSB7XG4gIC5tZGMtZmxvYXRpbmctbGFiZWwtLWZsb2F0LWFib3ZlLFxuICAvLyBVc2VkIGZvciBDU1Mgc3BlY2lmaWNpdHkgdG8gbWF0Y2ggd2l0aCBzZWxlY3RvciB1c2VkIGluIGBvdXRsaW5lZC1oZWlnaHQoKWAuXG4gICYubWRjLXNlbGVjdC0td2l0aC1sZWFkaW5nLWljb24gLm1kYy1zZWxlY3RfX2FuY2hvciAubWRjLW5vdGNoZWQtb3V0bGluZSAubWRjLWZsb2F0aW5nLWxhYmVsLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGhlbWUtc3R5bGVzKCR0eXBvZ3JhcGh5LXRoZW1lKTtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtbGFiZWwtdGV4dC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LXRoZW1lKSB7XG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGhlbWUtc3R5bGVzKCR0eXBvZ3JhcGh5LXRoZW1lKTtcbiAgfVxufVxuXG5AbWl4aW4gX2Vycm9yLW91dGxpbmUtY29sb3IoJGNvbG9yKSB7XG4gICYubWRjLXNlbGVjdC0taW52YWxpZCB7XG4gICAgQGluY2x1ZGUgb3V0bGluZS1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfZXJyb3ItdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoJGNvbG9yKSB7XG4gICYubWRjLXNlbGVjdC0taW52YWxpZCB7XG4gICAgQGluY2x1ZGUgX3RleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yKCRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF90ZXh0LWZpZWxkLWxlYWRpbmctaWNvbi1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9zZXQtdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3IpXG4gICAgKTtcblxuICAgICY6bm90KC5tZGMtc2VsZWN0LS1mb2N1c2VkKTpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBfc2V0LXRleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfaWYtZm9jdXNlZCB7XG4gICAgICBAaW5jbHVkZSBfc2V0LXRleHQtZmllbGQtbGVhZGluZy1pY29uLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtZm9jdXMtc3RhdGUoJGNvbG9yKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBfaWYtZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIF9zZXQtdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yKVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIF9zZXQtdGV4dC1maWVsZC1sZWFkaW5nLWljb24tY29sb3IoJGNvbG9yKSB7XG4gIC5tZGMtc2VsZWN0X19hbmNob3IgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfZXJyb3ItbGFiZWwtdGV4dC1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBsYWJlbC1mbG9hdGluZy1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfZXJyb3ItaW5wdXQtdGV4dC1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBpbmstY29sb3IoJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtY2FyZXQtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIGRyb3Bkb3duLWljb24tY29sb3IoJGNvbG9yKTtcbn1cblxuQG1peGluIF90ZXh0LWZpZWxkLWVycm9yLWNhcmV0LWNvbG9yKCRjb2xvcikge1xuICAmLm1kYy1zZWxlY3QtLWludmFsaWQge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWljb24tY29sb3IoJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gX3RleHQtZmllbGQtZXJyb3ItYWN0aXZlLWluZGljYXRvci1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBib3R0b20tbGluZS1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfdGV4dC1maWVsZC1hY3RpdmUtaW5kaWNhdG9yLWhlaWdodCgkaGVpZ2h0KSB7XG4gIC5tZGMtbGluZS1yaXBwbGUge1xuICAgIEBpbmNsdWRlIGxpbmUtcmlwcGxlLW1peGlucy5oZWlnaHQoJGhlaWdodCk7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tY29sb3IoJGNvbG9yKSB7XG4gICY6bm90KC5tZGMtc2VsZWN0LS1kaXNhYmxlZCkgLm1kYy1zZWxlY3RfX29wdGlvbiAubWRjLXNlbGVjdF9faWNvbiB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gIH1cbn1cblxuQG1peGluIF9tZW51LWxpc3QtaXRlbS13aXRoLWxlYWRpbmctaWNvbi1sZWFkaW5nLWljb24tc2l6ZSgkc2l6ZSkge1xuICAmOm5vdCgubWRjLXNlbGVjdC0tZGlzYWJsZWQpIC5tZGMtc2VsZWN0X19vcHRpb24gLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGZvbnQtc2l6ZSwgJHNpemUpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1saXN0LWl0ZW0tc2VsZWN0ZWQtY29udGFpbmVyLWNvbG9yKCRjb2xvcikge1xuICAubWRjLXNlbGVjdF9fb3B0aW9uIHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMubGlzdC1pdGVtLXNlbGVjdGVkLWNvbnRhaW5lci1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LXRoZW1lKSB7XG4gIC5tZGMtc2VsZWN0X19vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5saXN0LXByaW1hcnktdGV4dC10eXBvZ3JhcGh5KFxuICAgICAgJHR5cG9ncmFwaHktdGhlbWVcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1saXN0LWl0ZW0tbGFiZWwtdGV4dC1jb2xvcigkY29sb3IpIHtcbiAgLm1kYy1zZWxlY3RfX29wdGlvbiB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLmxpc3QtcHJpbWFyeS10ZXh0LWluay1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1saXN0LWl0ZW0tY29udGFpbmVyLWhlaWdodCgkaGVpZ2h0KSB7XG4gIC5tZGMtc2VsZWN0X19vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5saXN0LWl0ZW0taGVpZ2h0KCRoZWlnaHQpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1kaXZpZGVyLWNvbG9yKCRjb2xvcikge1xuICAubWRjLXNlbGVjdF9fbGlzdCB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLmRpdmlkZXItY29sb3IoJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gX21lbnUtZGl2aWRlci1oZWlnaHQoJGhlaWdodCkge1xuICAubWRjLXNlbGVjdF9fbGlzdCB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLmRpdmlkZXItaGVpZ2h0KCRoZWlnaHQpO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1jb250YWluZXItY29sb3IoJGNvbG9yKSB7XG4gIC5tZGMtc2VsZWN0X19tZW51IHtcbiAgICBAaW5jbHVkZSBtZW51LXN1cmZhY2UtbWl4aW5zLmZpbGwtY29sb3IoJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gX21lbnUtY29udGFpbmVyLWVsZXZhdGlvbigkcmVzb2x2ZXIsICRzaGFkb3ctY29sb3IsICRlbGV2YXRpb24pIHtcbiAgLm1kYy1zZWxlY3RfX21lbnUge1xuICAgIEBpbmNsdWRlIGVsZXZhdGlvbi10aGVtZS53aXRoLXJlc29sdmVyKFxuICAgICAgJHJlc29sdmVyLFxuICAgICAgJGVsZXZhdGlvbjogJGVsZXZhdGlvbixcbiAgICAgICRzaGFkb3ctY29sb3I6ICRzaGFkb3ctY29sb3JcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBfbWVudS1jb250YWluZXItc2hhcGUoJHNoYXBlKSB7XG4gIC5tZGMtc2VsZWN0X19tZW51IHtcbiAgICBAaW5jbHVkZSBtZW51LXN1cmZhY2UtbWl4aW5zLnNoYXBlLXJhZGl1cygkc2hhcGUpO1xuICB9XG59XG5cbkBtaXhpbiBtZW51LWxpc3QtaXRlbS1zZWNvbmRhcnktbGFiZWwtdGV4dC1jb2xvcigkY29sb3IpIHtcbiAgLm1kYy1zZWxlY3RfX2xpc3Qge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5saXN0LXNlY29uZGFyeS10ZXh0LWluay1jb2xvcigkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBtZW51LWxpc3QtaXRlbS1zZWNvbmRhcnktbGFiZWwtdGV4dC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LXRoZW1lKSB7XG4gIC5tZGMtc2VsZWN0X19saXN0IHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMubGlzdC1zZWNvbmRhcnktdGV4dC10eXBvZ3JhcGh5KFxuICAgICAgJHR5cG9ncmFwaHktdGhlbWVcbiAgICApO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBtaW4td2lkdGggb2YgdGhlIHNlbGVjdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbi13aWR0aCAtIFRoZSBkZXNpcmVkIG1pbi13aWR0aC5cbi8vLyBAZGVwcmVjYXRlZCB1c2luZyB0aGlzIG1peGluIGlzIG5vIGxvbmdlciByZXF1aXJlZCwgYW5kIGNsaWVudHMgbWF5IHNldFxuLy8vICAgICAgICAgICAgIHRoZSBhdHRyaWJ1dGUgZGlyZWN0bHlcbkBtaXhpbiBtaW4td2lkdGgoJG1pbi13aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgbWluLXdpZHRoOiAkbWluLXdpZHRoO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBzZWxlY3QgYmVoYXZpb3IgdG8gY2hhbmdlIHdpZHRoIGR5bmFtaWNhbGx5IGJhc2VkIG9uIGNvbnRlbnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW4td2lkdGggLSBUaGUgbWluLXdpZHRoIG9mIHRoZSBzZWxlY3QsIHdoaWNoIHNob3VsZCBiZVxuLy8vICAgICBsYXJnZSBlbm91Z2ggdG8gYWxsb3cgdGhlIGxhYmVsIChpZiBleGlzdHMpIHRvIGRpc3BsYXkgaW4gZnVsbC5cbkBtaXhpbiB2YXJpYWJsZS13aWR0aCgkbWluLXdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1zZWxlY3RfX2FuY2hvciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWluLXdpZHRoOiAkbWluLXdpZHRoO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaW5rLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9pbmstY29sb3Ioc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2luay1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gY29udGFpbmVyLWZpbGwtY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfaWYtZW5hYmxlZCB7XG4gICAgQGluY2x1ZGUgX2NvbnRhaW5lci1maWxsLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICBAaW5jbHVkZSBfaWYtZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIF9jb250YWluZXItZmlsbC1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kaXNhYmxlZC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gZHJvcGRvd24taWNvbi1jb2xvcigkY29sb3Itb3ItbWFwLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIF9pZi1lbmFibGVkIHtcbiAgICBAaW5jbHVkZSBfZHJvcGRvd24taWNvbi1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgJjpub3QoLm1kYy1zZWxlY3QtLWZvY3VzZWQpOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9kcm9wZG93bi1pY29uLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9pZi1mb2N1c2VkIHtcbiAgICAgIEBpbmNsdWRlIF9kcm9wZG93bi1pY29uLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtZm9jdXMtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2Ryb3Bkb3duLWljb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIGxhYmVsLWZsb2F0aW5nLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgJjpub3QoLm1kYy1zZWxlY3QtLWZvY3VzZWQpOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJvdHRvbS1saW5lLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9ib3R0b20tbGluZS1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgLy8gYm90dG9tIGxpbmUgaW5hY3RpdmUvYWN0aXZlIGFyZSBvbiBkaWZmZXJlbnQgZWxlbWVudHMsIGRvZXMgbm90IG5lZWRcbiAgICAvLyB0byBjaGVjayBmb3IgOm5vdCgpIGZvY3VzZWRcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9ib3R0b20tbGluZS1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfZm9jdXNlZC1saW5lLXJpcHBsZS1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2JvdHRvbS1saW5lLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBsYWJlbC1jb2xvcigkY29sb3Itb3ItbWFwLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIF9pZi1lbmFibGVkIHtcbiAgICBAaW5jbHVkZSBfbGFiZWwtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIF9pZi1mb2N1c2VkIHtcbiAgICAgIEBpbmNsdWRlIF9sYWJlbC1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWZvY3VzLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmOm5vdCgubWRjLXNlbGVjdC0tZm9jdXNlZCk6aG92ZXIge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtaG92ZXItc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2xhYmVsLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBvdXRsaW5lLWNvbG9yKCRjb2xvci1vci1tYXAsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgX2lmLWVuYWJsZWQge1xuICAgIEBpbmNsdWRlIF9vdXRsaW5lLWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRlZmF1bHQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmOm5vdCgubWRjLXNlbGVjdC0tZm9jdXNlZCkgLm1kYy1zZWxlY3RfX2FuY2hvcjpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBfaG92ZXItb3V0bGluZS1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfaWYtZm9jdXNlZCB7XG4gICAgICBAaW5jbHVkZSBfZm9jdXNlZC1vdXRsaW5lLWNvbG9yKFxuICAgICAgICBzdGF0ZS5nZXQtZm9jdXMtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIF9pZi1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX291dGxpbmUtY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIG91dGxpbmUtd2lkdGgoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIF9pZi1lbmFibGVkIHtcbiAgICBAaW5jbHVkZSBfb3V0bGluZS13aWR0aChzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkd2lkdGgpKTtcblxuICAgICY6bm90KC5tZGMtc2VsZWN0LS1mb2N1c2VkKSAubWRjLXNlbGVjdF9fYW5jaG9yOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIF9vdXRsaW5lLXdpZHRoKHN0YXRlLmdldC1ob3Zlci1zdGF0ZSgkd2lkdGgpKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfaWYtZm9jdXNlZCB7XG4gICAgICAubWRjLW5vdGNoZWQtb3V0bGluZSB7XG4gICAgICAgIEBpbmNsdWRlIF9vdXRsaW5lLXdpZHRoKHN0YXRlLmdldC1mb2N1cy1zdGF0ZSgkd2lkdGgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9vdXRsaW5lLXdpZHRoKCR3aWR0aCkge1xuICBAaWYgJHdpZHRoIHtcbiAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLnN0cm9rZS13aWR0aCgkd2lkdGgpO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIGRyb3Bkb3duIGljb24gdG8gdGhlIHNwZWNpZmllZCBzaXplLlxuLy8vXG5AbWl4aW4gZHJvcGRvd24taWNvbi1zaXplKCRzaXplLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1zZWxlY3RfX2Ryb3Bkb3duLWljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICB3aWR0aDogJHNpemU7XG4gICAgICBoZWlnaHQ6ICRzaXplO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZmlsbGVkLXNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaWYgbWV0YS50eXBlLW9mKCRyYWRpdXMpID09ICdsaXN0JyBhbmQgbGlzdC5sZW5ndGgoJHJhZGl1cykgPiAyIHtcbiAgICBAZXJyb3IgXCJtZGMtc2VsZWN0OiBJbnZhbGlkIHJhZGl1cyAjeyRyYWRpdXN9LiBPbmx5IHRvcC1sZWZ0IGFuZCB0b3AtcmlnaHQgY29ybmVycyBtYXkgYmUgY3VzdG9taXplZC5cIjtcbiAgfVxuXG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgJG1hc2tlZC1yYWRpdXM6IHNoYXBlLWZ1bmN0aW9ucy5tYXNrLXJhZGl1cygkcmFkaXVzLCAxIDEgMCAwKTtcblxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICAgJG1hc2tlZC1yYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OiAkaGVpZ2h0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBvdXRsaW5lLXNoYXBlLXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCksXG4gICRoZWlnaHQ6IG51bGxcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpZiBub3QgJGhlaWdodCB7XG4gICAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAgICRkZW5zaXR5LWNvbmZpZzogJGRlbnNpdHktY29uZmlnLFxuICAgICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgICApO1xuICB9XG5cbiAgLm1kYy1ub3RjaGVkLW91dGxpbmUge1xuICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuc2hhcGUtcmFkaXVzKFxuICAgICAgJHJhZGl1cyxcbiAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6ICRoZWlnaHQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAkcmVzb2x2ZWQtcmFkaXVzOiBzaGFwZS1mdW5jdGlvbnMucmVzb2x2ZS1yYWRpdXMoXG4gICAgJHJhZGl1cyxcbiAgICAkY29tcG9uZW50LWhlaWdodDogJGhlaWdodFxuICApO1xuICAkdW5wYWNrZWQtcmFkaXVzOiBzaGFwZS1mdW5jdGlvbnMudW5wYWNrLXJhZGl1cygkcmVzb2x2ZWQtcmFkaXVzKTtcbiAgJHRvcC1sZWZ0LXJhZGl1czogbGlzdC5udGgoJHVucGFja2VkLXJhZGl1cywgMSk7XG4gICR0b3AtbGVmdC1pcy1jdXN0b20tcHJvcDogY3VzdG9tLXByb3BlcnRpZXMuaXMtY3VzdG9tLXByb3AoJHRvcC1sZWZ0LXJhZGl1cyk7XG4gICR0b3AtbGVmdC1yYWRpdXMtcHg6ICR0b3AtbGVmdC1yYWRpdXM7XG4gIEBpZiAoJHRvcC1sZWZ0LWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgJHRvcC1sZWZ0LXJhZGl1cy1weDogY3VzdG9tLXByb3BlcnRpZXMuZ2V0LWZhbGxiYWNrKCR0b3AtbGVmdC1yYWRpdXMpO1xuICB9XG5cbiAgQGlmIChcbiAgICAkdG9wLWxlZnQtaXMtY3VzdG9tLXByb3Agb3JcbiAgICAgICR0b3AtbGVmdC1yYWRpdXMtcHggPlxuICAgICAgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGVhZGluZy13aWR0aFxuICApIHtcbiAgICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICAgIEBpbmNsdWRlIF9hcHBseS1vdXRsaW5lLXNoYXBlLXBhZGRpbmcoXG4gICAgICAgIHBhZGRpbmctbGVmdCxcbiAgICAgICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAgICAgJGFkZC1sYWJlbC1wYWRkaW5nOiB0cnVlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcblxuICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgX2FwcGx5LW91dGxpbmUtc2hhcGUtcGFkZGluZyhcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0LFxuICAgICAgICAgICR0b3AtbGVmdC1yYWRpdXMsXG4gICAgICAgICAgJGFkZC1sYWJlbC1wYWRkaW5nOiB0cnVlLFxuICAgICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgKyAubWRjLXNlbGVjdC1oZWxwZXItdGV4dCB7XG4gICAgICBAaW5jbHVkZSBfYXBwbHktb3V0bGluZS1zaGFwZS1wYWRkaW5nKFxuICAgICAgICBtYXJnaW4tbGVmdCxcbiAgICAgICAgJHRvcC1sZWZ0LXJhZGl1cyxcbiAgICAgICAgJGFkZC1sYWJlbC1wYWRkaW5nOiB0cnVlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcblxuICAgICAgQGluY2x1ZGUgcnRsLnJ0bCB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBfYXBwbHktb3V0bGluZS1zaGFwZS1wYWRkaW5nKFxuICAgICAgICAgIG1hcmdpbi1yaWdodCxcbiAgICAgICAgICAkdG9wLWxlZnQtcmFkaXVzLFxuICAgICAgICAgICRhZGQtbGFiZWwtcGFkZGluZzogdHJ1ZSxcbiAgICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVubGlrZSB0ZXh0ZmllbGQsIHNlbGVjdCBkb2VzIG5vdCBuZWVkIHRvIHJlLWFwcGx5IGxlYWRpbmcgaWNvbiBwYWRkaW5nLlxuICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBzZWxlY3Qgb25seSBoYXMgb25lIHBvdGVudGlhbCBsZWFkaW5nIGNsYXNzLCBub3QgdHdvXG4gICAgLy8gZXh0cmEgY2xhc3NlcyBsaWtlIHRleHRmaWVsZCAobGVhZGluZyArIHRyYWlsaW5nKS4gVGV4dGZpZWxkJ3MgdHdvIGV4dHJhXG4gICAgLy8gY2xhc3NlcyBjYW4gY2F1c2Ugc3BlY2lmaWNpdHkgY29uZmxpY3RzLCByZXF1aXJpbmcgZXZlcnl0aGluZyB0byBiZVxuICAgIC8vIHJlLWFwcGxpZWQuXG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBkZW5zaXR5IHNjYWxlIGZvciBmaWxsZWQgc2VsZWN0IHZhcmlhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IFN0cmluZ30gJGRlbnNpdHktc2NhbGUgLSBEZW5zaXR5IHNjYWxlIHZhbHVlIGZvciBjb21wb25lbnQuIFN1cHBvcnRlZCBkZW5zaXR5IHNjYWxlIHZhbHVlcyBgLTRgLFxuLy8vICAgICBgLTNgLCBgLTJgLCBgLTFgLCBgMGAuIERlZmF1bHQgaXMgYDBgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCBTZXRzIHRoZSBtaW5pbXVtIGhlaWdodCBmb3Jcbi8vLyAgICAgZmlsbGVkIHNlbGVjdHMgYXQgd2hpY2ggdG8gYWxsb3cgZmxvYXRpbmcgbGFiZWxzLlxuLy8vXG5AbWl4aW4gZmlsbGVkLWRlbnNpdHkoXG4gICRkZW5zaXR5LXNjYWxlLFxuICAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuXG4gIEBpbmNsdWRlIGZpbGxlZC1oZWlnaHQoXG4gICAgJGhlaWdodCxcbiAgICAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgX2xpc3QtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy9cbi8vLyBTZXRzIGRlbnNpdHkgc2NhbGUgZm9yIGZpbGxlZCBzZWxlY3QgdmFyaWFudCB3aXRoIGxlYWRpbmcgaWNvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtNGAsXG4vLy8gICAgIGAtM2AsIGAtMmAsIGAtMWAsIGAwYC4gRGVmYXVsdCBpcyBgMGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsIFNldHMgdGhlIG1pbmltdW0gaGVpZ2h0IGZvclxuLy8vICAgICBmaWxsZWQgc2VsZWN0cyBhdCB3aGljaCB0byBhbGxvdyBmbG9hdGluZyBsYWJlbHMuXG4vLy9cbkBtaXhpbiBmaWxsZWQtd2l0aC1sZWFkaW5nLWljb24tZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgZmlsbGVkLXdpdGgtbGVhZGluZy1pY29uLWhlaWdodChcbiAgICAkaGVpZ2h0LFxuICAgICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsOiAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBfbGlzdC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbi8vL1xuLy8vIFNldHMgZGVuc2l0eSBzY2FsZSBmb3Igb3V0bGluZWQgc2VsZWN0IChFeGNsdWRpbmcgb3V0bGluZWQgc2VsZWN0IHdpdGggbGVhZGluZyBpY29uKS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtNGAsXG4vLy8gICAgIGAtM2AsIGAtMmAsIGAtMWAsIGAwYC4gRGVmYXVsdCBpcyBgMGAuXG4vLy9cbkBtaXhpbiBvdXRsaW5lZC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0bGluZWQtaGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgX2xpc3QtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLy9cbi8vLyBTZXRzIGRlbnNpdHkgc2NhbGUgZm9yIG91dGxpbmVkIHNlbGVjdCB3aXRoIGxlYWRpbmcgaWNvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgU3RyaW5nfSAkZGVuc2l0eS1zY2FsZSAtIERlbnNpdHkgc2NhbGUgdmFsdWUgZm9yIGNvbXBvbmVudC4gU3VwcG9ydGVkIGRlbnNpdHkgc2NhbGUgdmFsdWVzIGAtNGAsXG4vLy8gICAgIGAtM2AsIGAtMmAsIGAtMWAsIGAwYC4gRGVmYXVsdCBpcyBgMGAuXG4vLy9cbkBtaXhpbiBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiAkZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24taGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgX2xpc3QtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX2xpc3QtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5KSB7XG4gIEBpbmNsdWRlIGxpc3QtbWl4aW5zLmRlcHJlY2F0ZWQtc2luZ2xlLWxpbmUtZGVuc2l0eShcbiAgICAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICAubWRjLXNlbGVjdF9fb25lLWxpbmUtb3B0aW9uIHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMub25lLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAgICAgJGRlbnNpdHktc2NhbGUsXG4gICAgICAkZXhjbHVkZS12YXJpYW50czogdHJ1ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuICAubWRjLXNlbGVjdF9fdHdvLWxpbmUtb3B0aW9uIHtcbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMudHdvLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAgICAgJGRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBoZWlnaHQgb2YgZGVmYXVsdCBzZWxlY3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbmV3LWhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCBTZXRzIHRoZSBtaW5pbXVtIGhlaWdodCBmb3Jcbi8vLyAgICAgZmlsbGVkIHNlbGVjdHMgYXQgd2hpY2ggdG8gYWxsb3cgZmxvYXRpbmcgbGFiZWxzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlsbGVkLWJhc2VsaW5lLXRvcCBUaGUgYmFzZWxpbmUgZnJvbSB0aGUgdG9wIG9mIHRoZSBhbmNob3Jcbi8vLyAgICAgdGhhdCB0aGUgaW5wdXQgc2hvdWxkIGJlIGFsaWduZWQgdG8gZm9yIGEgZmlsbGVkIHZhcmlhbnQgd2l0aCBhIGxhYmVsXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuQG1peGluIGZpbGxlZC1oZWlnaHQoXG4gICRuZXctaGVpZ2h0LFxuICAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICRmaWxsZWQtYmFzZWxpbmUtdG9wOiAkZmlsbGVkLWJhc2VsaW5lLXRvcCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1zZWxlY3RfX2FuY2hvciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGhlaWdodDogJG5ldy1oZWlnaHQ7XG4gICAgfVxuXG4gICAgLy8gRmlsbGVkIHZhcmlhbnQgaXMgYWxpZ25lZCB0byBiYXNlbGluZS4uLlxuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktbWl4aW5zLmJhc2VsaW5lKFxuICAgICAgJHRvcDogJGZpbGxlZC1iYXNlbGluZS10b3AsXG4gICAgICAkZGlzcGxheTogZmxleCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICAvLyAuLi51bmxlc3MgaXQgaXMgdG9vIHNtYWxsIHRvIGRpc3BsYXkgYSBsYWJlbFxuICAgIEBpZiAkbmV3LWhlaWdodCA8ICRtaW5pbXVtLWhlaWdodC1mb3ItZmlsbGVkLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIGNlbnRlci1hbGlnbmVkKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE5vLWxhYmVsIHZhcmlhbnRzIGFyZSBhbHdheXMgY2VudGVyZWRcbiAgJi5tZGMtc2VsZWN0LS1uby1sYWJlbCAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSBjZW50ZXItYWxpZ25lZCgkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICBAaWYgJG5ldy1oZWlnaHQgPCAkaGVpZ2h0IHtcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1pY29uLXNpemUoXG4gICAgICBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgJi5tZGMtc2VsZWN0LS1maWxsZWQge1xuICAgICAgQGluY2x1ZGUgdHJ1bmNhdGUtZmxvYXRpbmctbGFiZWwtbWF4LXdpZHRoKFxuICAgICAgICAkbGVhZGluZy1pY29uLXNpemU6IDAsXG4gICAgICAgICRkcm9wZG93bi1pY29uLXNpemU6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGhlaWdodCBvZiBmaWxsZWQgc2VsZWN0IHZhcmlhbnQgd2l0aCBsZWFkaW5nIGljb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbCBTZXRzIHRoZSBtaW5pbXVtIGhlaWdodCBmb3Jcbi8vLyAgICAgZmlsbGVkIHNlbGVjdHMgYXQgd2hpY2ggdG8gYWxsb3cgZmxvYXRpbmcgbGFiZWxzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlsbGVkLWJhc2VsaW5lLXRvcCBUaGUgYmFzZWxpbmUgZnJvbSB0aGUgdG9wIG9mIHRoZSBhbmNob3Jcbi8vLyAgICAgdGhhdCB0aGUgaW5wdXQgc2hvdWxkIGJlIGFsaWduZWQgdG8gZm9yIGEgZmlsbGVkIHZhcmlhbnQgd2l0aCBhIGxhYmVsXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuQG1peGluIGZpbGxlZC13aXRoLWxlYWRpbmctaWNvbi1oZWlnaHQoXG4gICRuZXctaGVpZ2h0LFxuICAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICRmaWxsZWQtYmFzZWxpbmUtdG9wOiAkZmlsbGVkLWJhc2VsaW5lLXRvcCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmlsbGVkLWhlaWdodChcbiAgICAkbmV3LWhlaWdodCxcbiAgICAkbWluaW11bS1oZWlnaHQtZm9yLWZpbGxlZC1sYWJlbDogJG1pbmltdW0taGVpZ2h0LWZvci1maWxsZWQtbGFiZWwsXG4gICAgJGZpbGxlZC1iYXNlbGluZS10b3A6ICRmaWxsZWQtYmFzZWxpbmUtdG9wLFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgQGlmICRuZXctaGVpZ2h0IDwgJGhlaWdodCB7XG4gICAgQGluY2x1ZGUgc2VsZWN0LWljb24tdGhlbWUuc2l6ZShcbiAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1zZWxlY3QtLWZpbGxlZCB7XG4gICAgICBAaW5jbHVkZSB0cnVuY2F0ZS1mbG9hdGluZy1sYWJlbC1tYXgtd2lkdGgoXG4gICAgICAgICRsZWFkaW5nLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJGRyb3Bkb3duLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fZ3JhcGhpYyB7XG4gICAgICB3aWR0aDogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZTtcbiAgICAgIGhlaWdodDogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaXN0LWV2b2x1dGlvbi1taXhpbnMuaXRlbS1zdGFydC1zaXplKFxuICAgICAgJHdpZHRoOiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplICsgMTJweCxcbiAgICAgICRoZWlnaHQ6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICAgIEBpbmNsdWRlIGxlYWRpbmctaWNvbi1mbG9hdGluZy1sYWJlbC1wb3NpdGlvbihcbiAgICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgaGVpZ2h0IG9mIG91dGxpbmVkIHNlbGVjdCB2YXJpYW50IChFeGNsdWRpbmcgb3V0bGluZWQgc2VsZWN0IHdpdGggbGVhZGluZyBpY29uKS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbmV3LWhlaWdodFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5ZnJhbWUtc3VmZml4IC0gT3B0aW9uYWwgc3VmZml4IHRvIHVzZSBmb3IgZ2VuZXJhdGVkXG4vLy8gICAgIGZsb2F0aW5nIGxhYmVsIGtleWZyYW1lc1xuLy8vXG5AbWl4aW4gb3V0bGluZWQtaGVpZ2h0KFxuICAkbmV3LWhlaWdodCxcbiAgJGtleWZyYW1lLXN1ZmZpeDogc2VsZWN0LW91dGxpbmVkLSN7JG5ldy1oZWlnaHR9LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJHBvc2l0aW9uWTogZ2V0LW91dGxpbmVkLWxhYmVsLXBvc2l0aW9uLXkoJG5ldy1oZWlnaHQpO1xuXG4gIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgIC8vIEZsb2F0aW5nIGxhYmVsIHBvc2l0aW9uXG4gICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5mbG9hdGluZy1sYWJlbC1mbG9hdC1wb3NpdGlvbi1hYnNvbHV0ZShcbiAgICAgICRwb3NpdGlvblksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAvLyBGbG9hdGluZyBsYWJlbCBhbmltYXRpb25cbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2UtYW5pbWF0aW9uKFxuICAgICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2Uta2V5ZnJhbWVzKFxuICAgICAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICAgICAkcG9zaXRpb25ZLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiAkbmV3LWhlaWdodDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG5ldy1oZWlnaHQgPCAkaGVpZ2h0IHtcbiAgICBAaW5jbHVkZSBkcm9wZG93bi1pY29uLXNpemUoXG4gICAgICBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgJi5tZGMtc2VsZWN0LS1vdXRsaW5lZCB7XG4gICAgICBAaW5jbHVkZSB0cnVuY2F0ZS1ub3RjaGVkLW91dGxpbmUtbWF4LXdpZHRoKFxuICAgICAgICAkbGVhZGluZy1pY29uLXNpemU6IDAsXG4gICAgICAgICRkcm9wZG93bi1pY29uLXNpemU6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGhlaWdodCBvZiBvdXRsaW5lZCBzZWxlY3Qgd2l0aCBsZWFkaW5nIGljb24gdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbmV3LWhlaWdodFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5ZnJhbWUtc3VmZml4IC0gT3B0aW9uYWwgc3VmZml4IHRvIHVzZSBmb3IgZ2VuZXJhdGVkXG4vLy8gICAgIGZsb2F0aW5nIGxhYmVsIGtleWZyYW1lc1xuLy8vXG5AbWl4aW4gb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24taGVpZ2h0KFxuICAkbmV3LWhlaWdodCxcbiAgJGtleWZyYW1lLXN1ZmZpeDogbnVsbCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1zZWxlY3RfX2FuY2hvciB7XG4gICAgQGlmICRuZXctaGVpZ2h0IDwgJGhlaWdodCB7XG4gICAgICBAaW5jbHVkZSBkcm9wZG93bi1pY29uLXNpemUoXG4gICAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tZmxvYXRpbmctbGFiZWwtcG9zaXRpb24tYW5pbWF0aW9uKFxuICAgICAgICAkbmV3LWhlaWdodCxcbiAgICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lZC13aXRoLWxlYWRpbmctaWNvbi1mbG9hdGluZy1sYWJlbC1wb3NpdGlvbi1hbmltYXRpb24oXG4gICAgICAgICRuZXctaGVpZ2h0LFxuICAgICAgICBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAgICAgICAka2V5ZnJhbWUtc3VmZml4LFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiAkbmV3LWhlaWdodDtcbiAgICB9XG4gIH1cblxuICBAaWYgJG5ldy1oZWlnaHQgPCAkaGVpZ2h0IHtcbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19ncmFwaGljIHtcbiAgICAgIHdpZHRoOiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplO1xuICAgICAgaGVpZ2h0OiBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLXN0YXJ0LXNpemUoXG4gICAgICAkd2lkdGg6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUgKyAxMnB4LFxuICAgICAgJGhlaWdodDogc2VsZWN0LWljb24tdGhlbWUuJGRlbnNlLWljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIHNlbGVjdC1pY29uLXRoZW1lLnNpemUoXG4gICAgICBzZWxlY3QtaWNvbi10aGVtZS4kZGVuc2UtaWNvbi1zaXplLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgJi5tZGMtc2VsZWN0LS1vdXRsaW5lZCB7XG4gICAgICBAaW5jbHVkZSB0cnVuY2F0ZS1ub3RjaGVkLW91dGxpbmUtbWF4LXdpZHRoKFxuICAgICAgICAkbGVhZGluZy1pY29uLXNpemU6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAgICRkcm9wZG93bi1pY29uLXNpemU6IHNlbGVjdC1pY29uLXRoZW1lLiRkZW5zZS1pY29uLXNpemUsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vLyAkYWRkLWxhYmVsLXBhZGRpbmcgaXMgY29waWVkIGZyb20gdGV4dGZpZWxkJ3MgbWl4aW4sIGV2ZW4gdGhvdWdoIHNlbGVjdFxuLy8gYWx3YXlzIHNldHMgaXQgdG8gdHJ1ZS4gVGhpcyBpcyB0byB0cnkgYW5kIGtlZXAgdGhpbmdzIGFsaWduZWQgYmV0d2VlbiBzZWxlY3Rcbi8vIGFuZCB0ZXh0ZmllbGQgZm9yIHdoZW4gdGhlc2Ugc3R5bGVzIGFyZSByZWZhY3RvcmVkIGludG8gc2hhcmVkIHN0eWxlcy5cbkBtaXhpbiBfYXBwbHktb3V0bGluZS1zaGFwZS1wYWRkaW5nKFxuICAkcHJvcGVydHksXG4gICRwYWRkaW5nLFxuICAkYWRkLWxhYmVsLXBhZGRpbmc6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJHBhZGRpbmctaXMtY3VzdG9tLXByb3A6IGN1c3RvbS1wcm9wZXJ0aWVzLmlzLWN1c3RvbS1wcm9wKCRwYWRkaW5nKTtcbiAgJHBhZGRpbmctcHg6ICRwYWRkaW5nO1xuICBAaWYgKCRwYWRkaW5nLWlzLWN1c3RvbS1wcm9wKSB7XG4gICAgJHBhZGRpbmctcHg6IGN1c3RvbS1wcm9wZXJ0aWVzLmdldC1mYWxsYmFjaygkcGFkZGluZyk7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC8vIFRoZSBzaGFwZSBzaG91bGQgb25seSBjaGFuZ2UgdGhlIHBhZGRpbmcgaWYgdGhlIHJhZGl1cyBiZWNvbWVzIGdyZWF0ZXJcbiAgICAvLyB0aGFuIHRoZSBkZWZhdWx0IHBhZGRpbmcuIFRoYXQgbWVhbnMgd2UgbmVlZCB0byBhZGQgbW9yZSBwYWRkaW5nLlxuICAgIEBpZiAoJHBhZGRpbmctcHggPiBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRsZWFkaW5nLXdpZHRoKSB7XG4gICAgICAvLyBTZXQgYSBweCB2YWx1ZSBpZiBpdCdzIGdyZWF0ZXIuIFRoaXMgaXMgZWl0aGVyIHRoZSBvbmx5IHZhbHVlIChpZlxuICAgICAgLy8gd2UncmUgZ2l2ZW4gYW4gZXhhY3QgdmFsdWUpLCBvciBhbiBJRTExIGZhbGxiYWNrIGlmIHdlJ3JlIGdpdmVuIGFcbiAgICAgIC8vIGN1c3RvbSBwcm9wZXJ0eSBhbmQgdGhlIGZhbGxiYWNrIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGFkZGluZy5cbiAgICAgICR2YWx1ZTogJHBhZGRpbmctcHg7XG4gICAgICBAaWYgKCRhZGQtbGFiZWwtcGFkZGluZykge1xuICAgICAgICAvLyBJZiB0aGlzIGlzIGZvciB0aGUgdG9wLWxlZnQgbGVhZGluZywgYWRkIHRoZSBub3RjaGVkIG91dGxpbmUgcGFkZGluZ1xuICAgICAgICAvLyB0byBrZWVwIGl0IGFsaWduZWQgd2l0aCB0aGUgbGFiZWxcbiAgICAgICAgJHZhbHVlOiAkcGFkZGluZy1weCArIG5vdGNoZWQtb3V0bGluZS12YXJpYWJsZXMuJHBhZGRpbmc7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIEBpbmNsdWRlIGdzcy5hbm5vdGF0ZShcbiAgICAgICAgKFxuICAgICAgICAgIGFsdGVybmF0ZTogJHBhZGRpbmctaXMtY3VzdG9tLXByb3AsXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIEBpZiAoJHBhZGRpbmctaXMtY3VzdG9tLXByb3ApIHtcbiAgICAgIC8vIElmIGl0J3MgYSBjdXN0b20gcHJvcGVydHksIGFsd2F5cyBhZGQgaXQgc2luY2UgdGhlIHZhbHVlIG1heSBjaGFuZ2VcbiAgICAgIC8vIHRvIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcGFkZGluZyBhdCBydW50aW1lLCBldmVuIGlmIHRoZSBmYWxsYmFjayBpc1xuICAgICAgLy8gbm90IGN1cnJlbnRseSBncmVhdGVyIHRoYW4gdGhlIGRlZmF1bHQgcGFkZGluZy5cbiAgICAgICR2YWx1ZTogY3VzdG9tLXByb3BlcnRpZXMuY3JlYXRlLXZhcigkcGFkZGluZyk7XG4gICAgICBAaWYgKCRhZGQtbGFiZWwtcGFkZGluZykge1xuICAgICAgICAkdmFsdWU6IGNhbGMoI3skdmFsdWV9ICsgI3tub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRwYWRkaW5nfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEludGVycG9sYXRpb24gaXMgYSB3b3JrYXJvdW5kIGZvciBzYXNzL3Nhc3MjMzI1OS5cbiAgICAgIEBzdXBwb3J0cyAodG9wOiBtYXgoI3swJX0pKSB7XG4gICAgICAgIC8vIEEgbWF4KCkgZnVuY3Rpb24gbWFrZXMgdGhpcyBydW50aW1lIGR5bmFtaWMuIFRoZSBwYWRkaW5nIHdpbGwgYmVcbiAgICAgICAgLy8gd2hpY2hldmVyIGlzIGdyZWF0ZXI6IHRoZSBkZWZhdWx0IGhvcml6b250YWwgcGFkZGluZywgb3IgdGhlXG4gICAgICAgIC8vIGNhbGN1bGF0ZWQgY3VzdG9tIHByb3BlcnR5IHBsdXMgZXh0cmEgcGFkZGluZy5cbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgI3skcHJvcGVydHl9OiBtYXgoI3skYW5jaG9yLXBhZGRpbmctbGVmdH0sICN7JHZhbHVlfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFJlbW92ZXMgZmlsbGVkIGJhc2VsaW5lIGFsaWdubWVudFxuQG1peGluIGNlbnRlci1hbGlnbmVkKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fc2VsZWN0ZWQtdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS1taXhpbnMuemVyby13aWR0aC1wcmVmaXgoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvLyBJbiBvcmRlciBmb3IgYSBmbGV4Ym94IGNvbnRhaW5lciB0byBwYXJ0aWNpcGF0ZSBpbiBiYXNlbGluZSBhbGlnbm1lbnQsXG4gICAgLy8gaXQgZm9sbG93cyB0aGVzZSBydWxlcyB0byBkZXRlcm1pbmUgd2hlcmUgaXRzIGJhc2VsaW5lIGlzOlxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtZmxleGJveC0xLyNmbGV4LWJhc2VsaW5lc1xuICAgIC8vXG4gICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgbGVhZGluZyBpY29ucyBcImNvbnRyb2xsaW5nXCIgdGhlIGJhc2VsaW5lIChzaW5jZSB0aGV5XG4gICAgLy8gYXJlIHRoZSBmaXJzdCBjaGlsZCksIGZsZXhib3ggd2lsbCBnZW5lcmF0ZSBhIGJhc2VsaW5lIGZyb20gYW55IGNoaWxkXG4gICAgLy8gZmxleCBpdGVtcyB0aGF0IHBhcnRpY2lwYXRlIGluIGJhc2VsaW5lIGFsaWdubWVudC5cbiAgICAvL1xuICAgIC8vIEljb25zIGFyZSBzZXQgdG8gXCJhbGlnbi1zZWxmOiBjZW50ZXJcIiwgd2hpbGUgYWxsIG90aGVyIGNoaWxkcmVuIGFyZVxuICAgIC8vIGFsaWduZWQgdG8gYmFzZWxpbmUuIFRoZSBuZXh0IHByb2JsZW0gaXMgZGVjaWRpbmcgd2hpY2ggY2hpbGQgaXNcbiAgICAvLyB1c2VkIHRvIGRldGVybWluZSB0aGUgYmFzZWxpbmUuXG4gICAgLy9cbiAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYywgdGhlIGl0ZW0gd2l0aCB0aGUgbGFyZ2VzdCBkaXN0YW5jZSBiZXR3ZWVuIGl0c1xuICAgIC8vIGJhc2VsaW5lIGFuZCB0aGUgZWRnZSBvZiB0aGUgY3Jvc3MgYXhpcyBpcyBwbGFjZWQgZmx1c2ggd2l0aCB0aGF0IGVkZ2UsXG4gICAgLy8gbWFraW5nIGl0IHRoZSBiYXNlbGluZSBvZiB0aGUgY29udGFpbmVyLlxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtZmxleGJveC0xLyNiYXNlbGluZS1wYXJ0aWNpcGF0aW9uXG4gICAgLy9cbiAgICAvLyBGb3IgdGhlIGZpbGxlZCB2YXJpYW50LCB0aGUgcHNldWRvIDo6YmVmb3JlIHN0cnV0IGlzIHRoZSBcImxhcmdlc3RcIlxuICAgIC8vIGNoaWxkIHNpbmNlIHRoZSBpbnB1dCBoYXMgYSBoZWlnaHQgb2YgMjhweCBhbmQgdGhlIHN0cnV0IGlzIDQwcHguIFdlXG4gICAgLy8gY2FuIGVtdWxhdGUgY2VudGVyIGFsaWdubWVudCBhbmQgZm9yY2UgdGhlIGJhc2VsaW5lIHRvIHVzZSB0aGUgaW5wdXRcbiAgICAvLyB0ZXh0IGJ5IG1ha2luZyB0aGUgaW5wdXQgdGhlIGZ1bGwgaGVpZ2h0IG9mIHRoZSBjb250YWluZXIgYW5kIHJlbW92aW5nXG4gICAgLy8gdGhlIGJhc2VsaW5lIHN0cnV0LlxuICAgIC8vXG4gICAgLy8gSUUxMSBkb2VzIG5vdCByZXNwZWN0IHRoaXMsIGFuZCBtYWtlcyB0aGUgbGVhZGluZyBpY29uIChpZiBwcmVzZW50KVxuICAgIC8vIHRoZSBiYXNlbGluZS5cbiAgICAubWRjLXNlbGVjdF9fc2VsZWN0ZWQtdGV4dC1jb250YWluZXIge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgbGFiZWwgZm9yIGEgc2VsZWN0IHdpdGggbGVhZGluZyBpY29uLlxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkaWNvbi1zaXplIC0gVGhlIHNpemUgb2YgdGhlIGxlYWRpbmcgaWNvbi5cbi8vL1xuQG1peGluIGxlYWRpbmctaWNvbi1mbG9hdGluZy1sYWJlbC1wb3NpdGlvbihcbiAgJGljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRpY29uLXRvdGFsLXdpZHRoOiAkaWNvbi1zaXplICsgMiAqIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luO1xuXG4gIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXBvc2l0aW9uKGxlZnQsICRpY29uLXRvdGFsLXdpZHRoKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgZmxvYXRpbmcgbGFiZWwgcG9zaXRpb24gYW5kIGFuaW1hdGlvbnMgZm9yIGEgZ2l2ZW4gaGVpZ2h0IGZvciBhblxuLy8vIG91dGxpbmVkIHNlbGVjdCB3aXRoIGxlYWluZyBpY29uLlxuLy8vIEBwYXJhbSB7bnVtYmVyfSAkaWNvbi1zaXplIC0gVGhlIHNpemUgb2YgdGhlIGxlYWRpbmcgaWNvbi5cbi8vLyBAcGFyYW0ge3N0cmluZ30gJGtleWZyYW1lLXN1ZmZpeCAtIFRoZSBzdWZmaXggZm9yIHRoZSBuZXdseSBnZW5lcmF0ZWQga2V5ZnJhbWVzLlxuLy8vXG5AbWl4aW4gb3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tZmxvYXRpbmctbGFiZWwtcG9zaXRpb24tYW5pbWF0aW9uKFxuICAkaGVpZ2h0LFxuICAkaWNvbi1zaXplLFxuICAka2V5ZnJhbWUtc3VmZml4OiBzZWxlY3Qtb3V0bGluZWQtbGVhZGluZy1pY29uLSN7JGhlaWdodH0sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gICRpY29uLXRvdGFsLXdpZHRoOiAkaWNvbi1zaXplICsgMiAqIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luO1xuICAkcmVzdGluZy1wb3NpdGlvbi14OiAkaWNvbi10b3RhbC13aWR0aCAtXG4gICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW47XG4gICRmbG9hdC1wb3NpdGlvbi15OiBnZXQtb3V0bGluZWQtbGFiZWwtcG9zaXRpb24teSgkaGVpZ2h0KTtcbiAgJGZsb2F0LXBvc2l0aW9uLXg6ICRpY29uLXNpemUgKyBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1ob3Jpem9udGFsLW1hcmdpbiAtXG4gICAgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbm90Y2gtZ3V0dGVyLXNpemU7XG5cbiAgLy8gUmVzdGluZyBsYWJlbCBwb3NpdGlvblxuICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wb3NpdGlvbihsZWZ0LCAkcmVzdGluZy1wb3NpdGlvbi14KTtcbiAgICB9XG4gIH1cblxuICAvLyBGbG9hdGluZyBsYWJlbCBwb3NpdGlvblxuICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmZsb2F0aW5nLWxhYmVsLWZsb2F0LXBvc2l0aW9uLWFic29sdXRlKFxuICAgICRmbG9hdC1wb3NpdGlvbi15LFxuICAgICRmbG9hdC1wb3NpdGlvbi14LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWwgYW5pbWF0aW9uXG4gIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5zaGFrZS1hbmltYXRpb24oXG4gICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWtleWZyYW1lcyhcbiAgICAgICRrZXlmcmFtZS1zdWZmaXgsXG4gICAgICAkZmxvYXQtcG9zaXRpb24teSxcbiAgICAgICRmbG9hdC1wb3NpdGlvbi14LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJGtleWZyYW1lLXN1ZmZpeC1ydGw6ICN7JGtleWZyYW1lLXN1ZmZpeH0tcnRsO1xuICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2UtYW5pbWF0aW9uKFxuICAgICAgJGtleWZyYW1lLXN1ZmZpeCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLnNoYWtlLWtleWZyYW1lcyhcbiAgICAgICRrZXlmcmFtZS1zdWZmaXgtcnRsLFxuICAgICAgJGZsb2F0LXBvc2l0aW9uLXksXG4gICAgICAtKCRmbG9hdC1wb3NpdGlvbi14KSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG4vLy9cbi8vLyBUcnVuY2F0ZXMgdGhlIG1heC13aWR0aCBvZiB0aGUgZmxvYXRpbmcgbGFiZWwgYWNjb3JkaW5nIHRvIHNpemVzIG9mIHRoZVxuLy8vIGxlYWRpbmcgaWNvbiBhbmQgZHJvcGRvd24gaWNvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVhZGluZy1pY29uLXNpemUgLSBTaXplIG9mIGxlYWRpbmcgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGRyb3Bkb3duLWljb24tc2l6ZSAtIFNpemUgb2YgZHJvcGRvd24gaWNvbi5cbi8vL1xuQG1peGluIHRydW5jYXRlLWZsb2F0aW5nLWxhYmVsLW1heC13aWR0aChcbiAgJGxlYWRpbmctaWNvbi1zaXplLFxuICAkZHJvcGRvd24taWNvbi1zaXplLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJHRydW5jYXRpb246IHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luICogMiArXG4gICAgJGRyb3Bkb3duLWljb24tc2l6ZTtcblxuICBAaWYgJGxlYWRpbmctaWNvbi1zaXplID4gMCB7XG4gICAgJHRydW5jYXRpb246ICR0cnVuY2F0aW9uICtcbiAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luICpcbiAgICAgIDIgK1xuICAgICAgJGxlYWRpbmctaWNvbi1zaXplO1xuICB9IEBlbHNlIHtcbiAgICAkdHJ1bmNhdGlvbjogJHRydW5jYXRpb24gKyAkb3V0bGluZS1sYWJlbC1vZmZzZXQ7XG4gIH1cblxuICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMubWF4LXdpZHRoKFxuICAgICAgY2FsYygxMDAlIC0gI3skdHJ1bmNhdGlvbn0pLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgICRzY2FsZTogZmxvYXRpbmctbGFiZWwtdmFyaWFibGVzLiRmbG9hdC1zY2FsZTtcbiAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMubWF4LXdpZHRoKFxuICAgICAgY2FsYygxMDAlIC8gI3skc2NhbGV9IC0gI3skdHJ1bmNhdGlvbn0gLyAjeyRzY2FsZX0pLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbi8vL1xuLy8vIFRydW5jYXRlcyB0aGUgbWF4LXdpZHRoIG9mIHRoZSBub3RjaGVkIG91dGxpbmUgYWNjb3JkaW5nIHRvIHRoZSBzaXplcyBvZlxuLy8vIHRoZSBsZWFkaW5nIGljb24gYW5kIGRyb3Bkb3duIGljb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlYWRpbmctaWNvbi1zaXplIC0gU2l6ZSBvZiBsZWFkaW5nIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkcm9wZG93bi1pY29uLXNpemUgLSBTaXplIG9mIGRyb3Bkb3duIGljb24uXG4vLy9cbkBtaXhpbiB0cnVuY2F0ZS1ub3RjaGVkLW91dGxpbmUtbWF4LXdpZHRoKFxuICAkbGVhZGluZy1pY29uLXNpemUsXG4gICRkcm9wZG93bi1pY29uLXNpemUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkdHJ1bmNhdGlvbjogc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW4gKiAyICtcbiAgICAkZHJvcGRvd24taWNvbi1zaXplICsgbm90Y2hlZC1vdXRsaW5lLXZhcmlhYmxlcy4kbGVhZGluZy13aWR0aDtcblxuICBAaWYgJGxlYWRpbmctaWNvbi1zaXplID4gMCB7XG4gICAgJHRydW5jYXRpb246ICR0cnVuY2F0aW9uICtcbiAgICAgIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luICtcbiAgICAgICRsZWFkaW5nLWljb24tc2l6ZTtcbiAgfVxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLm5vdGNoLW1heC13aWR0aChcbiAgICAgIGNhbGMoMTAwJSAtICN7JHRydW5jYXRpb259KSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG4vLy8gU2VsZWN0b3IgZm9yIGZvY3VzZWQgc3RhdGVcbi8vLyBAYWNjZXNzIHByaXZhdGVcbkBtaXhpbiBfaWYtZm9jdXNlZCB7XG4gICYubWRjLXNlbGVjdC0tZm9jdXNlZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdG9yIGZvciBlbmFibGVkIHN0YXRlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX2lmLWVuYWJsZWQge1xuICAmOm5vdCgubWRjLXNlbGVjdC0tZGlzYWJsZWQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0b3IgZm9yIGRpc2FibGVkIHN0YXRlXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gX2lmLWRpc2FibGVkIHtcbiAgJi5tZGMtc2VsZWN0LS1kaXNhYmxlZCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIF9pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpZiAkY29sb3Ige1xuICAgIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUtbWl4aW5zLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2NvbnRhaW5lci1maWxsLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICBAaWYgJGNvbG9yIHtcbiAgICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUtbWl4aW5zLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfYm90dG9tLWxpbmUtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpZiAkY29sb3Ige1xuICAgIC5tZGMtbGluZS1yaXBwbGUge1xuICAgICAgQGluY2x1ZGUgbGluZS1yaXBwbGUtbWl4aW5zLmluYWN0aXZlLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2ZvY3VzZWQtbGluZS1yaXBwbGUtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpZiAkY29sb3Ige1xuICAgIC5tZGMtbGluZS1yaXBwbGUge1xuICAgICAgQGluY2x1ZGUgbGluZS1yaXBwbGUtbWl4aW5zLmFjdGl2ZS1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9vdXRsaW5lLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaWYgJGNvbG9yIHtcbiAgICBAaW5jbHVkZSBub3RjaGVkLW91dGxpbmUtbWl4aW5zLmNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBfaG92ZXItb3V0bGluZS1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1ub3RjaGVkLW91dGxpbmUge1xuICAgICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9mb2N1c2VkLW91dGxpbmUtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpZiAkY29sb3Ige1xuICAgIC5tZGMtbm90Y2hlZC1vdXRsaW5lIHtcbiAgICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuc3Ryb2tlLXdpZHRoKFxuICAgICAgICAkb3V0bGluZWQtc3Ryb2tlLXdpZHRoLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMuY29sb3IoJGNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfbGFiZWwtY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpZiAkY29sb3Ige1xuICAgIC5tZGMtZmxvYXRpbmctbGFiZWwge1xuICAgICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmluay1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC1mbG9hdGluZy1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1mbG9hdGluZy1sYWJlbC0tZmxvYXQtYWJvdmUge1xuICAgICAgQGluY2x1ZGUgZmxvYXRpbmctbGFiZWwtbWl4aW5zLmluay1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyB0aGUgZHJvcGRvd24gaWNvbiB0byB0aGUgc3BlY2lmaWVkIGNvbG9yLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gX2Ryb3Bkb3duLWljb24tY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpZiAkY29sb3Ige1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIC5tZGMtc2VsZWN0X19kcm9wZG93bi1pY29uIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUtbWl4aW5zLnByb3BlcnR5KGZpbGwsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9taXhpbnMnIGFzIHRoZW1lLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9zdGF0ZSc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdmFyaWFibGVzJyBhcyB0aGVtZS12YXJpYWJsZXM7XG5cbiRoZWxwZXItdGV4dC1jb2xvcjogcmdiYSh0aGVtZS12YXJpYWJsZXMucHJvcC12YWx1ZShvbi1zdXJmYWNlKSwgMC42KSAhZGVmYXVsdDtcbiRkaXNhYmxlZC1oZWxwZXItdGV4dC1jb2xvcjogcmdiYShcbiAgdGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIDAuMzhcbikgIWRlZmF1bHQ7XG5cbkBtaXhpbiBoZWxwZXItdGV4dC1jb2xvcigkY29sb3Itb3ItbWFwLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICY6bm90KC5tZGMtc2VsZWN0LS1kaXNhYmxlZCkge1xuICAgIEBpbmNsdWRlIF9oZWxwZXItdGV4dC1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJi5tZGMtc2VsZWN0LS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2hlbHBlci10ZXh0LWNvbG9yKFxuICAgICAgc3RhdGUuZ2V0LWRpc2FibGVkLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBoZWxwZXItdGV4dC12YWxpZGF0aW9uLWNvbG9yKFxuICAkY29sb3Itb3ItbWFwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJjpub3QoLm1kYy1zZWxlY3QtLWRpc2FibGVkKSB7XG4gICAgQGluY2x1ZGUgX2hlbHBlci10ZXh0LXZhbGlkYXRpb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGVmYXVsdC1zdGF0ZSgkY29sb3Itb3ItbWFwKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICY6bm90KC5tZGMtc2VsZWN0LS1mb2N1c2VkKTpob3ZlciB7XG4gICAgICBAaW5jbHVkZSBfaGVscGVyLXRleHQtdmFsaWRhdGlvbi1jb2xvcihcbiAgICAgICAgc3RhdGUuZ2V0LWhvdmVyLXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUHJpdmF0ZSBtaXhpbnNcblxuQG1peGluIF9oZWxwZXItdGV4dC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgJiArIC5tZGMtc2VsZWN0LWhlbHBlci10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUtbWl4aW5zLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2hlbHBlci10ZXh0LXZhbGlkYXRpb24tY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpZiAkY29sb3Ige1xuICAgICYubWRjLXNlbGVjdC0taW52YWxpZCArIC5tZGMtc2VsZWN0LWhlbHBlci10ZXh0LS12YWxpZGF0aW9uLW1zZyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLW1peGlucy5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL21peGlucycgYXMgdGhlbWUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3N0YXRlJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS92YXJpYWJsZXMnIGFzIHRoZW1lLXZhcmlhYmxlcztcblxuJGljb24tc2l6ZTogMjRweCAhZGVmYXVsdDtcbiRkZW5zZS1pY29uLXNpemU6IDIwcHggIWRlZmF1bHQ7XG4kaWNvbi1ob3Jpem9udGFsLW1hcmdpbjogMTJweCAhZGVmYXVsdDtcblxuJGljb24tY29sb3I6IHJnYmEodGhlbWUtdmFyaWFibGVzLnByb3AtdmFsdWUob24tc3VyZmFjZSksIDAuNTQpICFkZWZhdWx0O1xuJGRpc2FibGVkLWljb24tY29sb3I6IHJnYmEoXG4gIHRoZW1lLXZhcmlhYmxlcy5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAwLjM4XG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBDdXN0b21pemVzIHRoZSBzaXplIChib3RoIHdpZHRoIGFuZCBoZWlnaHQpIG9mIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc2l6ZSAtIHRoZSBpbnRlbmRlZCBpY29uIHNpemUuXG4vLy9cbkBtaXhpbiBzaXplKCRzaXplLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAubWRjLXNlbGVjdF9faWNvbiB7XG4gICAgICB3aWR0aDogJHNpemU7XG4gICAgICBoZWlnaHQ6ICRzaXplO1xuICAgICAgZm9udC1zaXplOiAkc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGljb24tY29sb3IoJGNvbG9yLW9yLW1hcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmOm5vdCgubWRjLXNlbGVjdC0tZGlzYWJsZWQpIHtcbiAgICBAaW5jbHVkZSBfaWNvbi1jb2xvcihcbiAgICAgIHN0YXRlLmdldC1kZWZhdWx0LXN0YXRlKCRjb2xvci1vci1tYXApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgJi5tZGMtc2VsZWN0LS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2ljb24tY29sb3IoXG4gICAgICBzdGF0ZS5nZXQtZGlzYWJsZWQtc3RhdGUoJGNvbG9yLW9yLW1hcCksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cbn1cblxuQG1peGluIGljb24taG9yaXpvbnRhbC1tYXJnaW5zKCRsZWZ0LCAkcmlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgJGxlZnQsICRyaWdodCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaWNvbi1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGlmICRjb2xvciB7XG4gICAgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBAaW5jbHVkZSB0aGVtZS1taXhpbnMucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuLy8gU2VsZWN0b3IgJy5tZGMtKicgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGlzIHByb2plY3QuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBOT1RFOiB0aGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWZvcmVtZW50aW9uZWQgY2xhc3Nlcy5cblxuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vbWl4aW5zJyBhcyBkb20tbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC9taXhpbnMnIGFzIGZsb2F0aW5nLWxhYmVsLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC92YXJpYWJsZXMnIGFzIGZsb2F0aW5nLWxhYmVsLXZhcmlhYmxlcztcbkB1c2UgJ0BtYXRlcmlhbC9saXN0L21peGlucycgYXMgbGlzdC1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbGlzdC9ldm9sdXRpb24tbWl4aW5zJyBhcyBsaXN0LWV2b2x1dGlvbi1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbm90Y2hlZC1vdXRsaW5lL21peGlucycgYXMgbm90Y2hlZC1vdXRsaW5lLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9ub3RjaGVkLW91dGxpbmUvdmFyaWFibGVzJyBhcyBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL21peGlucycgYXMgdGhlbWUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3R5cG9ncmFwaHkvbWl4aW5zJyBhcyB0eXBvZ3JhcGh5LW1peGlucztcbkB1c2UgJy4vc2VsZWN0LWhlbHBlci10ZXh0LXRoZW1lJztcbkB1c2UgJy4vc2VsZWN0LWljb24tdGhlbWUnO1xuQHVzZSAnLi9zZWxlY3QtdGhlbWUnO1xuQHVzZSAnLi9zZWxlY3QtZmlsbGVkJztcbkB1c2UgJy4vc2VsZWN0LW91dGxpbmVkJztcbkB1c2UgJy4vc2VsZWN0LXJpcHBsZSc7XG5AdXNlICcuL3NlbGVjdC1oZWxwZXItdGV4dCc7XG5AdXNlICcuL3NlbGVjdC1pY29uJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1zZWxlY3Qge1xuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5pbmstY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC10aGVtZS4kaW5rLWNvbG9yLFxuICAgICAgICBkaXNhYmxlZDogc2VsZWN0LXRoZW1lLiRkaXNhYmxlZC1pbmstY29sb3IsXG4gICAgICApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLmxhYmVsLWNvbG9yKFxuICAgICAgKFxuICAgICAgICBkZWZhdWx0OiBzZWxlY3QtdGhlbWUuJGxhYmVsLWNvbG9yLFxuICAgICAgICBmb2N1czogc2VsZWN0LXRoZW1lLiRmb2N1c2VkLWxhYmVsLWNvbG9yLFxuICAgICAgICBkaXNhYmxlZDogc2VsZWN0LXRoZW1lLiRkaXNhYmxlZC1sYWJlbC1jb2xvcixcbiAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUuZHJvcGRvd24taWNvbi1jb2xvcihcbiAgICAgIChcbiAgICAgICAgZGVmYXVsdDogc2VsZWN0LXRoZW1lLiRkcm9wZG93bi1pY29uLWNvbG9yLFxuICAgICAgICBmb2N1czogcHJpbWFyeSxcbiAgICAgICAgZGlzYWJsZWQ6IHNlbGVjdC10aGVtZS4kZGlzYWJsZWQtZHJvcGRvd24taWNvbi1jb2xvcixcbiAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBzZWxlY3QtaGVscGVyLXRleHQtdGhlbWUuaGVscGVyLXRleHQtY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC1oZWxwZXItdGV4dC10aGVtZS4kaGVscGVyLXRleHQtY29sb3IsXG4gICAgICAgIGRpc2FibGVkOiBzZWxlY3QtaGVscGVyLXRleHQtdGhlbWUuJGRpc2FibGVkLWhlbHBlci10ZXh0LWNvbG9yLFxuICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIHNlbGVjdC1pY29uLXRoZW1lLmljb24tY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWNvbG9yLFxuICAgICAgICBkaXNhYmxlZDogc2VsZWN0LWljb24tdGhlbWUuJGRpc2FibGVkLWljb24tY29sb3IsXG4gICAgICApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgLy8gSGlnaC1jb250cmFzdCBtb2RlIHN1cHBvcnRcbiAgICBAaW5jbHVkZSBkb20tbWl4aW5zLmZvcmNlZC1jb2xvcnMtbW9kZSgpIHtcbiAgICAgICRncmF5LXRleHQ6IChcbiAgICAgICAgZGlzYWJsZWQ6IEdyYXlUZXh0LFxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5pbmstY29sb3IoJGdyYXktdGV4dCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLmRyb3Bkb3duLWljb24tY29sb3IoXG4gICAgICAgIChcbiAgICAgICAgICBkaXNhYmxlZDogcmVkLFxuICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5sYWJlbC1jb2xvcigkZ3JheS10ZXh0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUuYm90dG9tLWxpbmUtY29sb3IoJGdyYXktdGV4dCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLm91dGxpbmUtY29sb3IoJGdyYXktdGV4dCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgQGluY2x1ZGUgc2VsZWN0LWljb24tdGhlbWUuaWNvbi1jb2xvcigkZ3JheS10ZXh0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgICBAaW5jbHVkZSBzZWxlY3QtaGVscGVyLXRleHQtdGhlbWUuaGVscGVyLXRleHQtY29sb3IoXG4gICAgICAgICRncmF5LXRleHQsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZsb2F0aW5nIGxhYmVsIHByaXZhdGUgbWl4aW5cbiAgICBAaW5jbHVkZSBfZmxvYXRpbmctbGFiZWwoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgLy8gc3RydWN0dXJhbFxuICAgIEBpbmNsdWRlIF9wYWRkaW5nLWhvcml6b250YWwoXG4gICAgICAkbGVmdDogc2VsZWN0LXRoZW1lLiRhbmNob3ItcGFkZGluZy1sZWZ0LFxuICAgICAgJGxlZnQtd2l0aC1sZWFkaW5nLWljb246XG4gICAgICAgIHNlbGVjdC10aGVtZS4kYW5jaG9yLXBhZGRpbmctbGVmdC13aXRoLWxlYWRpbmctaWNvbixcbiAgICAgICRyaWdodDogc2VsZWN0LXRoZW1lLiRhbmNob3ItcGFkZGluZy1yaWdodCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBzZWxlY3QtaWNvbi10aGVtZS5zaXplKFxuICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUuZHJvcGRvd24taWNvbi1zaXplKFxuICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfb3B0aW9uLXNpZGUtcGFkZGluZygxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX29wdGlvbi1ncmFwaGljLXRyYWlsaW5nLW1hcmdpbigxMnB4LCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IC8vIE1lbnUgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoaXMuXG4gICAgfVxuXG4gICAgJl9fZHJvcGRvd24taWNvbiB7XG4gICAgICBAaW5jbHVkZSBfZHJvcGRvd24taWNvbi1iYXNlKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICAgIEBpbmNsdWRlIF9kcm9wZG93bi1pY29uLWluYWN0aXZlKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShcbiAgICAgICAgICBtYXJnaW4sXG4gICAgICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW4sXG4gICAgICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24taG9yaXpvbnRhbC1tYXJnaW5cbiAgICAgICAgKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuXG4gICAgICAubWRjLXNlbGVjdC0tYWN0aXZhdGVkICYge1xuICAgICAgICBAaW5jbHVkZSBfZHJvcGRvd24taWNvbi1hY3RpdmUoJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgIEBpbmNsdWRlIGZsb2F0aW5nLWxhYmVsLW1peGlucy5mbG9hdC1wb3NpdGlvbihcbiAgICAgIHNlbGVjdC10aGVtZS4kbGFiZWwtcG9zaXRpb24teSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICB3aWR0aDogc2VsZWN0LXRoZW1lLiRkZWZhdWx0LXdpZHRoO1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX3RleHQoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUubGFiZWwtY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC10aGVtZS4kZXJyb3ItY29sb3IsXG4gICAgICAgIGZvY3VzOiBzZWxlY3QtdGhlbWUuJGVycm9yLWNvbG9yLFxuICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBzZWxlY3QtaGVscGVyLXRleHQtdGhlbWUuaGVscGVyLXRleHQtdmFsaWRhdGlvbi1jb2xvcihcbiAgICAgIHNlbGVjdC10aGVtZS4kZXJyb3ItY29sb3IsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLmRyb3Bkb3duLWljb24tY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC10aGVtZS4kZXJyb3ItY29sb3IsXG4gICAgICAgIGZvY3VzOiBzZWxlY3QtdGhlbWUuJGVycm9yLWNvbG9yLFxuICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtc2VsZWN0LS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgX2Rpc2FibGVkKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtc2VsZWN0LS13aXRoLWxlYWRpbmctaWNvbiB7XG4gICAgQGluY2x1ZGUgX29wdGlvbi1zaWRlLXBhZGRpbmcoMTJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgQGluY2x1ZGUgX2xpc3QoJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHNlbGVjdC1maWxsZWQuY29yZS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBzZWxlY3Qtb3V0bGluZWQuY29yZS1zdHlsZXMoJHF1ZXJ5OiAkcXVlcnkpO1xuICBAaW5jbHVkZSBzZWxlY3QtcmlwcGxlLmNvcmUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgc2VsZWN0LWhlbHBlci10ZXh0LmhlbHBlci10ZXh0LWNvcmUtc3R5bGVzKCRxdWVyeTogJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgc2VsZWN0LWljb24uaWNvbi1jb3JlLXN0eWxlcygkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfbGlzdCgkcXVlcnkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBkb20tbWl4aW5zLmZvcmNlZC1jb2xvcnMtbW9kZSgpIHtcbiAgICAubWRjLXNlbGVjdF9fbWVudTo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cblxuICAubWRjLXNlbGVjdF9fbWVudSAubWRjLWRlcHJlY2F0ZWQtbGlzdCxcbiAgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0IHtcbiAgICBAaW5jbHVkZSBzZWxlY3QtaWNvbi10aGVtZS5pY29uLWhvcml6b250YWwtbWFyZ2lucygwLCAwLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgbGlzdC1taXhpbnMuZGVwcmVjYXRlZC1pdGVtLXNlbGVjdGVkLXRleHQtY29sb3IoXG4gICAgICBvbi1zdXJmYWNlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1zZWxlY3RfX21lbnUgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1zZWxlY3RfX29uZS1saW5lLW9wdGlvbiB7XG4gICAgQGluY2x1ZGUgbGlzdC1ldm9sdXRpb24tbWl4aW5zLm9uZS1saW5lLWl0ZW0taGVpZ2h0KDQ4cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtc2VsZWN0X190d28tbGluZS1vcHRpb24ge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy50d28tbGluZS1pdGVtLWhlaWdodCg2NHB4LCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHdvLWxpbmVzIHtcbiAgICAgIC5tZGMtbGlzdC1pdGVtX19zdGFydCB7XG4gICAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAubWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0IHtcbiAgICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS1taXhpbnMudGV4dC1iYXNlbGluZShcbiAgICAgICAgICAkdG9wOiAyOHB4LFxuICAgICAgICAgICRib3R0b206IDIwcHgsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLW1ldGEgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktbWl4aW5zLnRleHQtYmFzZWxpbmUoJHRvcDogMzZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19vcHRpb24td2l0aC1sZWFkaW5nLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLXN0YXJ0LXNwYWNpbmcoMTJweCwgMCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLXN0YXJ0LXNpemUoMzZweCwgMjRweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLXNwYWNpbmcoMCwgMTJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1zZWxlY3RfX29wdGlvbi13aXRoLW1ldGEge1xuICAgIEBpbmNsdWRlIGxpc3QtZXZvbHV0aW9uLW1peGlucy5pdGVtLWVuZC1zcGFjaW5nKDEycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIGJhc2UgZHJvcGRvd24gaWNvbiBzdHlsZXMuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBfZHJvcGRvd24taWNvbi1iYXNlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fZHJvcGRvd24taWNvbi1hY3RpdmUsXG4gIC5tZGMtc2VsZWN0X19kcm9wZG93bi1pY29uLWluYWN0aXZlIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gIH1cblxuICAubWRjLXNlbGVjdF9fZHJvcGRvd24taWNvbi1ncmFwaGljIHtcbiAgICAkc3ZnLW5hdHVyYWwtd2lkdGg6IDEwcHg7XG4gICAgJHN2Zy1uYXR1cmFsLWhlaWdodDogNXB4O1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHdpZHRoOiBtYXRoLmRpdigkc3ZnLW5hdHVyYWwtd2lkdGgsIHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLXNpemUpICogMTAwJTtcbiAgICAgIGhlaWdodDogbWF0aC5kaXYoJHN2Zy1uYXR1cmFsLWhlaWdodCwgc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSkgKiAxMDAlO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHN0eWxlcyBmb3IgdHJhbnNpdGlvbmluZyB0aGUgZHJvcGRvd24gaWNvbiB0byBpbmFjdGl2ZSBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIF9kcm9wZG93bi1pY29uLWluYWN0aXZlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtYW5pbWF0aW9uOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgYW5pbWF0aW9uKTtcblxuICAubWRjLXNlbGVjdF9fZHJvcGRvd24taWNvbi1pbmFjdGl2ZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgc2VsZWN0LXRoZW1lLiRpY29uLWluYWN0aXZlLWZhZGUtaW4tZHVyYXRpb24gbGluZWFyXG4gICAgICAgIHNlbGVjdC10aGVtZS4kaWNvbi1pbmFjdGl2ZS1mYWRlLW91dC1kdXJhdGlvbjtcbiAgICB9XG4gIH1cblxuICAubWRjLXNlbGVjdF9fZHJvcGRvd24taWNvbi1hY3RpdmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHNlbGVjdC10aGVtZS4kaWNvbi1pbmFjdGl2ZS1mYWRlLW91dC1kdXJhdGlvbiBsaW5lYXI7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgc3R5bGVzIGZvciB0cmFuc2l0aW9uaW5nIHRoZSBkcm9wZG93biBpY29uIHRvIGFjdGl2YXRlZCBzdGF0ZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIF9kcm9wZG93bi1pY29uLWFjdGl2ZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG5cbiAgLm1kYy1zZWxlY3RfX2Ryb3Bkb3duLWljb24taW5hY3RpdmUge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtYW5pbWF0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHNlbGVjdC10aGVtZS4kaWNvbi1hY3RpdmUtZmFkZS1vdXQtZHVyYXRpb24gbGluZWFyO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19kcm9wZG93bi1pY29uLWFjdGl2ZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1hbmltYXRpb24pIHtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgc2VsZWN0LXRoZW1lLiRpY29uLWFjdGl2ZS1mYWRlLWluLWR1cmF0aW9uIGxpbmVhclxuICAgICAgICBzZWxlY3QtdGhlbWUuJGljb24tYWN0aXZlLWZhZGUtb3V0LWR1cmF0aW9uO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSBzaWRlIHBhZGRpbmcgZm9yIG9wdGlvbiB0ZXh0LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG5AbWl4aW4gX29wdGlvbi1zaWRlLXBhZGRpbmcoJHNpZGUtcGFkZGluZywgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtc2VsZWN0X19tZW51IC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsICRzaWRlLXBhZGRpbmcsICRzaWRlLXBhZGRpbmcpO1xuICAgIH1cbiAgfVxufVxuXG4vLy9cbi8vLyBTZXRzIHRoZSB0cmFsaWluZyBtYXJnaW4gZm9yIGFuIG9wdGlvbidzIGxlYWRpbmcgZ3JhcGhpYy5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuQG1peGluIF9vcHRpb24tZ3JhcGhpYy10cmFpbGluZy1tYXJnaW4oXG4gICRtYXJnaW4tcmlnaHQsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtc2VsZWN0X19tZW51IC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCAkbWFyZ2luLXJpZ2h0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9mbG9hdGluZy1sYWJlbCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfdGV4dCgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBoZWlnaHQ6IHNlbGVjdC10aGVtZS4kc2VsZWN0ZWQtdGV4dC1oZWlnaHQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiBpbmhlcml0OyAvLyBPdmVycmlkZSBkZWZhdWx0IHVzZXIgYWdlbnQgc3R5bGVzaGVldFxuICAgIH1cbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LW1peGlucy50eXBvZ3JhcGh5KHN1YnRpdGxlMSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktbWl4aW5zLm92ZXJmbG93LWVsbGlwc2lzKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICBAaW5jbHVkZSBydGwucnRsIHtcbiAgICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGlzYWJsZWQoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG59XG5cbi8vLyBBZGRzIGhvcml6b250YWwgcGFkZGluZyB0byB0aGUgc2VsZWN0ZWQgdGV4dFxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IC0gbGVmdCBzaWRlIHBhZGRpbmdcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQtd2l0aC1sZWFkaW5nLWljb24gLSBsZWZ0LXNpZGUgcGFkZGluZyB3aGVuIGEgbGVhZGluZ1xuLy8vICAgICBpY29uIGlzIHByZXNlbnRcbi8vLyBAcGFyYW0ge051bWJlcn0gJHJpZ2h0IC0gcmlnaHQtc2lkZSBwYWRkaW5nOyBub3RlIHRoYXQgYSB0cmFpbGluZyBpY29uIGlzXG4vLy8gICAgIGFsd2F5cyBwcmVzZW50LlxuQG1peGluIF9wYWRkaW5nLWhvcml6b250YWwoXG4gICRsZWZ0LFxuICAkbGVmdC13aXRoLWxlYWRpbmctaWNvbixcbiAgJHJpZ2h0LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShwYWRkaW5nLCAkbGVmdCwgJHJpZ2h0KTtcbiAgICB9XG4gIH1cblxuICAmLm1kYy1zZWxlY3QtLXdpdGgtbGVhZGluZy1pY29uIC5tZGMtc2VsZWN0X19hbmNob3Ige1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsICRsZWZ0LXdpdGgtbGVhZGluZy1pY29uLCAkcmlnaHQpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTYgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIE5PVEU6IHRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZm9yZW1lbnRpb25lZCBjbGFzc2VzLlxuXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnQG1hdGVyaWFsL2RlbnNpdHkvZnVuY3Rpb25zJyBhcyBkZW5zaXR5LWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9kb20vbWl4aW5zJyBhcyBkb20tbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3J0bC9ydGwnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9mdW5jdGlvbnMnIGFzIHNoYXBlLWZ1bmN0aW9ucztcbkB1c2UgJ0BtYXRlcmlhbC9zaGFwZS9taXhpbnMnIGFzIHNoYXBlLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJy4vdmFyaWFibGVzJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICcuL2V2b2x1dGlvbi1taXhpbnMnO1xuXG5AbWl4aW4gZGVwcmVjYXRlZC1jb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZWQtd2l0aG91dC1yaXBwbGUoJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlZC1yaXBwbGUoJHF1ZXJ5KTtcbn1cblxuLy8gVGhpcyBBUEkgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBmcmFtZXdvcmtzIHRoYXQgbWF5IHdhbnQgdG8gc2VwYXJhdGUgdGhlXG4vLyByaXBwbGUtcmVsYXRlZCBzdHlsZXMgZnJvbSB0aGUgb3RoZXIgbGlzdCBzdHlsZXMuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgbW9zdFxuLy8gdXNlcnMgdXNlIGBtZGMtZGVwcmVjYXRlZC1saXN0LWNvcmUtc3R5bGVzYCBpbnN0ZWFkLlxuQG1peGluIGRlcHJlY2F0ZWQtd2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtdHlwb2dyYXBoeTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHR5cG9ncmFwaHkpO1xuXG4gICRkaXZpZGVyLWNvbG9yOiBpZihcbiAgICB0aGVtZS1jb2xvci50b25lKHRoZW1lLWNvbG9yLiRiYWNrZ3JvdW5kKSA9PSAnZGFyaycsXG4gICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWRpdmlkZXItY29sb3Itb24tZGFyay1iZyxcbiAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtZGl2aWRlci1jb2xvci1vbi1saWdodC1iZ1xuICApO1xuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0IHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWJhc2VfKCRxdWVyeSk7XG4gIH1cblxuICBAaW5jbHVkZSBkZXByZWNhdGVkLXNpbmdsZS1saW5lLWRlbnNpdHkoXG4gICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLXNpbmdsZS1saW5lLWRlbnNpdHktc2NhbGUsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlZC1pdGVtLXNlY29uZGFyeS10ZXh0LWluay1jb2xvcihcbiAgICB0ZXh0LXNlY29uZGFyeS1vbi1iYWNrZ3JvdW5kLFxuICAgICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkZXByZWNhdGVkLWl0ZW0tZ3JhcGhpYy1maWxsLWNvbG9yKHRyYW5zcGFyZW50LCAkcXVlcnkpO1xuICBAaW5jbHVkZSBkZXByZWNhdGVkLWl0ZW0tZ3JhcGhpYy1pbmstY29sb3IodGV4dC1pY29uLW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZWQtaXRlbS1tZXRhLWluay1jb2xvcih0ZXh0LWhpbnQtb24tYmFja2dyb3VuZCwgJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlZC1ncm91cC1zdWJoZWFkZXItaW5rLWNvbG9yKFxuICAgIHRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kLFxuICAgICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkZXByZWNhdGVkLWl0ZW0tZGlzYWJsZWQtdGV4dC1vcGFjaXR5KFxuICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZXh0LWRpc2FibGVkLW9wYWNpdHksXG4gICAgJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZWQtaXRlbS1kaXNhYmxlZC10ZXh0LWNvbG9yKFxuICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZXh0LWRpc2FibGVkLWNvbG9yLFxuICAgICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSBkZXByZWNhdGVkLWl0ZW0tc2VsZWN0ZWQtdGV4dC1jb2xvcihcbiAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGV4dC1zZWxlY3RlZC1jb2xvcixcbiAgICAkcXVlcnlcbiAgKTtcblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tZGVuc2Uge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBwYWRkaW5nLXRvcDogNHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44MTJyZW07XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fd3JhcHBlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWl0ZW0tYmFzZV87XG4gICAgfVxuXG4gICAgLy8gRm9yIGNvbXBvbmVudHMgdXNpbmcgYXJpYS1hY3RpdmVkZXNjZW5kYW50LCB0aGUgZm9jdXMgcHNldWRvY2xhc3MgaXNcbiAgICAvLyBuZXZlciBhcHBsaWVkIGFuZCB1c2UgYC5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWZvY3VzZWRgIGluc3RlYWQuXG4gICAgJjpub3QoLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbS0tc2VsZWN0ZWQpOmZvY3VzOjpiZWZvcmUsXG4gICAgJi5tZGMtcmlwcGxlLXVwZ3JhZGVkLS1iYWNrZ3JvdW5kLWZvY3VzZWQ6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBkb20tbWl4aW5zLnRyYW5zcGFyZW50LWJvcmRlcigkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuXG4gICAgJi5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0tLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZG9tLW1peGlucy50cmFuc3BhcmVudC1ib3JkZXIoXG4gICAgICAgICRib3JkZXItd2lkdGg6IDNweCxcbiAgICAgICAgJGJvcmRlci1zdHlsZTogZG91YmxlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWxpc3QtaXRlbS1wYWRkaW5nLXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGV4dHVhbC12YXJpYW50LWNvbmZpZyxcbiAgICAgICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1saXN0LWl0ZW0taGVpZ2h0LXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGV4dHVhbC12YXJpYW50LWNvbmZpZyxcbiAgICAgICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0taWNvbi1saXN0ICYge1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1saXN0LWl0ZW0tcGFkZGluZy12YXJpYW50KFxuICAgICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtaWNvbi12YXJpYW50LWNvbmZpZyxcbiAgICAgICAgJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1saXN0LWl0ZW0taGVpZ2h0LXZhcmlhbnQoXG4gICAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1pY29uLXZhcmlhbnQtY29uZmlnLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLWF2YXRhci1saXN0ICYge1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1saXN0LWl0ZW0tcGFkZGluZy12YXJpYW50KFxuICAgICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtYXZhdGFyLXZhcmlhbnQtY29uZmlnLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWxpc3QtaXRlbS1oZWlnaHQtdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWF2YXRhci12YXJpYW50LWNvbmZpZyxcbiAgICAgICAgJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LS10aHVtYm5haWwtbGlzdCAmIHtcbiAgICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtbGlzdC1pdGVtLXBhZGRpbmctdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLXRodW1ibmFpbC12YXJpYW50LWNvbmZpZyxcbiAgICAgICAgJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1saXN0LWl0ZW0taGVpZ2h0LXZhcmlhbnQoXG4gICAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10aHVtYm5haWwtdmFyaWFudC1jb25maWcsXG4gICAgICAgICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0taW1hZ2UtbGlzdCAmIHtcbiAgICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtbGlzdC1pdGVtLXBhZGRpbmctdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWltYWdlLXZhcmlhbnQtY29uZmlnLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWxpc3QtaXRlbS1oZWlnaHQtdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWltYWdlLXZhcmlhbnQtY29uZmlnLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLXZpZGVvLWxpc3QgJiB7XG4gICAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWxpc3QtaXRlbS1wYWRkaW5nLXZhcmlhbnQoXG4gICAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC12aWRlby12YXJpYW50LWNvbmZpZyxcbiAgICAgICAgJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1saXN0LWl0ZW0taGVpZ2h0LXZhcmlhbnQoXG4gICAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC12aWRlby12YXJpYW50LWNvbmZpZyxcbiAgICAgICAgJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgaXMgaW5jbHVkZWQgaGVyZSB0byBwcmVzZXJ2ZSBleHBlY3RlZCBzcGVjaWZpY2l0eSBiZWhhdmlvciAoYXZhdGFyXG4gIC8vIGdyYXBoaWMgc3R5bGVzIG11c3QgdGFrZSBwcmlvcml0eSkuXG4gIC8vIFRPRE8oYi8xNTcwMzgzMTYpOiByZWdyb3VwIHRoaXMgd2l0aCBkZW5zaXR5IHN0eWxlcyB3aGVuIG5lc3RpbmcgaXMgZml4ZWQuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LS1kZW5zZSAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19ncmFwaGljIHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWdyYXBoaWMtc2l6ZS1kZW5zZV8oMjBweCwgJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIH1cblxuICAgIC8vIFRPRE8oYi8xNTY2MjQ5NjYpOiB0aGlzIHJldGFpbnMgbGVnYWN5IHNwYWNpbmcgYnV0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZ3JhcGhpYy1zaXplLXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtZGVwcmVjYXRlZC1ncmFwaGljLWNvbmZpZyxcbiAgICAgICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0taWNvbi1saXN0ICYge1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1ncmFwaGljLXNpemUtdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWljb24tdmFyaWFudC1jb25maWcsXG4gICAgICAgICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tYXZhdGFyLWxpc3QgJiB7XG4gICAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWdyYXBoaWMtc2l6ZS12YXJpYW50KFxuICAgICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtYXZhdGFyLXZhcmlhbnQtY29uZmlnLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLXRodW1ibmFpbC1saXN0ICYge1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1ncmFwaGljLXNpemUtdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLXRodW1ibmFpbC12YXJpYW50LWNvbmZpZyxcbiAgICAgICAgJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cblxuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LS1pbWFnZS1saXN0ICYge1xuICAgICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1ncmFwaGljLXNpemUtdmFyaWFudChcbiAgICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWltYWdlLXZhcmlhbnQtY29uZmlnLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLXZpZGVvLWxpc3QgJiB7XG4gICAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWdyYXBoaWMtc2l6ZS12YXJpYW50KFxuICAgICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdmlkZW8tdmFyaWFudC1jb25maWcsXG4gICAgICAgICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBFeHRyYSBzcGVjaWZpY2l0eSBpcyB0byBvdmVycmlkZSAubWF0ZXJpYWwtaWNvbnMgZGlzcGxheSBzdHlsZSBpZiB1c2VkIGluXG4gIC8vIGNvbmp1bmN0aW9uIHdpdGggbWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19ncmFwaGljXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlIHBsdWdpbi9zZWxlY3Rvci1iZW0tcGF0dGVyblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdCAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19ncmFwaGljIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgfVxuICB9XG4gIC8vIHN0eWxlbGludC1lbmFibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuXG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fbWV0YSB7XG4gICAgJjpub3QoLm1hdGVyaWFsLWljb25zKSB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoY2FwdGlvbiwgJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgQGluY2x1ZGUgcnRsLmlnbm9yZS1uZXh0LWxpbmUoKTtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcblxuICAgICAgQGF0LXJvb3Qge1xuICAgICAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtW2Rpcj0ncnRsJ10gJixcbiAgICAgICAgW2Rpcj0ncnRsJ10gLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSAmIHtcbiAgICAgICAgICBAaW5jbHVkZSBydGwuaWdub3JlLW5leHQtbGluZSgpO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgIEBpbmNsdWRlIHJ0bC5pZ25vcmUtbmV4dC1saW5lKCk7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS5vdmVyZmxvdy1lbGxpcHNpcygkcXVlcnkpO1xuICB9XG5cbiAgLy8gRGlzYWJsZSBpbnRlcmFjdGlvbiBvbiBsYWJlbCBlbGVtZW50cyB0aGF0IG1heSBhdXRvbWF0aWNhbGx5XG4gIC8vIHRvZ2dsZSBjb3JyZXNwb25kaW5nIGNoZWNrYm94IC8gcmFkaW8gaW5wdXQuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX3RleHRbZm9yXSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX3ByaW1hcnktdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS5vdmVyZmxvdy1lbGxpcHNpcygkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGV4dC1iYXNlbGluZShcbiAgICAgICR0b3A6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1pdGVtLXByaW1hcnktdGV4dC1iYXNlbGluZS1oZWlnaHQsXG4gICAgICAkYm90dG9tOiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtaXRlbS1zZWNvbmRhcnktdGV4dC1iYXNlbGluZS1oZWlnaHQsXG4gICAgICAkZGlzcGxheTogYmxvY2ssXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tdmlkZW8tbGlzdCAmLFxuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LS1pbWFnZS1saXN0ICYsXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLXRodW1ibmFpbC1saXN0ICYsXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLWF2YXRhci1saXN0ICYsXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLWljb24tbGlzdCAmIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGV4dC1iYXNlbGluZShcbiAgICAgICAgJHRvcDpcbiAgICAgICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtaXRlbS1wcmltYXJ5LXRleHQtYmFzZWxpbmUtaGVpZ2h0LXdpdGgtZ3JhcGhpYyxcbiAgICAgICAgJGJvdHRvbTogdmFyaWFibGVzLiRkZXByZWNhdGVkLWl0ZW0tc2Vjb25kYXJ5LXRleHQtYmFzZWxpbmUtaGVpZ2h0LFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tZGVuc2UgJiB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1kZW5zZS1pdGVtLXByaW1hcnktdGV4dC1iYXNlbGluZS1oZWlnaHQsXG4gICAgICAgICRib3R0b206IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1pdGVtLXNlY29uZGFyeS10ZXh0LWJhc2VsaW5lLWhlaWdodCxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1lbmFibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuXG4gIH1cblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19zZWNvbmRhcnktdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KGJvZHkyLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAkdG9wOiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtaXRlbS1zZWNvbmRhcnktdGV4dC1iYXNlbGluZS1oZWlnaHQsXG4gICAgICAkZGlzcGxheTogYmxvY2ssXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tZGVuc2UgJiB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1lbmFibGUgcGx1Z2luL3NlbGVjdG9yLWJlbS1wYXR0ZXJuXG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLWRlbnNlIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLXR3by1saW5lIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX3RleHQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LS10d28tbGluZSB7XG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBoZWlnaHQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10d28tbGluZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtZGVwcmVjYXRlZC1saXN0LS12aWRlby1saXN0IC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0sXG4gICAgJi5tZGMtZGVwcmVjYXRlZC1saXN0LS1pbWFnZS1saXN0IC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0sXG4gICAgJi5tZGMtZGVwcmVjYXRlZC1saXN0LS10aHVtYm5haWwtbGlzdCAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtLFxuICAgICYubWRjLWRlcHJlY2F0ZWQtbGlzdC0tYXZhdGFyLWxpc3QgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSxcbiAgICAmLm1kYy1kZXByZWNhdGVkLWxpc3QtLWljb24tbGlzdCAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGhlaWdodDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXR3by1saW5lLWdyYXBoaWMtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEljb25zIGluIG11bHRpbGluZSBsaXN0cyBhcmUgdGhlIG9ubHkgZ3JhcGhpYyB0aGF0IGlzbid0IGNlbnRlcmVkLlxuICAgICYubWRjLWRlcHJlY2F0ZWQtbGlzdC0taWNvbi1saXN0IC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXR3by1saW5lLWljb24tdG9wLW1hcmdpbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tdHdvLWxpbmUubWRjLWRlcHJlY2F0ZWQtbGlzdC0tZGVuc2VcbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtLFxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC0tYXZhdGFyLWxpc3QubWRjLWRlcHJlY2F0ZWQtbGlzdC0tZGVuc2VcbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LS1hdmF0YXItbGlzdC5tZGMtZGVwcmVjYXRlZC1saXN0LS1kZW5zZVxuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZ3JhcGhpYy1zaXplLWRlbnNlXygzNnB4LCAkcXVlcnkpO1xuICB9XG5cbiAgLy8gT25seSBjaGFuZ2UgbW91c2UgY3Vyc29yIGZvciBsaXN0IGl0ZW1zIHdoaWNoIGFyZSBub3QgZGlzYWJsZWQuXG4gIDpub3QoLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbS0tZGlzYWJsZWQpLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cblxuICAvLyBPdmVycmlkZSBhbmNob3IgdGFnIHN0eWxlcyBmb3IgdGhlIHVzZS1jYXNlIG9mIGEgbGlzdCBiZWluZyB1c2VkIGZvciBuYXZpZ2F0aW9uXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLW1heC10eXBlLHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuICBhLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC10eXBlLHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICB9XG4gIH1cblxuICAvLyBOb3RlOiBpZGVhbGx5IHdlJ2QgYmUgYWJsZSB0byBob2lzdCB0aGlzIHRvIHRoZSB0b3AtbGV2ZWwgYCRmZWF0LWNvbG9yYCxcbiAgLy8gYnV0IGRvaW5nIHNvIHdpbGwgY2F1c2UgdGhlIGBib3JkZXJgIGRlY2xhcmF0aW9uIG9uXG4gIC8vIGAubWRjLWRlcHJlY2F0ZWQtbGlzdC1kaXZpZGVyYCBhYm92ZSB0byBvdmVycmlkZSBpdC5cbiAgQGluY2x1ZGUgZGVwcmVjYXRlZC1kaXZpZGVyLWNvbG9yKCRkaXZpZGVyLWNvbG9yLCAkcXVlcnkpO1xuXG4gIC8vIERlcHJlY2F0ZWQuIFVzZSB0aGUgc3BlY2lhbGl6ZWQgaW5zZXQgY2xhc3NlcyBpbnN0ZWFkLlxuICAvLyBJdGVtcyBhcmUgZnVsbHkgaW5zZXQgdXNpbmcgcGFkZGluZy5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0tcGFkZGVkIHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXQtdmFyaWFudChcbiAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZXh0dWFsLXZhcmlhbnQtY29uZmlnLFxuICAgICAgJHVzZS1wYWRkaW5nOiB0cnVlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLy8gRGVwcmVjYXRlZC4gVXNlIHRoZSBzcGVjaWFsaXplZCBpbnNldCBjbGFzc2VzIGluc3RlYWQuXG4gIC8vIEl0ZW1zJ3MgbGVhZGluZywgYnV0IG5vdCB0cmFpbGluZywgZWRnZSBpcyBpbnNldCB0byBhY2NvdW50IGZvciAqYXZhdGFyKlxuICAvLyB3aWR0aC5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0taW5zZXQge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZGl2aWRlci1pbnNldC12YXJpYW50KFxuICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWF2YXRhci12YXJpYW50LWNvbmZpZyxcbiAgICAgICR0cmFpbGluZzogZmFsc2UsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAvLyBEZXByZWNhdGVkLiBVc2UgdGhlIHNwZWNpYWxpemVkIGluc2V0IGNsYXNzZXMgaW5zdGVhZC5cbiAgLy8gSXRlbSdzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGVkZ2VzIGFyZSBpbnNldCB0byBhY2NvdW50IGZvciAqYXZhdGFyKiB3aWR0aC5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0taW5zZXQubWRjLWRlcHJlY2F0ZWQtbGlzdC1kaXZpZGVyLS1wYWRkZWQge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZGl2aWRlci1pbnNldC12YXJpYW50KFxuICAgICAgdmFyaWFibGVzLiRkZXByZWNhdGVkLWF2YXRhci12YXJpYW50LWNvbmZpZyxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0IHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXRzLXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGV4dHVhbC12YXJpYW50LWNvbmZpZyxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LS1pY29uLWxpc3Qge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZGl2aWRlci1pbnNldHMtdmFyaWFudChcbiAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1pY29uLXZhcmlhbnQtY29uZmlnLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLWF2YXRhci1saXN0IHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXRzLXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtYXZhdGFyLXZhcmlhbnQtY29uZmlnLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLXRodW1ibmFpbC1saXN0IHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXRzLXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGh1bWJuYWlsLXZhcmlhbnQtY29uZmlnLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtLWltYWdlLWxpc3Qge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZGl2aWRlci1pbnNldHMtdmFyaWFudChcbiAgICAgIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1pbWFnZS12YXJpYW50LWNvbmZpZyxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LS12aWRlby1saXN0IHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXRzLXZhcmlhbnQoXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdmlkZW8tdmFyaWFudC1jb25maWcsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1ncm91cCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIENhbmNlbCB0b3AvYm90dG9tIHBhZGRpbmcgb24gaW5kaXZpZHVhbCBsaXN0cyB3aXRoaW4gZ3JvdXBcbiAgICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0IHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1ncm91cF9fc3ViaGVhZGVyIHtcbiAgICAkbGlzdC1zdWJoZWFkZXItdmlydHVhbC1oZWlnaHQ6IDNyZW07XG4gICAgJGxpc3Qtc3ViaGVhZGVyLWxlYWRpbmc6IG1hcC5nZXQoXG4gICAgICBtYXAuZ2V0KHR5cG9ncmFwaHkuJHN0eWxlcywgYm9keTEpLFxuICAgICAgbGluZS1oZWlnaHRcbiAgICApO1xuICAgICRsaXN0LXN1YmhlYWRlci1tYXJnaW46IGNhbGMoXG4gICAgICAoI3skbGlzdC1zdWJoZWFkZXItdmlydHVhbC1oZWlnaHR9IC0gI3skbGlzdC1zdWJoZWFkZXItbGVhZGluZ30pIC8gMlxuICAgICk7XG5cbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIG1hcmdpbjogJGxpc3Qtc3ViaGVhZGVyLW1hcmdpbiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtc2lkZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGV2b2x1dGlvbi1taXhpbnMud2l0aG91dC1yaXBwbGUoJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG4vLyBUaGlzIEFQSSBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGZyYW1ld29ya3MgdGhhdCBtYXkgd2FudCB0byBzZXBhcmF0ZSB0aGUgcmlwcGxlLXJlbGF0ZWQgc3R5bGVzIGZyb20gdGhlIG90aGVyXG4vLyBsaXN0IHN0eWxlcy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtb3N0IHVzZXJzIHVzZSBgbWRjLWRlcHJlY2F0ZWQtbGlzdC1jb3JlLXN0eWxlc2AgaW5zdGVhZC5cbkBtaXhpbiBkZXByZWNhdGVkLXJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHJpcHBsZS5jb21tb24oJHF1ZXJ5KTsgLy8gQ09QWUJBUkFfQ09NTUVOVF9USElTX0xJTkVcblxuICAvLyBMaXN0IGl0ZW1zIHNob3VsZCBzdXBwb3J0IHN0YXRlcyBieSBkZWZhdWx0LCBidXQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIG9wdCBvdXQuXG4gIDpub3QoLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbS0tZGlzYWJsZWQpLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1pdGVtLWludGVyYWN0aXZlLXJpcHBsZV8oJHF1ZXJ5KTtcbiAgfVxuXG4gIC8vIFNldCBzdHlsZXMgb25seSBmb3IgZm9jdXMgc3RhdGUgb24gZGlzYWJsZWQgbGlzdCBpdGVtLlxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtLS1kaXNhYmxlZCB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnN1cmZhY2UoXG4gICAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnN1cmZhY2UoXG4gICAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS5yYWRpdXMtYm91bmRlZChcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUucmFkaXVzLWJvdW5kZWQoXG4gICAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtYmFzZS1jb2xvcihcbiAgICAgIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gICAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1iYXNlLWNvbG9yKFxuICAgICAgdGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGVtcG9yYXJ5LXJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1mb2N1cy1vcGFjaXR5KFxuICAgICAgcmlwcGxlLXRoZW1lLnN0YXRlcy1vcGFjaXR5KHByaW1hcnksIGZvY3VzKSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWZvY3VzLW9wYWNpdHkoXG4gICAgICByaXBwbGUtdGhlbWUuc3RhdGVzLW9wYWNpdHkocHJpbWFyeSwgZm9jdXMpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZW1wb3JhcnktcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICN7dmFyaWFibGVzLiRkZXByZWNhdGVkLXJpcHBsZS10YXJnZXR9LFxuICAgICN7dmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0fSB7XG4gICAgICBAaW5jbHVkZSByaXBwbGUudGFyZ2V0LWNvbW1vbigkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgZXZvbHV0aW9uLW1peGlucy53aXRoLXJpcHBsZSgkcXVlcnk6ICRxdWVyeSk7XG59XG5cbi8vL1xuLy8vIFNldHMgcmlwcGxlIGNvbG9yIGZvciBhIGxpc3QgaXRlbS5cbi8vL1xuQG1peGluIGRlcHJlY2F0ZWQtcmlwcGxlLXN0YXRlcygkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcyhcbiAgICAkY29sb3I6ICRjb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXJpcHBsZS10YXJnZXRcbiAgKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcyhcbiAgICAkY29sb3I6ICRjb2xvcixcbiAgICAkcXVlcnk6ICRxdWVyeSxcbiAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0XG4gICk7XG59XG5cbi8vLyBTZXRzIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBsaXN0IGl0ZW0gaW4gc2VsZWN0ZWQgb3IgYWN0aXZhdGVkIHN0YXRlLlxuLy8vIEBwYXJhbSB7Y29sb3J9ICRjb2xvciAtIFRoZSBkZXNpcmVkIHRleHQgY29sb3IuXG5AbWl4aW4gZGVwcmVjYXRlZC1pdGVtLXNlbGVjdGVkLXRleHQtY29sb3IoXG4gICRjb2xvcixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIC8vIFwiU2VsZWN0ZWRcIiBpcyBlcGhlbWVyYWwgYW5kIGxpa2VseSB0byBjaGFuZ2Ugc29vbi4gRS5nLiwgc2VsZWN0aW5nIG9uZSBvciBtb3JlIHBob3RvcyB0byBzaGFyZSBpbiBHb29nbGUgUGhvdG9zLlxuICAvLyBcIkFjdGl2YXRlZFwiIGlzIG1vcmUgcGVybWFuZW50LiBFLmcuLCB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIG5hdmlnYXRpb24gZGVzdGluYXRpb24gaW4gYSBkcmF3ZXIuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0tLXNlbGVjdGVkLFxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtLS1hY3RpdmF0ZWQge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtaXRlbS1wcmltYXJ5LXRleHQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtaXRlbS1ncmFwaGljLWluay1jb2xvcigkY29sb3IsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gZGVwcmVjYXRlZC1pdGVtLXByaW1hcnktdGV4dC1pbmstY29sb3IoXG4gICRjb2xvcixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICBAaW5jbHVkZSB0aGVtZS5wcm9wKGNvbG9yLCAkY29sb3IpO1xuICB9XG59XG5cbkBtaXhpbiBkZXByZWNhdGVkLWl0ZW0tc2Vjb25kYXJ5LXRleHQtaW5rLWNvbG9yKFxuICAkY29sb3IsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19zZWNvbmRhcnktdGV4dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtaXRlbS1ncmFwaGljLWZpbGwtY29sb3IoXG4gICRjb2xvcixcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3AoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtaXRlbS1ncmFwaGljLWluay1jb2xvcihcbiAgJGNvbG9yLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fZ3JhcGhpYyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtaXRlbS1tZXRhLWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fbWV0YSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBzaGFwZSByYWRpdXMgKHJvdW5kZWQpIHRvIHNpbmdsZSBsaW5lIGxpc3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIHwgTGlzdDxOdW1iZXI+fSAkcmFkaXVzIFJhZGl1cyBzaXplIGluIGBweGAgb3IgcGVyY2VudGFnZS4gSXQgY2FuIGJlIDQgdmFsdWUgY29ybmVyIG9yIHNpbmdsZSByYWRpdXMuXG4vLy8gICAgIFNldCB0byBgNTAlYCBmb3Igcm91bmRlZCBzaGFwZS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRydGwtcmVmbGV4aXZlIFNldCB0byB0cnVlIHRvIGZsaXAgYm9yZGVyIHJhZGl1cyBpbiBSVEwgY29udGV4dC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlbnNpdHktc2NhbGUgRGVuc2l0eSBzY2FsZSBvZiBzaW5nbGUgbGluZSBsaXN0LiBTZXQgdGhpcyBvbmx5IHdoZW4gY3VzdG9tIGRlbnNpdHkgaXMgYXBwbGllZC5cbi8vLyAgICAgRGVmYXVsdHMgdG8gYCRtZGMtZGVwcmVjYXRlZC1saXN0LXNpbmdsZS1saW5lLWRlbnNpdHktc2NhbGVgLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuQG1peGluIGRlcHJlY2F0ZWQtc2luZ2xlLWxpbmUtc2hhcGUtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRkZW5zaXR5LXNjYWxlOiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtc2luZ2xlLWxpbmUtZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtc2luZ2xlLWxpbmUtZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OiAkaGVpZ2h0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG5cbkBtaXhpbiBkZXByZWNhdGVkLWRpdmlkZXItY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3AoYm9yZGVyLWJvdHRvbS1jb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtZ3JvdXAtc3ViaGVhZGVyLWluay1jb2xvcihcbiAgJGNvbG9yLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZ3JvdXBfX3N1YmhlYWRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtaXRlbS1kaXNhYmxlZC10ZXh0LW9wYWNpdHkoXG4gICRvcGFjaXR5LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbS0tZGlzYWJsZWQgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fdGV4dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkZXByZWNhdGVkLWl0ZW0tZGlzYWJsZWQtdGV4dC1jb2xvcihcbiAgJGNvbG9yLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbS0tZGlzYWJsZWQge1xuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX3RleHQsXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0LFxuICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX3NlY29uZGFyeS10ZXh0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcChjb2xvciwgJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gRXN0YWJsaXNoZXMgZWFjaCBsaXN0IGl0ZW0ncyBwYWRkaW5nIHVzaW5nIGEgdmFyaWFudCBjb25maWcuXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJHZhcmlhbnQtY29uZmlnIFRoZSBsaXN0IHZhcmlhbnQncyBjb25maWd1cmF0aW9uLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuQG1peGluIGRlcHJlY2F0ZWQtbGlzdC1pdGVtLXBhZGRpbmctdmFyaWFudChcbiAgJHZhcmlhbnQtY29uZmlnLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGxlYWRpbmctcGFkZGluZzogbWFwLmdldCgkdmFyaWFudC1jb25maWcsIGxlYWRpbmctcGFkZGluZyk7XG4gIEBpbmNsdWRlIGRlcHJlY2F0ZWQtbGlzdC1pdGVtLXBhZGRpbmcoJGxlYWRpbmctcGFkZGluZywgJHF1ZXJ5KTtcbn1cblxuLy8vXG4vLy8gRXN0YWJsaXNoZXMgZWFjaCBsaXN0IGl0ZW0ncyBwYWRkaW5nLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWFkaW5nLXBhZGRpbmcgVGhlIGl0ZW0ncyBsZWFkaW5nIHBhZGRpbmcuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gZGVwcmVjYXRlZC1saXN0LWl0ZW0tcGFkZGluZyhcbiAgJGxlYWRpbmctcGFkZGluZyxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KFxuICAgICAgcGFkZGluZyxcbiAgICAgICRsZWFkaW5nLXBhZGRpbmcsXG4gICAgICB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdHJhaWxpbmctcGFkZGluZ1xuICAgICk7XG4gIH1cbn1cblxuLy8vXG4vLy8gRXN0YWJsaXNoZXMgZWFjaCBsaXN0IGl0ZW0ncyBzaW5nbGUgbGluZSBoZWlnaHQgdXNpbmcgYSB2YXJpYW50IGNvbmZpZy5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkdmFyaWFudC1jb25maWcgVGhlIGxpc3QgdmFyaWFudCdzIGNvbmZpZ3VyYXRpb24uXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gZGVwcmVjYXRlZC1saXN0LWl0ZW0taGVpZ2h0LXZhcmlhbnQoXG4gICR2YXJpYW50LWNvbmZpZyxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRzaW5nbGUtbGluZS1oZWlnaHQ6IG1hcC5nZXQoJHZhcmlhbnQtY29uZmlnLCBzaW5nbGUtbGluZS1oZWlnaHQpO1xuICBAaW5jbHVkZSBkZXByZWNhdGVkLWxpc3QtaXRlbS1oZWlnaHQoJHNpbmdsZS1saW5lLWhlaWdodCwgJHF1ZXJ5KTtcbn1cblxuLy8vXG4vLy8gRXN0YWJsaXNoZXMgZWFjaCBsaXN0IGl0ZW0ncyBoZWlnaHQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBUaGUgaXRlbSdzIGhlaWdodC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbkBtaXhpbiBkZXByZWNhdGVkLWxpc3QtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgdGhlIHRyYWlsaW5nIG1hcmdpbiB1c2VkIGJ5IGljb25zLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXJnaW4gVGhlIHRyYWlsaW5nIG1hcmdpbiBhcHBsaWVkIHRvIGljb25zLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuQG1peGluIGRlcHJlY2F0ZWQtaWNvbi1tYXJnaW4oJG1hcmdpbiwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbV9fZ3JhcGhpYyB7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLWJveChtYXJnaW4sIHJpZ2h0LCAkbWFyZ2luKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBkaXZpZGVyIGluc2V0IHNpemVzIGZvciBlYWNoIGxpc3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkdmFyaWFudC1jb25maWcgVGhlIGxpc3QgdmFyaWFudCdzIGNvbmZpZ3VyYXRpb24uXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gZGVwcmVjYXRlZC1kaXZpZGVyLWluc2V0cy12YXJpYW50KFxuICAkdmFyaWFudC1jb25maWcsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkbGVhZGluZy1wYWRkaW5nOiBtYXAuZ2V0KCR2YXJpYW50LWNvbmZpZywgbGVhZGluZy1wYWRkaW5nKTtcbiAgJHRleHQtb2Zmc2V0OiBtYXAuZ2V0KCR2YXJpYW50LWNvbmZpZywgdGV4dC1vZmZzZXQpO1xuICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXRzKCRsZWFkaW5nLXBhZGRpbmcsICR0ZXh0LW9mZnNldCwgJHF1ZXJ5KTtcbn1cblxuLy8vXG4vLy8gU2V0cyBkaXZpZGVyIGluc2V0IHNpemVzIGZvciBlYWNoIGxpc3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGVhZGluZy1wYWRkaW5nIFRoZSBpdGVtJ3MgbGVhZGluZyBwYWRkaW5nLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdGV4dC1vZmZzZXQgVGhlIGl0ZW0ncyB0ZXh0IG9mZnNldC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbkBtaXhpbiBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXRzKFxuICAkbGVhZGluZy1wYWRkaW5nLFxuICAkdGV4dC1vZmZzZXQsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1kaXZpZGVyLS1pbnNldC1sZWFkaW5nIHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXQoXG4gICAgICAkbGVhZGluZy1wYWRkaW5nLFxuICAgICAgJHRleHQtb2Zmc2V0LFxuICAgICAgJHRyYWlsaW5nOiBmYWxzZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtZGVwcmVjYXRlZC1saXN0LWRpdmlkZXItLWluc2V0LXRyYWlsaW5nIHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXQoXG4gICAgICAkbGVhZGluZy1wYWRkaW5nLFxuICAgICAgJHRleHQtb2Zmc2V0LFxuICAgICAgJGxlYWRpbmc6IGZhbHNlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0taW5zZXQtbGVhZGluZy5tZGMtZGVwcmVjYXRlZC1saXN0LWRpdmlkZXItLWluc2V0LXRyYWlsaW5nIHtcbiAgICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXQoXG4gICAgICAkbGVhZGluZy1wYWRkaW5nLFxuICAgICAgJHRleHQtb2Zmc2V0LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0taW5zZXQtbGVhZGluZy5tZGMtZGVwcmVjYXRlZC1saXN0LWRpdmlkZXItLXBhZGRpbmcge1xuICAgIEBpbmNsdWRlIGRlcHJlY2F0ZWQtZGl2aWRlci1pbnNldChcbiAgICAgICRsZWFkaW5nLXBhZGRpbmcsXG4gICAgICAkdGV4dC1vZmZzZXQsXG4gICAgICAkdHJhaWxpbmc6IGZhbHNlLFxuICAgICAgJHVzZS1wYWRkaW5nOiB0cnVlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0taW5zZXQtbGVhZGluZy5tZGMtZGVwcmVjYXRlZC1saXN0LWRpdmlkZXItLWluc2V0LXRyYWlsaW5nLm1kYy1kZXByZWNhdGVkLWxpc3QtZGl2aWRlci0taW5zZXQtcGFkZGluZyB7XG4gICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1kaXZpZGVyLWluc2V0KFxuICAgICAgJGxlYWRpbmctcGFkZGluZyxcbiAgICAgICR0ZXh0LW9mZnNldCxcbiAgICAgICR1c2UtcGFkZGluZzogdHJ1ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG4vLyBTZXRzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBncmFwaGljIGVsZW1lbnQgdXNpbmcgYSB2YXJpYW50IGNvbmZpZy5cbkBtaXhpbiBkZXByZWNhdGVkLWdyYXBoaWMtc2l6ZS12YXJpYW50KFxuICAkdmFyaWFudC1jb25maWcsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkbGVhZGluZy1wYWRkaW5nOiBtYXAuZ2V0KCR2YXJpYW50LWNvbmZpZywgbGVhZGluZy1wYWRkaW5nKTtcbiAgJHRleHQtb2Zmc2V0OiBtYXAuZ2V0KCR2YXJpYW50LWNvbmZpZywgdGV4dC1vZmZzZXQpO1xuICAkd2lkdGg6IG1hcC5nZXQobWFwLmdldCgkdmFyaWFudC1jb25maWcsIGdyYXBoaWMtc2l6ZSksIHdpZHRoKTtcbiAgJGhlaWdodDogbWFwLmdldChtYXAuZ2V0KCR2YXJpYW50LWNvbmZpZywgZ3JhcGhpYy1zaXplKSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBkZXByZWNhdGVkLWdyYXBoaWMtc2l6ZShcbiAgICAkbGVhZGluZy1wYWRkaW5nLFxuICAgICR0ZXh0LW9mZnNldCxcbiAgICAkd2lkdGgsXG4gICAgJGhlaWdodCxcbiAgICAkcXVlcnlcbiAgKTtcbn1cblxuLy8gU2V0cyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgZ3JhcGhpYyBlbGVtZW50LCBhcyB3ZWxsIGFzIGNhbGN1bGF0ZXMgdGhlXG4vLyB0cmFpbGluZyBtYXJnaW4gZm9yIHRoZSBncmFwaGljIGVsZW1lbnQgc3VjaCB0aGF0IHRoZSB0ZXh0IGlzIGFsd2F5cyBvZmZzZXRcbi8vIGZyb20gdGhlIGl0ZW0ncyBsZWFkaW5nIGVkZ2UgYnkgNzJweCwgd2hpY2ggaXMgZGVmaW5lZCB3aXRoaW4gdGhlIHNwZWMuIElmXG4vLyBoZWlnaHQgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgZ3JhcGhpYyBpcyBhc3N1bWVkIHRvIGJlIHNxdWFyZS5cbi8vIFRPRE8oYi8xNTUzOTc5OTIpOiByZXN0cnVjdHVyZSB0byB1c2Ugc3ltbWV0cmljIG1hcmdpbnMuXG5AbWl4aW4gZGVwcmVjYXRlZC1ncmFwaGljLXNpemUoXG4gICRsZWFkaW5nLXBhZGRpbmcsXG4gICR0ZXh0LW9mZnNldCxcbiAgJHdpZHRoLFxuICAkaGVpZ2h0LFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJG1hcmdpbi12YWx1ZTogbWF4KFxuICAgICR0ZXh0LW9mZnNldCAtICRsZWFkaW5nLXBhZGRpbmcgLSAkd2lkdGgsXG4gICAgJGxlYWRpbmctcGFkZGluZ1xuICApO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtYm94KG1hcmdpbiwgcmlnaHQsICRtYXJnaW4tdmFsdWUpO1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG59XG5cbi8vIERlcHJlY2F0ZWQuIFN1cHBvcnRzIGxlZ2FjeSBkZW5zaXR5IHN0eWxlcy5cbkBtaXhpbiBkZXByZWNhdGVkLWdyYXBoaWMtc2l6ZS1kZW5zZV8oJHNpemUsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgZGVwcmVjYXRlZC1ncmFwaGljLXNpemUoXG4gICAgJGxlYWRpbmctcGFkZGluZzogMTZweCxcbiAgICAkdGV4dC1vZmZzZXQ6IDE2cHgsXG4gICAgJHdpZHRoOiAkc2l6ZSxcbiAgICAkaGVpZ2h0OiAkc2l6ZSxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xufVxuXG4vLy9cbi8vLyBDb21wdXRlcyB0aGUgYXBwcm9wcmlhdGUgbGVhZGluZyBpbnNldCBmb3IgYSBkaXZpZGVyIGJhc2VkIG9uIGxpc3QgdHlwZS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAgJHZhcmlhbnQtY29uZmlnIFRoZSBsaXN0IHZhcmlhbnQgY29uZmlndXJhdGlvbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRsZWFkaW5nIFdoZXRoZXIgdG8gYXBwbHkgdGhlIGxlYWRpbmcgaW5zZXQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdHJhaWxpbmcgV2hldGhlciB0byBhcHBseSB0aGUgdHJhaWxpbmcgaW5zZXQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdXNlLXBhZGRpbmcgV2hldGhlciB0byBhbGlnbiB3aXRoIHBhZGRpbmcgdnMuIHRleHQgb2Zmc2V0LlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbkBtaXhpbiBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXQtdmFyaWFudChcbiAgJHZhcmlhbnQtY29uZmlnLFxuICAkbGVhZGluZzogdHJ1ZSxcbiAgJHRyYWlsaW5nOiB0cnVlLFxuICAkdXNlLXBhZGRpbmc6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGxlYWRpbmctcGFkZGluZzogbWFwLmdldCgkdmFyaWFudC1jb25maWcsIGxlYWRpbmctcGFkZGluZyk7XG4gICR0ZXh0LW9mZnNldDogbWFwLmdldCgkdmFyaWFudC1jb25maWcsIHRleHQtb2Zmc2V0KTtcblxuICBAaW5jbHVkZSBkZXByZWNhdGVkLWRpdmlkZXItaW5zZXQoXG4gICAgJGxlYWRpbmctcGFkZGluZyxcbiAgICAkdGV4dC1vZmZzZXQsXG4gICAgJGxlYWRpbmcsXG4gICAgJHRyYWlsaW5nLFxuICAgICR1c2UtcGFkZGluZyxcbiAgICAkcXVlcnlcbiAgKTtcbn1cblxuQG1peGluIGRlcHJlY2F0ZWQtZGl2aWRlci1pbnNldChcbiAgJGxlYWRpbmctcGFkZGluZyxcbiAgJHRleHQtb2Zmc2V0LFxuICAkbGVhZGluZzogdHJ1ZSxcbiAgJHRyYWlsaW5nOiB0cnVlLFxuICAkdXNlLXBhZGRpbmc6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJHRyYWlsaW5nLWluc2V0OiBpZigkdHJhaWxpbmcsIHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10cmFpbGluZy1wYWRkaW5nLCAwKTtcbiAgJGxlYWRpbmctaW5zZXQ6IGlmKFxuICAgICRsZWFkaW5nLFxuICAgIGlmKCR1c2UtcGFkZGluZywgJGxlYWRpbmctcGFkZGluZywgJHRleHQtb2Zmc2V0KSxcbiAgICAwXG4gICk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBAaWYgJGxlYWRpbmcge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1ib3gobWFyZ2luLCBsZWZ0LCAkbGVhZGluZy1pbnNldCk7XG4gICAgfVxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAjeyRsZWFkaW5nLWluc2V0ICsgJHRyYWlsaW5nLWluc2V0fSk7XG4gIH1cbn1cblxuLy8vXG4vLy8gU2V0cyBkZW5zaXR5IHNjYWxlIHRvIHNpbmdsZSBsaW5lIGxpc3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVuc2l0eS1zY2FsZSBEZW5zaXR5IHNjYWxlIGZvciBsaXN0LiBTdXBwb3J0ZWQgZGVuc2l0eSBzY2FsZXMgYXJlIGAtNGAsIGAtM2AsIGAtMmAsIGAtMWAgYW5kICBgMGAuXG4vLy9cbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vXG5AbWl4aW4gZGVwcmVjYXRlZC1zaW5nbGUtbGluZS1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtc2luZ2xlLWxpbmUtZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgZGVwcmVjYXRlZC1zaW5nbGUtbGluZS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgaGVpZ2h0IHRvIHNpbmdsZSBsaW5lIGxpc3QgdmFyaWFudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IEhlaWdodCB2YWx1ZSBpbiBgcHhgLlxuLy8vXG4vLy8gQGFjY2VzcyBwdWJsaWNcbi8vL1xuQG1peGluIGRlcHJlY2F0ZWQtc2luZ2xlLWxpbmUtaGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxufVxuXG4vL1xuLy8gUHJpdmF0ZVxuLy9cblxuQG1peGluIGRlcHJlY2F0ZWQtYmFzZV8oJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtdHlwb2dyYXBoeTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHR5cG9ncmFwaHkpO1xuXG4gIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShzdWJ0aXRsZTEsICRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC10eXBvZ3JhcGh5KSB7XG4gICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBtb2NrcyBhbmQgc3RpY2tlcnNoZWV0LCB0aGUgbGluZS1oZWlnaHQgaXNcbiAgICAvLyBhZGp1c3RlZCB0byAyNHB4IGZvciB0ZXh0IGNvbnRlbnQsIHNhbWUgYXMgZm9yIGJvZHkxLlxuICAgIC8qIEBhbHRlcm5hdGUgKi9cbiAgICBsaW5lLWhlaWdodDogbWFwLmdldChtYXAuZ2V0KHR5cG9ncmFwaHkuJHN0eWxlcywgYm9keTEpLCBsaW5lLWhlaWdodCk7XG4gIH1cblxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiA4cHggMDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgZGVwcmVjYXRlZC1pdGVtLXByaW1hcnktdGV4dC1pbmstY29sb3IoXG4gICAgdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQsXG4gICAgJHF1ZXJ5XG4gICk7XG59XG5cbkBtaXhpbiBkZXByZWNhdGVkLWl0ZW0tYmFzZV8ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cbi8vIFJpcHBsZSBzdHlsZXMgZm9yIGFuIGludGVyYWN0aXZlIGxpc3QgaXRlbSAob25lIHRoYXQgaXMgZW5hYmxlZCBhbmQgaW5zaWRlIGFuIGludGVyYWN0aXZlIGxpc3QpLlxuQG1peGluIGRlcHJlY2F0ZWQtaXRlbS1pbnRlcmFjdGl2ZS1yaXBwbGVfKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLnN1cmZhY2UoXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1yaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIHJpcHBsZS5zdXJmYWNlKFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtdGVtcG9yYXJ5LXJpcHBsZS10YXJnZXQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgcmlwcGxlLnJhZGl1cy1ib3VuZGVkKFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUucmFkaXVzLWJvdW5kZWQoXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZW1wb3JhcnktcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKFxuICAgIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gICAgZmFsc2UsXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1yaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMoXG4gICAgdGhlbWUtY29sb3IucHJvcC12YWx1ZShvbi1zdXJmYWNlKSxcbiAgICBmYWxzZSxcbiAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtYWN0aXZhdGVkKFxuICAgIHByaW1hcnksXG4gICAgZmFsc2UsXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1yaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtYWN0aXZhdGVkKFxuICAgIHByaW1hcnksXG4gICAgZmFsc2UsXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZW1wb3JhcnktcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLXNlbGVjdGVkKFxuICAgIHByaW1hcnksXG4gICAgZmFsc2UsXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kZGVwcmVjYXRlZC1yaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG4gIEBpbmNsdWRlIHJpcHBsZS10aGVtZS5zdGF0ZXMtc2VsZWN0ZWQoXG4gICAgcHJpbWFyeSxcbiAgICBmYWxzZSxcbiAgICAkcmlwcGxlLXRhcmdldDogdmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0LFxuICAgICRxdWVyeTogJHF1ZXJ5XG4gICk7XG5cbiAgI3t2YXJpYWJsZXMuJGRlcHJlY2F0ZWQtcmlwcGxlLXRhcmdldH0sXG4gICN7dmFyaWFibGVzLiRkZXByZWNhdGVkLXRlbXBvcmFyeS1yaXBwbGUtdGFyZ2V0fSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnRhcmdldC1jb21tb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG4iLCIvLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cbi8vIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWNsYXNzLXBhdHRlcm4gLS1cbi8vIE5PVEU6IHRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZm9yZW1lbnRpb25lZCBjbGFzc2VzLlxuXG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczpsaXN0JztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZSc7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICdAbWF0ZXJpYWwvZGVuc2l0eS9mdW5jdGlvbnMnIGFzIGRlbnNpdHktZnVuY3Rpb25zO1xuQHVzZSAnQG1hdGVyaWFsL2RvbS9taXhpbnMnIGFzIGRvbS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvc2hhcGUvbWl4aW5zJyBhcyBzaGFwZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvdGhlbWUvdGhlbWUtY29sb3InO1xuQHVzZSAnLi9ldm9sdXRpb24tdmFyaWFibGVzJyBhcyB2YXJpYWJsZXM7XG5cbkBtaXhpbiBjb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gIEBpbmNsdWRlIHdpdGhvdXQtcmlwcGxlKCRxdWVyeSk7XG4gIEBpbmNsdWRlIHdpdGgtcmlwcGxlKCRxdWVyeSk7XG59XG5cbkBtaXhpbiB3aXRob3V0LXJpcHBsZSgkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAkZmVhdC10eXBvZ3JhcGh5OiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgdHlwb2dyYXBoeSk7XG5cbiAgLy9cbiAgLy8gSXRlbXNcbiAgLy9cblxuICBAaW5jbHVkZSBsaXN0LXByaW1hcnktdGV4dC1pbmstY29sb3IodGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3Qtc2Vjb25kYXJ5LXRleHQtaW5rLWNvbG9yKHRleHQtc2Vjb25kYXJ5LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3Qtb3ZlcmxpbmUtdGV4dC1pbmstY29sb3IodGV4dC1oaW50LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3QtaWNvbi1maWxsLWNvbG9yKHRyYW5zcGFyZW50LCAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaXN0LWljb24taW5rLWNvbG9yKHRleHQtaWNvbi1vbi1iYWNrZ3JvdW5kLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaXN0LW1ldGEtdGV4dC1pbmstY29sb3IodGV4dC1oaW50LW9uLWJhY2tncm91bmQsICRxdWVyeSk7XG4gIEBpbmNsdWRlIGxpc3QtZGlzYWJsZWQtb3BhY2l0eSh2YXJpYWJsZXMuJGNvbnRlbnQtZGlzYWJsZWQtb3BhY2l0eSwgJHF1ZXJ5KTtcbiAgQGluY2x1ZGUgbGlzdC1kaXNhYmxlZC1pbmstY29sb3IodmFyaWFibGVzLiRjb250ZW50LWRpc2FibGVkLWNvbG9yLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBsaXN0LXNlbGVjdGVkLWluay1jb2xvcih2YXJpYWJsZXMuJGNvbnRlbnQtc2VsZWN0ZWQtY29sb3IsICRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgZ3JvdXAtc3ViaGVhZGVyLWluay1jb2xvcih0ZXh0LXByaW1hcnktb24tYmFja2dyb3VuZCwgJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBfaGlnaC1jb250cmFzdC1tb2RlKCRxdWVyeSk7XG5cbiAgLm1kYy1saXN0IHtcbiAgICBAaW5jbHVkZSBsaXN0LWJhc2UoJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW1fX3dyYXBwZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgaXRlbS1iYXNlKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3RocmVlLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0aHJlZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIG9uZS1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KGNlbnRlciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR3by1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAgICAgJGFsaWdubWVudDogZmxleC1zdGFydCxcbiAgICAgICRvZmZzZXQ6IDE2cHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgdGhyZWUtbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAxNnB4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgb25lLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KGNlbnRlciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR3by1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChjZW50ZXIsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0aHJlZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAxNnB4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IG1vdXNlIGN1cnNvciBmb3IgZGlzYWJsZWQgYW5kIG5vbi1pbnRlcmFjdGl2ZSBpdGVtcy5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLWRpc2FibGVkLFxuICAgICYubWRjLWxpc3QtaXRlbS0tbm9uLWludGVyYWN0aXZlIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGN1cnNvcjogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3IgY29tcG9uZW50cyB1c2luZyBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsIHRoZSBmb2N1cyBwc2V1ZG9jbGFzcyBpc1xuICAgIC8vIG5ldmVyIGFwcGxpZWQgYW5kIHVzZSBgLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZGAgaW5zdGVhZC5cbiAgICAmOm5vdCgubWRjLWxpc3QtaXRlbS0tc2VsZWN0ZWQpOmZvY3VzOjpiZWZvcmUsIC8vIGxpbnQtZGlzYWJsZS1mb2N1cy1wc3VlZG8tc2VsZWN0b3JcbiAgICAmLm1kYy1yaXBwbGUtdXBncmFkZWQtLWJhY2tncm91bmQtZm9jdXNlZDo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXNlbGVjdGVkOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZG9tLW1peGlucy50cmFuc3BhcmVudC1ib3JkZXIoXG4gICAgICAgICRib3JkZXItd2lkdGg6IDNweCxcbiAgICAgICAgJGJvcmRlci1zdHlsZTogZG91YmxlLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBsaW50LWRpc2FibGUtZm9jdXMtcHN1ZWRvLXNlbGVjdG9yXG4gICAgJi5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZDpmb2N1czo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGRvbS1taXhpbnMudHJhbnNwYXJlbnQtYm9yZGVyKFxuICAgICAgICAkYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIE92ZXJyaWRlIGFuY2hvciB0YWcgc3R5bGVzIGZvciB0aGUgdXNlLWNhc2Ugb2YgYSBsaXN0IGJlaW5nIHVzZWQgZm9yIG5hdmlnYXRpb25cbiAgLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItbWF4LXR5cGUsc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG4gIGEubWRjLWxpc3QtaXRlbSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIH1cbiAgfVxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLW1heC10eXBlLHNlbGVjdG9yLW5vLXF1YWxpZnlpbmctdHlwZVxuXG4gIC5tZGMtbGlzdC1pdGVtX19zdGFydCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW1fX2NvbnRlbnQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgZmxleDogMTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyAmLFxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzICYge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlIGludGVyYWN0aW9uIG9uIGxhYmVsIGVsZW1lbnRzIHRoYXQgbWF5IGF1dG9tYXRpY2FsbHlcbiAgICAvLyB0b2dnbGUgY29ycmVzcG9uZGluZyBjaGVja2JveCAvIHJhZGlvIGlucHV0LlxuICAgICZbZm9yXSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyAmLFxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzICYge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkdG9wOiAyOHB4LFxuICAgICAgICAkYm90dG9tOiAyMHB4LFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbV9fc2Vjb25kYXJ5LXRleHQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShib2R5MiwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5Lm92ZXJmbG93LWVsbGlwc2lzKCRxdWVyeSk7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgJHRvcDogMjBweCxcbiAgICAgICRkaXNwbGF5OiBibG9jayxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzICYge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtb3ZlcmxpbmUgJiB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBsaW5lLWhlaWdodDogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbV9fb3ZlcmxpbmUtdGV4dCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50eXBvZ3JhcGh5KG92ZXJsaW5lLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkub3ZlcmZsb3ctZWxsaXBzaXMoJHF1ZXJ5KTtcblxuICAgIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyAmIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGV4dC1iYXNlbGluZShcbiAgICAgICAgJHRvcDogMjRweCxcbiAgICAgICAgJGJvdHRvbTogMjBweCxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdGhyZWUtbGluZXMgJiB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6IDI4cHgsXG4gICAgICAgICRib3R0b206IDIwcHgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctYXZhdGFyIHtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSg0MHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgzMnB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoMjhweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW1ldGEtYmFzZWxpbmUoJHRvcDogMzJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kb25lLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kdHdvLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWljb24ge1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSgyNHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zcGFjaW5nKFxuICAgICAgJGxlYWRpbmc6IDE2cHgsXG4gICAgICAkdHJhaWxpbmc6IDMycHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgzMnB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoMjhweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW1ldGEtYmFzZWxpbmUoJHRvcDogMzJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kb25lLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kdHdvLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc3BhY2luZygxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zaXplKDQwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1wcmltYXJ5LWJhc2VsaW5lKDMycHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1vdmVybGluZS1iYXNlbGluZSgyOHB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tbWV0YS1iYXNlbGluZSgkdG9wOiAzMnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWltYWdlIHtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSg1NnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgzMnB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoMjhweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW1ldGEtYmFzZWxpbmUoJHRvcDogMzJweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9vbmUtbGluZS1pdGVtLXRhbGxlci1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXZpZGVvIHtcbiAgICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiA4cHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zcGFjaW5nKCRsZWFkaW5nOiAwLCAkdHJhaWxpbmc6IDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNpemUoJHdpZHRoOiAxMDBweCwgJGhlaWdodDogNTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMzJweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW92ZXJsaW5lLWJhc2VsaW5lKDI4cHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1tZXRhLWJhc2VsaW5lKCR0b3A6IDMycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfb25lLWxpbmUtaXRlbS10YWxsZXItZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kb25lLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eShcbiAgICAgIHZhcmlhYmxlcy4kdHdvLWxpbmUtaXRlbS1kZW5zaXR5LXNjYWxlLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1jaGVja2JveCB7XG4gICAgJGxlYWRpbmc6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdHJhaWxpbmc6IGFic29yYi1vdmVyZmxvdygzMnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdG9wOiBhYnNvcmItb3ZlcmZsb3coMTZweCwgJGFjdHVhbDogNDBweCwgJGF2YWlsYWJsZTogMjRweCk7XG5cbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoJGxlYWRpbmcsICR0cmFpbGluZywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSg0MHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgdHdvLWxpbmUtaXRlbS1zdGFydC1hbGlnbm1lbnQoXG4gICAgICAkYWxpZ25tZW50OiBmbGV4LXN0YXJ0LFxuICAgICAgJG9mZnNldDogJHRvcCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1wcmltYXJ5LWJhc2VsaW5lKDMycHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1vdmVybGluZS1iYXNlbGluZSgyOHB4LCAyMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tbWV0YS1iYXNlbGluZSgkdG9wOiAzMnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAgICAgdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXJhZGlvIHtcbiAgICAkbGVhZGluZzogYWJzb3JiLW92ZXJmbG93KDE2cHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0cmFpbGluZzogYWJzb3JiLW92ZXJmbG93KDMycHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0b3A6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcblxuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc3BhY2luZygkbGVhZGluZywgJHRyYWlsaW5nLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1zdGFydC1zaXplKDQwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAkdG9wLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMzJweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW92ZXJsaW5lLWJhc2VsaW5lKDI4cHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1tZXRhLWJhc2VsaW5lKCR0b3A6IDMycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfb25lLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoIHtcbiAgICBAaW5jbHVkZSBpdGVtLXN0YXJ0LXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tc3RhcnQtc2l6ZSgkd2lkdGg6IDM2cHgsICRoZWlnaHQ6IDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLXN0YXJ0LWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAxNnB4LFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMzJweCwgMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLW92ZXJsaW5lLWJhc2VsaW5lKDI4cHgsIDIwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1tZXRhLWJhc2VsaW5lKCR0b3A6IDMycHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfb25lLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS10YWxsLWRlbnNpdHkoXG4gICAgICB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLWljb24ge1xuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNwYWNpbmcoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNpemUoMjRweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctbWV0YSB7XG4gICAgQGluY2x1ZGUgdHdvLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KGZsZXgtc3RhcnQsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0aHJlZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChmbGV4LXN0YXJ0LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgaXRlbS1lbmQtc3BhY2luZygkbGVhZGluZzogMjhweCwgJHRyYWlsaW5nOiAxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tZW5kLWJhc2VsaW5lKCR0b3A6IDI4cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdGhyZWUtbGluZS1pdGVtLWVuZC1iYXNlbGluZSgkdG9wOiAyOHB4LCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudHlwb2dyYXBoeShjYXB0aW9uLCAkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLWNoZWNrYm94IHtcbiAgICAkbGVhZGluZzogYWJzb3JiLW92ZXJmbG93KDMycHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0cmFpbGluZzogYWJzb3JiLW92ZXJmbG93KDE2cHgsICRhY3R1YWw6IDQwcHgsICRhdmFpbGFibGU6IDI0cHgpO1xuICAgICR0b3A6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcblxuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNwYWNpbmcoJGxlYWRpbmcsICR0cmFpbGluZywgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGl0ZW0tZW5kLXNpemUoNDBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHRocmVlLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KFxuICAgICAgJGFsaWdubWVudDogZmxleC1zdGFydCxcbiAgICAgICRvZmZzZXQ6ICR0b3AsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC10cmFpbGluZy1yYWRpbyB7XG4gICAgJGxlYWRpbmc6IGFic29yYi1vdmVyZmxvdygzMnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdHJhaWxpbmc6IGFic29yYi1vdmVyZmxvdygxNnB4LCAkYWN0dWFsOiA0MHB4LCAkYXZhaWxhYmxlOiAyNHB4KTtcbiAgICAkdG9wOiBhYnNvcmItb3ZlcmZsb3coMTZweCwgJGFjdHVhbDogNDBweCwgJGF2YWlsYWJsZTogMjRweCk7XG5cbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zcGFjaW5nKCRsZWFkaW5nLCAkdHJhaWxpbmcsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zaXplKDQwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSB0aHJlZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChcbiAgICAgICRhbGlnbm1lbnQ6IGZsZXgtc3RhcnQsXG4gICAgICAkb2Zmc2V0OiAkdG9wLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctc3dpdGNoIHtcbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zcGFjaW5nKDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBpdGVtLWVuZC1zaXplKCR3aWR0aDogMzZweCwgJGhlaWdodDogMjBweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHRocmVlLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KFxuICAgICAgJGFsaWdubWVudDogZmxleC1zdGFydCxcbiAgICAgICRvZmZzZXQ6IDE2cHgsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gIH1cblxuICAubWRjLWxpc3QtaXRlbS0td2l0aC1vdmVybGluZSB7XG4gICAgQGluY2x1ZGUgX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZSgyMHB4LCAwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfdGhyZWUtbGluZS1pdGVtLXByaW1hcnktYmFzZWxpbmUoMjBweCwgMHB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAvLyBUaGlzIG11c3QgYmUgc3BlY2lmaWVkIGxhc3QgdG8gZW5zdXJlIHRoYXQgUlRMIHBhZGRpbmcgdGFrZXMgcHJpb3JpdHkgb3ZlclxuICAvLyBMVFIgcGFkZGluZyBpbiB0aGUgY2FzY2FkZS5cbiAgLm1kYy1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIGl0ZW0tc3BhY2luZygxNnB4LCAkcXVlcnk6ICRxdWVyeSk7XG4gIH1cblxuICAvL1xuICAvLyBHcm91cGluZ1xuICAvL1xuXG4gIC5tZGMtbGlzdC1ncm91cCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIENhbmNlbCB0b3AvYm90dG9tIHBhZGRpbmcgb24gaW5kaXZpZHVhbCBsaXN0cyB3aXRoaW4gZ3JvdXBcbiAgICAgIC5tZGMtZGVwcmVjYXRlZC1saXN0IHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRjLWxpc3QtZ3JvdXBfX3N1YmhlYWRlciB7XG4gICAgJG1kYy1saXN0LXN1YmhlYWRlci12aXJ0dWFsLWhlaWdodDogM3JlbTtcbiAgICAkbWRjLWxpc3Qtc3ViaGVhZGVyLWxlYWRpbmc6IG1hcC5nZXQoXG4gICAgICBtYXAuZ2V0KHR5cG9ncmFwaHkuJHN0eWxlcywgYm9keTEpLFxuICAgICAgbGluZS1oZWlnaHRcbiAgICApO1xuICAgICRtZGMtbGlzdC1zdWJoZWFkZXItbWFyZ2luOiBjYWxjKFxuICAgICAgKCN7JG1kYy1saXN0LXN1YmhlYWRlci12aXJ0dWFsLWhlaWdodH0gLSAjeyRtZGMtbGlzdC1zdWJoZWFkZXItbGVhZGluZ30pIC9cbiAgICAgICAgMlxuICAgICk7XG5cbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtYXJnaW46ICRtZGMtbGlzdC1zdWJoZWFkZXItbWFyZ2luIHZhcmlhYmxlcy4kc2lkZS1wYWRkaW5nO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vIERpdmlkZXJzXG4gIC8vXG5cbiAgJGRpdmlkZXItY29sb3I6IGlmKFxuICAgIHRoZW1lLWNvbG9yLnRvbmUodGhlbWUtY29sb3IuJGJhY2tncm91bmQpID09ICdkYXJrJyxcbiAgICB2YXJpYWJsZXMuJGRpdmlkZXItY29sb3Itb24tZGFyay1iZyxcbiAgICB2YXJpYWJsZXMuJGRpdmlkZXItY29sb3Itb24tbGlnaHQtYmdcbiAgKTtcblxuICBAaW5jbHVkZSBkaXZpZGVyLWNvbG9yKCRkaXZpZGVyLWNvbG9yLCAkcXVlcnk6ICRxdWVyeSk7XG4gIEBpbmNsdWRlIGRpdmlkZXItaGVpZ2h0KDFweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIC5tZGMtbGlzdC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcGFkZGluZzogMDtcblxuICAgICAgLy8gQWxsb3dzIHRoZSB1c2Ugb2YgcGFkZGluZyB0byBzcGVjaWZ5IGxlYWRpbmcgYW5kIHRyYWlsaW5nIGluc2V0c1xuICAgICAgLy8gaW5kZXBlbmRlbnRseS5cbiAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIGJhc2UgaW5zZXQgdmFyaWFudCBjb3JyZXNwb25kcyB0byB0aGUgaXRlbSdzIHBhZGRpbmcuXG4gIC5tZGMtbGlzdC1kaXZpZGVyLFxuICAubWRjLWxpc3QtZGl2aWRlci0td2l0aC1sZWFkaW5nLXRleHQsXG4gIC5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLWxlYWRpbmctaWNvbixcbiAgLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy1pbWFnZSxcbiAgLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gIC5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLWxlYWRpbmctYXZhdGFyLFxuICAubWRjLWxpc3QtZGl2aWRlci0td2l0aC1sZWFkaW5nLWNoZWNrYm94LFxuICAubWRjLWxpc3QtZGl2aWRlci0td2l0aC1sZWFkaW5nLXN3aXRjaCxcbiAgLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy1yYWRpbyB7XG4gICAgQGluY2x1ZGUgZGl2aWRlci1sZWFkaW5nLWluc2V0KDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBkaXZpZGVyLXRyYWlsaW5nLWluc2V0KDE2cHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLWxlYWRpbmctdmlkZW8ge1xuICAgIEBpbmNsdWRlIGRpdmlkZXItbGVhZGluZy1pbnNldCgwcHgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGF0IGRlZmF1bHQgcGFkZGluZyBpc24ndCBhcHBsaWVkIGluIFJUTCBsb2NhbGVzLlxuICAubWRjLWxpc3QtZGl2aWRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5ydGwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gd2l0aC1yaXBwbGUoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSByaXBwbGUuY29tbW9uKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG5cbiAgOm5vdCgubWRjLWxpc3QtaXRlbS0tZGlzYWJsZWQpLm1kYy1saXN0LWl0ZW0ge1xuICAgIEBpbmNsdWRlIF9pdGVtLWludGVyYWN0aXZlLXJpcHBsZSgkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1saXN0LWl0ZW0tLWRpc2FibGVkIHtcbiAgICBAaW5jbHVkZSByaXBwbGUuc3VyZmFjZShcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnJhZGl1cy1ib3VuZGVkKFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhc2UtY29sb3IoXG4gICAgICB0aGVtZS1jb2xvci5wcm9wLXZhbHVlKG9uLXN1cmZhY2UpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWZvY3VzLW9wYWNpdHkoXG4gICAgICByaXBwbGUtdGhlbWUuc3RhdGVzLW9wYWNpdHkocHJpbWFyeSwgZm9jdXMpLFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgICN7dmFyaWFibGVzLiRyaXBwbGUtdGFyZ2V0fSB7XG4gICAgICBAaW5jbHVkZSByaXBwbGUudGFyZ2V0LWNvbW1vbigkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIEFkanVzdHMgYW4gb2Zmc2V0IChpLmUuLCBtYXJnaW4pIHRvIGFjY29tb2RhdGUgY29udGVudHMgdGhhdCBhcmUgbGFyZ2VyIHRoYW5cbi8vLyB0aGUgc3BhY2UgYWxsb2NhdGVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLlxuLy8vXG4vLy8gRm9yIGluc3RhbmNlLCB0aGUgc3BlY2lmaWNhdGlvbiBwcm92aWRlcyAyNHgyNGRwIGZvciBhIGNoZWNrYm94IHdpdGggYSAxNmRwXG4vLy8gbWFyZ2luLiBIb3dldmVyLCBjaGVja2JveGVzIGFyZSBhY3R1YWxseSA0MHg0MGRwLiBUbyBlbnN1cmUgdGhhdCB0aGVcbi8vLyBjaGVja2JveCBpcyBwb3NpdGlvbmVkIGNvcnJlY3RseSwgdGhlIG1hcmdpbiBpcyByZWR1Y2VkIGJ5IDhkcCB0byByZWZsZWN0XG4vLy8gdGhhdCB0aGUgbWFyZ2luIGlzIGFscmVhZHkgXCJiYWtlZCBpbnRvXCIgdGhlIGNoZWNrYm94LlxuLy8vXG4vLy8gQ29uY3JldGVseSwgNDBkcCAtIDI0ZHAgPSAxNmRwLiBBc3N1bWluZyB0aGF0IHRoZSBjb250cm9sIGlzIHN5bW1ldHJpY2FsLFxuLy8vIGhhbGYgb2YgdGhlIG92ZXJmbG93ICg4ZHApIGlzIG9uIHRoZSBsZWFkaW5nIHNpZGUgYW5kIGhhbGYgb24gdGhlIHRyYWlsaW5nXG4vLy8gc2lkZS4gVGhlcmVmb3JlLCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgbWFyZ2lucyBhcmUgcmVkdWNlZCBieSA4ZHAuXG4vLy9cbi8vLyBOb3RlOiB0aGlzIG1pZ2h0IGJlIG1vcmUgdXNlZnVsIGlmIGl0J3MgYWRkZWQgaW50byB0aGUgbGVhZGluZy90cmFpbGluZ1xuLy8vIG1hcmdpbiBtaXhpbnMgYXMgYSBwYXJhbWV0ZXIuXG4vLy9cbkBmdW5jdGlvbiBhYnNvcmItb3ZlcmZsb3coJG9mZnNldCwgJGFjdHVhbCwgJGF2YWlsYWJsZSwgJHN5bW1ldHJpYzogdHJ1ZSkge1xuICBAaWYgJGFjdHVhbCA8PSAkYXZhaWxhYmxlIHtcbiAgICBAcmV0dXJuICRvZmZzZXQ7XG4gIH1cbiAgJG92ZXJmbG93OiAkYWN0dWFsIC0gJGF2YWlsYWJsZTtcbiAgQHJldHVybiAkb2Zmc2V0IC0gbWF0aC5kaXYoJG92ZXJmbG93LCBpZigkc3ltbWV0cmljLCAyLCAxKSk7XG59XG5cbkBtaXhpbiBvbmUtbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWl0ZW0taGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cbkBtaXhpbiB0aHJlZS1saW5lLWl0ZW0taGVpZ2h0KCRoZWlnaHQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1pdGVtLWhlaWdodCgkaGVpZ2h0KSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbn1cblxuQG1peGluIGl0ZW0tc3BhY2luZyhcbiAgJGxlYWRpbmcsXG4gICR0cmFpbGluZzogJGxlYWRpbmcsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkocGFkZGluZywgJGxlYWRpbmcsICR0cmFpbGluZyk7XG4gIH1cbn1cblxuQG1peGluIG9uZS1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLW9uZS1saW5lIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fc3RhcnQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogJGFsaWdubWVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGFsaWduLXNlbGY6ICRhbGlnbm1lbnQ7XG4gICAgICAgIG1hcmdpbi10b3A6ICRvZmZzZXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aHJlZS1saW5lLWl0ZW0tc3RhcnQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXRocmVlLWxpbmVzIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fc3RhcnQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogJGFsaWdubWVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG9uZS1saW5lLWl0ZW0tZW5kLWFsaWdubWVudChcbiAgJGFsaWdubWVudCxcbiAgJG9mZnNldDogMCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBhbGlnbi1zZWxmOiAkYWxpZ25tZW50O1xuICAgICAgICBtYXJnaW4tdG9wOiAkb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHdvLWxpbmUtaXRlbS1lbmQtYWxpZ25tZW50KFxuICAkYWxpZ25tZW50LFxuICAkb2Zmc2V0OiAwLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBhbGlnbi1zZWxmOiAkYWxpZ25tZW50O1xuICAgICAgICBtYXJnaW4tdG9wOiAkb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdGhyZWUtbGluZS1pdGVtLWVuZC1hbGlnbm1lbnQoXG4gICRhbGlnbm1lbnQsXG4gICRvZmZzZXQ6IDAsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdGhyZWUtbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgYWxpZ24tc2VsZjogJGFsaWdubWVudDtcbiAgICAgICAgbWFyZ2luLXRvcDogJG9mZnNldDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGl0ZW0tc3RhcnQtc3BhY2luZyhcbiAgJGxlYWRpbmcsXG4gICR0cmFpbGluZzogJGxlYWRpbmcsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIC8vIEV4dHJhIHNwZWNpZmljaXR5IG5lZWRlZCB0byBvdmVycmlkZSBkZWZhdWx0IGN1c3RvbWl6YXRpb25zLlxuICAgICYubWRjLWxpc3QtaXRlbSB7XG4gICAgICAvLyBXZSByZWx5IG9uIGF1dG8gdG8gYXZvaWQgY2xvYmJlcmluZyB0aGUgb3Bwb3NpdGUgcGFkZGluZy5cbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkocGFkZGluZywgMCwgYXV0byk7XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkobWFyZ2luLCAkbGVhZGluZywgJHRyYWlsaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGl0ZW0tZW5kLXNwYWNpbmcoXG4gICRsZWFkaW5nLFxuICAkdHJhaWxpbmc6ICRsZWFkaW5nLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAvLyBFeHRyYSBzcGVjaWZpY2l0eSBuZWVkZWQgdG8gb3ZlcnJpZGUgZGVmYXVsdCBjdXN0b21pemF0aW9ucy5cbiAgICAmLm1kYy1saXN0LWl0ZW0ge1xuICAgICAgLy8gV2UgcmVseSBvbiBhdXRvIHRvIGF2b2lkIGNsb2JiZXJpbmcgdGhlIG9wcG9zaXRlIHBhZGRpbmcuXG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsIGF1dG8sIDApO1xuICAgIH1cblxuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShtYXJnaW4sICRsZWFkaW5nLCAkdHJhaWxpbmcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXRlbS1zdGFydC1zaXplKFxuICAkd2lkdGgsXG4gICRoZWlnaHQ6ICR3aWR0aCxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX3N0YXJ0IHtcbiAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpdGVtLWVuZC1zaXplKCR3aWR0aCwgJGhlaWdodDogJHdpZHRoLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICB3aWR0aDogJHdpZHRoO1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1pdGVtLXNlbGVjdGVkLWNvbnRhaW5lci1jb2xvcigkY29sb3IpIHtcbiAgJi5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZCB7XG4gICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoYmFja2dyb3VuZC1jb2xvciwgJGNvbG9yKTtcbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1wcmltYXJ5LXRleHQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS10aGVtZSkge1xuICAubWRjLWxpc3QtaXRlbV9fcHJpbWFyeS10ZXh0IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRoZW1lLXN0eWxlcygkdHlwb2dyYXBoeS10aGVtZSk7XG4gIH1cbn1cblxuQG1peGluIGxpc3QtcHJpbWFyeS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW1fX3ByaW1hcnktdGV4dCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsaXN0LXNlY29uZGFyeS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW1fX3NlY29uZGFyeS10ZXh0IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxpc3Qtc2Vjb25kYXJ5LXRleHQtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeS10aGVtZSkge1xuICAubWRjLWxpc3QtaXRlbV9fc2Vjb25kYXJ5LXRleHQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkudGhlbWUtc3R5bGVzKCR0eXBvZ3JhcGh5LXRoZW1lKTtcbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1vdmVybGluZS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW1fX292ZXJsaW5lLXRleHQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1tZXRhLXRleHQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShjb2xvciwgJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxpc3QtaWNvbi1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaWNvbiAubWRjLWxpc3QtaXRlbV9fc3RhcnQsXG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXRyYWlsaW5nLWljb24gLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsaXN0LWljb24tZmlsbC1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pY29uIC5tZGMtbGlzdC1pdGVtX19zdGFydCxcbiAgLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctaWNvbiAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShiYWNrZ3JvdW5kLWNvbG9yLCAkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1zZWxlY3RlZC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gIC5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZCxcbiAgLm1kYy1saXN0LWl0ZW0tLWFjdGl2YXRlZCB7XG4gICAgQGluY2x1ZGUgbGlzdC1wcmltYXJ5LXRleHQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBfaXRlbS1pY29uLWluay1jb2xvcigkY29sb3IsICRsZWFkaW5nLW9ubHk6IHRydWUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gbGlzdC1zZWxlY3RlZC1tZXRhLXRleHQtaW5rLWNvbG9yKFxuICAkY29sb3IsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpc3QtaXRlbS0tc2VsZWN0ZWQsXG4gIC5tZGMtbGlzdC1pdGVtLS1hY3RpdmF0ZWQge1xuICAgIEBpbmNsdWRlIGxpc3QtbWV0YS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeSk7XG4gIH1cbn1cblxuQG1peGluIGxpc3QtZGlzYWJsZWQtaW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLWxpc3QtaXRlbS0tZGlzYWJsZWQge1xuICAgIEBpbmNsdWRlIGxpc3QtcHJpbWFyeS10ZXh0LWluay1jb2xvcigkY29sb3IsICRxdWVyeSk7XG4gICAgQGluY2x1ZGUgbGlzdC1zZWNvbmRhcnktdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIGxpc3Qtb3ZlcmxpbmUtdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9pdGVtLWljb24taW5rLWNvbG9yKCRjb2xvciwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIF9pdGVtLW1ldGEtdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiBsaXN0LWRpc2FibGVkLW9wYWNpdHkoJG9wYWNpdHksICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWl0ZW0tLWRpc2FibGVkIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fc3RhcnQsXG4gICAgLm1kYy1saXN0LWl0ZW1fX2NvbnRlbnQsXG4gICAgLm1kYy1saXN0LWl0ZW1fX2VuZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZ3JvdXAtc3ViaGVhZGVyLWluay1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1kZXByZWNhdGVkLWxpc3QtZ3JvdXBfX3N1YmhlYWRlciB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbi8vL1xuLy8vIFNldHMgc2hhcGUgcmFkaXVzIChyb3VuZGVkKSB0byBzaW5nbGUgbGluZSBsaXN0IHZhcmlhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciB8IExpc3Q8TnVtYmVyPn0gJHJhZGl1cyBSYWRpdXMgc2l6ZSBpbiBgcHhgIG9yIHBlcmNlbnRhZ2UuIEl0IGNhbiBiZSA0IHZhbHVlIGNvcm5lciBvciBzaW5nbGUgcmFkaXVzLlxuLy8vICAgICBTZXQgdG8gYDUwJWAgZm9yIHJvdW5kZWQgc2hhcGUuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkcnRsLXJlZmxleGl2ZSBTZXQgdG8gdHJ1ZSB0byBmbGlwIGJvcmRlciByYWRpdXMgaW4gUlRMIGNvbnRleHQuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZW5zaXR5LXNjYWxlIERlbnNpdHkgc2NhbGUgb2Ygc2luZ2xlIGxpbmUgbGlzdC4gU2V0IHRoaXMgb25seSB3aGVuIGN1c3RvbSBkZW5zaXR5IGlzIGFwcGxpZWQuXG4vLy8gICAgIERlZmF1bHRzIHRvIGAkbWRjLWRlcHJlY2F0ZWQtbGlzdC1zaW5nbGUtbGluZS1kZW5zaXR5LXNjYWxlYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbkBtaXhpbiBvbmUtbGluZS1saXN0LXJhZGl1cyhcbiAgJHJhZGl1cyxcbiAgJHJ0bC1yZWZsZXhpdmU6IGZhbHNlLFxuICAkZGVuc2l0eS1zY2FsZTogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAubWRjLWxpc3QtaXRlbS0td2l0aC1vbmUtbGluZSB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OlxuICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLWRlbnNpdHktY29uZmlnLFxuICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0XG4gICAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1hdmF0YXIsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaWNvbixcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctY2hlY2tib3gsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctcmFkaW8sXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoIHtcbiAgICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICAgICRyYWRpdXMsXG4gICAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgICAkY29tcG9uZW50LWhlaWdodDpcbiAgICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pbWFnZSxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy12aWRlbyB7XG4gICAgICBAaW5jbHVkZSBzaGFwZS1taXhpbnMucmFkaXVzKFxuICAgICAgICAkcmFkaXVzLFxuICAgICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICAgJGNvbXBvbmVudC1oZWlnaHQ6XG4gICAgICAgICAgZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLXRhbGxlci1kZW5zaXR5LWNvbmZpZyxcbiAgICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWxpc3QtcmFkaXVzKFxuICAkcmFkaXVzLFxuICAkcnRsLXJlZmxleGl2ZTogZmFsc2UsXG4gICRkZW5zaXR5LXNjYWxlOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gIC5tZGMtbGlzdC1pdGVtLS13aXRoLXR3by1saW5lcyB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OlxuICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0d28tbGluZS1pdGVtLWRlbnNpdHktY29uZmlnLFxuICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0XG4gICAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1hdmF0YXIsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaWNvbixcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctY2hlY2tib3gsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctcmFkaW8sXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoLFxuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWltYWdlLFxuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXZpZGVvIHtcbiAgICAgIEBpbmNsdWRlIHNoYXBlLW1peGlucy5yYWRpdXMoXG4gICAgICAgICRyYWRpdXMsXG4gICAgICAgICRydGwtcmVmbGV4aXZlLFxuICAgICAgICAkY29tcG9uZW50LWhlaWdodDpcbiAgICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAgICAgICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgICApLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRocmVlLWxpbmUtbGlzdC1yYWRpdXMoXG4gICRyYWRpdXMsXG4gICRydGwtcmVmbGV4aXZlOiBmYWxzZSxcbiAgJGRlbnNpdHktc2NhbGU6IHZhcmlhYmxlcy4kdGhyZWUtbGluZS1pdGVtLWRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAubWRjLWxpc3QtaXRlbS0td2l0aC10aHJlZS1saW5lcyB7XG4gICAgQGluY2x1ZGUgc2hhcGUtbWl4aW5zLnJhZGl1cyhcbiAgICAgICRyYWRpdXMsXG4gICAgICAkcnRsLXJlZmxleGl2ZSxcbiAgICAgICRjb21wb25lbnQtaGVpZ2h0OlxuICAgICAgICBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICAgICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiR0aHJlZS1saW5lLWl0ZW0tZGVuc2l0eS1jb25maWcsXG4gICAgICAgICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICAgICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHRcbiAgICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxufVxuXG5AbWl4aW4gZGl2aWRlci1jb2xvcigkY29sb3IsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1saXN0LWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJhY2tncm91bmQtY29sb3IsICRjb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXZpZGVyLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1saXN0LWRpdmlkZXIge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBAaW5jbHVkZSB0aGVtZS5wcm9wZXJ0eShoZWlnaHQsICRoZWlnaHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGl2aWRlci1sZWFkaW5nLWluc2V0KCRpbnNldCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAmLm1kYy1saXN0LWRpdmlkZXItLXdpdGgtbGVhZGluZy1pbnNldCB7XG4gICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgIC8vIFdlIHJlbHkgb24gYXV0byB0byBhdm9pZCBjbG9iYmVyaW5nIHRoZSBvcHBvc2l0ZSBwYWRkaW5nLlxuICAgICAgQGluY2x1ZGUgcnRsLnJlZmxleGl2ZS1wcm9wZXJ0eShwYWRkaW5nLCAkaW5zZXQsIGF1dG8pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGl2aWRlci10cmFpbGluZy1pbnNldCgkaW5zZXQsICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJi5tZGMtbGlzdC1kaXZpZGVyLS13aXRoLXRyYWlsaW5nLWluc2V0IHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgLy8gV2UgcmVseSBvbiBhdXRvIHRvIGF2b2lkIGNsb2JiZXJpbmcgdGhlIG9wcG9zaXRlIHBhZGRpbmcuXG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KHBhZGRpbmcsIGF1dG8sICRpbnNldCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwdWJsaWMgZGVuc2l0eSBtaXhpbnMgYXBwbHkgdGhlIGFwcHJvcHJpYXRlIGRlbnNpdHkgc3R5bGVzIHJlZ2FyZGxlc3Mgb2Zcbi8vIHRoZSBpdGVtJ3Mgc3RhcnQgY29udGVudHMuXG5AbWl4aW4gb25lLWxpbmUtaXRlbS1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJGV4Y2x1ZGUtdmFyaWFudHM6IGZhbHNlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gIEBpZiBub3QgJGV4Y2x1ZGUtdmFyaWFudHMge1xuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWF2YXRhcixcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pY29uLFxuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLXRodW1ibmFpbCxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1jaGVja2JveCxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1yYWRpbyxcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1zd2l0Y2gge1xuICAgICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgfVxuXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctaW1hZ2UsXG4gICAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctdmlkZW8ge1xuICAgICAgQGluY2x1ZGUgX29uZS1saW5lLWl0ZW0tdGFsbGVyLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR3by1saW5lLWl0ZW0tZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICBAaW5jbHVkZSBfdHdvLWxpbmUtaXRlbS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6ICRxdWVyeSk7XG5cbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctYXZhdGFyLFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pY29uLFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy10aHVtYm5haWwsXG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWNoZWNrYm94LFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1yYWRpbyxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctc3dpdGNoLFxuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtbGVhZGluZy1pbWFnZSxcbiAgJi5tZGMtbGlzdC1pdGVtLS13aXRoLWxlYWRpbmctdmlkZW8ge1xuICAgIEBpbmNsdWRlIF90d28tbGluZS1pdGVtLXRhbGwtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG5cbkBtaXhpbiB0aHJlZS1saW5lLWl0ZW0tZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICBAaW5jbHVkZSBfdGhyZWUtbGluZS1pdGVtLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUsICRxdWVyeTogJHF1ZXJ5KTtcbn1cblxuLy9cbi8vIFByaXZhdGVcbi8vXG5cbi8vIFRoZSBwcml2YXRlIGRlbnNpdHkgbWl4aW5zIGFsbG93IGRlbnNpdHkgcHJvcGVydGllcyB0byBiZSBvdmVycmlkZGVuXG4vLyBpbmRpdmlkdWFsbHkgdG8gYXZvaWQgaW5jcmVhc2luZyBzcGVjaWZpY2l0eS5cbkBtaXhpbiBfb25lLWxpbmUtaXRlbS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgb25lLWxpbmUtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX29uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJG9uZS1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvbmUtbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfb25lLWxpbmUtaXRlbS10YWxsZXItZGVuc2l0eShcbiAgJGRlbnNpdHktc2NhbGUsXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAkaGVpZ2h0OiBkZW5zaXR5LWZ1bmN0aW9ucy5wcm9wLXZhbHVlKFxuICAgICRkZW5zaXR5LWNvbmZpZzogdmFyaWFibGVzLiRvbmUtbGluZS1pdGVtLXRhbGxlci1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSBvbmUtbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfdHdvLWxpbmUtaXRlbS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGU6ICRkZW5zaXR5LXNjYWxlLFxuICAgICRwcm9wZXJ0eS1uYW1lOiBoZWlnaHQsXG4gICk7XG5cbiAgQGluY2x1ZGUgdHdvLWxpbmUtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5KFxuICAkZGVuc2l0eS1zY2FsZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRoZWlnaHQ6IGRlbnNpdHktZnVuY3Rpb25zLnByb3AtdmFsdWUoXG4gICAgJGRlbnNpdHktY29uZmlnOiB2YXJpYWJsZXMuJHR3by1saW5lLWl0ZW0tdGFsbC1kZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZTogJGRlbnNpdHktc2NhbGUsXG4gICAgJHByb3BlcnR5LW5hbWU6IGhlaWdodCxcbiAgKTtcblxuICBAaW5jbHVkZSB0d28tbGluZS1pdGVtLWhlaWdodCgkaGVpZ2h0LCAkcXVlcnk6ICRxdWVyeSk7XG59XG5cbkBtaXhpbiBfdGhyZWUtbGluZS1pdGVtLWRlbnNpdHkoXG4gICRkZW5zaXR5LXNjYWxlLFxuICAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpXG4pIHtcbiAgJGhlaWdodDogZGVuc2l0eS1mdW5jdGlvbnMucHJvcC12YWx1ZShcbiAgICAkZGVuc2l0eS1jb25maWc6IHZhcmlhYmxlcy4kdGhyZWUtbGluZS1pdGVtLWRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlOiAkZGVuc2l0eS1zY2FsZSxcbiAgICAkcHJvcGVydHktbmFtZTogaGVpZ2h0LFxuICApO1xuXG4gIEBpbmNsdWRlIHRocmVlLWxpbmUtaXRlbS1oZWlnaHQoJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xufVxuXG5AbWl4aW4gbGlzdC1iYXNlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG4gICRmZWF0LXR5cG9ncmFwaHk6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCB0eXBvZ3JhcGh5KTtcblxuICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnR5cG9ncmFwaHkoc3VidGl0bGUxLCAkcXVlcnkpO1xuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXR5cG9ncmFwaHkpIHtcbiAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIG1vY2tzIGFuZCBzdGlja2Vyc2hlZXQsIHRoZSBsaW5lLWhlaWdodCBpc1xuICAgIC8vIGFkanVzdGVkIHRvIDI0cHggZm9yIHRleHQgY29udGVudCwgc2FtZSBhcyBmb3IgYm9keTEuXG4gICAgLyogQGFsdGVybmF0ZSAqL1xuICAgIGxpbmUtaGVpZ2h0OiBtYXAuZ2V0KG1hcC5nZXQodHlwb2dyYXBoeS4kc3R5bGVzLCBib2R5MSksIGxpbmUtaGVpZ2h0KTtcbiAgfVxuICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiA4cHggMDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgICAmOmZvY3VzIC8vIGxpbnQtZGlzYWJsZS1mb2N1cy1wc3VlZG8tc2VsZWN0b3JcbiAgICB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXRlbS1iYXNlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmZvY3VzIC8vIGxpbnQtZGlzYWJsZS1mb2N1cy1wc3VlZG8tc2VsZWN0b3JcbiAgICB7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2l0ZW0taW50ZXJhY3RpdmUtcmlwcGxlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgQGluY2x1ZGUgcmlwcGxlLnN1cmZhY2UoXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUucmFkaXVzLWJvdW5kZWQoXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzKFxuICAgIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gICAgZmFsc2UsXG4gICAgJHJpcHBsZS10YXJnZXQ6IHZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldCxcbiAgICAkcXVlcnk6ICRxdWVyeVxuICApO1xuICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWFjdGl2YXRlZChcbiAgICBwcmltYXJ5LFxuICAgIGZhbHNlLFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcbiAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1zZWxlY3RlZChcbiAgICBwcmltYXJ5LFxuICAgIGZhbHNlLFxuICAgICRyaXBwbGUtdGFyZ2V0OiB2YXJpYWJsZXMuJHJpcHBsZS10YXJnZXQsXG4gICAgJHF1ZXJ5OiAkcXVlcnlcbiAgKTtcblxuICAje3ZhcmlhYmxlcy4kcmlwcGxlLXRhcmdldH0ge1xuICAgIEBpbmNsdWRlIHJpcHBsZS50YXJnZXQtY29tbW9uKCRxdWVyeTogJHF1ZXJ5KTtcbiAgfVxufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZShcbiAgJHRvcCxcbiAgJGJvdHRvbSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10d28tbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19wcmltYXJ5LXRleHQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkdG9wOiAkdG9wLFxuICAgICAgICAkYm90dG9tOiAkYm90dG9tLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90aHJlZS1saW5lLWl0ZW0tcHJpbWFyeS1iYXNlbGluZShcbiAgJHRvcCxcbiAgJGJvdHRvbSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10aHJlZS1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX3ByaW1hcnktdGV4dCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRib3R0b206ICRib3R0b20sXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tb3ZlcmxpbmUtYmFzZWxpbmUoXG4gICR0b3AsXG4gICRib3R0b20sXG4gICRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKClcbikge1xuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHdvLWxpbmVzIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fb3ZlcmxpbmUtdGV4dCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRib3R0b206ICRib3R0b20sXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3RocmVlLWxpbmUtaXRlbS1vdmVybGluZS1iYXNlbGluZShcbiAgJHRvcCxcbiAgJGJvdHRvbSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10aHJlZS1saW5lcyB7XG4gICAgLm1kYy1saXN0LWl0ZW1fX292ZXJsaW5lLXRleHQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkdG9wOiAkdG9wLFxuICAgICAgICAkYm90dG9tOiAkYm90dG9tLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90d28tbGluZS1pdGVtLWVuZC1iYXNlbGluZSgkdG9wLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10d28tbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkZGlzcGxheTogYmxvY2ssXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3RocmVlLWxpbmUtaXRlbS1lbmQtYmFzZWxpbmUoJHRvcCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdGhyZWUtbGluZXMge1xuICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeS50ZXh0LWJhc2VsaW5lKFxuICAgICAgICAkZGlzcGxheTogYmxvY2ssXG4gICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX3R3by1saW5lLWl0ZW0tbWV0YS1iYXNlbGluZSgkdG9wLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10d28tbGluZXMge1xuICAgICYubWRjLWxpc3QtaXRlbS0td2l0aC10cmFpbGluZy1tZXRhIHtcbiAgICAgIC5tZGMtbGlzdC1pdGVtX19lbmQge1xuICAgICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LnRleHQtYmFzZWxpbmUoXG4gICAgICAgICAgJGRpc3BsYXk6IGJsb2NrLFxuICAgICAgICAgICR0b3A6ICR0b3AsXG4gICAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pdGVtLW1ldGEtdGV4dC1pbmstY29sb3IoJGNvbG9yLCAkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC10cmFpbGluZy1tZXRhIHtcbiAgICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgQGluY2x1ZGUgdGhlbWUucHJvcGVydHkoY29sb3IsICRjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaXRlbS1pY29uLWluay1jb2xvcihcbiAgJGNvbG9yLFxuICAkbGVhZGluZy1vbmx5OiBmYWxzZSxcbiAgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKVxuKSB7XG4gICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICYubWRjLWxpc3QtaXRlbS0td2l0aC1sZWFkaW5nLWljb24ge1xuICAgIC5tZGMtbGlzdC1pdGVtX19zdGFydCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAobm90ICRsZWFkaW5nLW9ubHkpIHtcbiAgICAmLm1kYy1saXN0LWl0ZW0tLXdpdGgtdHJhaWxpbmctaWNvbiB7XG4gICAgICAubWRjLWxpc3QtaXRlbV9fZW5kIHtcbiAgICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGNvbG9yLCAkY29sb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfaGlnaC1jb250cmFzdC1tb2RlKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgQGluY2x1ZGUgZG9tLW1peGlucy5mb3JjZWQtY29sb3JzLW1vZGUge1xuICAgIC5tZGMtbGlzdC1kaXZpZGVyOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgLy8gQ29sb3IgZW5zdXJlcyBib3JkZXIgaXMgc2hvd24sIGJ1dCB3aWxsIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGJyb3dzZXIuXG4gICAgICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KGJvcmRlci1ib3R0b20tY29sb3IsIHdoaXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAyMCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG5AdXNlICdAbWF0ZXJpYWwvZmVhdHVyZS10YXJnZXRpbmcvZmVhdHVyZS10YXJnZXRpbmcnO1xuQHVzZSAnQG1hdGVyaWFsL21lbnUtc3VyZmFjZS9taXhpbnMnIGFzIG1lbnUtc3VyZmFjZS1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICcuL3NlbGVjdC1pY29uLXRoZW1lJztcbkB1c2UgJy4vc2VsZWN0LXRoZW1lJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICAubWRjLXNlbGVjdC0tZmlsbGVkIHtcbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUuZmlsbGVkLWhlaWdodChzZWxlY3QtdGhlbWUuJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5maWxsZWQtc2hhcGUtcmFkaXVzKFxuICAgICAgc2VsZWN0LXRoZW1lLiRzaGFwZS1yYWRpdXMsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUuY29udGFpbmVyLWZpbGwtY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC10aGVtZS4kZmlsbC1jb2xvcixcbiAgICAgICAgZGlzYWJsZWQ6IHNlbGVjdC10aGVtZS4kZGlzYWJsZWQtZmlsbC1jb2xvcixcbiAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUuYm90dG9tLWxpbmUtY29sb3IoXG4gICAgICAoXG4gICAgICAgIGRlZmF1bHQ6IHNlbGVjdC10aGVtZS4kYm90dG9tLWxpbmUtaWRsZS1jb2xvcixcbiAgICAgICAgZm9jdXM6IHByaW1hcnksXG4gICAgICAgIGhvdmVyOiBzZWxlY3QtdGhlbWUuJGJvdHRvbS1saW5lLWhvdmVyLWNvbG9yLFxuICAgICAgICBkaXNhYmxlZDogc2VsZWN0LXRoZW1lLiRkaXNhYmxlZC1ib3R0b20tbGluZS1jb2xvcixcbiAgICAgICksXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUudHJ1bmNhdGUtZmxvYXRpbmctbGFiZWwtbWF4LXdpZHRoKFxuICAgICAgJGxlYWRpbmctaWNvbi1zaXplOiAwLFxuICAgICAgJGRyb3Bkb3duLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIG1lbnUtc3VyZmFjZS1taXhpbnMuZmxhdHRlbi10b3Atd2hlbi1vcGVuZWQtYmVsb3coJHF1ZXJ5OiAkcXVlcnkpO1xuXG4gICAgJi5tZGMtc2VsZWN0LS1mb2N1c2VkLm1kYy1saW5lLXJpcHBsZTo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAyKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcG9zaXRpb24oXG4gICAgICAgICAgbGVmdCxcbiAgICAgICAgICBzZWxlY3QtdGhlbWUuJG91dGxpbmUtbGFiZWwtb2Zmc2V0XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtc2VsZWN0LS13aXRoLWxlYWRpbmctaWNvbiB7XG4gICAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUubGVhZGluZy1pY29uLWZsb2F0aW5nLWxhYmVsLXBvc2l0aW9uKFxuICAgICAgICBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcblxuICAgICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLnRydW5jYXRlLWZsb2F0aW5nLWxhYmVsLW1heC13aWR0aChcbiAgICAgICAgJGxlYWRpbmctaWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAgICAgICAkZHJvcGRvd24taWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAubWRjLXNlbGVjdC0taW52YWxpZCB7XG4gICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLmJvdHRvbS1saW5lLWNvbG9yKFxuICAgICAgKFxuICAgICAgICBkZWZhdWx0OiBzZWxlY3QtdGhlbWUuJGVycm9yLWNvbG9yLFxuICAgICAgICBob3Zlcjogc2VsZWN0LXRoZW1lLiRlcnJvci1jb2xvcixcbiAgICAgICAgZm9jdXM6IHNlbGVjdC10aGVtZS4kZXJyb3ItY29sb3IsXG4gICAgICApLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9mbG9hdGluZy1sYWJlbC9taXhpbnMnIGFzIGZsb2F0aW5nLWxhYmVsLW1peGlucztcbkB1c2UgJ0BtYXRlcmlhbC9ub3RjaGVkLW91dGxpbmUvbWl4aW5zJyBhcyBub3RjaGVkLW91dGxpbmUtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL25vdGNoZWQtb3V0bGluZS92YXJpYWJsZXMnIGFzIG5vdGNoZWQtb3V0bGluZS12YXJpYWJsZXM7XG5AdXNlICdAbWF0ZXJpYWwvcnRsL3J0bCc7XG5AdXNlICcuL3NlbGVjdC1pY29uLXRoZW1lJztcbkB1c2UgJy4vc2VsZWN0LXRoZW1lJztcblxuQG1peGluIGNvcmUtc3R5bGVzKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgLm1kYy1zZWxlY3QtLW91dGxpbmVkIHtcbiAgICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuICAgICRmZWF0LWNvbG9yOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgY29sb3IpO1xuXG4gICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLm91dGxpbmVkLWhlaWdodChzZWxlY3QtdGhlbWUuJGhlaWdodCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5vdXRsaW5lLXNoYXBlLXJhZGl1cyhcbiAgICAgIHNlbGVjdC10aGVtZS4kc2hhcGUtcmFkaXVzLFxuICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICApO1xuXG4gICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLmNvbnRhaW5lci1maWxsLWNvbG9yKFxuICAgICAgKFxuICAgICAgICBkZWZhdWx0OiB0cmFuc3BhcmVudCxcbiAgICAgICAgZGlzYWJsZWQ6IHRyYW5zcGFyZW50LFxuICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5vdXRsaW5lLWNvbG9yKFxuICAgICAgKFxuICAgICAgICBkZWZhdWx0OiBzZWxlY3QtdGhlbWUuJG91dGxpbmVkLWlkbGUtYm9yZGVyLFxuICAgICAgICBob3Zlcjogc2VsZWN0LXRoZW1lLiRvdXRsaW5lZC1ob3Zlci1ib3JkZXIsXG4gICAgICAgIGZvY3VzOiBwcmltYXJ5LFxuICAgICAgICBkaXNhYmxlZDogc2VsZWN0LXRoZW1lLiRkaXNhYmxlZC1vdXRsaW5lLWNvbG9yLFxuICAgICAgKSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS50cnVuY2F0ZS1ub3RjaGVkLW91dGxpbmUtbWF4LXdpZHRoKFxuICAgICAgJGxlYWRpbmctaWNvbi1zaXplOiAwLFxuICAgICAgJGRyb3Bkb3duLWljb24tc2l6ZTogc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcblxuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLm1kYy1zZWxlY3RfX2FuY2hvciB7XG4gICAgICBAaW5jbHVkZSBmbG9hdGluZy1sYWJlbC1taXhpbnMuc2hha2UtYW5pbWF0aW9uKFxuICAgICAgICBzZWxlY3Qtb3V0bGluZWQsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgbm90Y2hlZC1vdXRsaW5lLW1peGlucy5mbG9hdGluZy1sYWJlbC1mbG9hdC1wb3NpdGlvbi1hYnNvbHV0ZShcbiAgICAgICAgc2VsZWN0LXRoZW1lLiRvdXRsaW5lZC1sYWJlbC1wb3NpdGlvbi15LFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMubm90Y2gtb2Zmc2V0KFxuICAgICAgICBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRib3JkZXItd2lkdGgsXG4gICAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgICApO1xuICAgICAgQGluY2x1ZGUgc2VsZWN0LXRoZW1lLmNlbnRlci1hbGlnbmVkKCRxdWVyeTogJHF1ZXJ5KTtcblxuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgLy8gVG8gZWxpbWluYXRlIGV4dHJhIGdhcCBiZXR3ZWVuIGhlbHBlciB0ZXh0ICYgb3V0bGluZWQgc2VsZWN0IGluIElFLlxuICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0LWNvbnRhaW5lciB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtY29sb3IpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWZsb2F0aW5nLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1cmVtO1xuXG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcG9zaXRpb24oXG4gICAgICAgICAgbGVmdCxcbiAgICAgICAgICBub3RjaGVkLW91dGxpbmUtdmFyaWFibGVzLiRwYWRkaW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtc2VsZWN0LS1mb2N1c2VkIHtcbiAgICAgIEBpbmNsdWRlIG5vdGNoZWQtb3V0bGluZS1taXhpbnMubm90Y2gtb2Zmc2V0KFxuICAgICAgICBzZWxlY3QtdGhlbWUuJG91dGxpbmVkLXN0cm9rZS13aWR0aCxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJi5tZGMtc2VsZWN0LS1pbnZhbGlkIHtcbiAgICAgIEBpbmNsdWRlIHNlbGVjdC10aGVtZS5vdXRsaW5lLWNvbG9yKFxuICAgICAgICAoXG4gICAgICAgICAgZGVmYXVsdDogc2VsZWN0LXRoZW1lLiRlcnJvci1jb2xvcixcbiAgICAgICAgICBob3Zlcjogc2VsZWN0LXRoZW1lLiRlcnJvci1jb2xvcixcbiAgICAgICAgICBmb2N1czogc2VsZWN0LXRoZW1lLiRlcnJvci1jb2xvcixcbiAgICAgICAgKSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJi5tZGMtc2VsZWN0LS13aXRoLWxlYWRpbmctaWNvbiB7XG4gICAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUub3V0bGluZWQtd2l0aC1sZWFkaW5nLWljb24tZmxvYXRpbmctbGFiZWwtcG9zaXRpb24tYW5pbWF0aW9uKFxuICAgICAgICBzZWxlY3QtdGhlbWUuJGhlaWdodCxcbiAgICAgICAgc2VsZWN0LWljb24tdGhlbWUuJGljb24tc2l6ZSxcbiAgICAgICAgJHF1ZXJ5OiAkcXVlcnlcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBzZWxlY3QtdGhlbWUudHJ1bmNhdGUtbm90Y2hlZC1vdXRsaW5lLW1heC13aWR0aChcbiAgICAgICAgJGxlYWRpbmctaWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAgICAgICAkZHJvcGRvd24taWNvbi1zaXplOiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1zaXplLFxuICAgICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAubWRjLW1lbnUtc3VyZmFjZSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tZGMtc2VsZWN0LS1uby1sYWJlbCAubWRjLW1lbnUtc3VyZmFjZSxcbiAgICAubWRjLW1lbnUtc3VyZmFjZS0taXMtb3Blbi1iZWxvdyB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbi8vIFNlbGVjdG9yICcubWRjLSonIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGhpcyBwcm9qZWN0LlxuLy8gc3R5bGVsaW50LWRpc2FibGUgc2VsZWN0b3ItY2xhc3MtcGF0dGVybiAtLVxuLy8gTk9URTogdGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFmb3JlbWVudGlvbmVkIGNsYXNzZXMuXG5cbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICdAbWF0ZXJpYWwvbGlzdC9taXhpbnMnIGFzIGxpc3QtbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUtdGhlbWUnO1xuQHVzZSAnLi9zZWxlY3QtdGhlbWUnO1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBAaW5jbHVkZSByaXBwbGUuc3VyZmFjZShcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiBzZWxlY3QtdGhlbWUuJHJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLnJhZGl1cy1ib3VuZGVkKFxuICAgICAgJHJpcHBsZS10YXJnZXQ6IHNlbGVjdC10aGVtZS4kcmlwcGxlLXRhcmdldCxcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhc2UtY29sb3IoXG4gICAgICBzZWxlY3QtdGhlbWUuJGluay1jb2xvcixcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiBzZWxlY3QtdGhlbWUuJHJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnN0YXRlcy1vcGFjaXRpZXMoXG4gICAgICAoXG4gICAgICAgIGhvdmVyOiByaXBwbGUtdGhlbWUuc3RhdGVzLW9wYWNpdHkoc2VsZWN0LXRoZW1lLiRpbmstY29sb3IsIGhvdmVyKSxcbiAgICAgICAgZm9jdXM6IHJpcHBsZS10aGVtZS5zdGF0ZXMtb3BhY2l0eShzZWxlY3QtdGhlbWUuJGluay1jb2xvciwgZm9jdXMpLFxuICAgICAgKSxcbiAgICAgICRyaXBwbGUtdGFyZ2V0OiBzZWxlY3QtdGhlbWUuJHJpcHBsZS10YXJnZXQsXG4gICAgICAkcXVlcnk6ICRxdWVyeVxuICAgICk7XG5cbiAgICAje3NlbGVjdC10aGVtZS4kcmlwcGxlLXRhcmdldH0ge1xuICAgICAgQGluY2x1ZGUgcmlwcGxlLnRhcmdldC1jb21tb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19tZW51IC5tZGMtZGVwcmVjYXRlZC1saXN0IC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW0tLXNlbGVjdGVkIHtcbiAgICBAaW5jbHVkZSBsaXN0LW1peGlucy5kZXByZWNhdGVkLXJpcHBsZS1zdGF0ZXMob24tc3VyZmFjZSwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuQHVzZSAnQG1hdGVyaWFsL2FuaW1hdGlvbi92YXJpYWJsZXMnO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC90eXBvZ3JhcGh5L21peGlucycgYXMgdHlwb2dyYXBoeS1taXhpbnM7XG5cbkBtaXhpbiBoZWxwZXItdGV4dC1jb3JlLXN0eWxlcygkcXVlcnk6IGZlYXR1cmUtdGFyZ2V0aW5nLmFsbCgpKSB7XG4gICRmZWF0LWFuaW1hdGlvbjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGFuaW1hdGlvbik7XG4gICRmZWF0LXN0cnVjdHVyZTogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIHN0cnVjdHVyZSk7XG5cbiAgLm1kYy1zZWxlY3QtaGVscGVyLXRleHQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBAaW5jbHVkZSBydGwucmVmbGV4aXZlLXByb3BlcnR5KG1hcmdpbiwgMTZweCwgMTZweCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktbWl4aW5zLnR5cG9ncmFwaHkoY2FwdGlvbiwgJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktbWl4aW5zLnRleHQtYmFzZWxpbmUoMTZweCwgJHF1ZXJ5OiAkcXVlcnkpO1xuICB9XG5cbiAgLm1kYy1zZWxlY3QtaGVscGVyLXRleHQtLXZhbGlkYXRpb24tbXNnIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWFuaW1hdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxODBtcyB2YXJpYWJsZXMuJHN0YW5kYXJkLWN1cnZlLXRpbWluZy1mdW5jdGlvbjtcbiAgICB9XG4gIH1cblxuICAubWRjLXNlbGVjdC0taW52YWxpZCArIC5tZGMtc2VsZWN0LWhlbHBlci10ZXh0LS12YWxpZGF0aW9uLW1zZyxcbiAgLm1kYy1zZWxlY3QtaGVscGVyLXRleHQtLXZhbGlkYXRpb24tbXNnLXBlcnNpc3RlbnQge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxufVxuIiwiLy9cbi8vIENvcHlyaWdodCAyMDIwIEdvb2dsZSBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cbi8vXG5cbkB1c2UgJ0BtYXRlcmlhbC9mZWF0dXJlLXRhcmdldGluZy9mZWF0dXJlLXRhcmdldGluZyc7XG5AdXNlICcuL3NlbGVjdC1pY29uLXRoZW1lJztcblxuQG1peGluIGljb24tY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIC5tZGMtc2VsZWN0LS13aXRoLWxlYWRpbmctaWNvbiB7XG4gICAgQGluY2x1ZGUgX2ljb24oJHF1ZXJ5OiAkcXVlcnkpO1xuICAgIEBpbmNsdWRlIHNlbGVjdC1pY29uLXRoZW1lLmljb24taG9yaXpvbnRhbC1tYXJnaW5zKFxuICAgICAgJGxlZnQ6IHNlbGVjdC1pY29uLXRoZW1lLiRpY29uLWhvcml6b250YWwtbWFyZ2luLFxuICAgICAgJHJpZ2h0OiBzZWxlY3QtaWNvbi10aGVtZS4kaWNvbi1ob3Jpem9udGFsLW1hcmdpbixcbiAgICAgICRxdWVyeTogJHF1ZXJ5XG4gICAgKTtcbiAgfVxuXG4gIC5tZGMtc2VsZWN0X19pY29uOm5vdChbdGFiaW5kZXhdKSxcbiAgLm1kYy1zZWxlY3RfX2ljb25bdGFiaW5kZXg9Jy0xJ10ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pY29uKCRxdWVyeTogZmVhdHVyZS10YXJnZXRpbmcuYWxsKCkpIHtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcbiAgJGZlYXQtY29sb3I6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBjb2xvcik7XG5cbiAgLm1kYy1zZWxlY3RfX2ljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG4vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuIC0tXG4vLyBTZWxlY3RvciAnLm1kYy0qJyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoaXMgcHJvamVjdC5cblxuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ0BtYXRlcmlhbC9lbGV2YXRpb24vbWl4aW5zJyBhcyBlbGV2YXRpb24tbWl4aW5zO1xuQHVzZSAnQG1hdGVyaWFsL2ZlYXR1cmUtdGFyZ2V0aW5nL2ZlYXR1cmUtdGFyZ2V0aW5nJztcbkB1c2UgJ0BtYXRlcmlhbC9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC9ydGwvcnRsJztcbkB1c2UgJ0BtYXRlcmlhbC9saXN0L21peGlucycgYXMgbGlzdC1taXhpbnM7XG5AdXNlICdAbWF0ZXJpYWwvbGlzdC92YXJpYWJsZXMnIGFzIGxpc3QtdmFyaWFibGVzO1xuQHVzZSAnQG1hdGVyaWFsL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS9jdXN0b20tcHJvcGVydGllcyc7XG5AdXNlICcuL21lbnUtY3VzdG9tLXByb3BlcnRpZXMnO1xuQHVzZSAnLi92YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29yZS1zdHlsZXMoJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcbiAgJGZlYXQtc3RydWN0dXJlOiBmZWF0dXJlLXRhcmdldGluZy5jcmVhdGUtdGFyZ2V0KCRxdWVyeSwgc3RydWN0dXJlKTtcblxuICBAaW5jbHVkZSByaXBwbGUuY29tbW9uKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG4gIC8vIHByZXR0aWVyLWlnbm9yZVxuICBAaW5jbHVkZSBlbGV2YXRpb24tbWl4aW5zLm92ZXJsYXktY29tbW9uKCRxdWVyeSk7IC8vIENPUFlCQVJBX0NPTU1FTlRfVEhJU19MSU5FXG5cbiAgLy8gQ3VzdG9taXplIHRoZSBtZW51LXN1cmZhY2UgYW5kIGNvbnRhaW5lZCBsaXN0IHRvIG1hdGNoIHRoZSBtZGMtbWVudSBzdHlsZXMuXG4gIC5tZGMtbWVudSB7XG4gICAgQGluY2x1ZGUgbGlzdC1taXhpbnMuZGVwcmVjYXRlZC1pdGVtLW1ldGEtaW5rLWNvbG9yKFxuICAgICAgdmFyaWFibGVzLiRpbmstY29sb3IsXG4gICAgICAkcXVlcnlcbiAgICApO1xuICAgIEBpbmNsdWRlIGxpc3QtbWl4aW5zLmRlcHJlY2F0ZWQtaXRlbS1ncmFwaGljLWluay1jb2xvcihcbiAgICAgIHZhcmlhYmxlcy4kaW5rLWNvbG9yLFxuICAgICAgJHF1ZXJ5XG4gICAgKTtcbiAgICBAaW5jbHVkZSBtaW4td2lkdGgodmFyaWFibGVzLiRtaW4td2lkdGgsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICBAaW5jbHVkZSBvcGVuLWl0ZW0tb3BhY2l0eSh2YXJpYWJsZXMuJG9wZW4taXRlbS1vcGFjaXR5LCAkcXVlcnk6ICRxdWVyeSk7XG4gICAgLy8gSW5jbHVkZSBtZGMtZGVwcmVjYXRlZC1saXN0IHNlbGVjdG9yIHRvIGVuc3VyZSBsaXN0LWluc2lkZS1tZW51IG92ZXJyaWRlcyBkZWZhdWx0IGxpc3Qgc3R5bGVzXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3Qge1xuICAgICAgQGluY2x1ZGUgbGlzdC1taXhpbnMuZGVwcmVjYXRlZC1pdGVtLXByaW1hcnktdGV4dC1pbmstY29sb3IoXG4gICAgICAgIHZhcmlhYmxlcy4kaW5rLWNvbG9yLFxuICAgICAgICAkcXVlcnlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QsXG4gICAgLm1kYy1saXN0IHtcbiAgICAgIEBpbmNsdWRlIGVsZXZhdGlvbi1taXhpbnMub3ZlcmxheS1zdXJmYWNlLXBvc2l0aW9uKCRxdWVyeTogJHF1ZXJ5KTtcbiAgICAgIEBpbmNsdWRlIGVsZXZhdGlvbi1taXhpbnMub3ZlcmxheS1kaW1lbnNpb25zKDEwMCUsICRxdWVyeTogJHF1ZXJ5KTtcbiAgICB9XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1kaXZpZGVyIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIG1hcmdpbjogOHB4IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtLS1kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgICBjdXJzb3I6IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9zdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1uby1xdWFsaWZ5aW5nLXR5cGVcbiAgICBhLm1kYy1kZXByZWNhdGVkLWxpc3QtaXRlbSAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX190ZXh0LFxuICAgIGEubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtIC5tZGMtZGVwcmVjYXRlZC1saXN0LWl0ZW1fX2dyYXBoaWMge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1zdHJ1Y3R1cmUpIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHN0eWxlbGludC1lbmFibGUgc2VsZWN0b3Itbm8tcXVhbGlmeWluZy10eXBlXG4gIH1cblxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGRlZmluZSBtZW51XG4gIC5tZGMtbWVudV9fc2VsZWN0aW9uLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LXN0cnVjdHVyZSkge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICB9XG5cbiAgICAubWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcHJvcGVydHkoXG4gICAgICAgICAgcGFkZGluZyxcbiAgICAgICAgICA1NnB4LFxuICAgICAgICAgIGxpc3QtdmFyaWFibGVzLiRkZXByZWNhdGVkLXNpZGUtcGFkZGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4dHJhIHNwZWNpZmljaXR5IHJlcXVpcmVkIHRvIG92ZXJyaWRlIGBkaXNwbGF5YCBwcm9wZXJ0eSBvbiBgbWRjLWRlcHJlY2F0ZWQtbGlzdC1pdGVtX19ncmFwaGljYC5cbiAgICAubWRjLW1lbnVfX3NlbGVjdGlvbi1ncm91cC1pY29uIHtcbiAgICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICAgIEBpbmNsdWRlIHJ0bC5yZWZsZXhpdmUtcG9zaXRpb24obGVmdCwgMTZweCk7XG5cbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAvLyBJRTExIHJlcXVpcmVzIHRoZSBpY29uIHRvIGJlIHZlcnRpY2FsbHkgY2VudGVyZWQgZHVlIHRvIGl0cyBhYnNvbHV0ZSBwb3NpdGlvbmluZ1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBwb3N0Y3NzLWJlbS1saW50ZXI6IGVuZFxuXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwbHVnaW4vc2VsZWN0b3ItYmVtLXBhdHRlcm5cbiAgLm1kYy1tZW51LWl0ZW0tLXNlbGVjdGVkIC5tZGMtbWVudV9fc2VsZWN0aW9uLWdyb3VwLWljb24ge1xuICAgIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBvcGVuLWl0ZW0tb3BhY2l0eSgkb3BhY2l0eSwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1jb2xvcjogZmVhdHVyZS10YXJnZXRpbmcuY3JlYXRlLXRhcmdldCgkcXVlcnksIGNvbG9yKTtcblxuICAubWRjLW1lbnUtaXRlbS0tc3VibWVudS1vcGVuIHtcbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhY2tncm91bmQtc2VsZWN0b3IoXG4gICAgICBsaXN0LXZhcmlhYmxlcy4kZGVwcmVjYXRlZC1yaXBwbGUtdGFyZ2V0XG4gICAgKSB7XG4gICAgICBAaW5jbHVkZSBmZWF0dXJlLXRhcmdldGluZy50YXJnZXRzKCRmZWF0LWNvbG9yKSB7XG4gICAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgICAgfVxuICAgIH1cbiAgICBAaW5jbHVkZSByaXBwbGUtdGhlbWUuc3RhdGVzLWJhY2tncm91bmQtc2VsZWN0b3IoXG4gICAgICBsaXN0LXZhcmlhYmxlcy4kZGVwcmVjYXRlZC10ZW1wb3JhcnktcmlwcGxlLXRhcmdldFxuICAgICkge1xuICAgICAgQGluY2x1ZGUgZmVhdHVyZS10YXJnZXRpbmcudGFyZ2V0cygkZmVhdC1jb2xvcikge1xuICAgICAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHdpZHRoKCR3aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgQGlmIG1hdGguaXMtdW5pdGxlc3MoJHdpZHRoKSB7XG4gICAgICB3aWR0aDogJHdpZHRoICogdmFyaWFibGVzLiR3aWR0aC1iYXNlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgd2lkdGg6ICR3aWR0aDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIG1pbi13aWR0aCBvZiB0aGUgbWVudS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbi13aWR0aCAtIHRoZSBkZXNpcmVkIG1pbi13aWR0aC5cbkBtaXhpbiBtaW4td2lkdGgoJG1pbi13aWR0aCwgJHF1ZXJ5OiBmZWF0dXJlLXRhcmdldGluZy5hbGwoKSkge1xuICAkZmVhdC1zdHJ1Y3R1cmU6IGZlYXR1cmUtdGFyZ2V0aW5nLmNyZWF0ZS10YXJnZXQoJHF1ZXJ5LCBzdHJ1Y3R1cmUpO1xuXG4gIEBpbmNsdWRlIGZlYXR1cmUtdGFyZ2V0aW5nLnRhcmdldHMoJGZlYXQtc3RydWN0dXJlKSB7XG4gICAgJG1pbi13aWR0aC1jdXN0b20tcHJvcGVydHk6IGN1c3RvbS1wcm9wZXJ0aWVzLmNyZWF0ZShcbiAgICAgIG1lbnUtY3VzdG9tLXByb3BlcnRpZXMuJG1pbi13aWR0aCxcbiAgICAgICRtaW4td2lkdGhcbiAgICApO1xuICAgIEBpbmNsdWRlIHRoZW1lLnByb3BlcnR5KG1pbi13aWR0aCwgJG1pbi13aWR0aC1jdXN0b20tcHJvcGVydHkpO1xuICB9XG59XG4iLCIvL1xuLy8gQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuLy9cblxuQHVzZSAnQG1hdGVyaWFsL3RoZW1lL3RoZW1lJztcbkB1c2UgJ0BtYXRlcmlhbC90aGVtZS90aGVtZS1jb2xvcic7XG5AdXNlICdAbWF0ZXJpYWwvcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5cbiRpbmstY29sb3I6IHJnYmEoXG4gIHRoZW1lLWNvbG9yLnByb3AtdmFsdWUob24tc3VyZmFjZSksXG4gIHRoZW1lLWNvbG9yLnRleHQtZW1waGFzaXMoaGlnaClcbikgIWRlZmF1bHQ7XG5cbiR3aWR0aC1iYXNlOiA1NnB4ICFkZWZhdWx0O1xuJG1pbi13aWR0aDogMiAqICR3aWR0aC1iYXNlICFkZWZhdWx0O1xuXG4kb3Blbi1pdGVtLW9wYWNpdHk6IHJpcHBsZS10aGVtZS5zdGF0ZXMtb3BhY2l0eSgkaW5rLWNvbG9yLCBob3Zlcik7XG4iLCJAdXNlIFwidmFyaWFibGVzXCIgYXMgKjtcblxuI2xvYWRlciB7XG4gIHotaW5kZXg6IDE7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHBhZGRpbmc6IDFyZW07XG59XG5cbiNncmlkIHtcbiAgcGFkZGluZzogMXJlbTtcbn1cblxuaHRtbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbmJvZHkge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTpcbiAgICBsaW5lYXItZ3JhZGllbnQocmdiYSg3MiwgMzQsIDEyMywgMC40KSwgcmdiYSg3MiwgMzQsIDEyMywgMC40KSksXG4gICAgdXJsKFwic3JjL21lZGlhL2NhdHNfcGF0dGVybl9ieV9yaG9kYV90aGVfZWNoaWRuYS5wbmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHRvcDtcbiAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDtcbn1cbiIsIkB1c2UgXCJzYXNzOm1hdGhcIjtcblxuQG1peGluIGludGVycG9sYXRlKFxuICAkcHJvcGVydGllcyxcbiAgJG1pbi1zY3JlZW4sXG4gICRtYXgtc2NyZWVuLFxuICAkbWluLXZhbHVlLFxuICAkbWF4LXZhbHVlXG4pIHtcbiAgJiB7XG4gICAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAgICN7JHByb3BlcnR5fTogJG1pbi12YWx1ZTtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluLXNjcmVlbikge1xuICAgICAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiBjYWxjLWludGVycG9sYXRpb24oXG4gICAgICAgICAgJG1pbi1zY3JlZW4sXG4gICAgICAgICAgJG1pbi12YWx1ZSxcbiAgICAgICAgICAkbWF4LXNjcmVlbixcbiAgICAgICAgICAkbWF4LXZhbHVlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1heC1zY3JlZW4pIHtcbiAgICAgIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJG1heC12YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGNhbGMtaW50ZXJwb2xhdGlvbigkbWluLXNjcmVlbiwgJG1pbi12YWx1ZSwgJG1heC1zY3JlZW4sICRtYXgtdmFsdWUpIHtcbiAgJGE6IG1hdGguZGl2KCRtYXgtdmFsdWUgLSAkbWluLXZhbHVlLCAkbWF4LXNjcmVlbiAtICRtaW4tc2NyZWVuKTtcbiAgJGI6ICRtaW4tdmFsdWUgLSAkYSAqICRtaW4tc2NyZWVuO1xuXG4gICRzaWduOiBcIitcIjtcbiAgQGlmICgkYiA8IDApIHtcbiAgICAkc2lnbjogXCItXCI7XG4gICAgJGI6IG1hdGguYWJzKCRiKTtcbiAgfVxuICBAcmV0dXJuIGNhbGMoI3skYSAqIDEwMH12dyAjeyRzaWdufSAjeyRifSk7XG59XG4iLCJAdXNlIFwidmFyaWFibGVzXCIgYXMgKjtcbkB1c2UgXCJpbnRlcnBvbGF0ZVwiIGFzICo7XG5cbi8vIGFmdGVyIG1lZGlhIHF1ZXJpZXMgc28gZm9udCBjYW4gYmUgcHJvcGVybHkgYXBwbGllZFxuLmhlYWRlciB7XG4gIEBpbmNsdWRlIGludGVycG9sYXRlKGZvbnQtc2l6ZSwgMzYwcHgsIDk5MnB4LCAxOHB4LCAyNnB4KTtcbiAgZm9udC1mYW1pbHk6IFwiRnJlZG9rYSBPbmVcIiwgY3Vyc2l2ZTtcbiAgY29sb3I6ICRtZGMtdGhlbWUtb24tcHJpbWFyeTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuIiwiLy8gR2xvYmFsIHRoZW1lIHZhcmlhYmxlcyAtIGNlbnRyYWxpemVkIGNvbmZpZ3VyYXRpb25cbi8vIEV4cG9ydCB3aXRoIEBmb3J3YXJkIHNvIHRoZXkncmUgYXZhaWxhYmxlIHRvIGNvbnN1bWVycyB2aWEgXCJhcyAqXCJcblxuJG1kYy10aGVtZS1wcmltYXJ5OiAjNWUzODhmO1xuJG1kYy10aGVtZS1vbi1wcmltYXJ5OiAjYTE4NWM2O1xuJG1kYy10aGVtZS1zZWNvbmRhcnk6ICNkM2M2NDc7XG4kbWRjLXRoZW1lLW9uLXNlY29uZGFyeTogI2ZmZjdhMztcbiRtZGMtdGhlbWUtc3VyZmFjZTogI2ExODVjNjtcbiRtZGMtdGhlbWUtb24tc3VyZmFjZTogIzQ4MjI3YjtcbiRtZGMtdGhlbWUtYmFja2dyb3VuZDogIzAwMDAwMDtcbiRtZGMtdGhlbWUtb24tYmFja2dyb3VuZDogI2ZmZmZmZjtcblxuJGVuYWJsZS1zaGFkb3dzOiB0cnVlO1xuXG4kbWRjLWJyZWFrcG9pbnRzOiAoXG4gIGxhcmdlZGVza3RvcDogMTIwMHB4LFxuICBkZXNrdG9wOiA5OTJweCxcbiAgdGFibGV0OiA3MjBweCxcbiAgbGFyZ2VoYW5kc2V0OiA0ODBweCxcbiAgbWVkaXVtaGFuZHNldDogNDAwcHgsXG4gIHNtYWxsaGFuZHNldDogMHB4LFxuKTtcbiIsIkB1c2UgXCJ2YXJpYWJsZXNcIiBhcyAqO1xuXG4uc2VsZWN0LXdpZHRoIHtcbiAgbWluLXdpZHRoOiAxNjBweDtcbiAgbWF4LXdpZHRoOiAyODBweDtcbn1cblxuLm1kYy1zZWxlY3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtZmFtaWx5OlxuICAgIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIHNhbnMtc2VyaWY7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAubWRjLXNlbGVjdF9fYW5jaG9yIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJG1kYy10aGVtZS1zdXJmYWNlLCAwLjUpO1xuICAgIHBhZGRpbmc6IDAuODc1cmVtIDEuMTI1cmVtO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICRtZGMtdGhlbWUtb24tc3VyZmFjZTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJG1kYy10aGVtZS1zdXJmYWNlLCAwLjcpO1xuICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKCRtZGMtdGhlbWUtb24tc3VyZmFjZSwgMC4yKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZWxlY3RlZCB0ZXh0XG4gIC5tZGMtc2VsZWN0X19zZWxlY3RlZC10ZXh0IHtcbiAgICBjb2xvcjogJG1kYy10aGVtZS1vbi1zdXJmYWNlO1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZsZXg6IDE7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBEcm9wZG93biBhcnJvdyBpY29uXG4gIC5tZGMtc2VsZWN0X19kcm9wZG93bi1pY29uIHtcbiAgICBjb2xvcjogJG1kYy10aGVtZS1vbi1zdXJmYWNlO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBtYXJnaW4tbGVmdDogMC43NXJlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICB9XG5cbiAgLy8gRmxvYXRpbmcgbGFiZWxcbiAgLm1kYy1mbG9hdGluZy1sYWJlbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDEuMTI1cmVtO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogcmdiYSgkbWRjLXRoZW1lLW9uLXN1cmZhY2UsIDAuNyk7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nOiAwIDRweDtcblxuICAgICYubWRjLWZsb2F0aW5nLWxhYmVsLS1mbG9hdC1hYm92ZSB7XG4gICAgICB0b3A6IC0xMnB4O1xuICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICBjb2xvcjogJG1kYy10aGVtZS1vbi1zdXJmYWNlO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIExpbmUgcmlwcGxlIChoaWRkZW4pXG4gIC5tZGMtbGluZS1yaXBwbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBBY3RpdmUvb3BlbiBzdGF0ZVxuICAmLm1kYy1zZWxlY3QtLWFjdGl2YXRlZCB7XG4gICAgLm1kYy1zZWxlY3RfX2FuY2hvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRtZGMtdGhlbWUtc3VyZmFjZSwgMC44KTtcbiAgICAgIGJvcmRlci1jb2xvcjogJG1kYy10aGVtZS1zZWNvbmRhcnk7XG4gICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoJG1kYy10aGVtZS1vbi1zdXJmYWNlLCAwLjMpO1xuICAgIH1cblxuICAgIC5tZGMtc2VsZWN0X19kcm9wZG93bi1pY29uIHtcbiAgICAgIGNvbG9yOiAkbWRjLXRoZW1lLXNlY29uZGFyeTtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBEcm9wZG93biBtZW51IHN0eWxpbmdcbi5tZGMtc2VsZWN0X19tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoMTAwJSArIDhweCk7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiYSgkbWRjLXRoZW1lLXN1cmZhY2UsIDAuOTUpO1xuICBib3JkZXI6IDJweCBzb2xpZCAkbWRjLXRoZW1lLW9uLXN1cmZhY2U7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKCRtZGMtdGhlbWUtb24tc3VyZmFjZSwgMC4yKTtcbiAgei1pbmRleDogMTAwMDtcbiAgbWF4LWhlaWdodDogMjgwcHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgZGlzcGxheTogbm9uZTtcbiAgYW5pbWF0aW9uOiBzbGlkZU91dCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgZm9yd2FyZHM7XG5cbiAgJi5tZGMtbWVudS1zdXJmYWNlLS1vcGVuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBhbmltYXRpb246IHNsaWRlSW4gMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGZvcndhcmRzO1xuICB9XG5cbiAgLy8gU2Nyb2xsYmFyIHN0eWxpbmdcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG4gIH1cblxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgkbWRjLXRoZW1lLW9uLXN1cmZhY2UsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoJG1kYy10aGVtZS1vbi1zdXJmYWNlLCAwLjMpO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgkbWRjLXRoZW1lLW9uLXN1cmZhY2UsIDAuNSk7XG4gICAgfVxuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpO1xuICB9XG59XG5cbi8vIExpc3Qgc3R5bGluZ1xuLm1kYy1saXN0IHtcbiAgcGFkZGluZzogNHB4IDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAubWRjLWxpc3QtaXRlbSB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjEyNXJlbTtcbiAgICBjb2xvcjogJG1kYy10aGVtZS1vbi1zdXJmYWNlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkbWRjLXRoZW1lLW9uLXN1cmZhY2UsIDAuMSk7XG4gICAgfVxuXG4gICAgJi0tc2VsZWN0ZWQsXG4gICAgJlthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSB7XG4gICAgICBjb2xvcjogJG1kYy10aGVtZS1zZWNvbmRhcnk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRtZGMtdGhlbWUtc2Vjb25kYXJ5LCAwLjIpO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCLinJNcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBsZWZ0OiAxMnB4O1xuICAgICAgICBjb2xvcjogJG1kYy10aGVtZS1zZWNvbmRhcnk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5tZGMtbGlzdC1pdGVtX190ZXh0IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1kYy1saXN0LWl0ZW1fX3RleHQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJG1kYy10aGVtZS1vbi1zdXJmYWNlLCAwLjE1KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBrZXlmcmFtZXMgZmFkZS1pbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIC8vIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtODBweCk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICAvLyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICBmcm9tIHtcbiAgICAgICAgLy8gdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgLy8gdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04MHB4KTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG59XG5cbi5mYWRlLWluIHtcbiAgICBhbmltYXRpb246IG1kYy1hbmltYXRpb24tZW50ZXIoZmFkZS1pbiwgMzUwbXMpO1xufVxuXG4uZmFkZS1vdXQge1xuICAgIGFuaW1hdGlvbjogbWRjLWFuaW1hdGlvbi1leGl0LXBlcm1hbmVudChmYWRlLW91dCwgMTc1bXMpO1xufSIsIkB1c2UgXCJzYXNzOm1hcFwiO1xuQHVzZSBcInZhcmlhYmxlc1wiIGFzICo7XG5cbi5sYXlvdXQtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEyLCAxZnIpO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XG4gIGdhcDogMTZweCAxNnB4O1xufVxuXG4ubXktZ3JpZC1jZWxsIHtcbiAgZ3JpZC1jb2x1bW46IHNwYW4gMTI7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAjeyBtYXAuZ2V0KCRtZGMtYnJlYWtwb2ludHMsIHNtYWxsaGFuZHNldCkgfSkge1xuICAubGF5b3V0LWdyaWQge1xuICAgIGdhcDogMTZweCAxNnB4O1xuICAgIG1hcmdpbi1sZWZ0OiA1dnc7XG4gICAgbWFyZ2luLXJpZ2h0OiA1dnc7XG4gIH1cbiAgLm15LWdyaWQtY2VsbCB7XG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gMTI7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6ICN7IG1hcC5nZXQoJG1kYy1icmVha3BvaW50cywgbWVkaXVtaGFuZHNldCkgfSkge1xuICAubGF5b3V0LWdyaWQge1xuICAgIGdhcDogMTZweCAxNnB4O1xuICAgIG1hcmdpbi1sZWZ0OiA1dnc7XG4gICAgbWFyZ2luLXJpZ2h0OiA1dnc7XG4gIH1cbiAgLm15LWdyaWQtY2VsbCB7XG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gNjtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogI3sgbWFwLmdldCgkbWRjLWJyZWFrcG9pbnRzLCBsYXJnZWhhbmRzZXQpIH0pIHtcbiAgLmxheW91dC1ncmlkIHtcbiAgICBnYXA6IDE2cHggMTZweDtcbiAgICBtYXJnaW4tbGVmdDogNXZ3O1xuICAgIG1hcmdpbi1yaWdodDogNXZ3O1xuICB9XG4gIC5teS1ncmlkLWNlbGwge1xuICAgIGdyaWQtY29sdW1uOiBzcGFuIDY7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6ICN7IG1hcC5nZXQoJG1kYy1icmVha3BvaW50cywgdGFibGV0KSB9KSB7XG4gIC5sYXlvdXQtZ3JpZCB7XG4gICAgZ2FwOiAyNHB4IDI0cHg7XG4gICAgbWFyZ2luLWxlZnQ6IDV2dztcbiAgICBtYXJnaW4tcmlnaHQ6IDV2dztcbiAgfVxuICAubXktZ3JpZC1jZWxsIHtcbiAgICBncmlkLWNvbHVtbjogc3BhbiA0O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAjeyBtYXAuZ2V0KCRtZGMtYnJlYWtwb2ludHMsIGRlc2t0b3ApIH0pIHtcbiAgLmxheW91dC1ncmlkIHtcbiAgICBnYXA6IDI0cHggMjRweDtcbiAgICBtYXJnaW4tbGVmdDogMTB2dztcbiAgICBtYXJnaW4tcmlnaHQ6IDEwdnc7XG4gIH1cbiAgLm15LWdyaWQtY2VsbCB7XG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gMztcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogI3sgbWFwLmdldCgkbWRjLWJyZWFrcG9pbnRzLCBsYXJnZWRlc2t0b3ApIH0pIHtcbiAgLmxheW91dC1ncmlkIHtcbiAgICBnYXA6IDI0cHggMjRweDtcbiAgICBtYXJnaW4tbGVmdDogMTB2dztcbiAgICBtYXJnaW4tcmlnaHQ6IDEwdnc7XG4gIH1cbiAgLm15LWdyaWQtY2VsbCB7XG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gMjtcbiAgfVxufVxuIiwiQHVzZSBcInZhcmlhYmxlc1wiIGFzICo7XG5cbi8vIEVuc3VyZSBjYXJkcyB3aXRoIGFic29sdXRlIHBvc2l0aW9uZWQgY29udGVudCBhcmUgcHJvcGVybHkgc2NvcGVkXG4ubWRjLWNhcmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5saXN0LWl0ZW0ge1xuICAvLyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAvLyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cbiAgLy8gd29yZC1icmVhazogYnJlYWstYWxsO1xuICAvLyB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXG4gIC8vIGh5cGhlbnM6IGF1dG87XG5cbiAgJi1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE2MSwgMTMzLCAxOTgsIDAuOSk7XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIGNvbG9yOiAkbWRjLXRoZW1lLW9uLXN1cmZhY2U7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDFyZW0pO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICB9XG5cbiAgJi10aXRsZSB7XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgfVxuXG4gICYtYW5jaG9yIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwLjI1cmVtO1xuICAgIHJpZ2h0OiAwLjI1cmVtO1xuICAgIHotaW5kZXg6IDE7XG5cbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICB9XG5cbiAgICAubWRjLWljb24tYnV0dG9uIHtcbiAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZSxcbiAgICAgICAgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgICB9XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjgpO1xuICAgICAgfVxuXG4gICAgICAmLm1hdGVyaWFsLWljb25zIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/