@charset "UTF-8";
/*//////////////////////////////////////
// Imports
//////////////////////////////////////*/
html {
  box-sizing: border-box; }

*, *::after, *::before {
  box-sizing: inherit; }

/*//////////////////////////////////////
//  Fonts
//////////////////////////////////////*/
/*//////////////////////////////////////
//  Extension on skeleton
//////////////////////////////////////*/
/*//////////////////////////////////////
//  Mixins
//////////////////////////////////////*/
/*//////////////////////////////////////
//  Functions
//////////////////////////////////////*/
/*//////////////////////////////////////
//  Silent Classes
//////////////////////////////////////*/
.block {
  max-width: 1024px;
  width: 100%;
  margin: 0 auto;
  display: block; }

button.cta svg, ul.markers-nav li:before, nav.main-nav {
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out; }

section.logo-container img, ul.markers li:after, ul.photo-gallery .slick-prev svg,
ul.photo-gallery .slick-next svg, div.video-container video {
  position: absolute;
  top: 50%;
  right: auto;
  bottom: auto;
  left: 50%;
  -webkit-transform: translateY(-50%) translateX(-50%);
  -moz-transform: translateY(-50%) translateX(-50%);
  -ms-transform: translateY(-50%) translateX(-50%);
  -o-transform: translateY(-50%) translateX(-50%);
  transform: translateY(-50%) translateX(-50%); }

/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
/**
     * 1. Change the default font family in all browsers (opinionated).
     * 2. Prevent adjustments of font size after orientation changes in IE and iOS.
     */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
     * Remove the margin in all browsers (opinionated).
     */
body {
  margin: 0; }

/* HTML5 display definitions
       ========================================================================== */
/**
     * Add the correct display in IE <10.
     * Add the correct display in Edge, IE, and Firefox for `details` or `summary`.
     * Add the correct display in IE for `main`.
     */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
     * Add the correct display in IE <10.
     */
audio,
canvas,
progress,
video {
  display: inline-block; }

/**
     * Add the correct display and remove excess height in iOS 4-7.
     */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
     * Add the correct vertical alignment in Chrome, Firefox, and Opera.
     */
progress {
  vertical-align: baseline; }

/**
     * Add the correct display in IE <11, Safari <8, and Firefox <22.
     * 1. Add the correct display in IE.
     */
template,
[hidden] {
  display: none; }

/* Links
       ========================================================================== */
/**
     * 1. Remove the gray background on active links in IE 10.
     * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
     */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */ }

/**
     * Remove the outline on focused links when they are also active or hovered
     * in all browsers (opinionated).
     */
a:active,
a:hover {
  outline-width: 0; }

/* Text-level semantics
       ========================================================================== */
/**
     * 1. Remove the bottom border in Firefox <40.
     * 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 */ }

/**
     * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
     */
b,
strong {
  font-weight: inherit; }

/**
     * 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;
  font-size: 1em; }

/**
     * Add the correct font style in Android <4.4.
     */
dfn {
  font-style: italic; }

/**
     * Correct the font size and margin on `h1` elements within `section` and
     * `article` contexts in Chrome, Firefox, and Safari.
     */
h1 {
  font-size: 2em;
  /* Set 1 unit of vertical rhythm on the top and bottom margins. */
  margin: 0.75em 0; }

/**
     * Add the correct background and color in IE <10.
     */
mark {
  background-color: #ff0;
  color: #000; }

/**
     * 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 <11.
     */
img {
  border-style: none; }

/**
     * Hide the overflow in IE.
     */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
       ========================================================================== */
/**
     * Add the correct margin in IE 8.
     */
figure {
  margin: 1.5em 40px; }

/**
     * 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 */ }

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

/* Forms
       ========================================================================== */
/**
     * Known issues:
     * - By default, Chrome on OS X and Safari on OS X allow very limited styling of
     *   select, unless a border property is set. The default font weight on
     *   optgroup elements cannot safely be changed in Chrome on OSX and Safari on
     *   OS X.
     * - It is recommended that you do not style checkbox and radio inputs as
     *   Firefox's implementation does not respect box-sizing, padding, or width.
     * - Certain font size values applied to number inputs cause the cursor style of
     *   the decrement button to change from default to text.
     * - The search input is not fully stylable by default. In Chrome and Safari on
     *   OSX/iOS you can't control font, padding, border, or background. In Chrome
     *   and Safari on Windows you can't control border properly. It will apply
     *   border-width but will only show a border color (which cannot be controlled)
     *   for the outer 1px of that border. Applying -webkit-appearance: textfield
     *   addresses these issues without removing the benefits of search inputs (e.g.
     *   showing past searches). Safari (but not Chrome) will clip the cancel button
     *   on when it has padding (and textfield appearance).
     */
/**
     * 1. Change font properties to `inherit` in all browsers (opinionated).
     * 2. Remove the margin in Firefox and Safari.
     * 3. Address `font-family` inconsistency between `textarea` and other form in IE 7
     * 4. Improve appearance and consistency with IE 6/7.
     */
button,
input,
optgroup,
select,
textarea {
  font: inherit;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
     * Show the overflow in IE.
     */
button {
  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; }

/**
     * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
     *    controls in Android 4.
     * 2. Correct the inability to style clickable types in iOS and Safari.
     */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */ }

button,
[type="button"],
[type="reset"],
[type="submit"] {
  /**
       * Remove the inner border and padding in Firefox.
       */
  /**
       * Restore the focus styles unset by the previous rule.
       */ }
  button::-moz-focus-inner,
  [type="button"]::-moz-focus-inner,
  [type="reset"]::-moz-focus-inner,
  [type="submit"]::-moz-focus-inner {
    border-style: none;
    padding: 0; }
  button:-moz-focusring,
  [type="button"]:-moz-focusring,
  [type="reset"]:-moz-focusring,
  [type="submit"]:-moz-focusring {
    outline: 1px dotted ButtonText; }

/**
     * Show the overflow in Edge.
     */
input {
  overflow: visible; }

/**
     * 1. Add the correct box sizing in IE <11.
     * 2. Remove the padding in IE <11.
     * 3. Remove excess padding in IE 7.
     *    Known issue: excess padding remains in IE 6.
     */
[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 and cancel buttons in Chrome and Safari on OS X.
       */ }
  [type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration {
    -webkit-appearance: none; }

/**
     * Correct the text style of placeholders in Chrome, Edge, and Safari.
     */
::-webkit-input-placeholder {
  color: inherit;
  opacity: 0.54; }

/**
     * 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 */ }

/**
     * Change the border, margin, and padding in all browsers (opinionated).
     */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
     * 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.
     * 4. Correct alignment displayed oddly in IE 6/7.
     */
legend {
  box-sizing: border-box;
  /* 1 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  white-space: normal;
  /* 1 */
  color: inherit;
  /* 2 */
  padding: 0;
  /* 3 */ }

/**
     * Restore the font weight unset by a previous rule.
     */
optgroup {
  font-weight: bold; }

/**
     * Remove the default vertical scrollbar in IE.
     */
textarea {
  overflow: auto; }

* {
  box-sizing: border-box; }

body, html {
  display: block;
  height: 100%; }

body {
  font-size: 62.5%;
  position: relative;
  overflow-x: hidden; }

html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.aria-hidden {
  display: none; }

.block::after {
  clear: both;
  content: "";
  display: block; }

.disable-hover {
  pointer-events: none; }

b, strong {
  font-weight: 700; }

i, em {
  font-style: italic; }

input, button {
  -webkit-appearance: none;
  -moz-appearance: none;
  -ms-appearance: none;
  -o-appearance: none;
  appearance: none;
  outline: none;
  border: none;
  background: transparent; }

input:focus, textarea:focus, button, input[type="submit"] {
  outline: none; }

button, input[type="submit"] {
  cursor: pointer; }

::-webkit-scrollbar {
  width: 8px; }

/* Track */
::-webkit-scrollbar-track {
  background-color: #000; }

/* Handle */
::-webkit-scrollbar-thumb {
  background: #1e1b51; }

/* Slider */
/* Icons */
/* Arrows */
.slick-prev,
.slick-next {
  position: absolute;
  display: block;
  height: 20px;
  width: 20px;
  line-height: 0px;
  font-size: 0px;
  cursor: pointer;
  background: transparent;
  color: transparent;
  top: 50%;
  -webkit-transform: translate(0, -50%);
  -ms-transform: translate(0, -50%);
  transform: translate(0, -50%);
  padding: 0;
  border: none;
  outline: none; }
  .slick-prev:hover, .slick-prev:focus,
  .slick-next:hover,
  .slick-next:focus {
    outline: none;
    background: transparent;
    color: transparent; }
    .slick-prev:hover:before, .slick-prev:focus:before,
    .slick-next:hover:before,
    .slick-next:focus:before {
      opacity: 1; }
  .slick-prev.slick-disabled:before,
  .slick-next.slick-disabled:before {
    opacity: 0.25; }
  .slick-prev:before,
  .slick-next:before {
    font-family: "slick";
    font-size: 20px;
    line-height: 1;
    color: white;
    opacity: 0.75;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale; }

.slick-prev {
  left: -25px; }
  [dir="rtl"] .slick-prev {
    left: auto;
    right: -25px; }
  .slick-prev:before {
    content: "←"; }
    [dir="rtl"] .slick-prev:before {
      content: "→"; }

.slick-next {
  right: -25px; }
  [dir="rtl"] .slick-next {
    left: -25px;
    right: auto; }
  .slick-next:before {
    content: "→"; }
    [dir="rtl"] .slick-next:before {
      content: "←"; }

/* Dots */
.slick-dotted.slick-slider {
  margin-bottom: 30px; }

.slick-dots {
  position: absolute;
  bottom: -25px;
  list-style: none;
  display: block;
  text-align: center;
  padding: 0;
  margin: 0;
  width: 100%; }
  .slick-dots li {
    position: relative;
    display: inline-block;
    height: 20px;
    width: 20px;
    margin: 0 5px;
    padding: 0;
    cursor: pointer; }
    .slick-dots li button {
      border: 0;
      background: transparent;
      display: block;
      height: 20px;
      width: 20px;
      outline: none;
      line-height: 0px;
      font-size: 0px;
      color: transparent;
      padding: 5px;
      cursor: pointer; }
      .slick-dots li button:hover, .slick-dots li button:focus {
        outline: none; }
        .slick-dots li button:hover:before, .slick-dots li button:focus:before {
          opacity: 1; }
      .slick-dots li button:before {
        position: absolute;
        top: 0;
        left: 0;
        content: "•";
        width: 20px;
        height: 20px;
        font-family: "slick";
        font-size: 6px;
        line-height: 20px;
        text-align: center;
        color: black;
        opacity: 0.25;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale; }
    .slick-dots li.slick-active button:before {
      color: black;
      opacity: 0.75; }

/* Slider */
.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent; }

.slick-list {
  position: relative;
  overflow: hidden;
  display: block;
  margin: 0;
  padding: 0; }
  .slick-list:focus {
    outline: none; }
  .slick-list.dragging {
    cursor: pointer;
    cursor: hand; }

.slick-slider .slick-track,
.slick-slider .slick-list {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0); }

.slick-track {
  position: relative;
  left: 0;
  top: 0;
  display: block; }
  .slick-track:before, .slick-track:after {
    content: "";
    display: table; }
  .slick-track:after {
    clear: both; }
  .slick-loading .slick-track {
    visibility: hidden; }

.slick-slide {
  float: left;
  height: 100%;
  min-height: 1px;
  display: none; }
  [dir="rtl"] .slick-slide {
    float: right; }
  .slick-slide img {
    display: block; }
  .slick-slide.slick-loading img {
    display: none; }
  .slick-slide.dragging img {
    pointer-events: none; }
  .slick-initialized .slick-slide {
    display: block; }
  .slick-loading .slick-slide {
    visibility: hidden; }
  .slick-vertical .slick-slide {
    display: block;
    height: auto;
    border: 1px solid transparent; }

.slick-arrow.slick-hidden {
  display: none; }

button.cta {
  font-size: 2.4em;
  color: #1e1b51;
  font-family: "DIN Next W01 Bold";
  text-transform: uppercase;
  line-height: 1.5em;
  display: inline-block;
  padding: 0;
  padding-left: 2.5%; }
  button.cta span,
  button.cta svg {
    display: inline-block;
    vertical-align: middle; }
  button.cta svg {
    fill: #1e1b51;
    margin-top: -5px; }
  button.cta span {
    position: relative;
    padding: 0 0.25em; }
    button.cta span:after, button.cta span:before {
      content: "";
      display: block;
      width: 100%;
      height: 1px;
      background-color: #1e1b51; }
    button.cta span:before {
      position: absolute;
      top: 7px;
      right: auto;
      bottom: auto;
      left: 0px; }
    button.cta span:after {
      position: absolute;
      top: auto;
      right: auto;
      bottom: 12px;
      left: 0px; }

.no-touchevents button.cta:hover svg {
  margin-left: 10px; }

p {
  font-size: 1.6em;
  font-family: "DIN Next W01 Regular";
  line-height: 1.4375em; }

section.block-text {
  width: 100%;
  float: left;
  padding: 0 5%;
  background-color: #fff; }
  section.block-text p {
    color: #1e1b51; }

@media all and (min-width: 64em) {
  section.block-text {
    background-color: transparent; } }

div.copy-container {
  width: 100%;
  float: left;
  padding: 3em 5%;
  -webkit-transition: 0.75s;
  -moz-transition: 0.75s;
  transition: 0.75s; }
  div.copy-container h3 {
    font-family: "DIN Next W01 Bold";
    text-transform: uppercase;
    color: #1e1b51;
    font-size: 3.6em;
    margin: 0;
    margin-top: 1em;
    z-index: 1;
    width: 100%;
    float: left;
    position: relative; }
    div.copy-container h3:before {
      content: "";
      display: block;
      width: 50px;
      height: 1px;
      background: #1e1b51;
      position: absolute;
      top: 5px;
      right: auto;
      bottom: auto;
      left: -12.5px;
      -webkit-transform: rotate(-45deg);
      -moz-transform: rotate(-45deg);
      -ms-transform: rotate(-45deg);
      -o-transform: rotate(-45deg);
      transform: rotate(-45deg);
      z-index: 10; }
    div.copy-container h3 span {
      width: auto;
      position: relative;
      display: block;
      float: left;
      padding: 0 0.25em;
      letter-spacing: 2px; }
      div.copy-container h3 span:first-child {
        margin-right: 30%; }
      div.copy-container h3 span:after, div.copy-container h3 span:before {
        content: "";
        display: block;
        width: 100%;
        height: 1px;
        background-color: #1e1b51; }
      div.copy-container h3 span:before {
        position: absolute;
        top: 6px;
        right: auto;
        bottom: auto;
        left: 0px; }
      div.copy-container h3 span:after {
        position: absolute;
        top: auto;
        right: auto;
        bottom: 13px;
        left: 0px; }
  div.copy-container p {
    color: #1e1b51; }

@media all and (min-width: 37.5em) {
  div.copy-container h3 {
    font-size: 4.8em;
    margin: 0.5em 0; }
    div.copy-container h3 span:first-child {
      margin: 0; }
    div.copy-container h3 span:before {
      top: 8px; }
    div.copy-container h3 span:after {
      bottom: 17px; } }

@media all and (min-width: 64em) {
  div.copy-container {
    width: 60%;
    padding-left: 1em;
    -webkit-transform: translateY(10%);
    -moz-transform: translateY(10%);
    -ms-transform: translateY(10%);
    -o-transform: translateY(10%);
    transform: translateY(10%); }
    div.copy-container.slide-up {
      -webkit-transform: translateY(0%);
      -moz-transform: translateY(0%);
      -ms-transform: translateY(0%);
      -o-transform: translateY(0%);
      transform: translateY(0%); }
  section.mile-one .copy-container,
  section.mile-three .copy-container,
  section.mile-five .copy-container,
  section.mile-seven .copy-container {
    margin-left: 7.5%; }
  section.mile-two .copy-container {
    margin-left: 15%; }
  section.mile-four div.copy-container,
  section.mile-six div.copy-container {
    width: 60%;
    margin-left: 25%; }
  section.mile-three div.copy-container p {
    padding-left: 5%; } }

section.cta-container {
  width: 100%;
  float: left;
  padding: 2.5% 0; }
  section.cta-container ul {
    width: 100%;
    float: left;
    list-style-type: none;
    padding: 0; }
  section.cta-container li {
    padding: 0 2.5%;
    position: relative; }
    section.cta-container li:before {
      content: "";
      display: none;
      width: 1px;
      height: 200%;
      position: absolute;
      top: 12px;
      right: auto;
      bottom: auto;
      left: 0px;
      background-color: #fff; }
  section.cta-container p {
    color: #1e1b51;
    padding-left: 2.5%; }

@media all and (min-width: 43.75em) {
  section.cta-container ul {
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex; }
  section.cta-container li {
    display: inline-block;
    width: 33.333333%; }
  section.cta-container p {
    padding-right: 5%; } }

@media all and (min-width: 64em) {
  section.cta-container {
    position: absolute;
    top: 45%;
    right: auto;
    bottom: auto;
    left: 0%; }
    section.cta-container p {
      color: #fff; }
    section.cta-container li:before {
      display: block; }
    section.cta-container button.cta {
      font-size: 4.8em;
      color: #fff; }
      section.cta-container button.cta span {
        padding: 0; }
      section.cta-container button.cta span:after,
      section.cta-container button.cta span:before {
        background-color: #fff; }
      section.cta-container button.cta span:before {
        top: 15px; }
      section.cta-container button.cta span:after {
        bottom: 23px; }
      section.cta-container button.cta svg {
        fill: #fff; } }

section.logo-container {
  width: 100%;
  float: left;
  height: 10em;
  background-color: #003977;
  position: relative; }
  section.logo-container img {
    height: 5em;
    width: auto;
    display: block; }

section.map g.mile-one,
section.map g.mile-two,
section.map g.mile-three,
section.map g.mile-four,
section.map g.mile-five,
section.map g.mile-six,
section.map g.mile-seven {
  opacity: 0; }

section.map.in-view g.mile-one {
  -webkit-transition: opacity 1s ease-in 0s;
  -moz-transition: opacity 1s ease-in 0s;
  transition: opacity 1s ease-in 0s;
  opacity: 1; }

section.map.in-view g.mile-two {
  -webkit-transition: opacity 1s ease-in 0.25s;
  -moz-transition: opacity 1s ease-in 0.25s;
  transition: opacity 1s ease-in 0.25s;
  opacity: 1; }

section.map.in-view g.mile-three {
  -webkit-transition: opacity 1s ease-in 0.5s;
  -moz-transition: opacity 1s ease-in 0.5s;
  transition: opacity 1s ease-in 0.5s;
  opacity: 1; }

section.map.in-view g.mile-four {
  -webkit-transition: opacity 1s ease-in 0.75s;
  -moz-transition: opacity 1s ease-in 0.75s;
  transition: opacity 1s ease-in 0.75s;
  opacity: 1; }

section.map.in-view g.mile-five {
  -webkit-transition: opacity 1s ease-in 1s;
  -moz-transition: opacity 1s ease-in 1s;
  transition: opacity 1s ease-in 1s;
  opacity: 1; }

section.map.in-view g.mile-six {
  -webkit-transition: opacity 1s ease-in 1.25s;
  -moz-transition: opacity 1s ease-in 1.25s;
  transition: opacity 1s ease-in 1.25s;
  opacity: 1; }

section.map.in-view g.mile-seven {
  -webkit-transition: opacity 1s ease-in 1.5s;
  -moz-transition: opacity 1s ease-in 1.5s;
  transition: opacity 1s ease-in 1.5s;
  opacity: 1; }

ul.markers-nav {
  padding: 0;
  margin: 0;
  margin-left: 10%;
  width: 90%;
  height: 100%;
  position: relative;
  list-style-type: none; }
  ul.markers-nav:after {
    content: "";
    display: block;
    width: 89%;
    height: 1px;
    background-color: #fff;
    opacity: 0.5;
    position: absolute;
    top: 50%;
    right: auto;
    bottom: auto;
    left: 0px;
    z-index: 0; }
  ul.markers-nav li {
    width: 14.28%;
    height: 100%;
    margin: 0;
    background-color: transparent;
    position: relative;
    color: #fff;
    display: inline-block;
    float: left;
    cursor: pointer;
    z-index: 1; }
    ul.markers-nav li:before {
      content: "";
      opacity: 0;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      border: 1px solid #fff;
      background: transparent;
      position: absolute;
      top: 50%;
      right: auto;
      bottom: auto;
      left: 0px;
      -webkit-transform: translateY(-50%) translateX(-37.5%);
      -moz-transform: translateY(-50%) translateX(-37.5%);
      -ms-transform: translateY(-50%) translateX(-37.5%);
      -o-transform: translateY(-50%) translateX(-37.5%);
      transform: translateY(-50%) translateX(-37.5%); }
    ul.markers-nav li:after {
      content: "";
      display: block;
      background-color: #fff;
      width: 5px;
      height: 5px;
      border-radius: 50%;
      position: absolute;
      top: 50%;
      right: auto;
      bottom: auto;
      left: 0px;
      -webkit-transform: translateY(-50%);
      -moz-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      -o-transform: translateY(-50%);
      transform: translateY(-50%); }
    ul.markers-nav li.active:before {
      opacity: 1; }
  ul.markers-nav li:last-of-type:after {
    left: 5px; }
  ul.markers-nav li:last-of-type:before {
    -webkit-transform: translateY(-50%) translateX(-10%);
    -moz-transform: translateY(-50%) translateX(-10%);
    -ms-transform: translateY(-50%) translateX(-10%);
    -o-transform: translateY(-50%) translateX(-10%);
    transform: translateY(-50%) translateX(-10%); }
  ul.markers-nav p {
    width: 7em;
    margin: 0;
    font-size: 1.4em;
    position: absolute;
    top: 51%;
    right: auto;
    bottom: auto;
    left: 97.5%;
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    -o-transform: translateY(-50%);
    transform: translateY(-50%);
    display: none; }

@media all and (min-width: 64em) {
  ul.markers-nav {
    width: 50px;
    margin: 0; }
    ul.markers-nav:after {
      height: 86%;
      width: 1px;
      position: absolute;
      top: 7%;
      right: auto;
      bottom: auto;
      left: 50%;
      -webkit-transform: translateX(-50%);
      -moz-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
      -o-transform: translateX(-50%);
      transform: translateX(-50%); }
    ul.markers-nav li {
      width: 100%;
      display: flex;
      height: 14.28%; }
      ul.markers-nav li:before {
        position: absolute;
        top: 50%;
        right: auto;
        bottom: auto;
        left: 50%;
        -webkit-transform: translateY(-50%) translateX(-50%);
        -moz-transform: translateY(-50%) translateX(-50%);
        -ms-transform: translateY(-50%) translateX(-50%);
        -o-transform: translateY(-50%) translateX(-50%);
        transform: translateY(-50%) translateX(-50%);
        width: 35px;
        height: 35px; }
      ul.markers-nav li:after {
        width: 10px;
        height: 10px;
        position: absolute;
        top: 50%;
        right: auto;
        bottom: auto;
        left: 50%;
        -webkit-transform: translateY(-50%) translateX(-50%);
        -moz-transform: translateY(-50%) translateX(-50%);
        -ms-transform: translateY(-50%) translateX(-50%);
        -o-transform: translateY(-50%) translateX(-50%);
        transform: translateY(-50%) translateX(-50%); }
      ul.markers-nav li.active:before {
        opacity: 1; }
    ul.markers-nav li:last-of-type:after {
      left: 50%; }
    ul.markers-nav li:last-of-type:before {
      -webkit-transform: translateY(-50%) translateX(-50%);
      -moz-transform: translateY(-50%) translateX(-50%);
      -ms-transform: translateY(-50%) translateX(-50%);
      -o-transform: translateY(-50%) translateX(-50%);
      transform: translateY(-50%) translateX(-50%); }
    ul.markers-nav p {
      display: block; } }

ul.markers {
  padding: 0;
  margin: 0;
  width: 100%;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  position: relative; }
  ul.markers li {
    width: 20px;
    height: 20px;
    background-color: transparent;
    border-radius: 50%;
    border: 1px solid #fff;
    position: relative;
    color: #fff;
    display: inline-block; }
    ul.markers li:after {
      content: "";
      display: block;
      background-color: #fff;
      width: 5px;
      height: 5px;
      border-radius: 50%; }
  ul.markers p {
    width: 7em;
    margin: 0;
    font-size: 1.4em;
    position: absolute;
    top: 55%;
    right: auto;
    bottom: auto;
    left: 135%;
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    -o-transform: translateY(-50%);
    transform: translateY(-50%); }

.marker-container {
  float: left;
  width: 100%;
  background-image: url("/img/mobile-map.jpg");
  background-position: center center;
  background-size: cover;
  padding-top: 100%;
  z-index: 0; }
  .marker-container svg {
    position: absolute;
    top: 0px;
    right: auto;
    bottom: auto;
    left: 0px; }
    .marker-container svg g {
      cursor: pointer; }
  .marker-container.desktop-path {
    display: none; }

@media all and (orientation: landscape) {
  .marker-container {
    background-image: url("/img/desktop-map.jpg");
    padding-top: 66.76%; }
    .marker-container.desktop-path {
      display: block; }
    .marker-container.mobile-path {
      display: none; } }

div.photo-container {
  width: 100%;
  float: left; }

ul.photo-gallery {
  width: 100%;
  float: left;
  padding: 0;
  list-style-type: none;
  -webkit-transition: 0.75s;
  -moz-transition: 0.75s;
  transition: 0.75s; }
  ul.photo-gallery li {
    width: 100%;
    background-size: cover;
    background-position: center center;
    margin: 0 10px;
    border: 1px solid #1e1b51; }
    ul.photo-gallery li:after {
      content: "";
      display: block;
      padding-top: 56.25%; }
  ul.photo-gallery li.slick-active {
    outline: none; }
  ul.photo-gallery .slick-prev,
  ul.photo-gallery .slick-next {
    width: 50px;
    height: 50px; }
    ul.photo-gallery .slick-prev svg,
    ul.photo-gallery .slick-next svg {
      width: 50px;
      height: 50px;
      fill: #1e1b51; }
  ul.photo-gallery .slick-prev {
    -webkit-transform: rotate(180deg) translate(0, 50%);
    -moz-transform: rotate(180deg) translate(0, 50%);
    -ms-transform: rotate(180deg) translate(0, 50%);
    -o-transform: rotate(180deg) translate(0, 50%);
    transform: rotate(180deg) translate(0, 50%);
    -webkit-transform-origin: 50% 50%;
    -moz-transform-origin: 50% 50%;
    -ms-transform-origin: 50% 50%;
    -o-transform-origin: 50% 50%;
    transform-origin: 50% 50%;
    left: -50px; }
  ul.photo-gallery .slick-next {
    right: -50px; }

@media all and (min-width: 64em) {
  section.mile ul.photo-gallery {
    width: 88%;
    margin: 0 6%;
    -webkit-transform: translateY(10%);
    -moz-transform: translateY(10%);
    -ms-transform: translateY(10%);
    -o-transform: translateY(10%);
    transform: translateY(10%); }
    section.mile ul.photo-gallery.slide-up {
      -webkit-transform: translateY(0%);
      -moz-transform: translateY(0%);
      -ms-transform: translateY(0%);
      -o-transform: translateY(0%);
      transform: translateY(0%); }
  section.mile ul.photo-gallery li {
    float: left; }
  section.mile-one ul.photo-gallery li:first-child {
    width: 60%;
    margin: 0; }
  section.mile-one ul.photo-gallery li:nth-child(2) {
    width: 37.5%;
    margin-left: 2.5%;
    margin-right: 0;
    -webkit-transform: translateY(100%);
    -moz-transform: translateY(100%);
    -ms-transform: translateY(100%);
    -o-transform: translateY(100%);
    transform: translateY(100%); }
  section.mile-two ul.photo-gallery,
  section.mile-five ul.photo-gallery {
    position: relative; }
    section.mile-two ul.photo-gallery li,
    section.mile-five ul.photo-gallery li {
      float: none;
      display: inline-block; }
    section.mile-two ul.photo-gallery li:first-child,
    section.mile-five ul.photo-gallery li:first-child {
      width: 35%;
      vertical-align: middle; }
    section.mile-two ul.photo-gallery li:nth-child(2),
    section.mile-five ul.photo-gallery li:nth-child(2) {
      width: 60%;
      vertical-align: middle; }
    section.mile-two ul.photo-gallery li:nth-child(3),
    section.mile-five ul.photo-gallery li:nth-child(3) {
      width: 35%;
      position: absolute;
      top: auto;
      right: 0px;
      bottom: -80%;
      left: auto; }
  section.mile-five ul.photo-gallery li:nth-child(2) {
    width: 50%; }
  section.mile-three ul.photo-gallery {
    width: 80%;
    margin: 0 10%;
    padding-bottom: 5px; }
  section.mile-four ul.photo-gallery,
  section.mile-six ul.photo-gallery {
    width: 50%;
    margin: 0 25%; }
    section.mile-four ul.photo-gallery .slick-prev,
    section.mile-six ul.photo-gallery .slick-prev {
      left: -20%; }
    section.mile-four ul.photo-gallery .slick-next,
    section.mile-six ul.photo-gallery .slick-next {
      right: -20%; }
  section.mile-seven ul.photo-gallery {
    width: 80%;
    margin: 0 10%; }
    section.mile-seven ul.photo-gallery li {
      float: none;
      display: inline-block;
      vertical-align: middle; }
      section.mile-seven ul.photo-gallery li:after {
        padding-top: 100%; }
    section.mile-seven ul.photo-gallery .slick-prev {
      left: -20%; }
    section.mile-seven ul.photo-gallery .slick-next {
      right: -20%; } }

div.quote-container {
  width: 100%;
  float: left;
  -webkit-transition: 0.75s;
  -moz-transition: 0.75s;
  transition: 0.75s; }
  div.quote-container h4 {
    color: rgba(30, 27, 81, 0.2);
    text-transform: uppercase;
    font-size: 2.4em;
    padding-right: 5%;
    float: left;
    position: relative;
    width: auto; }
    div.quote-container h4:before {
      content: "";
      background-image: url("/img/line-arrow.svg");
      background-size: cover;
      background-repeat: no-repeat;
      width: 10px;
      height: 130%;
      position: absolute;
      top: auto;
      right: 10px;
      bottom: -15%;
      left: auto; }
  div.quote-container span {
    float: right;
    text-align: right;
    position: relative; }
    div.quote-container span:after {
      content: "";
      display: block;
      width: 110%;
      height: 1px;
      background-image: url("/img/dashed-line.png");
      border-image-repeat: repeat;
      position: absolute;
      top: auto;
      right: -6px;
      bottom: 6px;
      left: auto; }

.textstroke div.quote-container.knockout h4 {
  color: transparent;
  -webkit-text-stroke: 1px rgba(30, 27, 81, 0.75); }

section.mile-three div.quote-container h4,
section.mile-six div.quote-container h4 {
  padding-right: 0;
  padding-left: 5%; }
  section.mile-three div.quote-container h4:before,
  section.mile-six div.quote-container h4:before {
    position: absolute;
    top: auto;
    right: auto;
    bottom: -15%;
    left: 0.4em; }
  section.mile-three div.quote-container h4 span,
  section.mile-six div.quote-container h4 span {
    text-align: left;
    float: left; }

section.mile-four div.quote-container h4 {
  text-align: center;
  font-size: 2em; }
  section.mile-four div.quote-container h4:before {
    right: 22.5px; }
  section.mile-four div.quote-container h4 span {
    width: auto;
    float: none;
    text-align: center; }

@media all and (min-width: 43.75em) {
  div.quote-container {
    text-align: right;
    display: block; }
    div.quote-container h4 {
      font-size: 5.5em;
      padding-right: 0;
      display: inline; }
      div.quote-container h4:before {
        width: 15px;
        right: -10px; }
    div.quote-container span {
      float: none;
      display: inline-flex;
      text-align: right; }
      div.quote-container span:after {
        width: 105%;
        bottom: 12px; }
  section.mile-one div.quote-container {
    width: 88%;
    margin: 0 6%; }
    section.mile-one div.quote-container h4 {
      font-size: 4.8em; }
    section.mile-one div.quote-container span:nth-child(2),
    section.mile-one div.quote-container span:nth-child(4) {
      margin-left: 0.3em; }
  section.mile-three div.quote-container {
    width: 65%;
    float: right;
    margin-right: 5%; }
    section.mile-three div.quote-container span {
      float: right; }
    section.mile-three div.quote-container h4 {
      max-width: 11.818181818em; }
  section.mile-four div.quote-container {
    margin-left: 5%; }
    section.mile-four div.quote-container h4 {
      font-size: 4.8em;
      max-width: 14em;
      text-align: center; }
      section.mile-four div.quote-container h4:before {
        right: -10px; }
  section.mile-six div.quote-container {
    float: right;
    width: 75%; }
    section.mile-six div.quote-container h4 {
      max-width: 12.5em; }
      section.mile-six div.quote-container h4:before {
        left: 0.55em; } }

@media all and (min-width: 64em) {
  div.quote-container {
    -webkit-transform: translateY(10%);
    -moz-transform: translateY(10%);
    -ms-transform: translateY(10%);
    -o-transform: translateY(10%);
    transform: translateY(10%); }
    div.quote-container.slide-up {
      -webkit-transform: translateY(0%);
      -moz-transform: translateY(0%);
      -ms-transform: translateY(0%);
      -o-transform: translateY(0%);
      transform: translateY(0%); }
  section.mile-four div.quote-container h4 {
    font-size: 5.5em; } }

@media all and (min-width: 70em) {
  section.mile-one div.quote-container {
    width: 100%;
    margin: 0; }
    section.mile-one div.quote-container h4 {
      font-size: 5.5em; }
  section.mile-four div.quote-container {
    margin-left: 0; } }

div.video-container {
  width: 100%;
  height: 100%;
  position: fixed;
  z-index: -100;
  overflow: hidden; }
  div.video-container video {
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto; }

footer.main-footer {
  width: 100%;
  float: left;
  position: relative; }

section.footer {
  width: 100%;
  float: left;
  min-height: 80vh;
  background-image: url("/img/footer-bg.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  position: relative; }
  section.footer:after {
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    right: auto;
    bottom: auto;
    left: 0px;
    background-color: rgba(0, 0, 0, 0.3);
    z-index: 0; }
  section.footer h2 {
    font-family: "DIN Next W01 Bold";
    text-transform: uppercase;
    color: rgba(241, 241, 241, 0.5);
    font-size: 3.6em;
    margin: 0;
    position: absolute;
    top: auto;
    right: auto;
    bottom: 5%;
    left: 50%;
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    -o-transform: translateX(-50%);
    transform: translateX(-50%);
    z-index: 1;
    -webkit-text-stroke: 2px rgba(255, 255, 255, 0.75);
    text-align: center; }
    section.footer h2 span {
      width: auto;
      position: relative;
      padding: 0 5%;
      letter-spacing: 2px; }
      section.footer h2 span:after, section.footer h2 span:before {
        content: "";
        display: block;
        width: 100%;
        height: 1px;
        background-color: #fff; }
      section.footer h2 span:before {
        position: absolute;
        top: 5px;
        right: auto;
        bottom: auto;
        left: 0px; }
      section.footer h2 span:after {
        position: absolute;
        top: auto;
        right: auto;
        bottom: 11px;
        left: 0px; }

@media all and (min-width: 37.5em) {
  section.footer h2 {
    width: 70%;
    font-size: 7em;
    position: absolute;
    top: 50%;
    right: auto;
    bottom: auto;
    left: 50%;
    -webkit-transform: translateY(-50%) translateX(-50%);
    -moz-transform: translateY(-50%) translateX(-50%);
    -ms-transform: translateY(-50%) translateX(-50%);
    -o-transform: translateY(-50%) translateX(-50%);
    transform: translateY(-50%) translateX(-50%); }
    section.footer h2:after, section.footer h2:before {
      content: "";
      display: block;
      width: 100%;
      height: 1px;
      background-color: #fff; }
    section.footer h2:before {
      position: absolute;
      top: 11px;
      right: auto;
      bottom: auto;
      left: 0px; }
    section.footer h2:after {
      position: absolute;
      top: auto;
      right: auto;
      bottom: 22px;
      left: 0px; }
    section.footer h2 span {
      padding: 0;
      display: inline-block; }
      section.footer h2 span:after, section.footer h2 span:before {
        display: none; } }

@media all and (min-width: 64em) {
  section.footer {
    min-height: 100vh; }
    section.footer h2 {
      top: 40%;
      width: auto; } }

header.main-header {
  width: 100%;
  float: left; }

section.splash {
  width: 100%;
  float: left;
  min-height: 80vh;
  background-image: url("/img/splash-bg.jpg");
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  position: relative; }
  section.splash:after {
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    right: auto;
    bottom: auto;
    left: 0px;
    background-color: rgba(0, 0, 0, 0.3);
    z-index: 0; }
  section.splash img {
    position: absolute;
    top: auto;
    right: auto;
    bottom: 5%;
    left: 5%;
    width: 10em;
    height: auto;
    z-index: 1; }
  section.splash h1 {
    font-family: "DIN Next W01 Bold";
    text-transform: uppercase;
    color: rgba(241, 241, 241, 0.5);
    font-size: 3.6em;
    margin: 0;
    position: absolute;
    top: auto;
    right: auto;
    bottom: 4.25%;
    left: calc(5% + 110px);
    z-index: 1;
    -webkit-text-stroke: 2px rgba(255, 255, 255, 0.75);
    max-width: 3em; }
    section.splash h1 span {
      width: auto;
      position: relative;
      display: block;
      float: left;
      padding-left: 0.10em;
      letter-spacing: 2px; }
      section.splash h1 span:after, section.splash h1 span:before {
        content: "";
        display: block;
        width: 100%;
        height: 1px;
        background-color: #fff; }
      section.splash h1 span:before {
        position: absolute;
        top: 5px;
        right: auto;
        bottom: auto;
        left: 0px; }
      section.splash h1 span:after {
        position: absolute;
        top: auto;
        right: auto;
        bottom: 11px;
        left: 0px; }

.no-touchevents section.splash {
  background-image: url("/img/home-page-video-poster.png");
  background-attachment: fixed; }
  .no-touchevents section.splash.video-loaded {
    background-image: none; }

@media all and (min-width: 64em) {
  .touchevents section.splash {
    background-image: url("/img/home-page-video-poster.png");
    background-attachment: fixed; }
    .touchevents section.splash.video-loaded {
      background-image: none; } }

button.scroll {
  position: absolute;
  top: auto;
  right: auto;
  bottom: 5%;
  left: 40%;
  width: 4em;
  display: none; }
  button.scroll svg {
    width: 100%;
    height: 100%;
    fill: #fff; }

@media all and (max-height: 700px) {
  button.scroll {
    left: 19.5%; } }

@media all and (min-width: 64em) {
  section.splash {
    min-height: 100vh; }
    section.splash img {
      width: 14em;
      position: absolute;
      top: 40%;
      right: auto;
      bottom: auto;
      left: 15%;
      -webkit-transform: translateY(-50%);
      -moz-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      -o-transform: translateY(-50%);
      transform: translateY(-50%); }
    section.splash h1 {
      font-size: 7em;
      position: absolute;
      top: 40%;
      right: auto;
      bottom: auto;
      left: calc(15% + 150px);
      -webkit-transform: translateY(-50%);
      -moz-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      -o-transform: translateY(-50%);
      transform: translateY(-50%);
      max-width: 10em; }
      section.splash h1 span:first-child {
        margin-right: 50%; }
      section.splash h1 span {
        margin: -0.10em 0; }
        section.splash h1 span:before {
          top: 11px; }
        section.splash h1 span:after {
          bottom: 23px; }
  button.scroll {
    display: block; }
  header.main-header section.block-text {
    color: #fff;
    position: absolute;
    top: 49%;
    right: auto;
    bottom: auto;
    left: calc(15% + 160px);
    padding: 0;
    max-width: 55em; }
    header.main-header section.block-text p {
      color: #fff; } }

section.map {
  width: 100%;
  float: left;
  overflow: hidden;
  position: relative; }
  section.map div.copy-container {
    padding: 3em 5%; }
    section.map div.copy-container h3 {
      font-size: 2.6em;
      -webkit-text-stroke: 0px transparent;
      margin-bottom: 1em; }
      section.map div.copy-container h3:before {
        display: none; }
      section.map div.copy-container h3 span {
        letter-spacing: initial;
        padding: 0;
        margin: 0; }
      section.map div.copy-container h3 span:before,
      section.map div.copy-container h3 span:after {
        display: none; }
    section.map div.copy-container p {
      color: #1e1b51; }

@media all and (min-width: 37.5em) {
  section.map div.copy-container {
    width: 70%;
    margin: 0 15%; } }

@media all and (min-width: 70em) {
  section.map div.copy-container {
    margin: 0;
    width: 37.5%;
    padding: 0;
    position: absolute;
    top: 60%;
    right: 5%;
    bottom: auto;
    left: auto;
    -webkit-transform: translateY(-40%);
    -moz-transform: translateY(-40%);
    -ms-transform: translateY(-40%);
    -o-transform: translateY(-40%);
    transform: translateY(-40%); }
    section.map div.copy-container.slide-up {
      -webkit-transform: translateY(-50%);
      -moz-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
      -o-transform: translateY(-50%);
      transform: translateY(-50%); }
    section.map div.copy-container h3 {
      color: #fff;
      font-size: 4.8em; }
      section.map div.copy-container h3 span {
        width: auto;
        margin: -0.10em 0; }
        section.map div.copy-container h3 span:after, section.map div.copy-container h3 span:before {
          display: block;
          background-color: #fff; }
        section.map div.copy-container h3 span:before {
          top: 8px; }
        section.map div.copy-container h3 span:after {
          bottom: 16px; }
    section.map div.copy-container p {
      color: #fff; } }

nav.main-nav {
  width: 100%;
  height: 3em;
  position: fixed;
  top: 0px;
  right: auto;
  bottom: auto;
  left: 0px;
  background-color: #1e1b51;
  z-index: 10;
  opacity: 0;
  overflow: hidden; }
  nav.main-nav.reveal {
    opacity: 1; }

@media all and (min-width: 64em) {
  nav.main-nav {
    width: 50px;
    height: 100vh;
    background: url("/img/map-tile.jpg");
    background-size: 50px 50px; }
  .no-touchevents nav.main-nav:hover {
    width: 150px; } }

main.index {
  width: 100%;
  float: left;
  background-image: url("/img/bg-tile.jpg"); }

section.mile {
  margin: 4em 0;
  width: 100%;
  float: left;
  min-height: 100vh; }

@media all and (min-width: 75em) {
  section.mile .block {
    max-width: 1100px; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLmNzcyIsInNvdXJjZXMiOlsic2NyZWVuLnNjc3MiLCJwYXJ0aWFscy9fYmFzZS5zY3NzIiwiYm91cmJvbi9fYm91cmJvbi5zY3NzIiwiYm91cmJvbi9zZXR0aW5ncy9fcHJlZml4ZXIuc2NzcyIsImJvdXJib24vc2V0dGluZ3MvX3B4LXRvLWVtLnNjc3MiLCJib3VyYm9uL3NldHRpbmdzL19hc3NldC1waXBlbGluZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19jb250YWlucy5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX2NvbnRhaW5zLWZhbHN5LnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbGVuZ3RoLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9faXMtbGlnaHQuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1udW1iZXIuc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19pcy1zaXplLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fcHgtdG8tZW0uc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19weC10by1yZW0uc2NzcyIsImJvdXJib24vZnVuY3Rpb25zL19zaGFkZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3N0cmlwLXVuaXRzLnNjc3MiLCJib3VyYm9uL2Z1bmN0aW9ucy9fdGludC5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX3VucGFjay5zY3NzIiwiYm91cmJvbi9mdW5jdGlvbnMvX21vZHVsYXItc2NhbGUuc2NzcyIsImJvdXJib24vaGVscGVycy9fY29udmVydC11bml0cy5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19kaXJlY3Rpb25hbC12YWx1ZXMuc2NzcyIsImJvdXJib24vaGVscGVycy9fZm9udC1zb3VyY2UtZGVjbGFyYXRpb24uc2NzcyIsImJvdXJib24vaGVscGVycy9fZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19saW5lYXItYW5nbGUtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX2xpbmVhci1ncmFkaWVudC1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsImJvdXJib24vaGVscGVycy9fbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19yYWRpYWwtZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCJib3VyYm9uL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsImJvdXJib24vaGVscGVycy9fc2hhcGUtc2l6ZS1zdHJpcHBlci5zY3NzIiwiYm91cmJvbi9oZWxwZXJzL19zdHItdG8tbnVtLnNjc3MiLCJib3VyYm9uL2NzczMvX2FuaW1hdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCJib3VyYm9uL2NzczMvX2JhY2tmYWNlLXZpc2liaWxpdHkuc2NzcyIsImJvdXJib24vY3NzMy9fYmFja2dyb3VuZC5zY3NzIiwiYm91cmJvbi9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCJib3VyYm9uL2NzczMvX2JvcmRlci1pbWFnZS5zY3NzIiwiYm91cmJvbi9jc3MzL19jYWxjLnNjc3MiLCJib3VyYm9uL2NzczMvX2NvbHVtbnMuc2NzcyIsImJvdXJib24vY3NzMy9fZmlsdGVyLnNjc3MiLCJib3VyYm9uL2NzczMvX2ZsZXgtYm94LnNjc3MiLCJib3VyYm9uL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiYm91cmJvbi9jc3MzL19mb250LWZlYXR1cmUtc2V0dGluZ3Muc2NzcyIsImJvdXJib24vY3NzMy9faGlkcGktbWVkaWEtcXVlcnkuc2NzcyIsImJvdXJib24vY3NzMy9faHlwaGVucy5zY3NzIiwiYm91cmJvbi9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsImJvdXJib24vY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCJib3VyYm9uL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwiYm91cmJvbi9jc3MzL19wZXJzcGVjdGl2ZS5zY3NzIiwiYm91cmJvbi9jc3MzL19wbGFjZWhvbGRlci5zY3NzIiwiYm91cmJvbi9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsImJvdXJib24vY3NzMy9fc2VsZWN0aW9uLnNjc3MiLCJib3VyYm9uL2NzczMvX3RleHQtZGVjb3JhdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL190cmFuc2Zvcm0uc2NzcyIsImJvdXJib24vY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiYm91cmJvbi9jc3MzL191c2VyLXNlbGVjdC5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1jb2xvci5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2JvcmRlci1yYWRpdXMuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItc3R5bGUuc2NzcyIsImJvdXJib24vYWRkb25zL19ib3JkZXItd2lkdGguc2NzcyIsImJvdXJib24vYWRkb25zL19idXR0b25zLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fY2xlYXJmaXguc2NzcyIsImJvdXJib24vYWRkb25zL19lbGxpcHNpcy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX2ZvbnQtc3RhY2tzLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9faGlkZS10ZXh0LnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fbWFyZ2luLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcGFkZGluZy5zY3NzIiwiYm91cmJvbi9hZGRvbnMvX3Bvc2l0aW9uLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsImJvdXJib24vYWRkb25zL19yZXRpbmEtaW1hZ2Uuc2NzcyIsImJvdXJib24vYWRkb25zL19zaXplLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdGV4dC1pbnB1dHMuc2NzcyIsImJvdXJib24vYWRkb25zL190aW1pbmctZnVuY3Rpb25zLnNjc3MiLCJib3VyYm9uL2FkZG9ucy9fdHJpYW5nbGUuc2NzcyIsImJvdXJib24vYWRkb25zL193b3JkLXdyYXAuc2NzcyIsImJvdXJib24vX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwibmVhdC9fbmVhdC5zY3NzIiwibmVhdC9fbmVhdC1oZWxwZXJzLnNjc3MiLCJuZWF0L21peGlucy9fY2xlYXJmaXguc2NzcyIsIm5lYXQvZnVuY3Rpb25zL19wcml2YXRlLnNjc3MiLCJuZWF0L2Z1bmN0aW9ucy9fbmV3LWJyZWFrcG9pbnQuc2NzcyIsIm5lYXQvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIm5lYXQvc2V0dGluZ3MvX3Zpc3VhbC1ncmlkLnNjc3MiLCJuZWF0L3NldHRpbmdzL19kaXNhYmxlLXdhcm5pbmdzLnNjc3MiLCJuZWF0L2dyaWQvX3ByaXZhdGUuc2NzcyIsIm5lYXQvZ3JpZC9fYm94LXNpemluZy5zY3NzIiwibmVhdC9ncmlkL19vbWVnYS5zY3NzIiwibmVhdC9ncmlkL19vdXRlci1jb250YWluZXIuc2NzcyIsIm5lYXQvZ3JpZC9fc3Bhbi1jb2x1bW5zLnNjc3MiLCJuZWF0L2dyaWQvX3Jvdy5zY3NzIiwibmVhdC9ncmlkL19zaGlmdC5zY3NzIiwibmVhdC9ncmlkL19wYWQuc2NzcyIsIm5lYXQvZ3JpZC9fZmlsbC1wYXJlbnQuc2NzcyIsIm5lYXQvZ3JpZC9fbWVkaWEuc2NzcyIsIm5lYXQvZ3JpZC9fdG8tZGVwcmVjYXRlLnNjc3MiLCJuZWF0L2dyaWQvX3Zpc3VhbC1ncmlkLnNjc3MiLCJuZWF0L2dyaWQvX2Rpc3BsYXktY29udGV4dC5zY3NzIiwibmVhdC9ncmlkL19kaXJlY3Rpb24tY29udGV4dC5zY3NzIiwicGFydGlhbHMvX25vcm1hbGl6ZS5zY3NzIiwicGFydGlhbHMvX3N1cHBvcnQtZm9yLnNjc3MiLCJwYXJ0aWFscy9ub3JtYWxpemUvX3ZhcmlhYmxlcy5zY3NzIiwicGFydGlhbHMvbm9ybWFsaXplL192ZXJ0aWNhbC1yaHl0aG0uc2NzcyIsInBhcnRpYWxzL25vcm1hbGl6ZS9fbm9ybWFsaXplLW1peGluLnNjc3MiLCJwYXJ0aWFscy9ub3JtYWxpemUvX2ltcG9ydC1ub3cuc2NzcyIsImF0b21zL19faW5pdC5zY3NzIiwiYXRvbXMvX19zbGljay10aGVtZS5zY3NzIiwiYXRvbXMvX19zbGljay5zY3NzIiwiYXRvbXMvX2J1dHRvbnMuc2NzcyIsImF0b21zL190ZXh0LnNjc3MiLCJtb2xlY3VsZXMvX2Jsb2NrLXRleHQuc2NzcyIsIm1vbGVjdWxlcy9fY29weS1jb250YWluZXIuc2NzcyIsIm1vbGVjdWxlcy9fY3RhLWNvbnRhaW5lci5zY3NzIiwibW9sZWN1bGVzL19sb2dvLWNvbnRhaW5lci5zY3NzIiwibW9sZWN1bGVzL19tYXAtYW5pbWF0aW9ucy5zY3NzIiwibW9sZWN1bGVzL19tYXJrZXJzLW5hdi5zY3NzIiwibW9sZWN1bGVzL19tYXJrZXJzLnNjc3MiLCJtb2xlY3VsZXMvX3Bob3RvLWdhbGxlcnkuc2NzcyIsIm1vbGVjdWxlcy9fcXVvdGUtY29udGFpbmVyLnNjc3MiLCJtb2xlY3VsZXMvX3ZpZGVvLWNvbnRhaW5lci5zY3NzIiwib3JnYW5pc21zL19mb290ZXIuc2NzcyIsIm9yZ2FuaXNtcy9faGVhZGVyLnNjc3MiLCJvcmdhbmlzbXMvX21hcC5zY3NzIiwib3JnYW5pc21zL19uYXYuc2NzcyIsInBhZ2VzL19pbmRleC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCJwYXJ0aWFscy9fYmFzZS5zY3NzXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvX25vcm1hbGl6ZS5zY3NzXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvX3N1cHBvcnQtZm9yLnNjc3NcIjtcbkBpbXBvcnQgXCJwYXJ0aWFscy9ub3JtYWxpemUvX2ltcG9ydC1ub3cuc2Nzc1wiO1xuQGltcG9ydCBcInBhcnRpYWxzL25vcm1hbGl6ZS9fbm9ybWFsaXplLW1peGluLnNjc3NcIjtcbkBpbXBvcnQgXCJwYXJ0aWFscy9ub3JtYWxpemUvX3ZhcmlhYmxlcy5zY3NzXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvbm9ybWFsaXplL192ZXJ0aWNhbC1yaHl0aG0uc2Nzc1wiO1xuXG5AaW1wb3J0IFwiYXRvbXMvX19pbml0LnNjc3NcIjtcbkBpbXBvcnQgXCJhdG9tcy9fX3NsaWNrLXRoZW1lLnNjc3NcIjtcbkBpbXBvcnQgXCJhdG9tcy9fX3NsaWNrLnNjc3NcIjtcbkBpbXBvcnQgXCJhdG9tcy9fYnV0dG9ucy5zY3NzXCI7XG5AaW1wb3J0IFwiYXRvbXMvX3RleHQuc2Nzc1wiO1xuQGltcG9ydCBcIm1vbGVjdWxlcy9fYmxvY2stdGV4dC5zY3NzXCI7XG5AaW1wb3J0IFwibW9sZWN1bGVzL19jb3B5LWNvbnRhaW5lci5zY3NzXCI7XG5AaW1wb3J0IFwibW9sZWN1bGVzL19jdGEtY29udGFpbmVyLnNjc3NcIjtcbkBpbXBvcnQgXCJtb2xlY3VsZXMvX2xvZ28tY29udGFpbmVyLnNjc3NcIjtcbkBpbXBvcnQgXCJtb2xlY3VsZXMvX21hcC1hbmltYXRpb25zLnNjc3NcIjtcbkBpbXBvcnQgXCJtb2xlY3VsZXMvX21hcmtlcnMtbmF2LnNjc3NcIjtcbkBpbXBvcnQgXCJtb2xlY3VsZXMvX21hcmtlcnMuc2Nzc1wiO1xuQGltcG9ydCBcIm1vbGVjdWxlcy9fcGhvdG8tZ2FsbGVyeS5zY3NzXCI7XG5AaW1wb3J0IFwibW9sZWN1bGVzL19xdW90ZS1jb250YWluZXIuc2Nzc1wiO1xuQGltcG9ydCBcIm1vbGVjdWxlcy9fdmlkZW8tY29udGFpbmVyLnNjc3NcIjtcbkBpbXBvcnQgXCJvcmdhbmlzbXMvX2Zvb3Rlci5zY3NzXCI7XG5AaW1wb3J0IFwib3JnYW5pc21zL19oZWFkZXIuc2Nzc1wiO1xuQGltcG9ydCBcIm9yZ2FuaXNtcy9fbWFwLnNjc3NcIjtcbkBpbXBvcnQgXCJvcmdhbmlzbXMvX25hdi5zY3NzXCI7XG5AaW1wb3J0IFwicGFnZXMvX2luZGV4LnNjc3NcIjsiLCIvKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovXG5AaW1wb3J0IFwiYm91cmJvbi9ib3VyYm9uXCI7XG5AaW1wb3J0IFwibmVhdC9uZWF0XCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3JzXG4vLy8vLy8vLy8vLy8vLy8vLy9cbiRwYWxldHRlczogKFxuICAgIHByaW1hcnk6IChcbiAgICAgICAgYmFzZTogICAjMWUxYjUxLFxuICAgICAgICBsaWdodDogICMwMDM5NzcsXG4gICAgICAgIGRhcms6ICAgaHNsYSg4NiwgNTElLCAyMyUsIDEpXG4gICAgKSxcbiAgICBncmV5OiAoXG4gICAgICAgIGJhc2U6ICNmMWYxZjFcbiAgICApLFxuICAgIGxpZ2h0OiAoXG4gICAgICAgIGJhc2U6ICAgI2ZmZlxuICAgICksXG4gICAgZGFyazogKFxuICAgICAgICBiYXNlOiAgICMwMDBcbiAgICApLFxuICAgIHNvY2lhbDogKFxuICAgICAgICBmYWNlYm9vazogICMzYzUyOTAsXG4gICAgICAgIHR3aXR0ZXI6ICAgIzQ2OWFlYSxcbiAgICAgICAgaW5zdGFncmFtOiAjMWIzZjY3LFxuICAgICAgICBsaW5rZWRpbjogICMzNTc0YWYsXG4gICAgICAgIGdvb2dsZXBsdXM6I0ZDMTMyNyxcbiAgICAgICAgcGludGVyZXN0OiAjRDIwMDEwLFxuICAgICAgICBldmVybm90ZTogICM1OEJEMkYsXG4gICAgICAgIGJlaGFuY2U6ICAgIzAwNUNGRixcbiAgICAgICAgdHVtYmxyOiAgICAjMUU0ODY1LFxuICAgICAgICBkaWdnOiAgICAgICMyRjc1QUUsXG4gICAgICAgIGRyaWJiYmxlOiAgI0ZGMzQ4OCxcbiAgICAgICAgdmltZW86ICAgICAjMDBCRkZGLFxuICAgICAgICB5b3V0dWJlOiAgICNGRjAwMDAsXG4gICAgICAgIGJsb2dnZXI6ICAgI0ZGMkYwMFxuICAgIClcbik7XG5cbi8qLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vICBGb250c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qL1xuJGZvbnRTdGFjazogKFxuICAgIHJlZ3VsYXI6IChcbiAgICAgICAgcmVndWxhcjogJ0RJTiBOZXh0IFcwMSBSZWd1bGFyJyxcbiAgICApLFxuICAgIGJvbGQ6IChcbiAgICAgICAgcmVndWxhcjogJ0RJTiBOZXh0IFcwMSBCb2xkJyxcbiAgICApXG4pO1xuXG4vKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyAgRXh0ZW5zaW9uIG9uIHNrZWxldG9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovXG4kZ3JpZC1jb2x1bW5zOiAxMjtcbiR3aWR0aDoxMDI0cHg7XG4kbWF4LXdpZHRoOjEyMDBweDtcblxuLyovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gIE1peGluc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8qL1xuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICY6LW1vei1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICAgJjo6LW1vei1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG4vKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyAgRnVuY3Rpb25zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyovXG5AZnVuY3Rpb24gcGFsZXR0ZSgkcGFsZXR0ZSwgJHRvbmU6ICdiYXNlJykge1xuICAgIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRwYWxldHRlcywgJHBhbGV0dGUpLCAkdG9uZSk7XG59XG5cbkBmdW5jdGlvbiB0eXBlKCRmb250LCAkd2VpZ2h0OiAncmVndWxhcicpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkZm9udFN0YWNrLCAkZm9udCksICR3ZWlnaHQpO1xufVxuXG4vKi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyAgU2lsZW50IENsYXNzZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vKi9cbiVibG9ja3tcbiAgICBtYXgtd2lkdGg6JHdpZHRoO1xuICAgIHdpZHRoOjEwMCU7XG4gICAgbWFyZ2luOjAgYXV0bztcbiAgICBkaXNwbGF5OmJsb2NrO1xufVxuXG4lbWFycGFke1xuICAgIHBhZGRpbmc6MDtcbiAgICBtYXJnaW46MDtcbn1cblxuJWRlZmF1bHQtdHJhbnNpdGlvbntcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAuM3MgZWFzZS1pbi1vdXQpO1xufVxuXG4lbWlkZGxlIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSwgNTAlIGF1dG8gYXV0byBhdXRvKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG59XG4lY2VudGVyIHtcbiAgICBAaW5jbHVkZSBwb3NpdGlvbihyZWxhdGl2ZSwgYXV0byBhdXRvIGF1dG8gNTAlKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG59XG5cbiVhYnNvbHV0ZS1taWRkbGV7XG4gICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDUwJSBhdXRvIGF1dG8gNTAlKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbn1cblxuJWhpZGUtdGV4dHtcbiAgICB0ZXh0LWluZGVudDogMTAwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVwc3VlZG8tY29udGVudHtcbiAgICBjb250ZW50OlwiIFwiO1xuICAgIGRpc3BsYXk6YmxvY2s7XG59IiwiLy8gQm91cmJvbiA0LjIuN1xuLy8gaHR0cDovL2JvdXJib24uaW9cbi8vIENvcHlyaWdodCAyMDExLTIwMTUgdGhvdWdodGJvdCwgaW5jLlxuLy8gTUlUIExpY2Vuc2VcblxuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9hc3NldC1waXBlbGluZVwiO1xuXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Fzc2lnbi1pbnB1dHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29udGFpbnMtZmFsc3lcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtbGVuZ3RoXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxpZ2h0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLW51bWJlclwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1zaXplXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLWVtXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3B4LXRvLXJlbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zaGFkZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9zdHJpcC11bml0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90aW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RyYW5zaXRpb24tcHJvcGVydHktbmFtZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy91bnBhY2tcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbW9kdWxhci1zY2FsZVwiO1xuXG5AaW1wb3J0IFwiaGVscGVycy9jb252ZXJ0LXVuaXRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9kaXJlY3Rpb25hbC12YWx1ZXNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uXCI7XG5AaW1wb3J0IFwiaGVscGVycy9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItYW5nbGUtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9saW5lYXItcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWFyZy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yZW5kZXItZ3JhZGllbnRzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zaGFwZS1zaXplLXN0cmlwcGVyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9zdHItdG8tbnVtXCI7XG5cbkBpbXBvcnQgXCJjc3MzL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvYmFja2ZhY2UtdmlzaWJpbGl0eVwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLWltYWdlXCI7XG5AaW1wb3J0IFwiY3NzMy9jYWxjXCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXgtYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5nc1wiO1xuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xuQGltcG9ydCBcImNzczMva2V5ZnJhbWVzXCI7XG5AaW1wb3J0IFwiY3NzMy9saW5lYXItZ3JhZGllbnRcIjtcbkBpbXBvcnQgXCJjc3MzL3BlcnNwZWN0aXZlXCI7XG5AaW1wb3J0IFwiY3NzMy9wbGFjZWhvbGRlclwiO1xuQGltcG9ydCBcImNzczMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9zZWxlY3Rpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtZGVjb3JhdGlvblwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xuXG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1jb2xvclwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiYWRkb25zL2JvcmRlci1zdHlsZVwiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItd2lkdGhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYnV0dG9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImFkZG9ucy9lbGxpcHNpc1wiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LXN0YWNrc1wiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvbWFyZ2luXCI7XG5AaW1wb3J0IFwiYWRkb25zL3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGV4dC1pbnB1dHNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuQGltcG9ydCBcImFkZG9ucy93b3JkLXdyYXBcIjtcblxuQGltcG9ydCBcImJvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZ1wiO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2xvYmFsIHZhcmlhYmxlcyB0byBlbmFibGUgb3IgZGlzYWJsZSB2ZW5kb3IgcHJlZml4ZXNcblxuJHByZWZpeC1mb3Itd2Via2l0OiAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbW96aWxsYTogICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3ItbWljcm9zb2Z0OiB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itb3BlcmE6ICAgICB0cnVlICFkZWZhdWx0O1xuJHByZWZpeC1mb3Itc3BlYzogICAgICB0cnVlICFkZWZhdWx0O1xuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIGdsb2JhbCBzZXR0aW5nIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBgJGFzc2V0LXBpcGVsaW5lYCB2YXJpYWJsZSBmb3IgYWxsIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdCBpdC5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcblxuJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBmdW5jdGlvbiBhc3NpZ24taW5wdXRzKCRpbnB1dHMsICRwc2V1ZG86IG51bGwpIHtcbiAgJGxpc3Q6ICgpO1xuXG4gIEBlYWNoICRpbnB1dCBpbiAkaW5wdXRzIHtcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcbiAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkaW5wdXQsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWx1ZXNcbi8vLyAgIEEgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIHRvIGNoZWNrIGZvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgY29udGFpbnMoJGxpc3QsICR2YWx1ZSlcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG5cbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmIHR5cGUtb2YoaW5kZXgoJGxpc3QsICR2YWx1ZSkpICE9IFwibnVtYmVyXCIge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGRvZXMgbm90IGNvbnRhaW5zIGEgdmFsdWUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMtZmFsc3koJGxpc3QpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBub3QgJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIGxlbmd0aC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcblxuQGZ1bmN0aW9uIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgQHJldHVybiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJudWxsXCIgYW5kIChzdHItc2xpY2UoJHZhbHVlICsgXCJcIiwgMSwgNCkgPT0gXCJjYWxjXCJcbiAgICAgICBvciBpbmRleChhdXRvIGluaGVyaXQgaW5pdGlhbCAwLCAkdmFsdWUpXG4gICAgICAgb3IgKHR5cGUtb2YoJHZhbHVlKSA9PSBcIm51bWJlclwiIGFuZCBub3QodW5pdGxlc3MoJHZhbHVlKSkpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb2dyYW1hdGljYWxseSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb2xvciBpcyBsaWdodCBvciBkYXJrLlxuLy8vXG4vLy8gQGxpbmsgaHR0cDovL3JvYm90cy50aG91Z2h0Ym90LmNvbS9jbG9zZXItbG9vay1jb2xvci1saWdodG5lc3Ncbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3IgKEhleCl9ICRjb2xvclxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICBpcy1saWdodCgkY29sb3IpXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gaXMtbGlnaHQoJGhleC1jb2xvcikge1xuICAkLWxvY2FsLXJlZDogcmVkKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWdyZWVuOiBncmVlbihyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ibHVlOiBibHVlKHJnYmEoJGhleC1jb2xvciwgMSkpO1xuICAkLWxvY2FsLWxpZ2h0bmVzczogKCQtbG9jYWwtcmVkICogMC4yMTI2ICsgJC1sb2NhbC1ncmVlbiAqIDAuNzE1MiArICQtbG9jYWwtYmx1ZSAqIDAuMDcyMikgLyAyNTU7XG5cbiAgQHJldHVybiAkLWxvY2FsLWxpZ2h0bmVzcyA+IDAuNjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbnRhaW5zXG5cbkBmdW5jdGlvbiBpcy1udW1iZXIoJHZhbHVlKSB7XG4gIEByZXR1cm4gY29udGFpbnMoXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCIgMCAxIDIgMyA0IDUgNiA3IDggOSwgJHZhbHVlKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoZWNrcyBmb3IgYSB2YWxpZCBDU1Mgc2l6ZS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnNcbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGlzLWxlbmd0aFxuXG5AZnVuY3Rpb24gaXMtc2l6ZSgkdmFsdWUpIHtcbiAgQHJldHVybiBpcy1sZW5ndGgoJHZhbHVlKVxuICAgICAgICAgIG9yIGNvbnRhaW5zKFwiZmlsbFwiIFwiZml0LWNvbnRlbnRcIiBcIm1pbi1jb250ZW50XCIgXCJtYXgtY29udGVudFwiLCAkdmFsdWUpO1xufVxuIiwiLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLyBlZy4gZm9yIGEgcmVsYXRpb25hbCB2YWx1ZSBvZiAxMnB4IHdyaXRlIGVtKDEyKSB3aGVuIHRoZSBwYXJlbnQgaXMgMTZweFxuLy8gaWYgdGhlIHBhcmVudCBpcyBhbm90aGVyIHZhbHVlIHNheSAyNHB4IHdyaXRlIGVtKDEyLCAyNClcblxuQGZ1bmN0aW9uIGVtKCRweHZhbCwgJGJhc2U6ICRlbS1iYXNlKSB7XG4gIEBpZiBub3QgdW5pdGxlc3MoJHB4dmFsKSB7XG4gICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIHJlbXNcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxuLy8gQXNzdW1lcyAkZW0tYmFzZSBpcyB0aGUgZm9udC1zaXplIG9mIDxodG1sPlxuXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuXG4gICRiYXNlOiAkZW0tYmFzZTtcbiAgQGlmIG5vdCB1bml0bGVzcygkYmFzZSkge1xuICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCBibGFjay5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgjZmZiYjUyLCA2MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3RyaXBzIHRoZSB1bml0IGZyb20gYSBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgJGRpbWVuc2lvbjogMTA7XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXIgKFVuaXRsZXNzKX1cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiB3aGl0ZSB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNhOGRmYzk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmV0dXJuIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIi8vIFJldHVybiB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgaWYgYXBwcm9wcmlhdGVcbi8vIEV4YW1wbGU6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoKHRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmQpLCBtb3opIC0+IC1tb3otdHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BzLCAkdmVuZG9yOiBmYWxzZSkge1xuICAkbmV3LXByb3BzOiAoKTtcblxuICBAZWFjaCAkcHJvcCBpbiAkcHJvcHMge1xuICAgICRuZXctcHJvcHM6IGFwcGVuZCgkbmV3LXByb3BzLCB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3IpLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRuZXctcHJvcHM7XG59XG5cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWUoJHByb3AsICR2ZW5kb3I6IGZhbHNlKSB7XG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxuICBAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcbiAgICBAcmV0dXJuIHVucXVvdGUoJy0nKyR2ZW5kb3IrJy0nKyRwcm9wKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcHJvcDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ29udmVydHMgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogdW5wYWNrKDFlbSAyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcbi8vLyAgIH1cblxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XG4gIEBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMSB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDIge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAzIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDMpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkc2hvcnRoYW5kO1xuICB9XG59XG4iLCIvLyBTY2FsaW5nIFZhcmlhYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG4kbW9kdWxhci1zY2FsZS1yYXRpbzogJHBlcmZlY3QtZm91cnRoICFkZWZhdWx0O1xuJG1vZHVsYXItc2NhbGUtYmFzZTogZW0oJGVtLWJhc2UpICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWU6ICRtb2R1bGFyLXNjYWxlLWJhc2UsICRyYXRpbzogJG1vZHVsYXItc2NhbGUtcmF0aW8pIHtcbiAgJHYxOiBudGgoJHZhbHVlLCAxKTtcbiAgJHYyOiBudGgoJHZhbHVlLCBsZW5ndGgoJHZhbHVlKSk7XG4gICR2YWx1ZTogJHYxO1xuXG4gIC8vIHNjYWxlICR2MiB0byBqdXN0IGFib3ZlICR2MVxuICBAd2hpbGUgJHYyID4gJHYxIHtcbiAgICAkdjI6ICgkdjIgLyAkcmF0aW8pOyAvLyB3aWxsIGJlIG9mZi1ieS0xXG4gIH1cbiAgQHdoaWxlICR2MiA8ICR2MSB7XG4gICAgJHYyOiAoJHYyICogJHJhdGlvKTsgLy8gd2lsbCBmaXggb2ZmLWJ5LTFcbiAgfVxuXG4gIC8vIGNoZWNrIEFGVEVSIHNjYWxpbmcgJHYyIHRvIHByZXZlbnQgZG91YmxlLWNvdW50aW5nIGNvcm5lci1jYXNlXG4gICRkb3VibGUtc3RyYW5kZWQ6ICR2MiA+ICR2MTtcblxuICBAaWYgJGluY3JlbWVudCA+IDAge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGluY3JlbWVudCB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAqICRyYXRpbykgPiAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyICogJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgKiAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGluY3JlbWVudCA8IDAge1xuICAgIC8vIGFkanVzdCAkdjIgdG8ganVzdCBiZWxvdyAkdjFcbiAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCB7XG4gICAgICAkdjI6ICgkdjIgLyAkcmF0aW8pO1xuICAgIH1cblxuICAgIEBmb3IgJGkgZnJvbSAkaW5jcmVtZW50IHRocm91Z2ggLTEge1xuICAgICAgQGlmICRkb3VibGUtc3RyYW5kZWQgYW5kICgkdjEgLyAkcmF0aW8pIDwgJHYyIHtcbiAgICAgICAgJHZhbHVlOiAkdjI7XG4gICAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHYxOiAoJHYxIC8gJHJhdGlvKTtcbiAgICAgICAgJHZhbHVlOiAkdjE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHN0ci10by1udW0gZm4uXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX2NvbnZlcnQtdW5pdHMoJG51bWJlciwgJHVuaXQpIHtcbiAgJHN0cmluZ3M6IFwicHhcIiwgXCJjbVwiLCBcIm1tXCIsIFwiJVwiLCBcImNoXCIsIFwicGljYVwiLCBcImluXCIsIFwiZW1cIiwgXCJyZW1cIiwgXCJwdFwiLCBcInBjXCIsIFwiZXhcIiwgXCJ2d1wiLCBcInZoXCIsIFwidm1pblwiLCBcInZtYXhcIiwgXCJkZWdcIiwgXCJyYWRcIiwgXCJncmFkXCIsIFwidHVyblwiO1xuICAkdW5pdHM6ICAgMXB4LCAxY20sIDFtbSwgMSUsIDFjaCwgMXBpY2EsIDFpbiwgMWVtLCAxcmVtLCAxcHQsIDFwYywgMWV4LCAxdncsIDF2aCwgMXZtaW4sIDF2bWF4LCAxZGVnLCAxcmFkLCAxZ3JhZCwgMXR1cm47XG4gICRpbmRleDogaW5kZXgoJHN0cmluZ3MsICR1bml0KTtcblxuICBAaWYgbm90ICRpbmRleCB7XG4gICAgQHdhcm4gXCJVbmtub3duIHVuaXQgYCN7JHVuaXR9YC5cIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG51bWJlcikgIT0gXCJudW1iZXJcIiB7XG4gICAgQHdhcm4gXCJgI3skbnVtYmVyfSBpcyBub3QgYSBudW1iZXJgXCI7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIEByZXR1cm4gJG51bWJlciAqIG50aCgkdW5pdHMsICRpbmRleCk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXJlY3Rpb25hbC1wcm9wZXJ0eSBtaXhpbnMgYXJlIHNob3J0aGFuZHMgZm9yIHdyaXRpbmcgcHJvcGVydGllcyBsaWtlIHRoZSBmb2xsb3dpbmdcbi8vL1xuLy8vIEBpZ25vcmUgWW91IGNhbiBhbHNvIHVzZSBgZmFsc2VgIGluc3RlYWQgb2YgYG51bGxgLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZG90dGVkIG51bGwpO1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAwIDEwcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDA7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG5cbkBmdW5jdGlvbiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpIHtcbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWxzLCAxKTtcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHMpIDwgMywgJGEsIG50aCgkdmFscywgMykpO1xuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xuXG4gIEBpZiAkYSA9PSAwIHsgJGE6IDA7IH1cbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XG4gIEBpZiAkZCA9PSAwIHsgJGQ6IDA7IH1cblxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XG4gIEBlbHNlIGlmICRhID09ICRjIGFuZCAkYiA9PSAkZCAgICAgICAgIHsgJG91dHB1dDogJGEgJGI7ICAgICAgIH1cbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcbi8vLyAgIFByZWZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxuLy8vICAgU3VmZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbGxhcHNlLWRpcmVjdGlvbmFsc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcblxuQG1peGluIGRpcmVjdGlvbmFsLXByb3BlcnR5KCRwcmUsICRzdWYsICR2YWxzKSB7XG4gIC8vIFByb3BlcnR5IE5hbWVzXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRib3R0b206ICRwcmUgKyBcIi1ib3R0b21cIiArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRhbGw6ICAgICRwcmUgKyAgICAgICAgICAgICBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xuXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cbn1cbiIsIi8vIFVzZWQgZm9yIGNyZWF0aW5nIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBmb250cyB1c2luZyBAZm9udC1mYWNlXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXG5cbkBmdW5jdGlvbiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICBAcmV0dXJuIGZvbnQtdXJsO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIHVybDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJGFzc2V0LXBpcGVsaW5lLFxuICAkZmlsZS1mb3JtYXRzLFxuICAkZm9udC11cmwpIHtcblxuICAkc3JjOiAoKTtcblxuICAkZm9ybWF0cy1tYXA6IChcbiAgICBlb3Q6ICAgXCIjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXhcIiBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcbiAgICB0dGY6ICAgXCIjeyRmaWxlLXBhdGh9LnR0ZlwiIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxuICApO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcbiAgICBAaWYgY29udGFpbnMoJGZpbGUtZm9ybWF0cywgJGtleSkge1xuICAgICAgJGZpbGUtcGF0aDogbnRoKCR2YWx1ZXMsIDEpO1xuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XG5cbiAgICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHNyYztcbn1cbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xuICBAaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xuICBhbmQgKCRncmFkaWVudC10eXBlID09IGxpbmVhcilcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAcmV0dXJuICRncmFkaWVudC1wb3NpdGlvbnM7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KSB7XG4gICRvZmZzZXQ6IG51bGw7XG4gICR1bml0LXNob3J0OiAgc3RyLXNsaWNlKCRmaXJzdC12YWwsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkgLSAyLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpKTtcbiAgJHVuaXQtbG9uZzogICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gIEBpZiAoJHVuaXQtbG9uZyA9PSBcImdyYWRcIikgb3JcbiAgICAgICgkdW5pdC1sb25nID09IFwidHVyblwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtbG9uZyA9PSBcImdyYWRcIiwgLTEwMGdyYWQgKiAzLCAtMC43NXR1cm4pO1xuICB9XG5cbiAgQGVsc2UgaWYgKCR1bml0LXNob3J0ID09IFwiZGVnXCIpIG9yXG4gICAgICAgICAgICgkdW5pdC1zaG9ydCA9PSBcInJhZFwiKSB7XG4gICAgJG9mZnNldDogaWYoJHVuaXQtc2hvcnQgPT0gXCJkZWdcIiwgLTkwICogMywgMS42cmFkKTtcbiAgfVxuXG4gIEBpZiAkb2Zmc2V0IHtcbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcblxuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAoJG9mZnNldCAtICRudW0pICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaGFzLW11bHRpcGxlLXZhbHM6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcIiBcIik7XG4gICRoYXMtc2luZ2xlLXBvc2l0aW9uOiB1bnF1b3RlKF9wb3NpdGlvbi1mbGlwcGVyKCRmaXJzdC12YWwpICsgXCJcIik7XG4gICRoYXMtYW5nbGU6IGlzLW51bWJlcihzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgMSkpO1xuXG4gIEBpZiAkaGFzLW11bHRpcGxlLXZhbHMge1xuICAgICRncmFkaWVudHM6IF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCwgJGhhcy1tdWx0aXBsZS12YWxzKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRoYXMtc2luZ2xlLXBvc2l0aW9uICE9IFwiXCIge1xuICAgICRwb3M6IHVucXVvdGUoJGhhcy1zaW5nbGUtcG9zaXRpb24gKyBcIlwiKTtcblxuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkcHJlZml4ICsgXCJ0byBcIiArICRwb3MgKyAkc3VmZml4XG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRoYXMtYW5nbGUge1xuICAgIC8vIFJvdGF0ZSBkZWdyZWUgZm9yIHdlYmtpdFxuICAgICRncmFkaWVudHM6IF9saW5lYXItYW5nbGUtcGFyc2VyKCRpbWFnZSwgJGZpcnN0LXZhbCwgJHByZWZpeCwgJHN1ZmZpeCk7XG4gIH1cblxuICBAZWxzZSB7XG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAcmV0dXJuICRncmFkaWVudHM7XG59XG4iLCJAZnVuY3Rpb24gX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpIHtcbiAgJHR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHNwZWM6IG51bGw7XG4gICRkZWdyZWU6IG51bGw7XG4gICRzaWRlOiBudWxsO1xuICAkY29ybmVyOiBudWxsO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHBvcyk7XG4gIC8vIFBhcnNlIFNpZGUgYW5kIGNvcm5lciBwb3NpdGlvbnNcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xuICAgIEBpZiBudGgoJHBvcywgMSkgPT0gXCJ0b1wiIHsgLy8gTmV3ZXIgc3ludGF4XG4gICAgICAkc2lkZTogbnRoKCRwb3MsIDIpO1xuXG4gICAgICBAaWYgJGxlbmd0aCA9PSAyIHsgLy8gZWcuIHRvIHRvcFxuICAgICAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHsgLy8gZWcuIHRvIHRvcCBsZWZ0XG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXG4gICAgICAkc2lkZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDEpKTtcbiAgICAgICRjb3JuZXI6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAyKSk7XG4gICAgfVxuXG4gICAgQGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCBsZWZ0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCByaWdodFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgICRzcGVjOiB0byAkc2lkZSAkY29ybmVyO1xuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMSB7XG4gICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRkZWdyZWU6ICRwb3M7XG4gICAgICAkc3BlYzogdG8gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRkZWdyZWU6IC0yNzAgLSAkcG9zOyAvL3JvdGF0ZSB0aGUgZ3JhZGllbnQgb3Bwb3NpdGUgZnJvbSBzcGVjXG4gICAgICAkc3BlYzogJHBvcztcbiAgICB9XG4gIH1cbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xuICAkc3BlYzogICB1bnF1b3RlKCRzcGVjICsgXCIsXCIpO1xuICBAcmV0dXJuICRkZWdyZWUgJHNwZWM7XG59XG5cbkBmdW5jdGlvbiBfcG9zaXRpb24tZmxpcHBlcigkcG9zKSB7XG4gIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCIvLyBQcml2YXRlIGZ1bmN0aW9uIGZvciBsaW5lYXItZ3JhZGllbnQtcGFyc2VyXG5AZnVuY3Rpb24gX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpIHtcbiAgJHZhbC0xOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGhhcy1tdWx0aXBsZS12YWxzIC0gMSk7XG4gICR2YWwtMjogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRoYXMtbXVsdGlwbGUtdmFscyArIDEsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAkdmFsLTM6IG51bGw7XG4gICRoYXMtdmFsLTM6IHN0ci1pbmRleCgkdmFsLTIsIFwiIFwiKTtcblxuICBAaWYgJGhhcy12YWwtMyB7XG4gICAgJHZhbC0zOiBzdHItc2xpY2UoJHZhbC0yLCAkaGFzLXZhbC0zICsgMSwgc3RyLWxlbmd0aCgkdmFsLTIpKTtcbiAgICAkdmFsLTI6IHN0ci1zbGljZSgkdmFsLTIsIDEsICRoYXMtdmFsLTMgLSAxKTtcbiAgfVxuXG4gICRwb3M6IF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMSkgX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0yKSBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTMpO1xuICAkcG9zOiB1bnF1b3RlKCRwb3MgKyBcIlwiKTtcblxuICAvLyBVc2Ugb2xkIHNwZWMgZm9yIHdlYmtpdFxuICBAaWYgJHZhbC0xID09IFwidG9cIiB7XG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIC8vIEJyaW5nIHRoZSBjb2RlIHVwIHRvIHNwZWNcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcbiAgICApO1xuICB9XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xuICBAZWFjaCAkdmFsdWUgaW4gJGcxLCAkZzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xuICAgICAgICAgICAgJGcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSBcIiAgXCIpIHtcbiAgICAkc3BlYzogXCIjeyRzcGVjfSxcIjtcbiAgfVxuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiQGZ1bmN0aW9uIF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcbiAgJGdyYWRpZW50czogKCk7XG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcblxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xuXG4gICRpcy1zcGVjLXN5bnRheDogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiYXRcIik7XG5cbiAgQGlmICRpcy1zcGVjLXN5bnRheCBhbmQgJGlzLXNwZWMtc3ludGF4ID4gMSB7XG4gICAgJGtleXdvcmQ6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaXMtc3BlYy1zeW50YXggLSAyKTtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICAgJHBvczogYXBwZW5kKCRwb3MsICRrZXl3b3JkLCBjb21tYSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmICRpcy1zcGVjLXN5bnRheCA9PSAxIHtcbiAgICAkcG9zOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGlzLXNwZWMtc3ludGF4ICsgMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICRwb3MgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIGlmIHN0ci1pbmRleCgkaW1hZ2UsIFwiY292ZXJcIikgb3Igc3RyLWluZGV4KCRpbWFnZSwgXCJjb250YWluXCIpIHtcbiAgICBAd2FybiBcIlJhZGlhbC1ncmFkaWVudCBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIGNvbmZvcm0gdG8gbGF0ZXN0IHNwZWMuXCI7XG5cbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IG51bGwsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRncmFkaWVudHM6IChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkaW1hZ2UsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgQHJldHVybiAkZ3JhZGllbnRzO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGxpbmVhci9yYWRpYWwtZ3JhZGllbnQtcGFyc2Vycy5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfc3RyLXRvLW51bSgkc3RyaW5nKSB7XG4gIC8vIE1hdHJpY2VzXG4gICRzdHJpbmdzOiBcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIjtcbiAgJG51bWJlcnM6ICAwICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNyAgIDggICA5O1xuXG4gIC8vIFJlc3VsdFxuICAkcmVzdWx0OiAwO1xuICAkZGl2aWRlcjogMDtcbiAgJG1pbnVzOiBmYWxzZTtcblxuICAvLyBMb29waW5nIHRocm91Z2ggYWxsIGNoYXJhY3RlcnNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHItbGVuZ3RoKCRzdHJpbmcpIHtcbiAgICAkY2hhcmFjdGVyOiBzdHItc2xpY2UoJHN0cmluZywgJGksICRpKTtcbiAgICAkaW5kZXg6IGluZGV4KCRzdHJpbmdzLCAkY2hhcmFjdGVyKTtcblxuICAgIEBpZiAkY2hhcmFjdGVyID09IFwiLVwiIHtcbiAgICAgICRtaW51czogdHJ1ZTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkY2hhcmFjdGVyID09IFwiLlwiIHtcbiAgICAgICRkaXZpZGVyOiAxO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBub3QgJGluZGV4IHtcbiAgICAgICAgJHJlc3VsdDogaWYoJG1pbnVzLCAkcmVzdWx0ICogLTEsICRyZXN1bHQpO1xuICAgICAgICBAcmV0dXJuIF9jb252ZXJ0LXVuaXRzKCRyZXN1bHQsIHN0ci1zbGljZSgkc3RyaW5nLCAkaSkpO1xuICAgICAgfVxuXG4gICAgICAkbnVtYmVyOiBudGgoJG51bWJlcnMsICRpbmRleCk7XG5cbiAgICAgIEBpZiAkZGl2aWRlciA9PSAwIHtcbiAgICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgIC8vIE1vdmUgdGhlIGRlY2ltYWwgZG90IHRvIHRoZSBsZWZ0XG4gICAgICAgICRkaXZpZGVyOiAkZGl2aWRlciAqIDEwO1xuICAgICAgICAkbnVtYmVyOiAkbnVtYmVyIC8gJGRpdmlkZXI7XG4gICAgICB9XG5cbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAkbnVtYmVyO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbn1cbiIsIi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jdGhlLWFuaW1hdGlvbi1uYW1lLXByb3BlcnR5LVxuLy8gRWFjaCBvZiB0aGVzZSBtaXhpbnMgc3VwcG9ydCBjb21tYSBzZXBhcmF0ZWQgbGlzdHMgb2YgdmFsdWVzLCB3aGljaCBhbGxvd3MgZGlmZmVyZW50IHRyYW5zaXRpb25zIGZvciBpbmRpdmlkdWFsIHByb3BlcnRpZXMgdG8gYmUgZGVzY3JpYmVkIGluIGEgc2luZ2xlIHN0eWxlIHJ1bGUuIEVhY2ggdmFsdWUgaW4gdGhlIGxpc3QgY29ycmVzcG9uZHMgdG8gdGhlIHZhbHVlIGF0IHRoYXQgc2FtZSBwb3NpdGlvbiBpbiB0aGUgb3RoZXIgcHJvcGVydGllcy5cblxuQG1peGluIGFuaW1hdGlvbigkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUoJG5hbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50KCR2YWx1ZXMuLi4pIHtcbiAgLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkdmFsdWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWRpcmVjdGlvbigkZGlyZWN0aW9ucy4uLikge1xuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRpcmVjdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGVzLi4uKSB7XG4gIC8vIHJ1bm5pbmcgfCBwYXVzZWRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRzdGF0ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWZpbGwtbW9kZSgkbW9kZXMuLi4pIHtcbiAgLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYXBwZWFyYW5jZSwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCJAbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSwgd2Via2l0IHNwZWMpO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBmb3IgYWRkaW5nIG11bHRpcGxlIGJhY2tncm91bmRzIHVzaW5nIHNob3J0aGFuZFxuLy8gbm90YXRpb24uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5cbkBtaXhpbiBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kcy4uLikge1xuICAkd2Via2l0LWJhY2tncm91bmRzOiAoKTtcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xuXG4gIEBlYWNoICRiYWNrZ3JvdW5kIGluICRiYWNrZ3JvdW5kcyB7XG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkYmFja2dyb3VuZC10eXBlOiB0eXBlLW9mKCRiYWNrZ3JvdW5kKTtcblxuICAgIEBpZiAkYmFja2dyb3VuZC10eXBlID09IHN0cmluZyBvciAkYmFja2dyb3VuZC10eXBlID09IGxpc3Qge1xuICAgICAgJGJhY2tncm91bmQtc3RyOiBpZigkYmFja2dyb3VuZC10eXBlID09IGxpc3QsIG50aCgkYmFja2dyb3VuZCwgMSksICRiYWNrZ3JvdW5kKTtcblxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICR3ZWJraXQtYmFja2dyb3VuZHM6IGFwcGVuZCgkd2Via2l0LWJhY2tncm91bmRzLCAkd2Via2l0LWJhY2tncm91bmQsIGNvbW1hKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXG4vLyBncmFkaWVudHMsIG9yIGZvciBzdHJpbmdpbmcgbXVsdGlwbGUgZ3JhZGllbnRzIHRvZ2V0aGVyLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2VzLi4uKSB7XG4gICR3ZWJraXQtaW1hZ2VzOiAoKTtcbiAgJHNwZWMtaW1hZ2VzOiAoKTtcblxuICBAZWFjaCAkaW1hZ2UgaW4gJGltYWdlcyB7XG4gICAgJHdlYmtpdC1pbWFnZTogKCk7XG4gICAgJHNwZWMtaW1hZ2U6ICgpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRpbWFnZSkgPT0gc3RyaW5nKSB7XG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRpbWFnZSwgMSwgMyk7XG4gICAgICAkZ3JhZGllbnQtdHlwZTogc3RyLXNsaWNlKCRpbWFnZSwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogJGltYWdlO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAkaW1hZ2U7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiAgbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1pbWFnZTogICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSk7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkd2Via2l0LWltYWdlczogYXBwZW5kKCR3ZWJraXQtaW1hZ2VzLCAkd2Via2l0LWltYWdlLCBjb21tYSk7XG4gICAgJHNwZWMtaW1hZ2VzOiAgIGFwcGVuZCgkc3BlYy1pbWFnZXMsICAgJHNwZWMtaW1hZ2UsICAgY29tbWEpO1xuICB9XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogJHdlYmtpdC1pbWFnZXM7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICRzcGVjLWltYWdlcztcbn1cbiIsIkBtaXhpbiBib3JkZXItaW1hZ2UoJGJvcmRlcnMuLi4pIHtcbiAgJHdlYmtpdC1ib3JkZXJzOiAoKTtcbiAgJHNwZWMtYm9yZGVyczogKCk7XG5cbiAgQGVhY2ggJGJvcmRlciBpbiAkYm9yZGVycyB7XG4gICAgJHdlYmtpdC1ib3JkZXI6ICgpO1xuICAgICRzcGVjLWJvcmRlcjogKCk7XG4gICAgJGJvcmRlci10eXBlOiB0eXBlLW9mKCRib3JkZXIpO1xuXG4gICAgQGlmICRib3JkZXItdHlwZSA9PSBzdHJpbmcgb3IgbGlzdCB7XG4gICAgICAkYm9yZGVyLXN0cjogaWYoJGJvcmRlci10eXBlID09IGxpc3QsIG50aCgkYm9yZGVyLCAxKSwgJGJvcmRlcik7XG5cbiAgICAgICR1cmwtc3RyOiAgICAgICBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYm9yZGVyLXN0ciwgMSwgNik7XG5cbiAgICAgIEBpZiAkdXJsLXN0ciA9PSBcInVybFwiIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoXCIjeyRib3JkZXJ9XCIpO1xuICAgICAgICAkd2Via2l0LWJvcmRlcjogbWFwLWdldCgkZ3JhZGllbnRzLCB3ZWJraXQtaW1hZ2UpO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJyYWRpYWxcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9yYWRpYWwtZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6ICRib3JkZXI7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgJHNwZWMtYm9yZGVyOiAgICRib3JkZXI7XG4gICAgfVxuXG4gICAgJHdlYmtpdC1ib3JkZXJzOiBhcHBlbmQoJHdlYmtpdC1ib3JkZXJzLCAkd2Via2l0LWJvcmRlciwgY29tbWEpO1xuICAgICRzcGVjLWJvcmRlcnM6ICAgYXBwZW5kKCRzcGVjLWJvcmRlcnMsICAgJHNwZWMtYm9yZGVyLCAgIGNvbW1hKTtcbiAgfVxuXG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiAkd2Via2l0LWJvcmRlcnM7XG4gICAgICAgICAgYm9yZGVyLWltYWdlOiAkc3BlYy1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIikgMjAgc3RyZXRjaCk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UobGluZWFyLWdyYWRpZW50KDQ1ZGVnLCBvcmFuZ2UsIHllbGxvdykpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpIDIwIDMwIDQwIDUwIHN0cmV0Y2ggcm91bmQpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHJhZGlhbC1ncmFkaWVudCh0b3AsIGNvdmVyLCBvcmFuZ2UsIHllbGxvdywgb3JhbmdlKSk7XG4iLCJAbWl4aW4gY2FsYygkcHJvcGVydHksICR2YWx1ZSkge1xuICAjeyRwcm9wZXJ0eX06IC13ZWJraXQtY2FsYygjeyR2YWx1ZX0pO1xuICAjeyRwcm9wZXJ0eX06IGNhbGMoI3skdmFsdWV9KTtcbn1cbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcbiAgLy8gPGNvbHVtbi1jb3VudD4gfHwgPGNvbHVtbi13aWR0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1ucywgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1jb3VudCgkaW50OiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgaW50ZWdlclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xuICAvLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1maWxsLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUoJGFyZykge1xuICAvLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCAoJHdpZHRoOiBub25lKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tc3BhbigkYXJnOiBub25lKSB7XG4gIC8vIG5vbmUgfHwgYWxsXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1zcGFuLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXdpZHRoKCRsZW5ndGg6IGF1dG8pIHtcbiAgLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGZpbHRlcigkZnVuY3Rpb246IG5vbmUpIHtcbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tb3otYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gSUUgMTBcbiAgZGlzcGxheTogYm94O1xufVxuXG5AbWl4aW4gYm94LW9yaWVudCgkb3JpZW50OiBpbmxpbmUtYXhpcykge1xuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxqdXN0aWZ5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcGFjazogJHBhY2s7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWFsaWduOiAkYWxpZ247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50OyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4OiAkdmFsdWU7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXG5cbi8vIDIwMDkgLSBkaXNwbGF5IChib3ggfCBpbmxpbmUtYm94KVxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcbi8vIDIwMTIgLSBkaXNwbGF5IChmbGV4IHwgaW5saW5lLWZsZXgpXG5AbWl4aW4gZGlzcGxheSgkdmFsdWUpIHtcbi8vIGZsZXggfCBpbmxpbmUtZmxleFxuICBAaWYgJHZhbHVlID09IFwiZmxleFwiIHtcbiAgICAvLyAyMDA5XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgZGlzcGxheTogLW1vei1ib3g7XG4gICAgZGlzcGxheTogYm94O1xuXG4gICAgLy8gMjAxMlxuICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWZsZXg7XG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIDIwMTEgKElFIDEwKVxuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiaW5saW5lLWZsZXhcIiB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYm94O1xuXG4gICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfSBAZWxzZSB7XG4gICAgZGlzcGxheTogJHZhbHVlO1xuICB9XG59XG5cbi8vIDIwMDkgLSBib3gtZmxleCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4IChkZWNpbWFsIHwgd2lkdGggZGVjaW1hbClcbi8vIDIwMTIgLSBmbGV4IChpbnRlZ2VyIGludGVnZXIgd2lkdGgpXG5AbWl4aW4gZmxleCgkdmFsdWUpIHtcblxuICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmllbnQgKCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMpXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcbi8vIDIwMTEgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICRkaXJlY3Rpb246IG5vcm1hbDtcblxuICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiY29sdW1uLXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxuLy8gMjAxMSAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XG4gIC8vIEFsdCB2YWx1ZXNcbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSB3cmFwIHtcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJ3cmFwLXJldmVyc2VcIiB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH1cblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWZsb3csICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmRpbmFsLWdyb3VwIChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXgtb3JkZXIgKGludGVnZXIpXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXG5AbWl4aW4gb3JkZXIoJGludDogMCkge1xuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50O1xufVxuXG4vLyAyMDEyIC0gZmxleC1ncm93IChudW1iZXIpXG5AbWl4aW4gZmxleC1ncm93KCRudW1iZXI6IDApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1ncm93LCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcbn1cblxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXG5AbWl4aW4gZmxleC1zaHJpbmsoJG51bWJlcjogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXNocmluaywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtbmVnYXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWJhc2lzIChudW1iZXIpXG5AbWl4aW4gZmxleC1iYXNpcygkd2lkdGg6IGF1dG8pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1iYXNpcywgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogJHdpZHRoO1xufVxuXG4vLyAyMDA5IC0gYm94LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcbi8vIDIwMTEgLSBmbGV4LXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSlcbi8vIDIwMTIgLSBqdXN0aWZ5LWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQpXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCR2YWx1ZTogZmxleC1zdGFydCkge1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTEgLSBmbGV4LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1pdGVtcyAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtYWxpZ246ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLXNlbGYsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogJHZhbHVlLTIwMTE7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWxpbmUtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5IHwgZGlzdHJpYnV0ZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICR2YWx1ZS0yMDExOiBqdXN0aWZ5O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tY29udGVudCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1saW5lLXBhY2s6ICR2YWx1ZS0yMDExO1xufVxuIiwiQG1peGluIGZvbnQtZmFjZShcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSxcbiAgJGZpbGUtZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Zykge1xuXG4gICRmb250LXVybC1wcmVmaXg6IGZvbnQtdXJsLXByZWZpeGVyKCRhc3NldC1waXBlbGluZSk7XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBzcmM6IGZvbnQtc291cmNlLWRlY2xhcmF0aW9uKFxuICAgICAgJGZvbnQtZmFtaWx5LFxuICAgICAgJGZpbGUtcGF0aCxcbiAgICAgICRhc3NldC1waXBlbGluZSxcbiAgICAgICRmaWxlLWZvcm1hdHMsXG4gICAgICAkZm9udC11cmwtcHJlZml4XG4gICAgKTtcbiAgfVxufVxuIiwiQG1peGluIGZvbnQtZmVhdHVyZS1zZXR0aW5ncygkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDAgeyAkc2V0dGluZ3M6IG5vbmU7IH1cbiAgQGluY2x1ZGUgcHJlZml4ZXIoZm9udC1mZWF0dXJlLXNldHRpbmdzLCAkc2V0dGluZ3MsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IHJvdW5kKCRyYXRpbyAqIDk2ZHBpKSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBoeXBoZW5zKCRoeXBoZW5hdGlvbjogbm9uZSkge1xuICAvLyBub25lIHwgbWFudWFsIHwgYXV0b1xuICBAaW5jbHVkZSBwcmVmaXhlcihoeXBoZW5zLCAkaHlwaGVuYXRpb24sIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAbWl4aW4gaW1hZ2UtcmVuZGVyaW5nICgkbW9kZTphdXRvKSB7XG5cbiAgQGlmICgkbW9kZSA9PSBjcmlzcC1lZGdlcykge1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IG5lYXJlc3QtbmVpZ2hib3I7IC8vIElFOCtcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiAtby1jcmlzcC1lZGdlcztcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG4gICAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBpbWFnZS1yZW5kZXJpbmc6ICRtb2RlO1xuICB9XG59XG4iLCIvLyBBZGRzIGtleWZyYW1lcyBibG9ja3MgZm9yIHN1cHBvcnRlZCBwcmVmaXhlcywgcmVtb3ZpbmcgcmVkdW5kYW50IHByZWZpeGVzIGluIHRoZSBibG9jaydzIGNvbnRlbnRcbkBtaXhpbiBrZXlmcmFtZXMoJG5hbWUpIHtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0OiAgICAkcHJlZml4LWZvci13ZWJraXQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE6ICAgJHByZWZpeC1mb3ItbW96aWxsYTtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0OiAkcHJlZml4LWZvci1taWNyb3NvZnQ7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhOiAgICAgJHByZWZpeC1mb3Itb3BlcmE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM6ICAgICAgJHByZWZpeC1mb3Itc3BlYztcblxuICBAaWYgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0IHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itd2Via2l0OiB0cnVlICFnbG9iYWw7XG4gICAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZSAhZ2xvYmFsO1xuICAgIEAtbW96LWtleWZyYW1lcyAjeyRuYW1lfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCAgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGEgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6ICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdCAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhICAgICAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMgICAgICAhZ2xvYmFsO1xuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcbiAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZzEsICRnMjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGczOiBudWxsLCAkZzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNTogbnVsbCwgJGc2OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzc6IG51bGwsICRnODogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc5OiBudWxsLCAkZzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcbiAgLy8gRGV0ZWN0IHdoYXQgdHlwZSBvZiB2YWx1ZSBleGlzdHMgaW4gJHBvc1xuICAkcG9zLXR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHBvcy1zcGVjOiBudWxsO1xuICAkcG9zLWRlZ3JlZTogbnVsbDtcblxuICAvLyBJZiAkcG9zIGlzIG1pc3NpbmcgZnJvbSBtaXhpbiwgcmVhc3NpZ24gdmFycyBhbmQgYWRkIGRlZmF1bHQgcG9zaXRpb25cbiAgQGlmICgkcG9zLXR5cGUgPT0gY29sb3IpIG9yIChudGgoJHBvcywgMSkgPT0gXCJ0cmFuc3BhcmVudFwiKSAge1xuICAgICRnMTA6ICRnOTsgJGc5OiAkZzg7ICRnODogJGc3OyAkZzc6ICRnNjsgJGc2OiAkZzU7XG4gICAgJGc1OiAkZzQ7ICRnNDogJGczOyAkZzM6ICRnMjsgJGcyOiAkZzE7ICRnMTogJHBvcztcbiAgICAkcG9zOiBudWxsO1xuICB9XG5cbiAgQGlmICRwb3Mge1xuICAgICRwb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKTtcbiAgICAkcG9zLWRlZ3JlZTogbnRoKCRwb3NpdGlvbnMsIDEpO1xuICAgICRwb3Mtc3BlYzogICBudGgoJHBvc2l0aW9ucywgMik7XG4gIH1cblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTZXQgJGcxIGFzIHRoZSBkZWZhdWx0IGZhbGxiYWNrIGNvbG9yXG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRnMSwgMSk7XG5cbiAgLy8gSWYgJGZhbGxiYWNrIGlzIGEgY29sb3IgdXNlIHRoYXQgY29sb3IgYXMgdGhlIGZhbGxiYWNrIGNvbG9yXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgkcG9zLWRlZ3JlZSAkZnVsbCk7IC8vIFNhZmFyaSA1LjErLCBDaHJvbWVcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCgjeyRwb3Mtc3BlY30jeyRmdWxsfSlcIik7XG59XG4iLCJAbWl4aW4gcGVyc3BlY3RpdmUoJGRlcHRoOiBub25lKSB7XG4gIC8vIG5vbmUgfCA8bGVuZ3RoPlxuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZSwgJGRlcHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gcGVyc3BlY3RpdmUtb3JpZ2luKCR2YWx1ZTogNTAlIDUwJSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihwZXJzcGVjdGl2ZS1vcmlnaW4sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBwbGFjZWhvbGRlciB7XG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICY6I3skcGxhY2Vob2xkZXJ9LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUmVxdWlyZXMgU2FzcyAzLjErXG5AbWl4aW4gcmFkaWFsLWdyYWRpZW50KCRnMSwgJGcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRnMTogIG50aCgkZGF0YSwgMSk7XG4gICRnMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRnMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LCBcIiwgbnVsbCk7XG4gICRwb3M6ICAgICAgICBpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKTtcbiAgJHBvcy1zcGVjOiAgIGlmKCRwb3MsIFwiYXQgI3skcG9zfVwiLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gXCIgXCIpIGFuZCAoJHBvcyA9PSBudWxsKSwgXCIjeyRzaGFwZS1zaXplLXNwZWN9LCBcIiwgXCIjeyRzaGFwZS1zaXplLXNwZWN9IFwiKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCgjeyRwb3N9I3skc2hhcGUtc2l6ZX0jeyRmdWxsfSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudCgjeyRzaGFwZS1zaXplLXNwZWN9I3skcG9zLXNwZWN9I3skZnVsbH0pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gT3V0cHV0cyB0aGUgc3BlYyBhbmQgcHJlZml4ZWQgdmVyc2lvbnMgb2YgdGhlIGA6OnNlbGVjdGlvbmAgcHNldWRvLWVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2x9ICRjdXJyZW50LXNlbGVjdG9yIFtmYWxzZV1cbi8vLyAgIElmIHNldCB0byBgdHJ1ZWAsIGl0IHRha2VzIHRoZSBjdXJyZW50IGVsZW1lbnQgaW50byBjb25zaWRlcmF0aW9uLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNlbGVjdGlvbih0cnVlKSB7XG4vLy8gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1Mjtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQ6Oi1tb3otc2VsZWN0aW9uIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1Mjtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQ6OnNlbGVjdGlvbiB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmJiNTI7XG4vLy8gICB9XG5cbkBtaXhpbiBzZWxlY3Rpb24oJGN1cnJlbnQtc2VsZWN0b3I6IGZhbHNlKSB7XG4gIEBpZiAkY3VycmVudC1zZWxlY3RvciB7XG4gICAgJjo6LW1vei1zZWxlY3Rpb24ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgJjo6c2VsZWN0aW9uIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgOjotbW96LXNlbGVjdGlvbiB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICA6OnNlbGVjdGlvbiB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiB0ZXh0LWRlY29yYXRpb24oJHZhbHVlKSB7XG4vLyA8dGV4dC1kZWNvcmF0aW9uLWxpbmU+IHx8IDx0ZXh0LWRlY29yYXRpb24tc3R5bGU+IHx8IDx0ZXh0LWRlY29yYXRpb24tY29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbiwgJHZhbHVlLCBtb3opO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWxpbmUoJGxpbmU6IG5vbmUpIHtcbi8vIG5vbmUgfHwgdW5kZXJsaW5lIHx8IG92ZXJsaW5lIHx8IGxpbmUtdGhyb3VnaFxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tbGluZSwgJGxpbmUsIG1veik7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tc3R5bGUoJHN0eWxlOiBzb2xpZCkge1xuLy8gc29saWQgfHwgZG91YmxlIHx8IGRvdHRlZCB8fCBkYXNoZWQgfHwgd2F2eVxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tc3R5bGUsICRzdHlsZSwgbW96IHdlYmtpdCk7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tY29sb3IoJGNvbG9yOiBjdXJyZW50Q29sb3IpIHtcbi8vIGN1cnJlbnRDb2xvciB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRleHQtZGVjb3JhdGlvbi1jb2xvciwgJGNvbG9yLCBtb3opO1xufVxuIiwiQG1peGluIHRyYW5zZm9ybSgkcHJvcGVydHk6IG5vbmUpIHtcbiAgLy8gbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcbiAgLy8geC1heGlzIC0gbGVmdCB8IGNlbnRlciB8IHJpZ2h0ICB8IGxlbmd0aCB8ICVcbiAgLy8geS1heGlzIC0gdG9wICB8IGNlbnRlciB8IGJvdHRvbSB8IGxlbmd0aCB8ICVcbiAgLy8gei1heGlzIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tb3JpZ2luLCAkYXhlcywgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogZmxhdCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tc3R5bGUsICRzdHlsZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiLy8gU2hvcnRoYW5kIG1peGluLiBTdXBwb3J0cyBtdWx0aXBsZSBwYXJlbnRoZXNlcy1kZWxpbWluYXRlZCB2YWx1ZXMgZm9yIGVhY2ggdmFyaWFibGUuXG4vLyBFeGFtcGxlOiBAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMnMgZWFzZS1pbi1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbiAob3BhY2l0eSAxcyBlYXNlLWluIDJzLCB3aWR0aCAycyBlYXNlLW91dCk7XG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uLXByb3BlcnR5ICh0cmFuc2Zvcm0sIG9wYWNpdHkpO1xuXG5AbWl4aW4gdHJhbnNpdGlvbigkcHJvcGVydGllcy4uLikge1xuICAvLyBGaXggZm9yIHZlbmRvci1wcmVmaXggdHJhbnNmb3JtIHByb3BlcnR5XG4gICRuZWVkcy1wcmVmaXhlczogZmFsc2U7XG4gICR3ZWJraXQ6ICgpO1xuICAkbW96OiAoKTtcbiAgJHNwZWM6ICgpO1xuXG4gIC8vIENyZWF0ZSBsaXN0cyBmb3IgdmVuZG9yLXByZWZpeGVkIHRyYW5zZm9ybVxuICBAZWFjaCAkbGlzdCBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIG50aCgkbGlzdCwgMSkgPT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAkbmVlZHMtcHJlZml4ZXM6IHRydWU7XG4gICAgICAkbGlzdDE6IC13ZWJraXQtdHJhbnNmb3JtO1xuICAgICAgJGxpc3QyOiAtbW96LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MzogKCk7XG5cbiAgICAgIEBlYWNoICR2YXIgaW4gJGxpc3Qge1xuICAgICAgICAkbGlzdDM6IGpvaW4oJGxpc3QzLCAkdmFyKTtcblxuICAgICAgICBAaWYgJHZhciAhPSBcInRyYW5zZm9ybVwiIHtcbiAgICAgICAgICAkbGlzdDE6IGpvaW4oJGxpc3QxLCAkdmFyKTtcbiAgICAgICAgICAkbGlzdDI6IGpvaW4oJGxpc3QyLCAkdmFyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QxKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdDIpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0Myk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdCwgY29tbWEpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0LCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRuZWVkcy1wcmVmaXhlcyB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0O1xuICAgICAgIC1tb3otdHJhbnNpdGlvbjogJG1vejtcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICRzcGVjO1xuICB9IEBlbHNlIHtcbiAgICBAaWYgbGVuZ3RoKCRwcm9wZXJ0aWVzKSA+PSAxIHtcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByb3BlcnRpZXM6IGFsbCAwLjE1cyBlYXNlLW91dCAwcztcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydGllcy4uLikge1xuICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwid2Via2l0XCIpO1xuICAgICAtbW96LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIFwibW96XCIpO1xuICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsIGZhbHNlKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKCRtb3Rpb25zLi4uKSB7XG4gIC8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dCB8IGN1YmljLWJlemllcigpXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tZGVsYXksICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiB1c2VyLXNlbGVjdCgkdmFsdWU6IG5vbmUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodXNlci1zZWxlY3QsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1jb2xvcmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLWNvbG9yKCNhNjBiNTUgIzc2Y2Q5YyBudWxsICNlOGFlMWEpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItbGVmdC1jb2xvcjogI2U4YWUxYTtcbi8vLyAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNzZjZDljO1xuLy8vICAgICBib3JkZXItdG9wLWNvbG9yOiAjYTYwYjU1O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLWNvbG9yYFxuXG5AbWl4aW4gYm9yZGVyLWNvbG9yKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgY29sb3IsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1yYWRpdXNgIG9uIGJvdGggY29ybmVycyBvbiB0aGUgc2lkZSBvZiBhIGJveC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaWlcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDVweCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygzcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuLy8vICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudC10d28ge1xuLy8vICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7XG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1yYWRpdXNgXG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXN0eWxlYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXN0eWxlYFxuXG5AbWl4aW4gYm9yZGVyLXN0eWxlKCR2YWxzLi4uKSB7XG4gIEBpbmNsdWRlIGRpcmVjdGlvbmFsLXByb3BlcnR5KGJvcmRlciwgc3R5bGUsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci13aWR0aGAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgYm9yZGVyLXdpZHRoKDFlbSBudWxsIDIwcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAyMHB4O1xuLy8vICAgICBib3JkZXItdG9wLXdpZHRoOiAxZW07XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSB7bWl4aW59IGRpcmVjdGlvbmFsLXByb3BlcnR5XG4vLy9cbi8vLyBAb3V0cHV0IGBib3JkZXItd2lkdGhgXG5cbkBtaXhpbiBib3JkZXItd2lkdGgoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgJHZhbHMuLi4pO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIGJ1dHRvbnMuIFBsZWFzZSBub3RlIHRoYXQgeW91IG11c3QgdXNlIGludGVycG9sYXRpb24gb24gdGhlIHZhcmlhYmxlOiBgI3skYWxsLWJ1dHRvbnN9YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgI3skYWxsLWJ1dHRvbnN9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtZm9jdXN9LFxuLy8vICAgI3skYWxsLWJ1dHRvbnMtaG92ZXJ9IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLWJ1dHRvbnMtYWN0aXZlfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBidXR0b24sXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGJ1dHRvbjpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmZvY3VzLFxuLy8vICAgYnV0dG9uOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06aG92ZXIge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTphY3RpdmUge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUgYXNzaWduLWlucHV0c1xuLy8vXG4vLy8gQHR5cGUgTGlzdFxuLy8vXG4vLy8gQHRvZG8gUmVtb3ZlIGRvdWJsZSBhc3NpZ25lZCB2YXJpYWJsZXMgKExpbmVzIDU54oCTNjIpIGluIHY1LjAuMFxuXG4kYnV0dG9ucy1saXN0OiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwicmVzZXRcIl0nLFxuICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzdWJtaXRcIl0nO1xuXG4kYWxsLWJ1dHRvbnM6ICAgICAgICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QpO1xuJGFsbC1idXR0b25zLWFjdGl2ZTogYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBhY3RpdmUpO1xuJGFsbC1idXR0b25zLWZvY3VzOiAgYXNzaWduLWlucHV0cygkYnV0dG9ucy1saXN0LCBmb2N1cyk7XG4kYWxsLWJ1dHRvbnMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGhvdmVyKTtcblxuJGFsbC1idXR0b24taW5wdXRzOiAgICAgICAgJGFsbC1idXR0b25zO1xuJGFsbC1idXR0b24taW5wdXRzLWFjdGl2ZTogJGFsbC1idXR0b25zLWFjdGl2ZTtcbiRhbGwtYnV0dG9uLWlucHV0cy1mb2N1czogICRhbGwtYnV0dG9ucy1mb2N1cztcbiRhbGwtYnV0dG9uLWlucHV0cy1ob3ZlcjogICRhbGwtYnV0dG9ucy1ob3ZlcjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGluY2x1ZGUgYSBjbGVhcmZpeCBmb3IgY29udGFpbmluZyBmbG9hdHMuXG4vLy9cbi8vLyBAbGluayBodHRwOi8vY3NzbW9qby5jb20vbGF0ZXN0X25ld19jbGVhcmZpeF9zb19mYXIvXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudDo6YWZ0ZXIge1xuLy8vICAgICBjbGVhcjogYm90aDtcbi8vLyAgICAgY29udGVudDogXCJcIjtcbi8vLyAgICAgZGlzcGxheTogdGFibGU7XG4vLy8gICB9XG5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBUcnVuY2F0ZXMgdGV4dCBhbmQgYWRkcyBhbiBlbGxpcHNpcyB0byByZXByZXNlbnQgb3ZlcmZsb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFsxMDAlXVxuLy8vICAgTWF4LXdpZHRoIGZvciB0aGUgc3RyaW5nIHRvIHJlc3BlY3QgYmVmb3JlIGJlaW5nIHRydW5jYXRlZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGVsbGlwc2lzO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4vLy8gICAgIG1heC13aWR0aDogMTAwJTtcbi8vLyAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbi8vLyAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4vLy8gICAgIHdvcmQtd3JhcDogbm9ybWFsO1xuLy8vICAgfVxuXG5AbWl4aW4gZWxsaXBzaXMoJHdpZHRoOiAxMDAlKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlb3JnaWEgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGdlb3JnaWE6IFwiR2VvcmdpYVwiLCBcIkNhbWJyaWFcIiwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgXCJUaW1lc1wiLCBzZXJpZjtcblxuLy8vIEhlbHZldGljYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kaGVsdmV0aWNhOiBcIkhlbHZldGljYSBOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIFwiUm9ib3RvXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcblxuLy8vIEx1Y2lkYSBHcmFuZGUgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBcIlRhaG9tYVwiLCBcIlZlcmRhbmFcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuXG4vLy8gTW9ub3NwYWNlIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRtb25vc3BhY2U6IFwiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vXCIsIFwiQ29uc29sYXNcIiwgXCJDb3VyaWVyXCIsIG1vbm9zcGFjZTtcblxuLy8vIFZlcmRhbmEgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJHZlcmRhbmE6IFwiVmVyZGFuYVwiLCBcIkdlbmV2YVwiLCBzYW5zLXNlcmlmO1xuIiwiLy8vIEhpZGVzIHRoZSB0ZXh0IGluIGFuIGVsZW1lbnQsIGNvbW1vbmx5IHVzZWQgdG8gc2hvdyBhbiBpbWFnZS4gU29tZSBlbGVtZW50cyB3aWxsIG5lZWQgYmxvY2stbGV2ZWwgc3R5bGVzIGFwcGxpZWQuXG4vLy9cbi8vLyBAbGluayBodHRwOi8vemVsZG1hbi5jb20vMjAxMi8wMy8wMS9yZXBsYWNpbmctdGhlLTk5OTlweC1oYWNrLW5ldy1pbWFnZS1yZXBsYWNlbWVudFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGhpZGUtdGV4dDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbi8vLyAgICAgdGV4dC1pbmRlbnQ6IDEwMSU7XG4vLy8gICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4vLy8gICB9XG4vLy9cbi8vLyBAdG9kbyBSZW1vdmUgaGVpZ2h0IGFyZ3VtZW50IGluIHY1LjAuMFxuXG5AbWl4aW4gaGlkZS10ZXh0KCRoZWlnaHQ6IG51bGwpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1pbmRlbnQ6IDEwMSU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgQGlmICRoZWlnaHQge1xuICAgIEB3YXJuIFwiVGhlIGBoaWRlLXRleHRgIG1peGluIGhhcyBjaGFuZ2VkIGFuZCBubyBsb25nZXIgcmVxdWlyZXMgYSBoZWlnaHQuIFRoZSBoZWlnaHQgYXJndW1lbnQgd2lsbCBubyBsb25nZXIgYmUgYWNjZXB0ZWQgaW4gdjUuMC4wXCI7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYG1hcmdpbmAgb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgbWFyZ2luKG51bGwgMTBweCAzZW0gMjB2aCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbi1ib3R0b206IDNlbTtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDIwdmg7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMTBweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYG1hcmdpbmBcblxuQG1peGluIG1hcmdpbigkdmFscy4uLikge1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShtYXJnaW4sIGZhbHNlLCAkdmFscy4uLik7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBwYWRkaW5nYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwYWRkaW5nKDEydmggbnVsbCAxMHB4IDUlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4vLy8gICAgIHBhZGRpbmctbGVmdDogNSU7XG4vLy8gICAgIHBhZGRpbmctdG9wOiAxMnZoO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgcGFkZGluZ2BcblxuQG1peGluIHBhZGRpbmcoJHZhbHMuLi4pIHtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkocGFkZGluZywgZmFsc2UsICR2YWxzLi4uKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciBzZXR0aW5nIGFuIGVsZW1lbnTigJlzIHBvc2l0aW9uLiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge1Bvc2l0aW9ufSAkcG9zaXRpb24gW3JlbGF0aXZlXVxuLy8vICAgQSBDU1MgcG9zaXRpb24gdmFsdWVcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJGNvb3JkaW5hdGVzIFtudWxsIG51bGwgbnVsbCBudWxsXVxuLy8vICAgTGlzdCBvZiB2YWx1ZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSA0LXZhbHVlIHN5bnRheCBmb3IgdGhlIGVkZ2VzIG9mIGEgYm94XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDAgbnVsbCBudWxsIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBsZWZ0OiAxMGVtO1xuLy8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLy8gICAgIHRvcDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSB1bnBhY2tcblxuQG1peGluIHBvc2l0aW9uKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogbnVsbCBudWxsIG51bGwgbnVsbCkge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09IGxpc3Qge1xuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xuICAgICRwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAkY29vcmRpbmF0ZXM6IHVucGFjaygkY29vcmRpbmF0ZXMpO1xuXG4gICRvZmZzZXRzOiAoXG4gICAgdG9wOiAgICBudGgoJGNvb3JkaW5hdGVzLCAxKSxcbiAgICByaWdodDogIG50aCgkY29vcmRpbmF0ZXMsIDIpLFxuICAgIGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyksXG4gICAgbGVmdDogICBudGgoJGNvb3JkaW5hdGVzLCA0KVxuICApO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGVhY2ggJG9mZnNldCwgJHZhbHVlIGluICRvZmZzZXRzIHtcbiAgICBAaWYgaXMtbGVuZ3RoKCR2YWx1ZSkge1xuICAgICAgI3skb2Zmc2V0fTogJHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQSBtaXhpbiBmb3IgZ2VuZXJhdGluZyB2ZW5kb3IgcHJlZml4ZXMgb24gbm9uLXN0YW5kYXJkaXplZCBwcm9wZXJ0aWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eVxuLy8vICAgUHJvcGVydHkgdG8gcHJlZml4XG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZVxuLy8vICAgVmFsdWUgdG8gdXNlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRwcmVmaXhlc1xuLy8vICAgUHJlZml4ZXMgdG8gZGVmaW5lXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgMTBweCwgd2Via2l0IG1zIHNwZWMpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4vLy8gICAgIC1tb3otYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itd2Via2l0XG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1tb3ppbGxhXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1taWNyb3NvZnRcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW9wZXJhXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci1zcGVjXG5cbkBtaXhpbiBwcmVmaXhlcigkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG1veiB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbW96aWxsYSB7XG4gICAgICAgIC1tb3otI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG1zIHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1taWNyb3NvZnQge1xuICAgICAgICAtbXMtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcbiAgICAgICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IHNwZWMge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXNwZWMge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlICB7XG4gICAgICBAd2FybiBcIlVucmVjb2duaXplZCBwcmVmaXg6ICN7JHByZWZpeH1cIjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKSB7XG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3ItbW96aWxsYTogICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6IGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itc3BlYzogICAgICBmYWxzZSAhZ2xvYmFsO1xufVxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgIHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9XG5cbiAgQGluY2x1ZGUgaGlkcGkge1xuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNpemVcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgdmFsdWUgaW4gYCRzaXplYCBpdCBpcyB1c2VkIGZvciBib3RoIHdpZHRoIGFuZCBoZWlnaHQuIEFsbCB1bml0cyBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZShhdXRvIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMmVtO1xuLy8vICAgICBoZWlnaHQ6IDJlbTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IGF1dG87XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxuXG5AbWl4aW4gc2l6ZSgkdmFsdWUpIHtcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcbiAgJGhlaWdodDogJHdpZHRoO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xuICAgICRoZWlnaHQ6IG50aCgkdmFsdWUsIDIpO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJGhlaWdodCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJHdpZHRoKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skd2lkdGh9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJHdpZHRoYCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIHRleHQtYmFzZWQgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC10ZXh0LWlucHV0c31gLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWZvY3VzfSxcbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn0ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl0sXG4vLy8gICB0ZXh0YXJlYSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpmb2N1cyxcbi8vLyAgIHRleHRhcmVhOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyLFxuLy8vICAgdGV4dGFyZWE6aG92ZXIge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmFjdGl2ZSxcbi8vLyAgIHRleHRhcmVhOmFjdGl2ZSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZW1haWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibW9udGhcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInNlYXJjaFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0aW1lXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXQ6bm90KFt0eXBlXSknLFxuICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYSc7XG5cbiRhbGwtdGV4dC1pbnB1dHM6ICAgICAgICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0KTtcbiRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBhY3RpdmUpO1xuJGFsbC10ZXh0LWlucHV0cy1mb2N1czogIGFzc2lnbi1pbnB1dHMoJHRleHQtaW5wdXRzLWxpc3QsIGZvY3VzKTtcbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBob3Zlcik7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vL1xuLy8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW9lZCBoZXJlOiBodHRwOi8vanF1ZXJ5dWkuY29tL3Jlc291cmNlcy9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcbi8vL1xuLy8vIEB0eXBlIGN1YmljLWJlemllclxuXG4kZWFzZS1pbi1xdWFkOiAgICAgIGN1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApO1xuJGVhc2UtaW4tY3ViaWM6ICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA1NSwgMC42NzUsIDAuMTkwKTtcbiRlYXNlLWluLXF1YXJ0OiAgICAgY3ViaWMtYmV6aWVyKDAuODk1LCAgMC4wMzAsIDAuNjg1LCAwLjIyMCk7XG4kZWFzZS1pbi1xdWludDogICAgIGN1YmljLWJlemllcigwLjc1NSwgIDAuMDUwLCAwLjg1NSwgMC4wNjApO1xuJGVhc2UtaW4tc2luZTogICAgICBjdWJpYy1iZXppZXIoMC40NzAsICAwLjAwMCwgMC43NDUsIDAuNzE1KTtcbiRlYXNlLWluLWV4cG86ICAgICAgY3ViaWMtYmV6aWVyKDAuOTUwLCAgMC4wNTAsIDAuNzk1LCAwLjAzNSk7XG4kZWFzZS1pbi1jaXJjOiAgICAgIGN1YmljLWJlemllcigwLjYwMCwgIDAuMDQwLCAwLjk4MCwgMC4zMzUpO1xuJGVhc2UtaW4tYmFjazogICAgICBjdWJpYy1iZXppZXIoMC42MDAsIC0wLjI4MCwgMC43MzUsIDAuMDQ1KTtcblxuJGVhc2Utb3V0LXF1YWQ6ICAgICBjdWJpYy1iZXppZXIoMC4yNTAsICAwLjQ2MCwgMC40NTAsIDAuOTQwKTtcbiRlYXNlLW91dC1jdWJpYzogICAgY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVhcnQ6ICAgIGN1YmljLWJlemllcigwLjE2NSwgIDAuODQwLCAwLjQ0MCwgMS4wMDApO1xuJGVhc2Utb3V0LXF1aW50OiAgICBjdWJpYy1iZXppZXIoMC4yMzAsICAxLjAwMCwgMC4zMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1zaW5lOiAgICAgY3ViaWMtYmV6aWVyKDAuMzkwLCAgMC41NzUsIDAuNTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtZXhwbzogICAgIGN1YmljLWJlemllcigwLjE5MCwgIDEuMDAwLCAwLjIyMCwgMS4wMDApO1xuJGVhc2Utb3V0LWNpcmM6ICAgICBjdWJpYy1iZXppZXIoMC4wNzUsICAwLjgyMCwgMC4xNjUsIDEuMDAwKTtcbiRlYXNlLW91dC1iYWNrOiAgICAgY3ViaWMtYmV6aWVyKDAuMTc1LCAgMC44ODUsIDAuMzIwLCAxLjI3NSk7XG5cbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pIHtcbiAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAkaGVpZ2h0OiBudGgoJHNpemUsIGxlbmd0aCgkc2l6ZSkpO1xuICAkZm9yZWdyb3VuZC1jb2xvcjogbnRoKCRjb2xvciwgMSk7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiBpZihsZW5ndGgoJGNvbG9yKSA9PSAyLCBudGgoJGNvbG9yLCAyKSwgdHJhbnNwYXJlbnQpO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAkd2lkdGg6ICR3aWR0aCAvIDI7XG4gICAgJGhlaWdodDogaWYobGVuZ3RoKCRzaXplKSA+IDEsICRoZWlnaHQsICRoZWlnaHQvMik7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItbGVmdDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItbGVmdDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1ib3R0b206ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci10b3A6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHVwLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGRvd24tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGRvd24tbGVmdCkge1xuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXVwKSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAkd2lkdGg7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtZG93bikge1xuICAgIGJvcmRlci1jb2xvcjogJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LXJpZ2h0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkYmFja2dyb3VuZC1jb2xvciAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogJHdpZHRoICRoZWlnaHQ7XG4gIH0gQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gaW5zZXQtbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhbiBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIGB3b3JkLXdyYXBgIHByb3BlcnR5LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR3cmFwIFticmVhay13b3JkXVxuLy8vICAgVmFsdWUgZm9yIHRoZSBgd29yZC1icmVha2AgcHJvcGVydHkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgQGluY2x1ZGUgd29yZC13cmFwKGJyZWFrLXdvcmQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLndyYXBwZXIge1xuLy8vICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuLy8vICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLy8gICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbi8vLyAgIH1cblxuQG1peGluIHdvcmQtd3JhcCgkd3JhcDogYnJlYWstd29yZCkge1xuICBvdmVyZmxvdy13cmFwOiAkd3JhcDtcbiAgd29yZC13cmFwOiAkd3JhcDtcblxuICBAaWYgJHdyYXAgPT0gYnJlYWstd29yZCB7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICB9IEBlbHNlIHtcbiAgICB3b3JkLWJyZWFrOiAkd3JhcDtcbiAgfVxufVxuIiwiLy8gVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IE1BSk9SIHZlcnNpb24gcmVsZWFzZVxuXG5AbWl4aW4gaW5saW5lLWJsb2NrIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEB3YXJuIFwiVGhlIGlubGluZS1ibG9jayBtaXhpbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBtaXhpbiBidXR0b24gKCRzdHlsZTogc2ltcGxlLCAkYmFzZS1jb2xvcjogIzQyOTRmMCwgJHRleHQtc2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBzdHJpbmcgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gbnVtYmVyIHtcbiAgICAkcGFkZGluZzogJHRleHQtc2l6ZTtcbiAgICAkdGV4dC1zaXplOiAkYmFzZS1jb2xvcjtcbiAgICAkYmFzZS1jb2xvcjogIzQyOTRmMDtcblxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcbiAgICAkc3R5bGU6IHNpbXBsZTtcbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xuICAgICRiYXNlLWNvbG9yOiAkc3R5bGU7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gaW5oZXJpdCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHN0eWxlKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkYmFzZS1jb2xvcjtcbiAgICAkdGV4dC1zaXplOiAkc3R5bGU7XG4gICAgJGJhc2UtY29sb3I6ICM0Mjk0ZjA7XG4gICAgJHN0eWxlOiBzaW1wbGU7XG5cbiAgICBAaWYgJHBhZGRpbmcgPT0gIzQyOTRmMCB7XG4gICAgICAkcGFkZGluZzogN3B4IDE4cHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnV0dG9uc3R5bGUoJHN0eWxlLCAkYmFzZS1jb2xvciwgJHRleHQtc2l6ZSwgJHBhZGRpbmcpO1xuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICBAd2FybiBcIlRoZSBidXR0b24gbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZVwiO1xufVxuXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cbkBtaXhpbiBidXR0b25zdHlsZSgkdHlwZSwgJGItY29sb3IsICR0LXNpemUsICRwYWQpIHtcbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHNoaW55IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gcGlsbCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICAvLyBDb2xvcmVkIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gcGlsbCB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gZmxhdCB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG59XG5cbi8vIFNpbXBsZSBCdXR0b25cbkBtaXhpbiBzaW1wbGUoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTQlLCAkbGlnaHRuZXNzOiAtNSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA4JSwgJGxpZ2h0bmVzczogLTE0JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIFNoaW55IEJ1dHRvblxuQG1peGluIHNoaW55KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEyNiwgJGdyZWVuOiAtMTI3LCAkYmx1ZTogLTEyMik7XG4gICRmb3VydGgtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC03OSwgICRncmVlbjogLTcwLCAgJGJsdWU6IC00Nik7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XG4gICRzZWNvbmQtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC01NiwgICRncmVlbjogLTUwLCAgJGJsdWU6IC0zMyk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xNDAsICRncmVlbjogLTE0MSwgJGJsdWU6IC0xMTQpO1xuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGZvdXJ0aC1zdG9wOiAgIGdyYXlzY2FsZSgkZm91cnRoLXN0b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgICAkdGhpcmQtc3RvcDogICAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XG4gICAgJHNlY29uZC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC02NiwgJGdyZWVuOiAtNjIsICRibHVlOiAtNTEpO1xuICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtOTMsICRncmVlbjogLTg1LCAkYmx1ZTogLTY2KTtcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcbiAgICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRzZWNvbmQtc3RvcC1ob3Zlcik7XG4gICAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkdGhpcmQtc3RvcC1ob3Zlcik7XG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlyZC1zdG9wLWhvdmVyICA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBQaWxsIEJ1dHRvblxuQG1peGluIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC0xMSUsICRsaWdodG5lc3M6IC0yNiUpO1xuICAkYm9yZGVyLXNpZGVzOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yMSUsICRsaWdodG5lc3M6IC0yMSUpO1xuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xJSwgICRsaWdodG5lc3M6ICA3JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDE0JSwgJGxpZ2h0bmVzczogLTEwJSk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcbiAgICAkYm9yZGVyLXRvcDogICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNiwgICRzYXR1cmF0aW9uOiAtMi41JSwgJGxpZ2h0bmVzczogLTMwJSk7XG4gICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDExLCAkc2F0dXJhdGlvbjogIDYlLCAgICRsaWdodG5lc3M6IC0zMSUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA1LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGdyYXlzY2FsZSgkYWN0aXZlLWNvbG9yKTtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiAkYWN0aXZlLWNvbG9yO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbS1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCAzcHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBGbGF0IEJ1dHRvblxuQG1peGluIGZsYXQoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCl7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi8vIEZsZXhpYmxlIGdyaWRcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xuXG4gIEB3YXJuIFwiVGhlIGZsZXgtZ3JpZCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbi8vIEZsZXhpYmxlIGd1dHRlclxuQGZ1bmN0aW9uIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zLCAkZ3V0dGVyOiAkZmctZ3V0dGVyKSB7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJGd1dHRlciAvICRjb250YWluZXItd2lkdGgpO1xuXG4gIEB3YXJuIFwiVGhlIGZsZXgtZ3V0dGVyIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2VcIjtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG5cbiAgQHdhcm4gXCJUaGUgZ3JpZC13aWR0aCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XG4gIEByZXR1cm4gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWUsICRyYXRpbzogJGdvbGRlbik7XG5cbiAgQHdhcm4gXCJUaGUgZ29sZGVuLXJhdGlvIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFBsZWFzZSB1c2UgdGhlIG1vZHVsYXItc2NhbGUgZnVuY3Rpb24sIGluc3RlYWQuXCI7XG59XG5cbkBtaXhpbiBib3gtc2l6aW5nKCRib3gpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcblxuICBAd2FybiBcIlRoZSBib3gtc2l6aW5nIG1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIFRoaXMgcHJvcGVydHkgY2FuIG5vdyBiZSB1c2VkIHVuLXByZWZpeGVkLlwiO1xufVxuIiwiLy8gTmVhdCAxLjguMFxuLy8gaHR0cDovL25lYXQuYm91cmJvbi5pb1xuLy8gQ29weXJpZ2h0IDIwMTItMjAxNSB0aG91Z2h0Ym90LCBpbmMuXG4vLyBNSVQgTGljZW5zZVxuXG4vLyBIZWxwZXJzXG5AaW1wb3J0IFwibmVhdC1oZWxwZXJzXCI7XG5cbi8vIEdyaWRcbkBpbXBvcnQgXCJncmlkL3ByaXZhdGVcIjtcbkBpbXBvcnQgXCJncmlkL2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJncmlkL29tZWdhXCI7XG5AaW1wb3J0IFwiZ3JpZC9vdXRlci1jb250YWluZXJcIjtcbkBpbXBvcnQgXCJncmlkL3NwYW4tY29sdW1uc1wiO1xuQGltcG9ydCBcImdyaWQvcm93XCI7XG5AaW1wb3J0IFwiZ3JpZC9zaGlmdFwiO1xuQGltcG9ydCBcImdyaWQvcGFkXCI7XG5AaW1wb3J0IFwiZ3JpZC9maWxsLXBhcmVudFwiO1xuQGltcG9ydCBcImdyaWQvbWVkaWFcIjtcbkBpbXBvcnQgXCJncmlkL3RvLWRlcHJlY2F0ZVwiO1xuQGltcG9ydCBcImdyaWQvdmlzdWFsLWdyaWRcIjtcbkBpbXBvcnQgXCJncmlkL2Rpc3BsYXktY29udGV4dFwiO1xuQGltcG9ydCBcImdyaWQvZGlyZWN0aW9uLWNvbnRleHRcIjtcbiIsIi8vIE1peGluc1xuQGltcG9ydCBcIm1peGlucy9jbGVhcmZpeFwiO1xuXG4vLyBGdW5jdGlvbnNcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9uZXctYnJlYWtwb2ludFwiO1xuXG4vLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL2dyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy92aXN1YWwtZ3JpZFwiO1xuQGltcG9ydCBcInNldHRpbmdzL2Rpc2FibGUtd2FybmluZ3NcIjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGluY2x1ZGUgYSBjbGVhcmZpeCBmb3IgY29udGFpbmluZyBmbG9hdHMuXG4vLy9cbi8vLyBAbGluayBodHRwOi8vZ29vLmdsL3lQNWhpWlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzc1xuLy8vICAgLmVsZW1lbnQ6OmFmdGVyIHtcbi8vLyAgICAgY2xlYXI6IGJvdGg7XG4vLy8gICAgIGNvbnRlbnQ6IFwiXCI7XG4vLy8gICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiLy8gTm90IGZ1bmN0aW9uIGZvciBMaWJzYXNzIGNvbXBhdGliaWxpdHlcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzL2xpYnNhc3MvaXNzdWVzLzM2OFxuQGZ1bmN0aW9uIGlzLW5vdCgkdmFsdWUpIHtcbiAgQHJldHVybiBpZigkdmFsdWUsIGZhbHNlLCB0cnVlKTtcbn1cblxuLy8gQ2hlY2tzIGlmIGEgbnVtYmVyIGlzIGV2ZW5cbkBmdW5jdGlvbiBpcy1ldmVuKCRpbnQpIHtcbiAgQHJldHVybiAkaW50ICUgMiA9PSAwO1xufVxuXG4vLyBDaGVja3MgaWYgYW4gZWxlbWVudCBiZWxvbmdzIHRvIGEgbGlzdCBvciBub3RcbkBmdW5jdGlvbiBiZWxvbmdzLXRvKCR0ZXN0ZWQtaXRlbSwgJGxpc3QpIHtcbiAgQHJldHVybiBpcy1ub3Qobm90LWJlbG9uZ3MtdG8oJHRlc3RlZC1pdGVtLCAkbGlzdCkpO1xufVxuXG5AZnVuY3Rpb24gbm90LWJlbG9uZ3MtdG8oJHRlc3RlZC1pdGVtLCAkbGlzdCkge1xuICBAcmV0dXJuIGlzLW5vdChpbmRleCgkbGlzdCwgJHRlc3RlZC1pdGVtKSk7XG59XG5cbi8vIENvbnRhaW5zIGRpc3BsYXkgdmFsdWVcbkBmdW5jdGlvbiBjb250YWlucy1kaXNwbGF5LXZhbHVlKCRxdWVyeSkge1xuICBAcmV0dXJuIGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSlcbiAgICAgICBvciBiZWxvbmdzLXRvKGJsb2NrLCAkcXVlcnkpXG4gICAgICAgb3IgYmVsb25ncy10byhpbmxpbmUtYmxvY2ssICRxdWVyeSlcbiAgICAgICBvciBiZWxvbmdzLXRvKGlubGluZSwgJHF1ZXJ5KTtcbn1cblxuLy8gUGFyc2VzIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzcGFuLWNvbHVtbnMoKVxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zcGFuKCRzcGFuOiAkc3Bhbikge1xuICBAaWYgbGVuZ3RoKCRzcGFuKSA9PSAzIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzcGFuKSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMik7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAcmV0dXJuICRncmlkLWNvbHVtbnM7XG59XG5cbkBmdW5jdGlvbiBjb250YWluZXItc2hpZnQoJHNoaWZ0OiAkc2hpZnQpIHtcbiAgJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0ICFnbG9iYWw7XG5cbiAgQGlmIGxlbmd0aCgkc2hpZnQpID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzaGlmdCwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRzaGlmdCkgPT0gMiB7XG4gICAgJGNvbnRhaW5lci1jb2x1bW5zOiBudGgoJHNoaWZ0LCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xufVxuXG4vLyBHZW5lcmF0ZXMgYSBzdHJpcGVkIGJhY2tncm91bmRcbkBmdW5jdGlvbiBncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zLCAkY29sb3I6ICR2aXN1YWwtZ3JpZC1jb2xvcikge1xuICAkdHJhbnNwYXJlbnQ6IHRyYW5zcGFyZW50O1xuXG4gICRjb2x1bW4td2lkdGg6IGZsZXgtZ3JpZCgxLCAkZ3JpZC1jb2x1bW5zKTtcbiAgJGd1dHRlci13aWR0aDogZmxleC1ndXR0ZXIoJGdyaWQtY29sdW1ucyk7XG4gICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLXdpZHRoO1xuXG4gICR2YWx1ZXM6ICgkdHJhbnNwYXJlbnQgMCwgJGNvbG9yIDApO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRvICRncmlkLWNvbHVtbnMqMiB7XG4gICAgQGlmIGlzLWV2ZW4oJGkpIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRjb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyAkZ3V0dGVyLXdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gTGF5b3V0IGRpcmVjdGlvblxuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oJGxheW91dCwgJGRlZmF1bHQpIHtcbiAgJGRpcmVjdGlvbjogbnVsbDtcblxuICBAaWYgdG8tdXBwZXItY2FzZSgkbGF5b3V0KSA9PSBcIkxUUlwiIG9yIHRvLXVwcGVyLWNhc2UoJGxheW91dCkgPT0gXCJSVExcIiB7XG4gICAgJGRpcmVjdGlvbjogZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRsYXlvdXQpO1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBkaXJlY3Rpb24tZnJvbS1sYXlvdXQoJGRlZmF1bHQpO1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRsYXlvdXQpIHtcbiAgJGRpcmVjdGlvbjogbnVsbDtcblxuICBAaWYgdG8tdXBwZXItY2FzZSgkbGF5b3V0KSA9PSBcIkxUUlwiIHtcbiAgICAkZGlyZWN0aW9uOiByaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogbGVmdDtcbiAgfVxuXG4gIEByZXR1cm4gJGRpcmVjdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBsZWZ0O1xuXG4gIEBpZiAkZGlyZWN0aW9uID09IFwibGVmdFwiIHtcbiAgICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiByaWdodDtcbiAgfVxuXG4gIEByZXR1cm4gJG9wcG9zaXRlLWRpcmVjdGlvbjtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFJldHVybnMgYSBtZWRpYSBjb250ZXh0IChtZWRpYSBxdWVyeSAvIGdyaWQgY29udGV4dCkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGEgdmFyaWFibGUgYW5kIHBhc3NlZCB0byBgbWVkaWEoKWAgYXMgYSBzaW5nbGUta2V5d29yZCBhcmd1bWVudC4gTWVkaWEgY29udGV4dHMgZGVmaW5lZCB1c2luZyBgbmV3LWJyZWFrcG9pbnRgIGFyZSB1c2VkIGJ5IHRoZSB2aXN1YWwgZ3JpZCwgYXMgbG9uZyBhcyB0aGV5IGFyZSBkZWZpbmVkIGJlZm9yZSBpbXBvcnRpbmcgTmVhdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHF1ZXJ5XG4vLy8gICBBIGxpc3Qgb2YgbWVkaWEgcXVlcnkgZmVhdHVyZXMgYW5kIHZhbHVlcy4gRWFjaCBgJGZlYXR1cmVgIHNob3VsZCBoYXZlIGEgY29ycmVzcG9uZGluZyBgJHZhbHVlYC5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSBgJHZhbHVlYCBpbiBgJHF1ZXJ5YCwgYCRkZWZhdWx0LWZlYXR1cmVgIGlzIGdvaW5nIHRvIGJlIHVzZWQuXG4vLy9cbi8vLyAgIFRoZSBudW1iZXIgb2YgdG90YWwgY29sdW1ucyBpbiB0aGUgZ3JpZCBjYW4gYmUgc2V0IGJ5IHBhc3NpbmcgYCRjb2x1bW5zYCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IChvdmVycmlkZXMgYCR0b3RhbC1jb2x1bW5zYCkuIEZvciBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciBgJGZlYXR1cmVgLCBjbGljayBbaGVyZV0oaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI21lZGlhMSkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAodW5pdGxlc3MpfSAkdG90YWwtY29sdW1ucyBbJGdyaWQtY29sdW1uc11cbi8vLyAgIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGluIHRoZSBuZXcgZ3JpZCBjb250ZXh0LiBDYW4gYmUgc2V0IGFzIGEgc2hvcnRoYW5kIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRtb2JpbGU6IG5ldy1icmVha3BvaW50KG1heC13aWR0aCA0ODBweCA0KTtcbi8vL1xuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtZWRpYSgkbW9iaWxlKSB7XG4vLy8gICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDQpO1xuLy8vICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkge1xuLy8vICAgICAuZWxlbWVudCB7XG4vLy8gICAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICAgbWFyZ2luLXJpZ2h0OiA3LjQyMjk3JTtcbi8vLyAgICAgICB3aWR0aDogMTAwJTtcbi8vLyAgICAgfVxuLy8vICAgICAuZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICAgIH1cbi8vLyAgIH1cblxuQGZ1bmN0aW9uIG5ldy1icmVha3BvaW50KCRxdWVyeTogJGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgJHF1ZXJ5OiAkZGVmYXVsdC1mZWF0dXJlIG50aCgkcXVlcnksIDEpICR0b3RhbC1jb2x1bW5zO1xuICB9IEBlbHNlIGlmIGlzLWV2ZW4obGVuZ3RoKCRxdWVyeSkpIHtcbiAgICAkcXVlcnk6IGFwcGVuZCgkcXVlcnksICR0b3RhbC1jb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiBpcy1ub3QoYmVsb25ncy10bygkcXVlcnksICR2aXN1YWwtZ3JpZC1icmVha3BvaW50cykpIHtcbiAgICAkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6IGFwcGVuZCgkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHMsICRxdWVyeSwgY29tbWEpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNldHMgdGhlIHJlbGF0aXZlIHdpZHRoIG9mIGEgc2luZ2xlIGdyaWQgY29sdW1uLiBUaGUgdW5pdCB1c2VkIHNob3VsZCBiZSB0aGUgc2FtZSBvbmUgdXNlZCB0byBkZWZpbmUgYCRndXR0ZXJgLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuXG4kY29sdW1uOiA0LjIzNThlbSAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIHJlbGF0aXZlIHdpZHRoIG9mIGEgc2luZ2xlIGdyaWQgZ3V0dGVyLiBUaGUgdW5pdCB1c2VkIHNob3VsZCBiZSB0aGUgc2FtZSBvbmUgdXNlZCB0byBkZWZpbmUgYCRjb2x1bW5gLiBTZXQgd2l0aCB0aGUgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKFVuaXQpXG5cbiRndXR0ZXI6IDEuNjE4ZW0gIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC4gSXRzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGluc2lkZSBhIG1lZGlhIHF1ZXJ5IHVzaW5nIHRoZSBgbWVkaWEoKWAgbWl4aW4uIFNldCB3aXRoIHRoZSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdGxlc3MpXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgbWF4LXdpZHRoIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IHRoYXQgaW5jbHVkZXMgYG91dGVyLWNvbnRhaW5lcigpYC4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuLy8vXG4kbWF4LXdpZHRoOiAxMjAwcHggIWRlZmF1bHQ7XG5cbi8vLyBXaGVuIHNldCB0byB0cnVlLCBpdCBzZXRzIHRoZSBib3gtc2l6aW5nIHByb3BlcnR5IG9mIGFsbCBlbGVtZW50cyB0byBgYm9yZGVyLWJveGAuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBodG1sIHtcbi8vLyAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuLy8vXG4vLy8gICAqLCAqOjphZnRlciwgKjo6YmVmb3JlIHtcbi8vLyAgICAgYm94LXNpemluZzogaW5oZXJpdDtcbi8vLyAgIH1cblxuJGJvcmRlci1ib3gtc2l6aW5nOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgZGVmYXVsdCBbbWVkaWEgZmVhdHVyZV0oaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI21lZGlhKSB0aGF0IGBtZWRpYSgpYCBhbmQgYG5ldy1icmVha3BvaW50KClgIHJldmVydCB0byB3aGVuIG9ubHkgYSBicmVha3BvaW50IHZhbHVlIGlzIHBhc3NlZC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuXG4kZGVmYXVsdC1mZWF0dXJlOiBtaW4td2lkdGg7IC8vIERlZmF1bHQgQG1lZGlhIGZlYXR1cmUgZm9yIHRoZSBicmVha3BvaW50KCkgbWl4aW5cblxuLy8vU2V0cyB0aGUgZGVmYXVsdCBsYXlvdXQgZGlyZWN0aW9uIG9mIHRoZSBncmlkLiBDYW4gYmUgYExUUmAgb3IgYFJUTGAuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vL0B0eXBlIFN0cmluZ1xuXG4kZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uOiBMVFIgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXNwbGF5cyB0aGUgdmlzdWFsIGdyaWQgd2hlbiBzZXQgdG8gdHJ1ZS4gVGhlIG92ZXJsYWlkIGdyaWQgbWF5IGJlIGZldyBwaXhlbHMgb2ZmIGRlcGVuZGluZyBvbiB0aGUgYnJvd3NlcidzIHJlbmRlcmluZyBlbmdpbmUgYW5kIHBpeGVsIHJvdW5kaW5nIGFsZ29yaXRobS4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kdmlzdWFsLWdyaWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIGdyaWQgY29sb3IuIFNldCB3aXRoIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgQ29sb3JcblxuJHZpc3VhbC1ncmlkLWNvbG9yOiAjZWVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgYHotaW5kZXhgIHByb3BlcnR5IG9mIHRoZSB2aXN1YWwgZ3JpZC4gQ2FuIGJlIGBiYWNrYCAoYmVoaW5kIGNvbnRlbnQpIG9yIGBmcm9udGAgKGluIGZyb250IG9mIGNvbnRlbnQpLiBTZXQgd2l0aCBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuXG4kdmlzdWFsLWdyaWQtaW5kZXg6IGJhY2sgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBvcGFjaXR5IHByb3BlcnR5IG9mIHRoZSB2aXN1YWwgZ3JpZC4gU2V0IHdpdGggYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBOdW1iZXIgKHVuaXRsZXNzKVxuXG4kdmlzdWFsLWdyaWQtb3BhY2l0eTogMC40ICFkZWZhdWx0O1xuXG4kdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRGlzYWJsZSBhbGwgZGVwcmVjYXRpb24gd2FybmluZ3MuIERlZmF1bHRzIHRvIGBmYWxzZWAuIFNldCB3aXRoIGEgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiRkaXNhYmxlLXdhcm5pbmdzOiBmYWxzZSAhZGVmYXVsdDtcblxuQG1peGluIC1uZWF0LXdhcm4oJG1lc3NhZ2UpIHtcbiAgQGlmICRkaXNhYmxlLXdhcm5pbmdzID09IGZhbHNlIHtcbiAgICBAd2FybiBcIiN7JG1lc3NhZ2V9XCI7XG4gIH1cbn1cbiIsIiRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZGVmYXVsdDtcbiRmZy1jb2x1bW46ICRjb2x1bW47XG4kZmctZ3V0dGVyOiAkZ3V0dGVyO1xuJGZnLW1heC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiBmYWxzZSAhZGVmYXVsdDtcbiRsYXlvdXQtZGlyZWN0aW9uOiBMVFIgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gICR3aWR0aDogJGNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCR3aWR0aCAvICRjb250YWluZXItd2lkdGgpO1xufVxuXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBncmlkLXdpZHRoKCRuKSB7XG4gIEByZXR1cm4gJG4gKiAkZ3ctY29sdW1uICsgKCRuIC0gMSkgKiAkZ3ctZ3V0dGVyO1xufVxuXG5AZnVuY3Rpb24gZ2V0LXBhcmVudC1jb2x1bW5zKCRjb2x1bW5zKSB7XG4gIEBpZiAkY29sdW1ucyAhPSAkZ3JpZC1jb2x1bW5zIHtcbiAgICAkcGFyZW50LWNvbHVtbnM6ICRjb2x1bW5zICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcGFyZW50LWNvbHVtbnM7XG59XG5cbkBmdW5jdGlvbiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItaXMtZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpIHtcbiAgQHJldHVybiAkY29udGFpbmVyLWlzLWRpc3BsYXktdGFibGUgPT0gdHJ1ZSBvciAkZGlzcGxheSA9PSB0YWJsZTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuQGlmICRib3JkZXItYm94LXNpemluZyA9PSB0cnVlIHtcbiAgaHRtbCB7IC8vIGh0dHA6Ly9iaXQubHkvMXFrMnRWUlxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICAqIHtcbiAgICAmLFxuICAgICY6OmFmdGVyLFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUmVtb3ZlcyB0aGUgZWxlbWVudCdzIGd1dHRlciBtYXJnaW4sIHJlZ2FyZGxlc3Mgb2YgaXRzIHBvc2l0aW9uIGluIHRoZSBncmlkIGhpZXJhcmNoeSBvciBkaXNwbGF5IHByb3BlcnR5LiBJdCBjYW4gdGFyZ2V0IGEgc3BlY2lmaWMgZWxlbWVudCwgb3IgZXZlcnkgYG50aC1jaGlsZGAgb2NjdXJyZW5jZS4gV29ya3Mgb25seSB3aXRoIGBibG9ja2AgbGF5b3V0cy5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHF1ZXJ5IFtibG9ja11cbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzLiBTdXBwb3J0ZWQgYXJndW1lbnRzIGFyZSBgbnRoLWNoaWxkYCBzZWxlY3RvcnMgKHRhcmdldHMgYSBzcGVjaWZpYyBwc2V1ZG8gZWxlbWVudCkgYW5kIGBhdXRvYCAodGFyZ2V0cyBgbGFzdC1jaGlsZGApLlxuLy8vXG4vLy8gICBXaGVuIHBhc3NlZCBhbiBgbnRoLWNoaWxkYCBhcmd1bWVudCBvZiB0eXBlIGAqbmAgd2l0aCBgYmxvY2tgIGRpc3BsYXksIHRoZSBvbWVnYSBtaXhpbiBhdXRvbWF0aWNhbGx5IGFkZHMgYSBjbGVhciB0byB0aGUgYCpuKzFgIHRoIGVsZW1lbnQuIE5vdGUgdGhhdCBjb21wb3NpdGUgYXJndW1lbnRzIHN1Y2ggYXMgYDJuKzFgIGRvIG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZS5cbi8vL1xuLy8vICAgKipEZXByZWNhdGlvbiB3YXJuaW5nKio6IFRoZSBvbWVnYSBtaXhpbiB3aWxsIG5vIGxvbmdlciB0YWtlIGEgYCRkaXJlY3Rpb25gIGFyZ3VtZW50LiBUbyBjaGFuZ2UgdGhlIGxheW91dCBkaXJlY3Rpb24sIHVzZSBgcm93KCRkaXJlY3Rpb24pYCBvciBzZXQgYCRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb25gIGluc3RlYWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgb21lZ2E7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5udGgtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG9tZWdhKDRuKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAubnRoLWVsZW1lbnQ6bnRoLWNoaWxkKDRuKSB7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLm50aC1lbGVtZW50Om50aC1jaGlsZCg0bisxKSB7XG4vLy8gICAgIGNsZWFyOiBsZWZ0O1xuLy8vICAgfVxuXG5AbWl4aW4gb21lZ2EoJHF1ZXJ5OiBibG9jaywgJGRpcmVjdGlvbjogZGVmYXVsdCkge1xuICAkdGFibGU6IGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSk7XG4gICRhdXRvOiBiZWxvbmdzLXRvKGF1dG8sICRxdWVyeSk7XG5cbiAgQGlmICRkaXJlY3Rpb24gIT0gZGVmYXVsdCB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBvbWVnYSBtaXhpbiB3aWxsIG5vIGxvbmdlciB0YWtlIGEgJGRpcmVjdGlvbiBhcmd1bWVudC4gVG8gY2hhbmdlIHRoZSBsYXlvdXQgZGlyZWN0aW9uLCB1c2UgdGhlIGRpcmVjdGlvbigpey4uLn0gbWl4aW4uXCIpO1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBnZXQtZGlyZWN0aW9uKCRsYXlvdXQtZGlyZWN0aW9uLCAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKTtcbiAgfVxuXG4gIEBpZiAkdGFibGUge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgb21lZ2EgbWl4aW4gbm8gbG9uZ2VyIHJlbW92ZXMgcGFkZGluZyBpbiB0YWJsZSBsYXlvdXRzLlwiKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAaWYgJGF1dG8ge1xuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgY29udGFpbnMtZGlzcGxheS12YWx1ZSgkcXVlcnkpIGFuZCAkdGFibGUgPT0gZmFsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbik7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG50aC1jaGlsZChudGgoJHF1ZXJ5LCAxKSwgJGRpcmVjdGlvbik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVG9vIG1hbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgb21lZ2EoKSBtaXhpbi5cIik7XG4gIH1cbn1cblxuQG1peGluIG50aC1jaGlsZCgkcXVlcnksICRkaXJlY3Rpb24pIHtcbiAgJG9wcG9zaXRlLWRpcmVjdGlvbjogZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKTtcblxuICAmOm50aC1jaGlsZCgjeyRxdWVyeX0pIHtcbiAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIGFuZCB1bml0KCRxdWVyeSkgPT0gXCJuXCIge1xuICAgICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSsxKSB7XG4gICAgICBjbGVhcjogJG9wcG9zaXRlLWRpcmVjdGlvbjtcbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1ha2VzIGFuIGVsZW1lbnQgYSBvdXRlciBjb250YWluZXIgYnkgY2VudGVyaW5nIGl0IGluIHRoZSB2aWV3cG9ydCwgY2xlYXJpbmcgaXRzIGZsb2F0cywgYW5kIHNldHRpbmcgaXRzIGBtYXgtd2lkdGhgLlxuLy8vIEFsdGhvdWdoIG9wdGlvbmFsLCB1c2luZyBgb3V0ZXItY29udGFpbmVyYCBpcyByZWNvbW1lbmRlZC4gVGhlIG1peGluIGNhbiBiZSBjYWxsZWQgb24gbW9yZSB0aGFuIG9uZSBlbGVtZW50IHBlciBwYWdlLCBhcyBsb25nIGFzIHRoZXkgYXJlIG5vdCBuZXN0ZWQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciBbdW5pdF19ICRsb2NhbC1tYXgtd2lkdGggWyRtYXgtd2lkdGhdXG4vLy8gICBNYXggd2lkdGggdG8gYmUgYXBwbGllZCB0byB0aGUgZWxlbWVudC4gQ2FuIGJlIGEgcGVyY2VudGFnZSBvciBhIG1lYXN1cmUuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgb3V0ZXItY29udGFpbmVyKDEwMCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXgtd2lkdGg6IDEwMCU7XG4vLy8gICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50OjphZnRlciB7XG4vLy8gICAgIGNsZWFyOiBib3RoO1xuLy8vICAgICBjb250ZW50OiBcIlwiO1xuLy8vICAgICBkaXNwbGF5OiB0YWJsZTtcbi8vLyAgIH1cblxuQG1peGluIG91dGVyLWNvbnRhaW5lcigkbG9jYWwtbWF4LXdpZHRoOiAkbWF4LXdpZHRoKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXgtd2lkdGg6ICRsb2NhbC1tYXgtd2lkdGg7XG4gIG1hcmdpbjoge1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW4gZWxlbWVudCBzaG91bGQgc3Bhbi4gSWYgdGhlIHNlbGVjdG9yIGlzIG5lc3RlZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2YgaXRzIHBhcmVudCBlbGVtZW50IHNob3VsZCBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgYXMgd2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNwYW5cbi8vLyAgIEEgbGlzdCBjb250YWluaW5nIGAkY29sdW1uc2AsIHRoZSB1bml0bGVzcyBudW1iZXIgb2YgY29sdW1ucyB0aGUgZWxlbWVudCBzcGFucyAocmVxdWlyZWQpLCBhbmQgYCRjb250YWluZXItY29sdW1uc2AsIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgcGFyZW50IGVsZW1lbnQgc3BhbnMgKG9wdGlvbmFsKS5cbi8vL1xuLy8vICAgSWYgb25seSBvbmUgdmFsdWUgaXMgcGFzc2VkLCBpdCBpcyBhc3N1bWVkIHRoYXQgaXQncyBgJGNvbHVtbnNgIGFuZCB0aGF0IHRoYXQgYCRjb250YWluZXItY29sdW1uc2AgaXMgZXF1YWwgdG8gYCRncmlkLWNvbHVtbnNgLCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4vLy9cbi8vLyAgIFRoZSB2YWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCB3aXRoIGFueSBzdHJpbmcgc3VjaCBhcyBgb2ZgLCBgL2AsIGV0Yy5cbi8vL1xuLy8vICAgYCRjb2x1bW5zYCBhbHNvIGFjY2VwdHMgZGVjaW1hbHMgZm9yIHdoZW4gaXQncyBuZWNlc3NhcnkgdG8gYnJlYWsgb3V0IG9mIHRoZSBzdGFuZGFyZCBncmlkLiBFLmcuIFBhc3NpbmcgYDIuNGAgaW4gYSBzdGFuZGFyZCAxMiBjb2x1bW4gZ3JpZCB3aWxsIGRpdmlkZSB0aGUgcm93IGludG8gNSBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtibG9ja11cbi8vLyAgIFNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQuIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCB0byBgYmxvY2tgLlxuLy8vXG4vLy8gICBJZiBwYXNzZWQgYGJsb2NrLWNvbGxhcHNlYCwgaXQgYWxzbyByZW1vdmVzIHRoZSBtYXJnaW4gZ3V0dGVyIGJ5IGFkZGluZyBpdCB0byB0aGUgZWxlbWVudCB3aWR0aC5cbi8vL1xuLy8vICAgSWYgcGFzc2VkIGB0YWJsZWAsIGl0IHNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgdG8gYHRhYmxlLWNlbGxgIGFuZCBjYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgZWxlbWVudCB3aXRob3V0IHRha2luZyBndXR0ZXJzIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIHJlc3VsdCBkb2VzIG5vdCBhbGlnbiB3aXRoIHRoZSBibG9jay1iYXNlZCBncmlkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vL1xuLy8vICAgIC5uZXN0ZWQtZWxlbWVudCB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMiBvZiA2KTtcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDIuMzU3NjUlO1xuLy8vICAgICB3aWR0aDogNDguODIxMTclO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudCAubmVzdGVkLWVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogNC44MjkxNiU7XG4vLy8gICAgIHdpZHRoOiAzMC4xMTM4OSU7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50IC5uZXN0ZWQtZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuXG5AbWl4aW4gc3Bhbi1jb2x1bW5zKCRzcGFuOiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMsICRkaXNwbGF5OiBibG9jaykge1xuICAkY29sdW1uczogbnRoKCRzcGFuLCAxKTtcbiAgJGNvbnRhaW5lci1jb2x1bW5zOiBjb250YWluZXItc3Bhbigkc3Bhbik7XG5cbiAgJHBhcmVudC1jb2x1bW5zOiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbnRhaW5lci1jb2x1bW5zKSAhZ2xvYmFsO1xuXG4gICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICRkaXNwbGF5LXRhYmxlOiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpO1xuXG4gIEBpZiAkZGlzcGxheS10YWJsZSAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMgLyAkY29udGFpbmVyLWNvbHVtbnMpO1xuICB9IEBlbHNlIHtcbiAgICBmbG9hdDogI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTtcblxuICAgIEBpZiAkZGlzcGxheSAhPSBuby1kaXNwbGF5IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSB7XG4gICAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlICdjb2xsYXBzZScgYXJndW1lbnQgd2lsbCBiZSBkZXByZWNhdGVkLiBVc2UgJ2Jsb2NrLWNvbGxhcHNlJyBpbnN0ZWFkLlwiKTtcbiAgICB9XG5cbiAgICBAaWYgJGRpc3BsYXkgPT0gY29sbGFwc2Ugb3IgJGRpc3BsYXkgPT0gYmxvY2stY29sbGFwc2Uge1xuICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKSArIGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB9XG5cbiAgICB9IEBlbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnMpO1xuICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEZXNpZ25hdGVzIHRoZSBlbGVtZW50IGFzIGEgcm93IG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQgbGF5b3V0LiBJdCBjbGVhcnMgdGhlIGZsb2F0cyBvbiB0aGUgZWxlbWVudCBhbmQgc2V0cyBpdHMgZGlzcGxheSBwcm9wZXJ0eS4gUm93cyBjYW4ndCBiZSBuZXN0ZWQsIGJ1dCB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZSByb3cgZWxlbWVudOKAlHdpdGggZGlmZmVyZW50IGRpc3BsYXkgcHJvcGVydGllc+KAlHBlciBsYXlvdXQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpc3BsYXkgW2RlZmF1bHRdXG4vLy8gIFNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgYW5kIHRoZSBkaXNwbGF5IGNvbnRleHQgdGhhdCB3aWxsIGJlIHVzZWQgYnkgaXRzIGNoaWxkcmVuLiBDYW4gYmUgYGJsb2NrYCBvciBgdGFibGVgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXJlY3Rpb24gWyRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb25dXG4vLy8gIFNldHMgdGhlIGxheW91dCBkaXJlY3Rpb24uIENhbiBiZSBgTFRSYCAobGVmdC10by1yaWdodCkgb3IgYFJUTGAgKHJpZ2h0LXRvLWxlZnQpLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSByb3coKTtcbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgKnpvb206IDE7XG4vLy8gICAgZGlzcGxheTogYmxvY2s7XG4vLy8gIH1cbi8vL1xuLy8vIC5lbGVtZW50OmJlZm9yZSwgLmVsZW1lbnQ6YWZ0ZXIge1xuLy8vICAgY29udGVudDogXCIgXCI7XG4vLy8gICBkaXNwbGF5OiB0YWJsZTtcbi8vLyB9XG4vLy9cbi8vLyAuZWxlbWVudDphZnRlciB7XG4vLy8gICBjbGVhcjogYm90aDtcbi8vLyB9XG5cbkBtaXhpbiByb3coJGRpc3BsYXk6IGRlZmF1bHQsICRkaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pIHtcbiAgQGlmICRkaXJlY3Rpb24gIT0gJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSAkZGlyZWN0aW9uIGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpcmVjdGlvbigpey4uLn0gbWl4aW4uXCIpO1xuICB9XG5cbiAgJGxheW91dC1kaXJlY3Rpb246ICRkaXJlY3Rpb24gIWdsb2JhbDtcblxuICBAaWYgJGRpc3BsYXkgIT0gZGVmYXVsdCB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSAkZGlzcGxheSBhcmd1bWVudCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm9yIG9mIHRoZSBkaXNwbGF5KCl7Li4ufSBtaXhpbi5cIik7XG4gIH1cblxuICBAaWYgJGRpc3BsYXkgPT0gdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiB0cnVlICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2UgIWdsb2JhbDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVHJhbnNsYXRlcyBhbiBlbGVtZW50IGhvcml6b250YWxseSBieSBhIG51bWJlciBvZiBjb2x1bW5zLiBQb3NpdGl2ZSBhcmd1bWVudHMgc2hpZnQgdGhlIGVsZW1lbnQgdG8gdGhlIGFjdGl2ZSBsYXlvdXQgZGlyZWN0aW9uLCB3aGlsZSBuZWdhdGl2ZSBvbmVzIHNoaWZ0IGl0IHRvIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAodW5pdGxlc3MpfSAkbi1jb2x1bW5zIFsxXVxuLy8vICAgTnVtYmVyIG9mIGNvbHVtbnMgYnkgd2hpY2ggdGhlIGVsZW1lbnQgc2hpZnRzLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNoaWZ0KC0zKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBvdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IC0yNS41ODk0MSU7XG4vLy8gICB9XG5cbkBtaXhpbiBzaGlmdCgkbi1jb2x1bW5zOiAxKSB7XG4gIEBpbmNsdWRlIHNoaWZ0LWluLWNvbnRleHQoJG4tY29sdW1ucyk7XG59XG5cbi8vLyBUcmFuc2xhdGVzIGFuIGVsZW1lbnQgaG9yaXpvbnRhbGx5IGJ5IGEgbnVtYmVyIG9mIGNvbHVtbnMsIGluIGEgc3BlY2lmaWMgbmVzdGluZyBjb250ZXh0LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hpZnRcbi8vLyAgIEEgbGlzdCBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBzaGlmdCAoYCRjb2x1bW5zYCkgYW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBvZiB0aGUgcGFyZW50IGVsZW1lbnQgKGAkY29udGFpbmVyLWNvbHVtbnNgKS5cbi8vL1xuLy8vICAgVGhlIHR3byB2YWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCB3aXRoIGFueSBzdHJpbmcgc3VjaCBhcyBgb2ZgLCBgL2AsIGV0Yy5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaGlmdCgtMyBvZiA2KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBvdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IC01Mi40MTQ1OCU7XG4vLy8gICB9XG5cbkBtaXhpbiBzaGlmdC1pbi1jb250ZXh0KCRzaGlmdDogJGNvbHVtbnMgb2YgJGNvbnRhaW5lci1jb2x1bW5zKSB7XG4gICRuLWNvbHVtbnM6IG50aCgkc2hpZnQsIDEpO1xuICAkcGFyZW50LWNvbHVtbnM6IGNvbnRhaW5lci1zaGlmdCgkc2hpZnQpICFnbG9iYWw7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgbWFyZ2luLSN7JG9wcG9zaXRlLWRpcmVjdGlvbn06ICRuLWNvbHVtbnMgKiBmbGV4LWdyaWQoMSwgJHBhcmVudC1jb2x1bW5zKSArICRuLWNvbHVtbnMgKiBmbGV4LWd1dHRlcigkcGFyZW50LWNvbHVtbnMpO1xuXG4gIC8vIFJlc2V0IG5lc3RpbmcgY29udGV4dFxuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEFkZHMgcGFkZGluZyB0byB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHBhZGRpbmcgW2ZsZXgtZ3V0dGVyKCldXG4vLy8gICBBIGxpc3Qgb2YgcGFkZGluZyB2YWx1ZShzKSB0byB1c2UuIFBhc3NpbmcgYGRlZmF1bHRgIGluIHRoZSBsaXN0IHdpbGwgcmVzdWx0IGluIHVzaW5nIHRoZSBndXR0ZXIgd2lkdGggYXMgYSBwYWRkaW5nIHZhbHVlLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHBhZCgzMHB4IC0yMHB4IDEwcHggZGVmYXVsdCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBhZGRpbmc6IDMwcHggLTIwcHggMTBweCAyLjM1NzY1JTtcbi8vLyAgIH1cblxuQG1peGluIHBhZCgkcGFkZGluZzogZmxleC1ndXR0ZXIoKSkge1xuICAkcGFkZGluZy1saXN0OiBudWxsO1xuICBAZWFjaCAkdmFsdWUgaW4gJHBhZGRpbmcge1xuICAgICR2YWx1ZTogaWYoJHZhbHVlID09ICdkZWZhdWx0JywgZmxleC1ndXR0ZXIoKSwgJHZhbHVlKTtcbiAgICAkcGFkZGluZy1saXN0OiBqb2luKCRwYWRkaW5nLWxpc3QsICR2YWx1ZSk7XG4gIH1cbiAgcGFkZGluZzogJHBhZGRpbmctbGlzdDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEZvcmNlcyB0aGUgZWxlbWVudCB0byBmaWxsIGl0cyBwYXJlbnQgY29udGFpbmVyLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMTAwJTtcbi8vLyAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbi8vLyAgIH1cblxuQG1peGluIGZpbGwtcGFyZW50KCkge1xuICB3aWR0aDogMTAwJTtcblxuICBAaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IGZhbHNlIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBPdXRwdXRzIGEgbWVkaWEtcXVlcnkgYmxvY2sgd2l0aCBhbiBvcHRpb25hbCBncmlkIGNvbnRleHQgKHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGluIHRoZSBncmlkKS5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHF1ZXJ5XG4vLy8gICBBIGxpc3Qgb2YgbWVkaWEgcXVlcnkgZmVhdHVyZXMgYW5kIHZhbHVlcywgd2hlcmUgZWFjaCBgJGZlYXR1cmVgIHNob3VsZCBoYXZlIGEgY29ycmVzcG9uZGluZyBgJHZhbHVlYC5cbi8vLyAgIEZvciBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIGZvciBgJGZlYXR1cmVgLCBjbGljayBbaGVyZV0oaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI21lZGlhMSkuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgYCR2YWx1ZWAgaW4gYCRxdWVyeWAsIGAkZGVmYXVsdC1mZWF0dXJlYCBpcyBnb2luZyB0byBiZSB1c2VkLlxuLy8vXG4vLy8gICBUaGUgbnVtYmVyIG9mIHRvdGFsIGNvbHVtbnMgaW4gdGhlIGdyaWQgY2FuIGJlIHNldCBieSBwYXNzaW5nIGAkY29sdW1uc2AgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAob3ZlcnJpZGVzIGAkdG90YWwtY29sdW1uc2ApLlxuLy8vXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAodW5pdGxlc3MpfSAkdG90YWwtY29sdW1ucyBbJGdyaWQtY29sdW1uc11cbi8vLyAgIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGluIHRoZSBuZXcgZ3JpZCBjb250ZXh0LiBDYW4gYmUgc2V0IGFzIGEgc2hvcnRoYW5kIGluIHRoZSBmaXJzdCBwYXJhbWV0ZXIuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5yZXNwb25zaXZlLWVsZW1lbnQge1xuLy8vICAgICAgQGluY2x1ZGUgbWVkaWEoNzY5cHgpIHtcbi8vLyAgICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vICAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gIC5uZXctY29udGV4dC1lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtZWRpYShtaW4td2lkdGggMzIwcHggbWF4LXdpZHRoIDQ4MHB4LCA2KSB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4vLy8gICAgLnJlc3BvbnNpdmUtZWxlbWVudCB7XG4vLy8gICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiAyLjM1NzY1JTtcbi8vLyAgICAgIHdpZHRoOiA0OC44MjExNyU7XG4vLy8gICAgfVxuLy8vXG4vLy8gICAgLnJlc3BvbnNpdmUtZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMjBweCkgYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4vLy8gICAgLm5ldy1jb250ZXh0LWVsZW1lbnQge1xuLy8vICAgICAgZGlzcGxheTogYmxvY2s7XG4vLy8gICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogNC44MjkxNiU7XG4vLy8gICAgICB3aWR0aDogMTAwJTtcbi8vLyAgICB9XG4vLy9cbi8vLyAgICAubmV3LWNvbnRleHQtZWxlbWVudDpsYXN0LWNoaWxkIHtcbi8vLyAgICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgICB9XG4vLy8gIH1cblxuQG1peGluIG1lZGlhKCRxdWVyeTogJGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKCRkZWZhdWx0LWZlYXR1cmU6IG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucyAhZ2xvYmFsO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnMgIWdsb2JhbDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRsb29wLXRvOiBsZW5ndGgoJHF1ZXJ5KTtcbiAgICAkbWVkaWEtcXVlcnk6IFwic2NyZWVuIGFuZCBcIjtcbiAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnMgIWdsb2JhbDtcblxuICAgIEBpZiBpcy1ub3QoaXMtZXZlbihsZW5ndGgoJHF1ZXJ5KSkpIHtcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksICRsb29wLXRvKSAhZ2xvYmFsO1xuICAgICAgJGxvb3AtdG86ICRsb29wLXRvIC0gMTtcbiAgICB9XG5cbiAgICAkaTogMTtcbiAgICBAd2hpbGUgJGkgPD0gJGxvb3AtdG8ge1xuICAgICAgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcIihcIiArIG50aCgkcXVlcnksICRpKSArIFwiOiBcIiArIG50aCgkcXVlcnksICRpICsgMSkgKyBcIikgXCI7XG5cbiAgICAgIEBpZiAoJGkgKyAxKSAhPSAkbG9vcC10byB7XG4gICAgICAgICRtZWRpYS1xdWVyeTogJG1lZGlhLXF1ZXJ5ICsgXCJhbmQgXCI7XG4gICAgICB9XG5cbiAgICAgICRpOiAkaSArIDI7XG4gICAgfVxuXG4gICAgQG1lZGlhICN7JG1lZGlhLXF1ZXJ5fSB7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucyAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnk6JGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIGJyZWFrcG9pbnQoKSBtaXhpbiB3YXMgcmVuYW1lZCB0byBtZWRpYSgpIGluIE5lYXQgMS4wLiBQbGVhc2UgdXBkYXRlIHlvdXIgcHJvamVjdCB3aXRoIHRoZSBuZXcgc3ludGF4IGJlZm9yZSB0aGUgbmV4dCB2ZXJzaW9uIGJ1bXAuXCIpO1xuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDMge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksIDMpO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDQge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSA1IHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSBhbmQgKG50aCgkcXVlcnksIDMpOiBudGgoJHF1ZXJ5LCA0KSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogbnRoKCRxdWVyeSwgNSk7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBicmVha3BvaW50KCkuIFJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy5cIik7XG4gIH1cbn1cblxuQG1peGluIG50aC1vbWVnYSgkbnRoLCAkZGlzcGxheTogYmxvY2ssICRkaXJlY3Rpb246IGRlZmF1bHQpIHtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBudGgtb21lZ2EoKSBtaXhpbiBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG9tZWdhKCkgaW5zdGVhZC5cIik7XG4gIEBpbmNsdWRlIG9tZWdhKCRudGggJGRpc3BsYXksICRkaXJlY3Rpb24pO1xufVxuXG4vLy8gUmVzZXRzIHRoZSBhY3RpdmUgZGlzcGxheSBwcm9wZXJ0eSB0byBgYmxvY2tgLiBQYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY2hhbmdpbmcgdGhlIGRpc3BsYXkgcHJvcGVydHkgaW4gYSBzaW5nbGUgcm93LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHJvdyh0YWJsZSk7XG4vLy8gICAgIC8vIENvbnRleHQgY2hhbmdlZCB0byB0YWJsZSBkaXNwbGF5XG4vLy8gICB9XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJlc2V0LWRpc3BsYXk7XG4vLy8gICAvLyBDb250ZXh0IGlzIHJlc2V0IHRvIGJsb2NrIGRpc3BsYXlcblxuQG1peGluIHJlc2V0LWRpc3BsYXkge1xuICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFnbG9iYWw7XG4gIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJSZXNldHRpbmcgJGRpc3BsYXkgd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlzcGxheSgpey4uLn0gbWl4aW4uXCIpO1xufVxuXG4vLy8gUmVzZXRzIHRoZSBhY3RpdmUgbGF5b3V0IGRpcmVjdGlvbiB0byB0aGUgZGVmYXVsdCB2YWx1ZSBzZXQgaW4gYCRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb25gLiBQYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY2hhbmdpbmcgdGhlIGxheW91dCBkaXJlY3Rpb24gaW4gYSBzaW5nbGUgcm93LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHJvdygkZGlyZWN0aW9uOiBSVEwpO1xuLy8vICAgICAvLyBDb250ZXh0IGNoYW5nZWQgdG8gcmlnaHQtdG8tbGVmdFxuLy8vICAgfVxuLy8vXG4vLy8gICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xuLy8vICAgLy8gQ29udGV4dCBpcyByZXNldCB0byBsZWZ0LXRvLXJpZ2h0XG5cbkBtaXhpbiByZXNldC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgJGxheW91dC1kaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24gIWdsb2JhbDtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlJlc2V0dGluZyAkZGlyZWN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpcmVjdGlvbigpey4uLn0gbWl4aW4uXCIpO1xufVxuXG4vLy8gUmVzZXRzIGJvdGggdGhlIGFjdGl2ZSBsYXlvdXQgZGlyZWN0aW9uIGFuZCB0aGUgYWN0aXZlIGRpc3BsYXkgcHJvcGVydHkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcm93KHRhYmxlLCBSVEwpO1xuLy8vICAgICAvLyBDb250ZXh0IGNoYW5nZWQgdG8gdGFibGUgdGFibGUgYW5kIHJpZ2h0LXRvLWxlZnRcbi8vLyAgIH1cbi8vL1xuLy8vICAgQGluY2x1ZGUgcmVzZXQtYWxsO1xuLy8vICAgLy8gQ29udGV4dCBpcyByZXNldCB0byBibG9jayBkaXNwbGF5IGFuZCBsZWZ0LXRvLXJpZ2h0XG5cbkBtaXhpbiByZXNldC1hbGwge1xuICBAaW5jbHVkZSByZXNldC1kaXNwbGF5O1xuICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZ3JhZGllbnQoJHZhbHVlcy4uLikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC1tcy1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogdW5xdW90ZShcImxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCAjeyR2YWx1ZXN9KVwiKTtcbn1cblxuQGlmICR2aXN1YWwtZ3JpZCA9PSB0cnVlIG9yICR2aXN1YWwtZ3JpZCA9PSB5ZXMge1xuICBib2R5OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgICBvcGFjaXR5OiAkdmlzdWFsLWdyaWQtb3BhY2l0eTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGJhY2sge1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGZyb250IHtcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiAkYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIG1lZGlhKCRicmVha3BvaW50KSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGFuZ2VzIHRoZSBkaXNwbGF5IHByb3BlcnR5IHVzZWQgYnkgb3RoZXIgbWl4aW5zIGNhbGxlZCBpbiB0aGUgY29kZSBibG9jayBhcmd1bWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSBbYmxvY2tdXG4vLy8gICBEaXNwbGF5IHZhbHVlIHRvIGJlIHVzZWQgd2l0aGluIHRoZSBibG9jay4gQ2FuIGJlIGB0YWJsZWAgb3IgYGJsb2NrYC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgIEBpbmNsdWRlIGRpc3BsYXktY29udGV4dCh0YWJsZSkge1xuLy8vICAgIC5kaXNwbGF5LXRhYmxlIHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzXG4vLy8gICAuZGlzcGxheS10YWJsZSB7XG4vLy8gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuLy8vICAgICAgLi4uXG4vLy8gICB9XG5cbkBtaXhpbiBkaXNwbGF5LWNvbnRleHQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gICRzY29wZS1kaXNwbGF5OiAkY29udGFpbmVyLWRpc3BsYXktdGFibGU7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogJGRpc3BsYXkgPT0gdGFibGUgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6ICRzY29wZS1kaXNwbGF5ICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGFuZ2VzIHRoZSBkaXJlY3Rpb24gcHJvcGVydHkgdXNlZCBieSBvdGhlciBtaXhpbnMgY2FsbGVkIGluIHRoZSBjb2RlIGJsb2NrIGFyZ3VtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXJlY3Rpb24gW2xlZnQtdG8tcmlnaHRdXG4vLy8gICBMYXlvdXQgZGlyZWN0aW9uIHRvIGJlIHVzZWQgd2l0aGluIHRoZSBibG9jay4gQ2FuIGJlIGBsZWZ0LXRvLXJpZ2h0YCBvciBgcmlnaHQtdG8tbGVmdGAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIEBpbmNsdWRlIGRpcmVjdGlvbi1jb250ZXh0KHJpZ2h0LXRvLWxlZnQpIHtcbi8vLyAgICAucmlnaHQtdG8tbGVmdC1ibG9jayB7XG4vLy8gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5yaWdodC10by1sZWZ0LWJsb2NrIHtcbi8vLyAgICAgZmxvYXQ6IHJpZ2h0O1xuLy8vICAgICAgLi4uXG4vLy8gICB9XG5cbkBtaXhpbiBkaXJlY3Rpb24tY29udGV4dCgkZGlyZWN0aW9uOiBsZWZ0LXRvLXJpZ2h0KSB7XG4gICRzY29wZS1kaXJlY3Rpb246ICRsYXlvdXQtZGlyZWN0aW9uO1xuXG4gIEBpZiB0by1sb3dlci1jYXNlKCRkaXJlY3Rpb24pID09IFwibGVmdC10by1yaWdodFwiIHtcbiAgICAkbGF5b3V0LWRpcmVjdGlvbjogTFRSICFnbG9iYWw7XG4gIH0gQGVsc2UgaWYgdG8tbG93ZXItY2FzZSgkZGlyZWN0aW9uKSA9PSBcInJpZ2h0LXRvLWxlZnRcIiB7XG4gICAgJGxheW91dC1kaXJlY3Rpb246IFJUTCAhZ2xvYmFsO1xuICB9XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJGxheW91dC1kaXJlY3Rpb246ICRzY29wZS1kaXJlY3Rpb24gIWdsb2JhbDtcbn1cbiIsIkBpbXBvcnQgJ3N1cHBvcnQtZm9yJztcbkBpbXBvcnQgJ25vcm1hbGl6ZS92YXJpYWJsZXMnO1xuQGltcG9ydCAnbm9ybWFsaXplL3ZlcnRpY2FsLXJoeXRobSc7XG5AaW1wb3J0ICdub3JtYWxpemUvbm9ybWFsaXplLW1peGluJztcbiIsIi8vIFN1cHBvcnQgdGhlIGxhc3QgNCB2ZXJzaW9ucyBvZiBhbGwgYnJvd3NlcnMgZXhjZXB0IElFLlxuJHN1cHBvcnQtZm9yOiAoXG4gIGNocm9tZTogIC00LFxuICBlZGdlOiAgICAtNCxcbiAgZmlyZWZveDogLTQsXG4gIGllOiAgICAgIDksXG4gIG9wZXJhOiAgIC00LFxuICBzYWZhcmk6ICAtNCxcbiAgJyonOiAgICAgLTQsXG4pICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGN1cnJlbnQgdmVyc2lvbiBudW1iZXIgZm9yIGFsbCBicm93c2Vycy4gQXMgb2Y6IDIwMTYtMDQtMzBcbiRzdXBwb3J0LWZvci1jdXJyZW50LWJyb3dzZXItdmVyc2lvbjogKFxuICBjaHJvbWU6ICA1MCwgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR29vZ2xlX0Nocm9tZV9yZWxlYXNlX2hpc3RvcnlcbiAgZWRnZTogICAgMjUsIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdF9FZGdlXG4gIGZpcmVmb3g6IDQ2LCAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXJlZm94X3JlbGVhc2VfaGlzdG9yeVxuICBpZTogICAgICAxMSwgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50ZXJuZXRfRXhwbG9yZXJfdmVyc2lvbnNcbiAgb3BlcmE6ICAgMzYsIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09wZXJhXyh3ZWJfYnJvd3NlcilcbiAgc2FmYXJpOiAgOSwgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NhZmFyaV92ZXJzaW9uX2hpc3RvcnlcbikgIWRlZmF1bHQ7XG5cblxuLy8gc3VwcG9ydC1mb3IoKVxuLy9cbi8vIERldGVybWluZXMgaWYgdGhlIHByb2plY3QgaGFzIGRlY2xhcmVkIGEgbWluaW11bSBzdXBwb3J0ZWQgdmVyc2lvbiBudW1iZXIgZm9yXG4vLyB0aGUgc3BlY2lmaWVkIGJyb3dzZXIuXG4vL1xuLy8gSWYgY29uZmlndXJlZCwgdGhpcyBpcyBhIHdyYXBwZXIgZnVuY3Rpb24gdGhhdCB1c2VzIENvbXBhc3MnXG4vLyBzdXBwb3J0LWxlZ2FjeS1icm93c2VyKCkuXG4vLyBAc2VlIGh0dHA6Ly9jb21wYXNzLXN0eWxlLm9yZy9yZWZlcmVuY2UvY29tcGFzcy9zdXBwb3J0LyNmdW5jdGlvbi1zdXBwb3J0LWxlZ2FjeS1icm93c2VyXG4vL1xuQGZ1bmN0aW9uIHN1cHBvcnQtZm9yKCRicm93c2VyLCAkdmVyc2lvbikge1xuICAvLyBFbnN1cmUgJHZlcnNpb24gaXMgYW4gaW50ZWdlciAob3IgbnVsbCkuXG4gIEBpZiBub3QgKHR5cGUtb2YoJHZlcnNpb24pID09IFwibnVsbFwiIG9yIHR5cGUtb2YoJHZlcnNpb24pID09IFwibnVtYmVyXCIgYW5kIHJvdW5kKCR2ZXJzaW9uKSA9PSAkdmVyc2lvbikge1xuICAgIEBlcnJvciBcIlRoZSAkdmVyc2lvbiBwYXJhbWV0ZXIgb2Ygc3VwcG9ydC1mb3IoKSBtdXN0IGJlIGFuIGludGVnZXI7ICN7dHlwZS1vZigkdmVyc2lvbil9IGdpdmVuLlwiO1xuICB9XG5cbiAgLy8gQ2hlY2sgYWdhaW5zdCBkZWNsYXJlZCBtaW5pbXVtcy5cbiAgJG1pbi12ZXJzaW9uOiBudWxsO1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1cHBvcnQtZm9yLCAkYnJvd3Nlcikge1xuICAgICRtaW4tdmVyc2lvbjogbWFwLWdldCgkc3VwcG9ydC1mb3IsICRicm93c2VyKTtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkc3VwcG9ydC1mb3IsICcqJykge1xuICAgICRtaW4tdmVyc2lvbjogbWFwLWdldCgkc3VwcG9ydC1mb3IsICcqJyk7XG4gIH1cblxuICAvLyBFbnN1cmUgJG1pbi12ZXJzaW9uIGlzIGFuIGludGVnZXIgKG9yIG51bGwpLlxuICBAaWYgdHlwZS1vZigkbWluLXZlcnNpb24pICE9IFwibnVsbFwiIGFuZCB0eXBlLW9mKCRtaW4tdmVyc2lvbikgIT0gXCJudW1iZXJcIiB7XG4gICAgQGVycm9yIFwiJHN1cHBvcnQtZm9yOiAoI3skYnJvd3Nlcn06ICN7JG1pbi12ZXJzaW9ufSkgbXVzdCBiZSBzZXQgdG8gYW4gaW50ZWdlciAob3IgbnVsbCk7ICN7JG1pbi12ZXJzaW9ufSBpcyBhICN7dHlwZS1vZigkbWluLXZlcnNpb24pfS5cIjtcbiAgfVxuICBAZWxzZWlmIHR5cGUtb2YoJG1pbi12ZXJzaW9uKSA9PSBcIm51bWJlclwiIGFuZCByb3VuZCgkbWluLXZlcnNpb24pICE9ICRtaW4tdmVyc2lvbiB7XG4gICAgQGVycm9yIFwiJHN1cHBvcnQtZm9yOiAoI3skYnJvd3Nlcn06ICN7JG1pbi12ZXJzaW9ufSkgbXVzdCBiZSBzZXQgdG8gYW4gaW50ZWdlciAob3IgbnVsbCk7ICN7JG1pbi12ZXJzaW9ufSBpcyBub3QgYW4gaW50ZWdlci5cIjtcbiAgfVxuXG4gIC8vIE5lZ2F0aXZlICRtaW4tdmVyc2lvbiBtZWFucyBcIlggbW9zdCByZWNlbnQgdmVyc2lvbnNcIi5cbiAgQGlmIHR5cGUtb2YoJG1pbi12ZXJzaW9uKSA9PSBcIm51bWJlclwiIGFuZCAkbWluLXZlcnNpb24gPCAwIHtcbiAgICBAaWYgbm90IG1hcC1oYXMta2V5KCRzdXBwb3J0LWZvci1jdXJyZW50LWJyb3dzZXItdmVyc2lvbiwgJGJyb3dzZXIpIHtcbiAgICAgIEBlcnJvciBcIiN7JGJyb3dzZXJ9IG5vdCBmb3VuZCBpbiAkc3VwcG9ydC1mb3ItY3VycmVudC1icm93c2VyLXZlcnNpb24gbWFwOyBpdCBtdXN0IGJlIHNldCB0byBhbiBpbnRlZ2VyLlwiO1xuICAgIH1cbiAgICAkbWluLXZlcnNpb246IG1hcC1nZXQoJHN1cHBvcnQtZm9yLWN1cnJlbnQtYnJvd3Nlci12ZXJzaW9uLCAkYnJvd3NlcikgKyAkbWluLXZlcnNpb24gKyAxO1xuICB9XG5cbiAgQHJldHVybiBpZigoJG1pbi12ZXJzaW9uIGFuZCAoJHZlcnNpb24gPj0gJG1pbi12ZXJzaW9uKSksIHRydWUsIGZhbHNlKTtcbn1cbiIsIi8vXG4vLyBWYXJpYWJsZXNcbi8vXG4vLyBZb3UgY2FuIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlcyBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZXMgaW4geW91ciBTYXNzXG4vLyBiZWZvcmUgaW1wb3J0aW5nIHRoZSBub3JtYWxpemUtc2NzcyBsaWJyYXJ5LlxuXG4vLyBUaGUgZm9udCBzaXplIHNldCBvbiB0aGUgcm9vdCBodG1sIGVsZW1lbnQuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBsZW5ndGggdW5pdCBpbiB3aGljaCB0byBvdXRwdXQgdmVydGljYWwgcmh5dGhtIHZhbHVlcy5cbi8vIFN1cHBvcnRlZCB2YWx1ZXM6IHB4LCBlbSwgcmVtLlxuJGJhc2UtdW5pdDogJ2VtJyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZm9udCBmYW1pbHkuXG4kYmFzZS1mb250LWZhbWlseTogc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8gVGhlIGZvbnQgc2l6ZXMgZm9yIGgxLWg2LlxuJGgxLWZvbnQtc2l6ZTogMiAgICAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoMi1mb250LXNpemU6IDEuNSAgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kaDMtZm9udC1zaXplOiAxLjE3ICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuJGg0LWZvbnQtc2l6ZTogMSAgICAqICRiYXNlLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRoNS1mb250LXNpemU6IDAuODMgKiAkYmFzZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kaDYtZm9udC1zaXplOiAwLjY3ICogJGJhc2UtZm9udC1zaXplICFkZWZhdWx0O1xuXG4vLyBUaGUgYW1vdW50IGxpc3RzIGFuZCBibG9ja3F1b3RlcyBhcmUgaW5kZW50ZWQuXG4kaW5kZW50LWFtb3VudDogNDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBjb250cm9scyB3aGV0aGVyIG5vcm1hbGl6ZS1zY3NzIHdpbGwgb3V0cHV0XG4vLyBmb250LXNpemVzLCBsaW5lLWhlaWdodHMgYW5kIGJsb2NrLWxldmVsIHRvcC9ib3R0b20gbWFyZ2lucyB0aGF0IGZvcm0gYSBiYXNpY1xuLy8gdmVydGljYWwgcmh5dGhtIG9uIHRoZSBwYWdlLCB3aGljaCBkaWZmZXJzIGZyb20gdGhlIG9yaWdpbmFsIE5vcm1hbGl6ZS5jc3MuXG4vLyBIb3dldmVyLCBjaGFuZ2luZyBhbnkgb2YgdGhlIHZhcmlhYmxlcyBhYm92ZSB3aWxsIGNhdXNlXG4vLyAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB0byBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byB0cnVlLlxuJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG06IGZhbHNlICFkZWZhdWx0O1xuIiwiLy9cbi8vIFZlcnRpY2FsIFJoeXRobVxuLy9cbi8vIFRoaXMgaXMgdGhlIG1pbmltYWwgYW1vdW50IG9mIGNvZGUgbmVlZGVkIHRvIGNyZWF0ZSB2ZXJ0aWNhbCByaHl0aG0gaW4gb3VyXG4vLyBDU1MuIElmIHlvdSBhcmUgbG9va2luZyBmb3IgYSByb2J1c3Qgc29sdXRpb24sIGxvb2sgYXQgdGhlIGV4Y2VsbGVudCBUeXBleVxuLy8gbGlicmFyeS4gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vanB0YXJhbnRvL3R5cGV5XG5cbkBmdW5jdGlvbiBub3JtYWxpemUtcmh5dGhtKCR2YWx1ZSwgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUsICR1bml0OiAkYmFzZS11bml0KSB7XG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gcHgge1xuICAgIEBlcnJvciBcIlRoZSBub3JtYWxpemUgdmVydGljYWwtcmh5dGhtIG1vZHVsZSBvbmx5IHN1cHBvcnRzIHB4IGlucHV0cy4gVGhlIHR5cGV5IGxpYnJhcnkgaXMgYmV0dGVyLlwiO1xuICB9XG4gIEBpZiAkdW5pdCA9PSByZW0ge1xuICAgIEByZXR1cm4gKCR2YWx1ZSAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxcmVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09IGVtIHtcbiAgICBAcmV0dXJuICgkdmFsdWUgLyAkcmVsYXRpdmUtdG8pICogMWVtO1xuICB9XG4gIEBlbHNlIHsgLy8gJHVuaXQgPT0gcHhcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxufVxuXG5AbWl4aW4gbm9ybWFsaXplLWZvbnQtc2l6ZSgkdmFsdWUsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3B4JyB7XG4gICAgQGVycm9yIFwibm9ybWFsaXplLWZvbnQtc2l6ZSgpIG9ubHkgc3VwcG9ydHMgcHggaW5wdXRzLiBUaGUgdHlwZXkgbGlicmFyeSBpcyBiZXR0ZXIuXCI7XG4gIH1cbiAgLy8gcHggZmFsbGJhY2sgZm9yIElFIDggYW5kIGVhcmxpZXIuIE5vdGU6IElFIDkvMTAgZG9uJ3QgdW5kZXJzdGFuZCByZW1cbiAgLy8gaW4gZm9udCBzaG9ydGhhbmQsIGJ1dCBmb250LXNpemUgbG9uZ2hhbmQgaXMgZmluZS5cbiAgQGlmICRiYXNlLXVuaXQgPT0gcmVtIGFuZCBzdXBwb3J0LWZvcihpZSwgOCkge1xuICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICB9XG4gIGZvbnQtc2l6ZTogbm9ybWFsaXplLXJoeXRobSgkdmFsdWUsICRyZWxhdGl2ZS10byk7XG59XG5cbkBtaXhpbiBub3JtYWxpemUtcmh5dGhtKCRwcm9wZXJ0eSwgJHZhbHVlcywgJHJlbGF0aXZlLXRvOiAkYmFzZS1mb250LXNpemUpIHtcbiAgJHZhbHVlLWxpc3Q6ICR2YWx1ZXM7XG4gICRzZXA6IHNwYWNlO1xuICBAaWYgdHlwZS1vZigkdmFsdWVzKSA9PSAnbGlzdCcge1xuICAgICRzZXA6IGxpc3Qtc2VwYXJhdG9yKCR2YWx1ZXMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdmFsdWUtbGlzdDogYXBwZW5kKCgpLCAkdmFsdWVzKTtcbiAgfVxuXG4gICRub3JtYWxpemVkLXZhbHVlczogKCk7XG4gICRweC1mYWxsYmFjazogKCk7XG5cbiAgQGVhY2ggJHZhbHVlIGluICR2YWx1ZS1saXN0IHtcbiAgICAkcHgtdmFsdWU6ICR2YWx1ZTtcbiAgICBAaWYgdW5pdGxlc3MoJHZhbHVlKSBhbmQgJHZhbHVlICE9IDAge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiBub3JtYWxpemUtcmh5dGhtKCRiYXNlLWxpbmUtaGVpZ2h0LCAkcmVsYXRpdmUtdG8pO1xuICAgICAgJHB4LXZhbHVlOiAkcHgtdmFsdWUgKiBub3JtYWxpemUtcmh5dGhtKCRiYXNlLWxpbmUtaGVpZ2h0LCAkcmVsYXRpdmUtdG8sIHB4KTtcbiAgICB9XG4gICAgJG5vcm1hbGl6ZWQtdmFsdWVzOiBhcHBlbmQoJG5vcm1hbGl6ZWQtdmFsdWVzLCAkdmFsdWUsICRzZXApO1xuICAgICRweC1mYWxsYmFjazogYXBwZW5kKCRweC1mYWxsYmFjaywgJHB4LXZhbHVlLCAkc2VwKTtcbiAgfVxuICBAaWYgJGJhc2UtdW5pdCA9PSByZW0gYW5kIHN1cHBvcnQtZm9yKGllLCA4KSB7XG4gICAgI3skcHJvcGVydHl9OiAkcHgtZmFsbGJhY2s7XG4gIH1cbiAgI3skcHJvcGVydHl9OiAkbm9ybWFsaXplZC12YWx1ZXM7XG59XG5cbkBtaXhpbiBub3JtYWxpemUtbWFyZ2luKCR2YWx1ZXMsICRyZWxhdGl2ZS10bzogJGJhc2UtZm9udC1zaXplKSB7XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZS1yaHl0aG0obWFyZ2luLCAkdmFsdWVzLCAkcmVsYXRpdmUtdG8pO1xufVxuXG5AbWl4aW4gbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRmb250LXNpemUsICRtaW4tbGluZS1wYWRkaW5nOiAycHgpIHtcbiAgJGxpbmVzOiBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCk7XG4gIC8vIElmIGxpbmVzIGFyZSBjcmFtcGVkIGluY2x1ZGUgc29tZSBleHRyYSBsZWFkaW5nLlxuICBAaWYgKCRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJGZvbnQtc2l6ZSkgPCAoJG1pbi1saW5lLXBhZGRpbmcgKiAyKSB7XG4gICAgJGxpbmVzOiAkbGluZXMgKyAxO1xuICB9XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZS1yaHl0aG0obGluZS1oZWlnaHQsICRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG4iLCIvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHRoZSBub3JtYWxpemUoKSBtaXhpbi5cbiRfbm9ybWFsaXplLWluY2x1ZGU6ICgpO1xuJF9ub3JtYWxpemUtZXhjbHVkZTogKCk7XG5AZnVuY3Rpb24gX25vcm1hbGl6ZS1pbmNsdWRlKCRzZWN0aW9uKSB7XG4gIC8vIENoZWNrIGlmICRzZWN0aW9uIGlzIGluIHRoZSAkaW5jbHVkZSBsaXN0LlxuICBAaWYgaW5kZXgoJF9ub3JtYWxpemUtaW5jbHVkZSwgJHNlY3Rpb24pIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gSWYgJGluY2x1ZGUgaXMgc2V0IHRvIChhbGwpLCBtYWtlIHN1cmUgJHNlY3Rpb24gaXMgbm90IGluICRleGNsdWRlLlxuICBAZWxzZSBpZiBub3QgaW5kZXgoJF9ub3JtYWxpemUtZXhjbHVkZSwgJHNlY3Rpb24pIGFuZCBpbmRleCgkX25vcm1hbGl6ZS1pbmNsdWRlLCBhbGwpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuQG1peGluIF9ub3JtYWxpemUtbW9ub3NwYWNlKCkge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIEBpZiBzdXBwb3J0LWZvcihpZSwgNikge1xuICAgIF9mb250LWZhbWlseTogJ2NvdXJpZXIgbmV3JywgbW9ub3NwYWNlO1xuICB9XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG5AbWl4aW4gbm9ybWFsaXplKCRpbmNsdWRlOiAoYWxsKSwgJGV4Y2x1ZGU6ICgpKSB7XG4gIC8vIElmIHdlIGhhZCBsb2NhbCBmdW5jdGlvbnMsIHdlIGNvdWxkIGFjY2VzcyBvdXIgcGFyYW1ldGVycyBpbnNpZGUgdGhlXG4gIC8vIGZ1bmN0aW9uIHdpdGhvdXQgcGFzc2luZyB0aGVtIGluIGFzIHBhcmFtZXRlcnMuIFRoZSBoYWNreSB3b3JrLWFyb3VuZCBpcyB0b1xuICAvLyBzdHVmZiB0aGVtIGludG8gZ2xvYmFsIHZhcmlhYmxlcyBzbyBjYW4gYWNjZXNzIHRoZW0gZnJvbSBhIGdsb2JhbCBmdW5jdGlvbi5cbiAgJF9ub3JtYWxpemUtaW5jbHVkZTogaWYodHlwZS1vZigkaW5jbHVkZSkgPT0gJ2xpc3QnLCAkaW5jbHVkZSwgKCRpbmNsdWRlKSkgIWdsb2JhbDtcbiAgJF9ub3JtYWxpemUtZXhjbHVkZTogaWYodHlwZS1vZigkZXhjbHVkZSkgPT0gJ2xpc3QnLCAkZXhjbHVkZSwgKCRleGNsdWRlKSkgIWdsb2JhbDtcblxuICAvLyBJZiB3ZSd2ZSBjdXN0b21pemVkIGFueSBmb250IHZhcmlhYmxlcywgd2UnbGwgbmVlZCBleHRyYSBwcm9wZXJ0aWVzLlxuICBAaWYgJGJhc2UtZm9udC1zaXplICE9IDE2cHhcbiAgICBvciAkYmFzZS1saW5lLWhlaWdodCAhPSAyNHB4XG4gICAgb3IgJGJhc2UtdW5pdCAhPSAnZW0nXG4gICAgb3IgJGgxLWZvbnQtc2l6ZSAhPSAyICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgyLWZvbnQtc2l6ZSAhPSAxLjUgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGgzLWZvbnQtc2l6ZSAhPSAxLjE3ICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg0LWZvbnQtc2l6ZSAhPSAxICAgICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg1LWZvbnQtc2l6ZSAhPSAwLjgzICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGg2LWZvbnQtc2l6ZSAhPSAwLjY3ICogJGJhc2UtZm9udC1zaXplXG4gICAgb3IgJGluZGVudC1hbW91bnQgIT0gNDBweCB7XG4gICAgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG06IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIC8qISBub3JtYWxpemUtc2NzcyB8IE1JVC9HUEx2MiBMaWNlbnNlIHwgYml0Lmx5L25vcm1hbGl6ZS1zY3NzICovXG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShyb290KSB7XG4gICAgLyoqXG4gICAgICogMS4gQ2hhbmdlIHRoZSBkZWZhdWx0IGZvbnQgZmFtaWx5IGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqIDIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gSUUgYW5kIGlPUy5cbiAgICAgKi9cblxuICAgIGh0bWwge1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIG9yIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAgIC8vIENvcnJlY3QgdGV4dCByZXNpemluZyBvZGRseSBpbiBJRSA2Lzcgd2hlbiBib2R5IGBmb250LXNpemVgIGlzIHNldCB1c2luZ1xuICAgICAgICAvLyBgZW1gIHVuaXRzLlxuICAgICAgICBmb250LXNpemU6ICgkYmFzZS1mb250LXNpemUgLyAxNnB4KSAqIDEwMCU7XG4gICAgICB9XG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICBsaW5lLWhlaWdodDogKCRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTtcbiAgICAgIH1cbiAgICAgIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTsgLyogMSAqL1xuICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICAgICAqL1xuXG4gICAgYm9keSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShodG1sNSkge1xuICAgIC8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgPDEwLlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFLCBhbmQgRmlyZWZveCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YC5cbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSBmb3IgYG1haW5gLlxuICAgICAqL1xuXG4gICAgYXJ0aWNsZSxcbiAgICBhc2lkZSxcbiAgICBkZXRhaWxzLFxuICAgIGZpZ2NhcHRpb24sXG4gICAgZmlndXJlLFxuICAgIGZvb3RlcixcbiAgICBoZWFkZXIsXG4gICAgbWFpbixcbiAgICBtZW51LFxuICAgIG5hdixcbiAgICBzZWN0aW9uLFxuICAgIHN1bW1hcnkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgPDEwLlxuICAgICAqL1xuXG4gICAgYXVkaW8sXG4gICAgY2FudmFzLFxuICAgIHByb2dyZXNzLFxuICAgIHZpZGVvIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBpZiBzdXBwb3J0LWZvcihpZSwgNykge1xuICAgICAgICAqZGlzcGxheTogaW5saW5lO1xuICAgICAgICAqem9vbTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBhbmQgcmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDQtNy5cbiAgICAgKi9cblxuICAgIGF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gICAgICovXG5cbiAgICBwcm9ncmVzcyB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgPDExLCBTYWZhcmkgPDgsIGFuZCBGaXJlZm94IDwyMi5cbiAgICAgKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAgICAgKi9cblxuICAgIHRlbXBsYXRlLCAvKiAxICovXG4gICAgW2hpZGRlbl0ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGxpbmtzKSB7XG4gICAgLyogTGlua3NcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICAgICAqIDIuIFJlbW92ZSBnYXBzIGluIGxpbmtzIHVuZGVybGluZSBpbiBpT1MgOCsgYW5kIFNhZmFyaSA4Ky5cbiAgICAgKi9cblxuICAgIGEge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDEgKi9cbiAgICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgdGhlIG91dGxpbmUgb24gZm9jdXNlZCBsaW5rcyB3aGVuIHRoZXkgYXJlIGFsc28gYWN0aXZlIG9yIGhvdmVyZWRcbiAgICAgKiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAgICAgKi9cblxuICAgIGE6YWN0aXZlLFxuICAgIGE6aG92ZXIge1xuICAgICAgb3V0bGluZS13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKHRleHQpIHtcbiAgICAvKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKipcbiAgICAgKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCA8NDAuXG4gICAgICogMi4gQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIGFiYnJbdGl0bGVdIHtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIDEgKi9cbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8qIDIgKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cbiAgICAgKi9cblxuICAgIGIsXG4gICAgc3Ryb25nIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBiLFxuICAgIHN0cm9uZyB7XG4gICAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICAgICAqL1xuXG4gICAgY29kZSxcbiAgICBrYmQsXG4gICAgc2FtcCB7XG4gICAgICBAaW5jbHVkZSBfbm9ybWFsaXplLW1vbm9zcGFjZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgY29ycmVjdCBmb250IHN0eWxlIGluIEFuZHJvaWQgPDQuNC5cbiAgICAgKi9cblxuICAgIGRmbiB7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICAgICAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gICAgICovXG5cbiAgICBoMSB7XG4gICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoMS1mb250LXNpemUpO1xuICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICAvKiBTZXQgMSB1bml0IG9mIHZlcnRpY2FsIHJoeXRobSBvbiB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4gKi9cbiAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDEtZm9udC1zaXplKTtcbiAgICB9XG5cbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0gb3Igc3VwcG9ydC1mb3IoaWUsIDcpIHtcbiAgICAgIGgyIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDItZm9udC1zaXplKTtcbiAgICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGgyLWZvbnQtc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoMi1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoMyB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGgzLWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoMy1mb250LXNpemUpO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDMtZm9udC1zaXplKTtcbiAgICAgIH1cblxuICAgICAgaDQge1xuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtZm9udC1zaXplKCRoNC1mb250LXNpemUpO1xuICAgICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1saW5lLWhlaWdodCgkaDQtZm9udC1zaXplKTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbWFyZ2luKDEgMCwgJGg0LWZvbnQtc2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIGg1IHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWZvbnQtc2l6ZSgkaDUtZm9udC1zaXplKTtcbiAgICAgICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIHtcbiAgICAgICAgICBAaW5jbHVkZSBub3JtYWxpemUtbGluZS1oZWlnaHQoJGg1LWZvbnQtc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDAsICRoNS1mb250LXNpemUpO1xuICAgICAgfVxuXG4gICAgICBoNiB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1mb250LXNpemUoJGg2LWZvbnQtc2l6ZSk7XG4gICAgICAgIEBpZiAkbm9ybWFsaXplLXZlcnRpY2FsLXJoeXRobSB7XG4gICAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLWxpbmUtaGVpZ2h0KCRoNi1mb250LXNpemUpO1xuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwLCAkaDYtZm9udC1zaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdGhlIGNvcnJlY3QgYmFja2dyb3VuZCBhbmQgY29sb3IgaW4gSUUgPDEwLlxuICAgICAqL1xuXG4gICAgbWFyayB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICAgICAgY29sb3I6ICMwMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzbWFsbCB7XG4gICAgICBmb250LXNpemU6IDgwJTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAgICAgKiBhbGwgYnJvd3NlcnMuXG4gICAgICovXG5cbiAgICBzdWIsXG4gICAgc3VwIHtcbiAgICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgfVxuXG4gICAgc3ViIHtcbiAgICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgICB9XG5cbiAgICBzdXAge1xuICAgICAgdG9wOiAtMC41ZW07XG4gICAgfVxuICB9XG5cbiAgQGlmIF9ub3JtYWxpemUtaW5jbHVkZShlbWJlZGRlZCkge1xuICAgIC8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSA8MTEuXG4gICAgICovXG5cbiAgICBpbWcge1xuICAgICAgYm9yZGVyLXN0eWxlOiBub25lO1xuICAgICAgQGlmIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAgIC8qIEltcHJvdmUgaW1hZ2UgcXVhbGl0eSB3aGVuIHNjYWxlZCBpbiBJRSA3LiAqL1xuICAgICAgICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICAgICAqL1xuXG4gICAgc3ZnOm5vdCg6cm9vdCkge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGdyb3VwaW5nKSB7XG4gICAgLyogR3JvdXBpbmcgY29udGVudFxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0gb3Igc3VwcG9ydC1mb3IoaWUsIDcpIHtcbiAgICAgIC8qKlxuICAgICAgICogU2V0IDEgdW5pdCBvZiB2ZXJ0aWNhbCByaHl0aG0gb24gdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbi5cbiAgICAgICAqL1xuXG4gICAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxICRpbmRlbnQtYW1vdW50KTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIElFIDYvNy5cbiAgICAgICAqL1xuXG4gICAgICBkbCxcbiAgICAgIG1lbnUsXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgQGluY2x1ZGUgbm9ybWFsaXplLW1hcmdpbigxIDApO1xuICAgICAgfVxuXG4gICAgICBAaWYgJG5vcm1hbGl6ZS12ZXJ0aWNhbC1yaHl0aG0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVHVybiBvZmYgbWFyZ2lucyBvbiBuZXN0ZWQgbGlzdHMuXG4gICAgICAgICAqL1xuXG4gICAgICAgIG9sLFxuICAgICAgICB1bCB7XG4gICAgICAgICAgb2wsXG4gICAgICAgICAgdWwge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkZCB7XG4gICAgICAgIG1hcmdpbjogMCAwIDAgJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogQWRkcmVzcyBwYWRkaW5ncyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LlxuICAgICAgICovXG5cbiAgICAgIG1lbnUsXG4gICAgICBvbCxcbiAgICAgIHVsIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgJGluZGVudC1hbW91bnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAvKipcbiAgICAgICAqIENvcnJlY3QgbGlzdCBpbWFnZXMgaGFuZGxlZCBpbmNvcnJlY3RseSBpbiBJRSA3LlxuICAgICAgICovXG5cbiAgICAgIG5hdiB1bCxcbiAgICAgIG5hdiBvbCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICAgICAqL1xuXG4gICAgZmlndXJlIHtcbiAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAkaW5kZW50LWFtb3VudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAgICAgKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAgICAgKi9cblxuICAgIGhyIHtcbiAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gICAgICBoZWlnaHQ6IDA7IC8qIDEgKi9cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG4gICAgfVxuXG4gICAgQGlmICRub3JtYWxpemUtdmVydGljYWwtcmh5dGhtIG9yIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAvKipcbiAgICAgICAqIFNldCAxIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtIG9uIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW4uXG4gICAgICAgKi9cblxuICAgICAgcCxcbiAgICAgIHByZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vcm1hbGl6ZS1tYXJnaW4oMSAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmUge1xuICAgICAgQGluY2x1ZGUgX25vcm1hbGl6ZS1tb25vc3BhY2UoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgX25vcm1hbGl6ZS1pbmNsdWRlKGZvcm1zKSB7XG4gICAgLyogRm9ybXNcbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyoqXG4gICAgICogS25vd24gaXNzdWVzOlxuICAgICAqIC0gQnkgZGVmYXVsdCwgQ2hyb21lIG9uIE9TIFggYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZCBzdHlsaW5nIG9mXG4gICAgICogICBzZWxlY3QsIHVubGVzcyBhIGJvcmRlciBwcm9wZXJ0eSBpcyBzZXQuIFRoZSBkZWZhdWx0IGZvbnQgd2VpZ2h0IG9uXG4gICAgICogICBvcHRncm91cCBlbGVtZW50cyBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIG9uIE9TWCBhbmQgU2FmYXJpIG9uXG4gICAgICogICBPUyBYLlxuICAgICAqIC0gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG8gbm90IHN0eWxlIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1dHMgYXNcbiAgICAgKiAgIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICAgICAqIC0gQ2VydGFpbiBmb250IHNpemUgdmFsdWVzIGFwcGxpZWQgdG8gbnVtYmVyIGlucHV0cyBjYXVzZSB0aGUgY3Vyc29yIHN0eWxlIG9mXG4gICAgICogICB0aGUgZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBkZWZhdWx0IHRvIHRleHQuXG4gICAgICogLSBUaGUgc2VhcmNoIGlucHV0IGlzIG5vdCBmdWxseSBzdHlsYWJsZSBieSBkZWZhdWx0LiBJbiBDaHJvbWUgYW5kIFNhZmFyaSBvblxuICAgICAqICAgT1NYL2lPUyB5b3UgY2FuJ3QgY29udHJvbCBmb250LCBwYWRkaW5nLCBib3JkZXIsIG9yIGJhY2tncm91bmQuIEluIENocm9tZVxuICAgICAqICAgYW5kIFNhZmFyaSBvbiBXaW5kb3dzIHlvdSBjYW4ndCBjb250cm9sIGJvcmRlciBwcm9wZXJseS4gSXQgd2lsbCBhcHBseVxuICAgICAqICAgYm9yZGVyLXdpZHRoIGJ1dCB3aWxsIG9ubHkgc2hvdyBhIGJvcmRlciBjb2xvciAod2hpY2ggY2Fubm90IGJlIGNvbnRyb2xsZWQpXG4gICAgICogICBmb3IgdGhlIG91dGVyIDFweCBvZiB0aGF0IGJvcmRlci4gQXBwbHlpbmcgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGRcbiAgICAgKiAgIGFkZHJlc3NlcyB0aGVzZSBpc3N1ZXMgd2l0aG91dCByZW1vdmluZyB0aGUgYmVuZWZpdHMgb2Ygc2VhcmNoIGlucHV0cyAoZS5nLlxuICAgICAqICAgc2hvd2luZyBwYXN0IHNlYXJjaGVzKS4gU2FmYXJpIChidXQgbm90IENocm9tZSkgd2lsbCBjbGlwIHRoZSBjYW5jZWwgYnV0dG9uXG4gICAgICogICBvbiB3aGVuIGl0IGhhcyBwYWRkaW5nIChhbmQgdGV4dGZpZWxkIGFwcGVhcmFuY2UpLlxuICAgICAqL1xuXG4gICAgQGlmIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAvKipcbiAgICAgICAqIENvcnJlY3QgbWFyZ2luIGRpc3BsYXllZCBvZGRseSBpbiBJRSA2LzcuXG4gICAgICAgKi9cblxuICAgICAgZm9ybSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAgICAgKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gICAgICogMy4gQWRkcmVzcyBgZm9udC1mYW1pbHlgIGluY29uc2lzdGVuY3kgYmV0d2VlbiBgdGV4dGFyZWFgIGFuZCBvdGhlciBmb3JtIGluIElFIDdcbiAgICAgKiA0LiBJbXByb3ZlIGFwcGVhcmFuY2UgYW5kIGNvbnNpc3RlbmN5IHdpdGggSUUgNi83LlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIGlucHV0LFxuICAgIG9wdGdyb3VwLFxuICAgIHNlbGVjdCxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICBmb250OiBpbmhlcml0OyAvKiAxICovXG4gICAgICBtYXJnaW46IDA7IC8qIDIgKi9cbiAgICAgIEBpZiBzdXBwb3J0LWZvcihpZSwgNykge1xuICAgICAgICAqZm9udC1mYW1pbHk6ICRiYXNlLWZvbnQtZmFtaWx5OyAvKiAzICovXG4gICAgICAgICp2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiA0ICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gICAgICovXG5cbiAgICBidXR0b24ge1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gICAgICogMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIHNlbGVjdCB7IC8qIDEgKi9cbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICAgICAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cbiAgICAgKiAyLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICAgICAqL1xuXG4gICAgYnV0dG9uLFxuICAgIGh0bWwgW3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbiAgICBbdHlwZT1cInJlc2V0XCJdLFxuICAgIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gICAgfVxuXG4gICAgYnV0dG9uLFxuICAgIFt0eXBlPVwiYnV0dG9uXCJdLFxuICAgIFt0eXBlPVwicmVzZXRcIl0sXG4gICAgW3R5cGU9XCJzdWJtaXRcIl0ge1xuXG4gICAgICAvKipcbiAgICAgICAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gICAgICAgKi9cblxuICAgICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gICAgICAgKi9cblxuICAgICAgJjotbW96LWZvY3VzcmluZyB7XG4gICAgICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICAgICAqL1xuXG4gICAgaW5wdXQge1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBAaWYgc3VwcG9ydC1mb3IoZmlyZWZveCwgMjkpIHtcbiAgICAgICAgLy8gRmlyZWZveCBzZXRzIGBsaW5lLWhlaWdodGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluIHRoZSBVQSBzdHlsZXNoZWV0LlxuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDwxMS5cbiAgICAgKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgPDExLlxuICAgICAqIDMuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA3LlxuICAgICAqICAgIEtub3duIGlzc3VlOiBleGNlc3MgcGFkZGluZyByZW1haW5zIGluIElFIDYuXG4gICAgICovXG5cbiAgICBbdHlwZT1cImNoZWNrYm94XCJdLFxuICAgIFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICAgICAgcGFkZGluZzogMDsgLyogMiAqL1xuICAgICAgQGlmIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAgICpoZWlnaHQ6IDEzcHg7IC8qIDMgKi9cbiAgICAgICAgKndpZHRoOiAxM3B4OyAvKiAzICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lLlxuICAgICAqL1xuXG4gICAgW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG4gICAgW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICAgICAqL1xuXG4gICAgW3R5cGU9XCJzZWFyY2hcIl0ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiAyICovXG5cbiAgICAgIC8qKlxuICAgICAgICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGFuZCBjYW5jZWwgYnV0dG9ucyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICAgICAgICovXG5cbiAgICAgICY6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4gICAgICAmOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcnJlY3QgdGhlIHRleHQgc3R5bGUgb2YgcGxhY2Vob2xkZXJzIGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAgICAgKi9cblxuICAgIDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIG9wYWNpdHk6IDAuNTQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAgICAgKiAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG4gICAgICovXG5cbiAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG4gICAgICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIHRoZSBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gICAgICovXG5cbiAgICBmaWVsZHNldCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICAgICAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAgICAgKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gICAgICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gICAgICogNC4gQ29ycmVjdCBhbGlnbm1lbnQgZGlzcGxheWVkIG9kZGx5IGluIElFIDYvNy5cbiAgICAgKi9cblxuICAgIGxlZ2VuZCB7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gICAgICBkaXNwbGF5OiB0YWJsZTsgLyogMSAqL1xuICAgICAgbWF4LXdpZHRoOiAxMDAlOyAvKiAxICovXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOyAvKiAxICovXG4gICAgICBjb2xvcjogaW5oZXJpdDsgLyogMiAqL1xuICAgICAgcGFkZGluZzogMDsgLyogMyAqL1xuICAgICAgQGlmIHN1cHBvcnQtZm9yKGllLCA3KSB7XG4gICAgICAgICptYXJnaW4tbGVmdDogLTdweDsgLyogNCAqL1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IGEgcHJldmlvdXMgcnVsZS5cbiAgICAgKi9cblxuICAgIG9wdGdyb3VwIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUuXG4gICAgICovXG5cbiAgICB0ZXh0YXJlYSB7XG4gICAgICBvdmVyZmxvdzogYXV0bztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEltcG9ydCBOb3dcbi8vXG4vLyBJZiB5b3UgaW1wb3J0IHRoaXMgbW9kdWxlIGRpcmVjdGx5LCBpdCB3aWxsIGltbWVkaWF0ZWx5IG91dHB1dCBhbGwgdGhlIENTU1xuLy8gbmVlZGVkIHRvIG5vcm1hbGl6ZSBkZWZhdWx0IEhUTUwgZWxlbWVudHMgYWNyb3NzIGFsbCBicm93c2Vycy5cbi8vXG4vLyBgYGBcbi8vIEBpbXBvcnQgXCJub3JtYWxpemUvaW1wb3J0LW5vd1wiO1xuLy8gYGBgXG5cbkBpbXBvcnQgJy4uL25vcm1hbGl6ZSc7XG5AaW5jbHVkZSBub3JtYWxpemUoKTtcbiIsIip7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuYm9keSxodG1se1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgaGVpZ2h0OjEwMCU7XG59XG5cbmJvZHl7XG4gICAgZm9udC1zaXplOjYyLjUlO1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cblxuaHRtbCB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLmFyaWEtaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5cbi5ibG9ja3tcbiAgICBAZXh0ZW5kICVibG9jaztcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbn1cblxuLmRpc2FibGUtaG92ZXJ7XG4gICAgcG9pbnRlci1ldmVudHM6bm9uZTtcbn1cblxuYixzdHJvbmd7XG4gICAgZm9udC13ZWlnaHQ6NzAwO1xufVxuXG5pLGVte1xuICAgIGZvbnQtc3R5bGU6aXRhbGljO1xufVxuXG5pbnB1dCxidXR0b257XG4gICAgQGluY2x1ZGUgYXBwZWFyYW5jZShub25lKTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cblxuaW5wdXQ6Zm9jdXMsIHRleHRhcmVhOmZvY3VzLGJ1dHRvbixpbnB1dFt0eXBlPVwic3VibWl0XCJde1xuICAgIG91dGxpbmU6bm9uZTtcbn1cblxuYnV0dG9uLGlucHV0W3R5cGU9XCJzdWJtaXRcIl17XG4gICAgY3Vyc29yOnBvaW50ZXI7XG59XG5cbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA4cHg7XG59XG5cbi8qIFRyYWNrICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGRhcmspO1xufVxuXG4vKiBIYW5kbGUgKi9cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHBhbGV0dGUocHJpbWFyeSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vIERlZmF1bHQgVmFyaWFibGVzXG5cbi8vIFNsaWNrIGljb24gZW50aXR5IGNvZGVzIG91dHB1dHMgdGhlIGZvbGxvd2luZ1xuLy8gXCJcXDIxOTBcIiBvdXRwdXRzIGFzY2lpIGNoYXJhY3RlciBcIuKGkFwiXG4vLyBcIlxcMjE5MlwiIG91dHB1dHMgYXNjaWkgY2hhcmFjdGVyIFwi4oaSXCJcbi8vIFwiXFwyMDIyXCIgb3V0cHV0cyBhc2NpaSBjaGFyYWN0ZXIgXCLigKJcIlxuXG4kc2xpY2stZm9udC1wYXRoOiBcIi4vZm9udHMvXCIgIWRlZmF1bHQ7XG4kc2xpY2stZm9udC1mYW1pbHk6IFwic2xpY2tcIiAhZGVmYXVsdDtcbiRzbGljay1sb2FkZXItcGF0aDogXCIuL1wiICFkZWZhdWx0O1xuJHNsaWNrLWFycm93LWNvbG9yOiB3aGl0ZSAhZGVmYXVsdDtcbiRzbGljay1kb3QtY29sb3I6IGJsYWNrICFkZWZhdWx0O1xuJHNsaWNrLWRvdC1jb2xvci1hY3RpdmU6ICRzbGljay1kb3QtY29sb3IgIWRlZmF1bHQ7XG4kc2xpY2stcHJldi1jaGFyYWN0ZXI6IFwiXFwyMTkwXCIgIWRlZmF1bHQ7XG4kc2xpY2stbmV4dC1jaGFyYWN0ZXI6IFwiXFwyMTkyXCIgIWRlZmF1bHQ7XG4kc2xpY2stZG90LWNoYXJhY3RlcjogXCJcXDIwMjJcIiAhZGVmYXVsdDtcbiRzbGljay1kb3Qtc2l6ZTogNnB4ICFkZWZhdWx0O1xuJHNsaWNrLW9wYWNpdHktZGVmYXVsdDogMC43NSAhZGVmYXVsdDtcbiRzbGljay1vcGFjaXR5LW9uLWhvdmVyOiAxICFkZWZhdWx0O1xuJHNsaWNrLW9wYWNpdHktbm90LWFjdGl2ZTogMC4yNSAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNsaWNrLWltYWdlLXVybCgkdXJsKSB7XG4gICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbWFnZS11cmwpIHtcbiAgICAgICAgQHJldHVybiBpbWFnZS11cmwoJHVybCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICAgQHJldHVybiB1cmwoJHNsaWNrLWxvYWRlci1wYXRoICsgJHVybCk7XG4gICAgfVxufVxuXG5AZnVuY3Rpb24gc2xpY2stZm9udC11cmwoJHVybCkge1xuICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgQHJldHVybiBmb250LXVybCgkdXJsKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgICBAcmV0dXJuIHVybCgkc2xpY2stZm9udC1wYXRoICsgJHVybCk7XG4gICAgfVxufVxuXG4vKiBTbGlkZXIgKi9cblxuLy8gLnNsaWNrLWxpc3Qge1xuLy8gICAgIC5zbGljay1sb2FkaW5nICYge1xuLy8gICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmIHNsaWNrLWltYWdlLXVybChcImFqYXgtbG9hZGVyLmdpZlwiKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcbi8vICAgICB9XG4vLyB9XG5cbi8qIEljb25zICovXG4vLyBAaWYgJHNsaWNrLWZvbnQtZmFtaWx5ID09IFwic2xpY2tcIiB7XG4vLyAgICAgQGZvbnQtZmFjZSB7XG4vLyAgICAgICAgIGZvbnQtZmFtaWx5OiBcInNsaWNrXCI7XG4vLyAgICAgICAgIHNyYzogc2xpY2stZm9udC11cmwoXCJzbGljay5lb3RcIik7XG4vLyAgICAgICAgIHNyYzogc2xpY2stZm9udC11cmwoXCJzbGljay5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCBzbGljay1mb250LXVybChcInNsaWNrLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgc2xpY2stZm9udC11cmwoXCJzbGljay50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHNsaWNrLWZvbnQtdXJsKFwic2xpY2suc3ZnI3NsaWNrXCIpIGZvcm1hdChcInN2Z1wiKTtcbi8vICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbi8vICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuLy8gICAgIH1cbi8vIH1cblxuLyogQXJyb3dzICovXG5cbi5zbGljay1wcmV2LFxuLnNsaWNrLW5leHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDBweDtcbiAgICBmb250LXNpemU6IDBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvcDogNTAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LW9uLWhvdmVyO1xuICAgICAgICB9XG4gICAgfVxuICAgICYuc2xpY2stZGlzYWJsZWQ6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogJHNsaWNrLW9wYWNpdHktbm90LWFjdGl2ZTtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBmb250LWZhbWlseTogJHNsaWNrLWZvbnQtZmFtaWx5O1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBjb2xvcjogJHNsaWNrLWFycm93LWNvbG9yO1xuICAgICAgICBvcGFjaXR5OiAkc2xpY2stb3BhY2l0eS1kZWZhdWx0O1xuICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICB9XG59XG5cbi5zbGljay1wcmV2IHtcbiAgICBsZWZ0OiAtMjVweDtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogLTI1cHg7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJHNsaWNrLXByZXYtY2hhcmFjdGVyO1xuICAgICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAgICAgY29udGVudDogJHNsaWNrLW5leHQtY2hhcmFjdGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2xpY2stbmV4dCB7XG4gICAgcmlnaHQ6IC0yNXB4O1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIGxlZnQ6IC0yNXB4O1xuICAgICAgICByaWdodDogYXV0bztcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAkc2xpY2stbmV4dC1jaGFyYWN0ZXI7XG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgICBjb250ZW50OiAkc2xpY2stcHJldi1jaGFyYWN0ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIERvdHMgKi9cblxuLnNsaWNrLWRvdHRlZC5zbGljay1zbGlkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG59XG5cbi5zbGljay1kb3RzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtMjVweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBsaSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBtYXJnaW46IDAgNXB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDBweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMHB4O1xuICAgICAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgcGFkZGluZzogNXB4O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LW9uLWhvdmVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgY29udGVudDogJHNsaWNrLWRvdC1jaGFyYWN0ZXI7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAkc2xpY2stZm9udC1mYW1pbHk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkc2xpY2stZG90LXNpemU7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkc2xpY2stZG90LWNvbG9yO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LW5vdC1hY3RpdmU7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgICAgICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLnNsaWNrLWFjdGl2ZSBidXR0b246YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbG9yOiAkc2xpY2stZG90LWNvbG9yLWFjdGl2ZTtcbiAgICAgICAgICAgIG9wYWNpdHk6ICRzbGljay1vcGFjaXR5LWRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKiBTbGlkZXIgKi9cblxuLnNsaWNrLXNsaWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy10b3VjaC1hY3Rpb246IHBhbi15O1xuICAgIHRvdWNoLWFjdGlvbjogcGFuLXk7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5zbGljay1saXN0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cblxuICAgICYuZHJhZ2dpbmcge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGN1cnNvcjogaGFuZDtcbiAgICB9XG59XG4uc2xpY2stc2xpZGVyIC5zbGljay10cmFjayxcbi5zbGljay1zbGlkZXIgLnNsaWNrLWxpc3Qge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xufVxuXG4uc2xpY2stdHJhY2sge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuXG4gICAgLnNsaWNrLWxvYWRpbmcgJiB7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG59XG4uc2xpY2stc2xpZGUge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgICBpbWcge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgJi5zbGljay1sb2FkaW5nIGltZyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuZHJhZ2dpbmcgaW1nIHtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgLnNsaWNrLWluaXRpYWxpemVkICYge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuc2xpY2stbG9hZGluZyAmIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cblxuICAgIC5zbGljay12ZXJ0aWNhbCAmIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuLnNsaWNrLWFycm93LnNsaWNrLWhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbiIsImJ1dHRvbi5jdGEge1xuICAgIGZvbnQtc2l6ZTogMi40ZW07XG4gICAgY29sb3I6IHBhbGV0dGUocHJpbWFyeSk7XG4gICAgZm9udC1mYW1pbHk6IHR5cGUoYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAyLjUlO1xuICAgIHNwYW4sXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgICBzdmcge1xuICAgICAgICBmaWxsOiBwYWxldHRlKHByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tdG9wOiAtNXB4O1xuICAgICAgICBAZXh0ZW5kICVkZWZhdWx0LXRyYW5zaXRpb247XG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHBhZGRpbmc6IDAgMC4yNWVtO1xuICAgICAgICAmOmFmdGVyLFxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHByaW1hcnkpO1xuICAgICAgICB9XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA3cHggYXV0byBhdXRvIDBweCk7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgYXV0byBhdXRvIDEycHggMHB4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi5uby10b3VjaGV2ZW50cyB7XG4gICAgYnV0dG9uLmN0YTpob3ZlciB7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgfVxuICAgIH0gICBcbn0iLCJwIHtcbiAgICBmb250LXNpemU6IDEuNmVtO1xuICAgIGZvbnQtZmFtaWx5OiB0eXBlKHJlZ3VsYXIpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQzNzVlbTtcbn0iLCJzZWN0aW9uLmJsb2NrLXRleHR7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZzogMCA1JTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGxpZ2h0KTtcbiAgICBwIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUocHJpbWFyeSk7XG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIHNlY3Rpb24uYmxvY2stdGV4dCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbn0iLCJkaXYuY29weS1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDNlbSA1JTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKDAuNzVzKTtcbiAgICBoMyB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB0eXBlKGJvbGQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBjb2xvcjogcGFsZXR0ZShwcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAzLjZlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBwYWxldHRlKHByaW1hcnkpO1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDVweCBhdXRvIGF1dG8gLTEyLjVweCk7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKC00NWRlZykpO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIH1cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nOjAgMC4yNWVtO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMzAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlcixcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShwcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgNnB4IGF1dG8gYXV0byAwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gYXV0byAxM3B4IDBweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcCB7XG4gICAgICAgIGNvbG9yOiBwYWxldHRlKHByaW1hcnkpO1xuICAgIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM3LjVlbSkge1xuICAgIGRpdi5jb3B5LWNvbnRhaW5lciB7XG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNC44ZW07XG4gICAgICAgICAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgICAgICAgICBzcGFuOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogOHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAxN3B4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gICAgZGl2LmNvcHktY29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDEwJSkpO1xuICAgICAgICAmLnNsaWRlLXVwIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDAlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2VjdGlvbi5taWxlLW9uZSxcbiAgICBzZWN0aW9uLm1pbGUtdGhyZWUsXG4gICAgc2VjdGlvbi5taWxlLWZpdmUsXG4gICAgc2VjdGlvbi5taWxlLXNldmVuIHtcbiAgICAgICAgLmNvcHktY29udGFpbmVyIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA3LjUlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS10d28ge1xuICAgICAgICAuY29weS1jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1JTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWN0aW9uLm1pbGUtZm91cixcbiAgICBzZWN0aW9uLm1pbGUtc2l4IHtcbiAgICAgICAgZGl2LmNvcHktY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiA2MCU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMjUlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS10aHJlZSB7XG4gICAgICAgIGRpdi5jb3B5LWNvbnRhaW5lciBwIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNSU7XG4gICAgICAgIH1cbiAgICB9XG59Iiwic2VjdGlvbi5jdGEtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nOiAyLjUlIDA7XG4gICAgdWwge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG4gICAgbGkge1xuICAgICAgICBwYWRkaW5nOiAwIDIuNSU7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDpcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwMCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMTJweCBhdXRvIGF1dG8gMHB4KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUobGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHAge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZShwcmltYXJ5KTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyLjUlO1xuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDo0My43NWVtKSB7XG4gICAgc2VjdGlvbi5jdGEtY29udGFpbmVyIHtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheShmbGV4KTtcbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMzMuMzMzMzMzJTtcbiAgICAgICAgfVxuICAgICAgICBwIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDUlO1xuICAgICAgICB9XG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIHNlY3Rpb24uY3RhLWNvbnRhaW5lciB7XG4gICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA0NSUgYXV0byBhdXRvIDAlKTtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBjb2xvcjogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgbGk6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbi5jdGEge1xuICAgICAgICAgICAgZm9udC1zaXplOiA0LjhlbTtcbiAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlKGxpZ2h0KTtcbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuOmFmdGVyLFxuICAgICAgICAgICAgc3BhbjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUobGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3BhbjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIHRvcDogMTVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW46YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMjNweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgZmlsbDogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59Iiwic2VjdGlvbi5sb2dvLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgaGVpZ2h0OiAxMGVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUocHJpbWFyeSwgbGlnaHQpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBpbWcge1xuICAgICAgICBoZWlnaHQ6IDVlbTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBAZXh0ZW5kICVhYnNvbHV0ZS1taWRkbGU7XG4gICAgfVxufSIsInNlY3Rpb24ubWFwIHtcbiAgICBnLm1pbGUtb25lLFxuICAgIGcubWlsZS10d28sXG4gICAgZy5taWxlLXRocmVlLFxuICAgIGcubWlsZS1mb3VyLFxuICAgIGcubWlsZS1maXZlLFxuICAgIGcubWlsZS1zaXgsXG4gICAgZy5taWxlLXNldmVuIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG59XG5cbnNlY3Rpb24ubWFwLmluLXZpZXcge1xuICAgIGcubWlsZS1vbmUge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMXMgZWFzZS1pbiAwcyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIGcubWlsZS10d28ge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMXMgZWFzZS1pbiAwLjI1cyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIGcubWlsZS10aHJlZSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAxcyBlYXNlLWluIDAuNXMpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICBnLm1pbGUtZm91ciB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAxcyBlYXNlLWluIDAuNzVzKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgZy5taWxlLWZpdmUge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMXMgZWFzZS1pbiAxcyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIGcubWlsZS1zaXgge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMXMgZWFzZS1pbiAxLjI1cyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIGcubWlsZS1zZXZlbiB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAxcyBlYXNlLWluIDEuNXMpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn0iLCJ1bC5tYXJrZXJzLW5hdiB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDEwJTtcbiAgICB3aWR0aDogOTAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogODklO1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDUwJSBhdXRvIGF1dG8gMHB4KTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICB9XG4gICAgbGkge1xuICAgICAgICB3aWR0aDogMTQuMjglO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUobGlnaHQpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHBhbGV0dGUobGlnaHQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgNTAlIGF1dG8gYXV0byAwcHgpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtMzcuNSUpKTtcbiAgICAgICAgICAgIEBleHRlbmQgJWRlZmF1bHQtdHJhbnNpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA1cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgNTAlIGF1dG8gYXV0byAwcHgpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgICB9XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGxpOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgbGVmdDogNXB4O1xuICAgICAgICB9XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTEwJSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHAge1xuICAgICAgICB3aWR0aDogN2VtO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS40ZW07XG4gICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA1MSUgYXV0byBhdXRvIDk3LjUlKTtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgICB1bC5tYXJrZXJzLW5hdiB7XG4gICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgaGVpZ2h0OiA4NiU7XG4gICAgICAgICAgICB3aWR0aDogMXB4O1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDclIGF1dG8gYXV0byA1MCUpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgICB9XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGhlaWdodDogMTQuMjglO1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA1MCUgYXV0byBhdXRvIDUwJSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDM1cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA1MCUgYXV0byBhdXRvIDUwJSk7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmFjdGl2ZTpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGk6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufSIsInVsLm1hcmtlcnMge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsaSB7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHBhbGV0dGUobGlnaHQpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGNvbG9yOiBwYWxldHRlKGxpZ2h0KTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA1cHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICBAZXh0ZW5kICVhYnNvbHV0ZS1taWRkbGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcCB7XG4gICAgICAgIHdpZHRoOiA3ZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDU1JSBhdXRvIGF1dG8gMTM1JSk7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9XG59XG5cbi5tYXJrZXItY29udGFpbmVyIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWcvbW9iaWxlLW1hcC5qcGcnKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgcGFkZGluZy10b3A6IDEwMCU7XG4gICAgei1pbmRleDogMDtcbiAgICBzdmcge1xuICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMHB4IGF1dG8gYXV0byAwcHgpO1xuICAgICAgICBnIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLmRlc2t0b3AtcGF0aCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5cblxuXG5AbWVkaWEgYWxsIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkge1xuICAgIC5tYXJrZXItY29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1nL2Rlc2t0b3AtbWFwLmpwZycpO1xuICAgICAgICBwYWRkaW5nLXRvcDogNjYuNzYlO1xuICAgICAgICAmLmRlc2t0b3AtcGF0aCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICAmLm1vYmlsZS1wYXRoIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59IiwiZGl2LnBob3RvLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG51bC5waG90by1nYWxsZXJ5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKDAuNzVzKTtcbiAgICBsaSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICBtYXJnaW46IDAgMTBweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcGFsZXR0ZShwcmltYXJ5KTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGkuc2xpY2stYWN0aXZlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG4gICAgLnNsaWNrLXByZXYsXG4gICAgLnNsaWNrLW5leHQge1xuICAgICAgICB3aWR0aDogNTBweDtcbiAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICBAZXh0ZW5kICVhYnNvbHV0ZS1taWRkbGU7XG4gICAgICAgICAgICBmaWxsOiBwYWxldHRlKHByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5zbGljay1wcmV2IHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgxODBkZWcpIHRyYW5zbGF0ZSgwLCA1MCUpKTtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbig1MCUgNTAlKTtcbiAgICAgICAgbGVmdDogLTUwcHg7XG4gICAgfVxuICAgIC5zbGljay1uZXh0IHtcbiAgICAgICAgcmlnaHQ6IC01MHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIHNlY3Rpb24ubWlsZSB7XG4gICAgICAgIHVsLnBob3RvLWdhbGxlcnkge1xuICAgICAgICAgICAgd2lkdGg6IDg4JTtcbiAgICAgICAgICAgIG1hcmdpbjogMCA2JTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDEwJSkpO1xuICAgICAgICAgICAgJi5zbGlkZS11cCB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMCUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1bC5waG90by1nYWxsZXJ5IGxpIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS1vbmUge1xuICAgICAgICB1bC5waG90by1nYWxsZXJ5IHtcbiAgICAgICAgICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNjAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDM3LjUlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyLjUlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgxMDAlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWN0aW9uLm1pbGUtdHdvLFxuICAgIHNlY3Rpb24ubWlsZS1maXZlIHtcbiAgICAgICAgdWwucGhvdG8tZ2FsbGVyeSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGk6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNSU7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpOm50aC1jaGlsZCgyKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGk6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzUlO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCBhdXRvIDBweCAtODAlIGF1dG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS1maXZlIHtcbiAgICAgICAgdWwucGhvdG8tZ2FsbGVyeSBsaTpudGgtY2hpbGQoMikge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWN0aW9uLm1pbGUtdGhyZWUge1xuICAgICAgICB1bC5waG90by1nYWxsZXJ5IHtcbiAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICBtYXJnaW46IDAgMTAlO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWN0aW9uLm1pbGUtZm91cixcbiAgICBzZWN0aW9uLm1pbGUtc2l4IHtcbiAgICAgICAgdWwucGhvdG8tZ2FsbGVyeSB7XG4gICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDI1JTtcbiAgICAgICAgICAgIC5zbGljay1wcmV2IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtMjAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNsaWNrLW5leHQge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMjAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS1zZXZlbiB7XG4gICAgICAgIHVsLnBob3RvLWdhbGxlcnkge1xuICAgICAgICAgICAgd2lkdGg6IDgwJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCAxMCU7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMDAlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zbGljay1wcmV2IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiAtMjAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNsaWNrLW5leHQge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtMjAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsImRpdi5xdW90ZS1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oMC43NXMpO1xuICAgIGg0IHtcbiAgICAgICAgY29sb3I6IHJnYmEocGFsZXR0ZShwcmltYXJ5KSwgMC4yMCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMi40ZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDUlO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDpcIlwiO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1nL2xpbmUtYXJyb3cuc3ZnJyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxMzAlO1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gMTBweCAtMTUlIGF1dG8pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNwYW4ge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDpcIlwiO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTEwJTtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1nL2Rhc2hlZC1saW5lLnBuZycpO1xuICAgICAgICAgICAgYm9yZGVyLWltYWdlLXJlcGVhdDogcmVwZWF0O1xuICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gLTZweCA2cHggYXV0byk7XG4gICAgICAgIH1cbiAgICB9XG59XG4udGV4dHN0cm9rZSB7XG4gICAgZGl2LnF1b3RlLWNvbnRhaW5lci5rbm9ja291dCB7XG4gICAgICAgIGg0IHtcbiAgICAgICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1zdHJva2U6IDFweCByZ2JhKHBhbGV0dGUocHJpbWFyeSksIDAuNzUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5zZWN0aW9uLm1pbGUtdGhyZWUgZGl2LnF1b3RlLWNvbnRhaW5lciBoNCxcbnNlY3Rpb24ubWlsZS1zaXggZGl2LnF1b3RlLWNvbnRhaW5lciBoNCB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDUlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gYXV0byAtMTUlIDAuNGVtKTtcbiAgICB9XG4gICAgc3BhbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbn1cbnNlY3Rpb24ubWlsZS1mb3VyIHtcbiAgICBkaXYucXVvdGUtY29udGFpbmVyIGg0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgcmlnaHQ6IDIyLjVweDtcbiAgICAgICAgfVxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0My43NWVtKSB7XG4gICAgZGl2LnF1b3RlLWNvbnRhaW5lciB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgZm9udC1zaXplOiA1LjVlbTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE1cHg7XG4gICAgICAgICAgICAgICAgcmlnaHQ6IC0xMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwNSU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAxMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS1vbmUge1xuICAgICAgICBkaXYucXVvdGUtY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiA4OCU7XG4gICAgICAgICAgICBtYXJnaW46IDAgNiU7XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA0LjhlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW46bnRoLWNoaWxkKDIpLFxuICAgICAgICAgICAgc3BhbjpudGgtY2hpbGQoNCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWN0aW9uLm1pbGUtdGhyZWUge1xuICAgICAgICBkaXYucXVvdGUtY29udGFpbmVyIHtcbiAgICAgICAgICAgIHdpZHRoOiA2NSU7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDUlO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTEuODE4MTgxODE4ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2VjdGlvbi5taWxlLWZvdXIge1xuICAgICAgICBkaXYucXVvdGUtY29udGFpbmVyIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1JTtcbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDQuOGVtO1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTRlbTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICByaWdodDogLTEwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS1zaXgge1xuICAgICAgICBkaXYucXVvdGUtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICAgIHdpZHRoOiA3NSU7XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMi41ZW07XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwLjU1ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIGRpdi5xdW90ZS1jb250YWluZXIge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgxMCUpKTtcbiAgICAgICAgJi5zbGlkZS11cCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwJSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNlY3Rpb24ubWlsZS1mb3VyIGRpdi5xdW90ZS1jb250YWluZXIge1xuICAgICAgICBoNCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDUuNWVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA3MGVtKSB7XG4gICAgc2VjdGlvbi5taWxlLW9uZSB7XG4gICAgICAgIGRpdi5xdW90ZS1jb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBoNCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA1LjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzZWN0aW9uLm1pbGUtZm91ciBkaXYucXVvdGUtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufSIsImRpdi52aWRlby1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHotaW5kZXg6IC0xMDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICB2aWRlbyB7XG4gICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgQGV4dGVuZCAlYWJzb2x1dGUtbWlkZGxlO1xuICAgIH1cbn0iLCJmb290ZXIubWFpbi1mb290ZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbnNlY3Rpb24uZm9vdGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtaW4taGVpZ2h0OiA4MHZoO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltZy9mb290ZXItYmcuanBnJyk7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMHB4IGF1dG8gYXV0byAwcHgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHBhbGV0dGUoZGFyayksMC4zKTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICB9XG4gICAgaDIge1xuICAgICAgICBmb250LWZhbWlseTogdHlwZShib2xkKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgY29sb3I6IHJnYmEocGFsZXR0ZShncmV5KSwgMC41KTtcbiAgICAgICAgZm9udC1zaXplOiAzLjZlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgYXV0byBhdXRvIDUlIDUwJSk7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgLXdlYmtpdC10ZXh0LXN0cm9rZTogMnB4IHJnYmEocGFsZXR0ZShsaWdodCksIDAuNzUpO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDUlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDtcbiAgICAgICAgICAgICY6YWZ0ZXIsXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDpcIlwiO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUobGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA1cHggYXV0byBhdXRvIDBweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgYXV0byBhdXRvIDExcHggMHB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMzcuNWVtKSB7XG4gICAgc2VjdGlvbi5mb290ZXIge1xuICAgICAgICBoMiB7XG4gICAgICAgICAgICB3aWR0aDogNzAlO1xuICAgICAgICAgICAgZm9udC1zaXplOiA3ZW07XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgNTAlIGF1dG8gYXV0byA1MCUpO1xuICAgICAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICAgICAgICAmOmFmdGVyLFxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGxpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMTFweCBhdXRvIGF1dG8gMHB4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCBhdXRvIGF1dG8gMjJweCAwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgJjphZnRlcixcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIHNlY3Rpb24uZm9vdGVyIHtcbiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgICAgIGgyIHtcbiAgICAgICAgICAgIHRvcDogNDAlO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59IiwiaGVhZGVyLm1haW4taGVhZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogbGVmdDtcbn1cbnNlY3Rpb24uc3BsYXNoIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtaW4taGVpZ2h0OiA4MHZoO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltZy9zcGxhc2gtYmcuanBnJyk7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgMHB4IGF1dG8gYXV0byAwcHgpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHBhbGV0dGUoZGFyayksMC4zKTtcbiAgICAgICAgei1pbmRleDogMDtcbiAgICB9XG4gICAgaW1nIHtcbiAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gYXV0byA1JSA1JSk7XG4gICAgICAgIHdpZHRoOiAxMGVtO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuICAgIGgxIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IHR5cGUoYm9sZCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiByZ2JhKHBhbGV0dGUoZ3JleSksIDAuNSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMy42ZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gYXV0byA0LjI1JSBjYWxjKDUlICsgMTEwcHgpKTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgLXdlYmtpdC10ZXh0LXN0cm9rZTogMnB4IHJnYmEocGFsZXR0ZShsaWdodCksIDAuNzUpO1xuICAgICAgICBtYXgtd2lkdGg6IDNlbTtcbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuMTBlbTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7XG4gICAgICAgICAgICAmOmFmdGVyLFxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKGxpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgNXB4IGF1dG8gYXV0byAwcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIGF1dG8gYXV0byAxMXB4IDBweCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4ubm8tdG91Y2hldmVudHMge1xuICAgIHNlY3Rpb24uc3BsYXNoIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1nL2hvbWUtcGFnZS12aWRlby1wb3N0ZXIucG5nJyk7XG4gICAgICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG4gICAgICAgICYudmlkZW8tbG9hZGVkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICAgIH0gICAgXG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIC50b3VjaGV2ZW50cyBzZWN0aW9uLnNwbGFzaCB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltZy9ob21lLXBhZ2UtdmlkZW8tcG9zdGVyLnBuZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xuICAgICAgICAmLnZpZGVvLWxvYWRlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgICB9IFxuICAgIH1cbn1cbmJ1dHRvbi5zY3JvbGwge1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCBhdXRvIGF1dG8gNSUgNDAlKTtcbiAgICB3aWR0aDogNGVtO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgZmlsbDogcGFsZXR0ZShsaWdodCk7XG4gICAgfVxufVxuQG1lZGlhIGFsbCBhbmQgKG1heC1oZWlnaHQ6IDcwMHB4KSB7XG4gICAgYnV0dG9uLnNjcm9sbCB7XG4gICAgICAgIGxlZnQ6IDE5LjUlO1xuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIHNlY3Rpb24uc3BsYXNoIHtcbiAgICAgICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTRlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA0MCUgYXV0byBhdXRvIDE1JSk7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICAgIH1cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC1zaXplOiA3ZW07XG4gICAgICAgICAgICBAaW5jbHVkZSBwb3NpdGlvbihhYnNvbHV0ZSwgNDAlIGF1dG8gYXV0byBjYWxjKDE1JSArIDE1MHB4KSk7XG4gICAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwZW07XG4gICAgICAgICAgICBzcGFuOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDUwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogLTAuMTBlbSAwO1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAxMXB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAyM3B4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBidXR0b24uc2Nyb2xsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIGhlYWRlci5tYWluLWhlYWRlciBzZWN0aW9uLmJsb2NrLXRleHQge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA0OSUgYXV0byBhdXRvIGNhbGMoMTUlICsgMTYwcHgpKTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWF4LXdpZHRoOiA1NWVtO1xuICAgICAgICBwIHtcbiAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlKGxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCJzZWN0aW9uLm1hcCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGl2LmNvcHktY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogM2VtIDUlO1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDIuNmVtO1xuICAgICAgICAgICAgIC13ZWJraXQtdGV4dC1zdHJva2U6IDBweCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgc3BhbjpiZWZvcmUsXG4gICAgICAgICAgICAgc3BhbjphZnRlciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBjb2xvcjogcGFsZXR0ZShwcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMzcuNWVtKSB7XG4gICAgc2VjdGlvbi5tYXAge1xuICAgICAgICBkaXYuY29weS1jb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDcwJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCAxNSU7XG4gICAgICAgIH1cbiAgICB9XG59XG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA3MGVtKSB7XG4gICAgc2VjdGlvbi5tYXAge1xuICAgICAgICBkaXYuY29weS1jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2lkdGg6IDM3LjUlO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uKGFic29sdXRlLCA2MCUgNSUgYXV0byBhdXRvKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC00MCUpKTtcbiAgICAgICAgICAgICYuc2xpZGUtdXAge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZShsaWdodCk7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA0LjhlbTtcbiAgICAgICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogLTAuMTBlbSAwO1xuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyLFxuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHBhbGV0dGUobGlnaHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogOHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAxNnB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUobGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSIsIm5hdi5tYWluLW5hdiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAzZW07XG4gICAgQGluY2x1ZGUgcG9zaXRpb24oZml4ZWQsIDBweCBhdXRvIGF1dG8gMHB4KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBwYWxldHRlKHByaW1hcnkpO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgQGV4dGVuZCAlZGVmYXVsdC10cmFuc2l0aW9uO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgJi5yZXZlYWwge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjRlbSkge1xuICAgIG5hdi5tYWluLW5hdiB7XG4gICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWcvbWFwLXRpbGUuanBnJyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogNTBweCA1MHB4O1xuICAgIH1cbiAgICAubm8tdG91Y2hldmVudHMge1xuICAgICAgICBuYXYubWFpbi1uYXY6aG92ZXIge1xuICAgICAgICAgICAgd2lkdGg6IDE1MHB4O1xuICAgICAgICB9XG4gICAgfVxufSIsIm1haW4uaW5kZXgge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltZy9iZy10aWxlLmpwZycpO1xufVxuXG5zZWN0aW9uLm1pbGUge1xuICAgIG1hcmdpbjogNGVtIDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDc1ZW0pIHtcbiAgICBzZWN0aW9uLm1pbGUgLmJsb2NrIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMTAwcHg7XG4gICAgfVxufSJdLCJtYXBwaW5ncyI6IjtBQ0FBOzt3Q0FFd0M7QXdGQ3RDLEFBQUEsSUFBSSxDQUFDO0VBQ0gsVUFBVSxFQUFFLFVBQVcsR0FDeEI7O0FBRUQsQUFBQSxDQUFDLEVBQUQsQUFBQSxDQUFDLEFBRUUsT0FBTyxFQUZWLEFBQUEsQ0FBQyxBQUdFLFFBQVEsQ0FBQztFQUNSLFVBQVUsRUFBRSxPQUFRLEdBQ3JCOztBeEY4Qkw7O3dDQUV3QztBQVV4Qzs7d0NBRXdDO0FBS3hDOzt3Q0FFd0M7QUFTeEM7O3dDQUV3QztBQVN4Qzs7d0NBRXdDO0EyRzVEeEMsQTNHNkRBLE0yRzdETSxDM0c2REE7RUFDRixTQUFTLEVBN0JOLE1BQU07RUE4QlQsS0FBSyxFQUFDLElBQUs7RUFDWCxNQUFNLEVBQUMsTUFBTztFQUNkLE9BQU8sRUFBQyxLQUFNLEdBQ2pCOztBOEczRkQsQTlHa0dBLE04R2xHTSxBQUFBLElBQUksQ0FjTixHQUFHLEVPZFAsQXJIa0dBLEVxSGxHRSxBQUFBLFlBQVksQ0FrQlYsRUFBRSxBQVdHLE9BQU8sRVE3QmhCLEE3SGtHQSxHNkhsR0csQUFBQSxTQUFTLEM3SGtHTztFdUUvRFgsa0JBQW9CLEV2RWdFSixHQUFHLENBQUMsSUFBRyxDQUFDLFdBQVc7RXVFNURuQyxlQUFpQixFdkU0REQsR0FBRyxDQUFDLElBQUcsQ0FBQyxXQUFXO0V1RWhEbkMsVUFBWSxFdkVnREksR0FBRyxDQUFDLElBQUcsQ0FBQyxXQUFXLEdBQzFDOztBbUhwR0QsQW5IK0dBLE9tSC9HTyxBQUFBLGVBQWUsQ0FNbEIsR0FBRyxFR05QLEF0SCtHQSxFc0gvR0UsQUFBQSxRQUFRLENBUU4sRUFBRSxBQVNHLE1BQU0sRUNiZixBdkgyR0EsRXVIM0dFLEFBQUEsY0FBYyxDQXFCWixXQUFXLENBSVAsR0FBRztBQXpCWCxBdkgyR0EsRXVIM0dFLEFBQUEsY0FB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ZCxFQUFFLENBR0UsSUFBSSxBQVdDLE1BQU0sQ0FBQztVQUNKLE1BQU0sRUFBRSxJQUFLLEdBQ2hCO0lBMUJqQixBQTZCUSxPQTdCRCxBQUFBLElBQUksQ0FDUCxHQUFHLEFBQUEsZUFBZSxDQTRCZCxDQUFDLENBQUM7TUFDRSxLQUFLLEU1SGxETCxJQUFJLEc0SG1EUDs7QUN0RWIsQUFBRyxHQUFBLEFBQUEsU0FBUyxDQUFDO0VBQ1QsS0FBSyxFQUFFLElBQUs7RUFDWixNQUFNLEVBQUUsR0FBSTtFdkRzQ2QsUUFBUSxFdURyQ1ksS0FBSztFdkR5Q3JCLEdBQVUsRXVEekNhLEdBQUc7RXZEeUMxQixLQUFVLEV1RHpDaUIsSUFBSTtFdkR5Qy9CLE1BQVUsRXVEekNzQixJQUFJO0V2RHlDcEMsSUFBVSxFdUR6QzJCLEdBQUc7RUFDMUMsZ0JBQWdCLEU3SE9KLE9BQU87RTZITm5CLE9BQU8sRUFBRSxFQUFHO0VBQ1osT0FBTyxFQUFFLENBQUU7RUFFWCxRQUFRLEVBQUUsTUFBTyxHQUlwQjtFQVpELEFBQUcsR0FBQSxBQUFBLFNBQVMsQUFTUCxPQUFPLENBQUM7SUFDTCxPQUFPLEVBQUUsQ0FBRSxHQUNkOztBQUdMLE1BQU0sQ0FBTixHQUFHLE1BQU0sU0FBUyxFQUFFLElBQUk7RUFDcEIsQUFBRyxHQUFBLEFBQUEsU0FBUyxDQUFDO0lBQ1QsS0FBSyxFQUFFLElBQUs7SUFDWixNQUFNLEVBQUUsS0FBTTtJQUNkLFVBQVUsRUFBRSx3QkFBRztJQUNmLGVBQWUsRUFBRSxTQUFVLEdBQzlCO0VBQ0QsQUFDZ0IsZUFERCxDQUNYLEdBQUcsQUFBQSxTQUFTLEFBQUEsTUFBTSxDQUFDO0lBQ2YsS0FBSyxFQUFFLEtBQU0sR0FDaEI7O0FDeEJULEFBQUksSUFBQSxBQUFBLE1BQU0sQ0FBQztFQUNQLEtBQUssRUFBRSxJQUFLO0VBQ1osS0FBSyxFQUFFLElBQUs7RUFDWixnQkFBZ0IsRUFBRSx1QkFBRyxHQUN4Qjs7QUFFRCxBQUFPLE9BQUEsQUFBQSxLQUFLLENBQUM7RUFDVCxNQUFNLEVBQUUsS0FBTTtFQUNkLEtBQUssRUFBRSxJQUFLO0VBQ1osS0FBSyxFQUFFLElBQUs7RUFDWixVQUFVLEVBQUUsS0FBTSxHQUNyQjs7QUFFRCxNQUFNLENBQU4sR0FBRyxNQUFNLFNBQVMsRUFBRSxJQUFJO0VBQ3BCLEFBQWEsT0FBTixBQUFBLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDaEIsU0FBUyxFQUFFLE1BQU8sR0FDckIiLCJuYW1lcyI6W119 */
