/**
 * Foundation for Sites
 * Version 6.6.3
 * https://get.foundation
 * Licensed under MIT Open Source
 */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* Flex-flow is short hand for "flex-direction" & "flex-wrap" */
/* Flex-direction - Column */
/* Flex-direction - Row */
/* Align Items - Stretch */
/* Align Items - Center */
/* ============================================================= */
/* ============================================================= */
/* Clearfix */
/* Revert clearfix */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* ============================================================= */
/* Eric Meyer's CSS Reset */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, main {
  display: block;
}

body {
  line-height: 1;
}

ol, ul {
  list-style: none;
}

blockquote, q {
  quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* End of Eric Meyer's CSS Reset */
*:focus {
  outline: none;
}

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10.
 */
button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8+, and Opera
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  /* 2 */
  box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

.block {
  display: block;
}

.left {
  float: left;
}

.right {
  float: right;
}

.visible {
  overflow: visible !important;
}

.text-center {
  text-align: center;
}

.text-right {
  text-align: right;
}

.hide {
  display: none !important;
}

.full-width {
  width: 100%;
}

.full-height {
  height: 100%;
}

.inline-list {
  display: inline-block;
  vertical-align: middle;
}

.inline-list--top {
  vertical-align: top !important;
}

.inline-list > li {
  display: inline-block;
}

.img-render {
  image-rendering: crisp-edges;
  image-rendering: -moz-crisp-edges;
  /* Firefox */
  image-rendering: -o-crisp-edges;
  /* Opera */
  image-rendering: -webkit-optimize-contrast;
  /* Webkit (non-standard naming)*/
  -ms-interpolation-mode: nearest-neighbor;
  /* IE (non-standard property) */
}

.no-scroll {
  overflow: hidden;
}

.mr-auto {
  margin-right: auto;
}

.ml-auto {
  margin-left: auto;
}

.mt-1 {
  margin-top: 1rem;
}

.mt-2 {
  margin-top: 2rem;
}

.mt-3 {
  margin-top: 3rem;
}

.mt-4 {
  margin-top: 4rem;
}

.mt-5 {
  margin-top: 5rem;
}

.mb-1 {
  margin-bottom: 1rem;
}

.mb-2 {
  margin-bottom: 2rem;
}

.mb-3 {
  margin-bottom: 3rem;
}

.mb-4 {
  margin-bottom: 4rem;
}

.mb-5 {
  margin-bottom: 5rem;
}

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

body {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  letter-spacing: 0em;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  height: 100%;
  font-weight: 400;
  line-height: 1.25;
  color: #444444;
  background: #fff;
  font-size: 1.8rem;
  -webkit-text-size-adjust: 100%;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  word-wrap: break-word;
}

@media print, screen and (max-width: 39.99875em) {
  body {
    font-size: 2.4rem;
  }
}

html {
  min-height: 100%;
  height: 100%;
  font-size: 62.5% !important;
}

@media screen and (max-width: 1199px) {
  html {
    font-size: 52.08% !important;
  }
}

@media screen and (max-width: 768px) {
  html {
    font-size: 52.5% !important;
  }
}

@media screen and (max-width: 425px) {
  html {
    font-size: 50% !important;
  }
}

@media screen and (min-width: 1921px) and (min-aspect-ratio: 4 / 3) {
  html {
    font-size: calc(0.625vw * .84) !important;
  }
}

a {
  text-decoration: none;
  color: #0580FF;
}

a:hover {
  text-decoration: underline;
}

.visible {
  overflow: visible !important;
}

.fullwidth {
  width: 100% !important;
  max-width: 100% !important;
}

.halfwidth {
  width: 50% !important;
}

.fullheight {
  height: 100%;
  min-height: 100%;
}

.truncate {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

img {
  display: inline-block;
  vertical-align: middle;
}

img.normal {
  width: auto;
  max-width: none;
}

img.responsive {
  width: 100%;
  max-width: 100%;
  height: auto;
}

.img-fluid {
  width: auto;
  max-width: 100%;
}

.img-rounded {
  overflow: hidden;
  border-radius: 50%;
}

.left {
  float: left !important;
}

.right {
  float: right !important;
}

.pull-left, .pull-right {
  float: none !important;
}

.flex-center {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
}

.os-animation, .os-animation-always {
  opacity: 0;
}

.os-animation.animated, .os-animation-always.animated {
  opacity: 1;
}

.animated {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

.animated.infinite {
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
}

.animated.hinge {
  -webkit-animation-duration: 2s;
  animation-duration: 2s;
}

/* .fadeOut is style taken from Animation.css and this is how it looks in owl.carousel.css:  */
.fadeOut {
  -webkit-animation-name: fadeOut;
  animation-name: fadeOut;
}

@-webkit-keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.fadeIn {
  -webkit-animation-name: fadeIn;
  animation-name: fadeIn;
}

.progress {
  -webkit-animation-name: progress;
  animation-name: progress;
}

@-webkit-keyframes progress {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}

@keyframes progress {
  0% {
    width: 0;
  }
  100% {
    width: 100%;
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translate3d(0, -100%, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInDown {
  animation-name: fadeInDown;
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    transform: translate3d(-50%, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInLeft {
  animation-name: fadeInLeft;
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInRight {
  animation-name: fadeInRight;
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 30%, 0);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.fadeInUp {
  animation-name: fadeInUp;
}

.slide-in-down.mui-enter {
  transition-duration: 500ms;
  transition-timing-function: linear;
  -webkit-transform: translateY(-100%);
  transform: translateY(-100%);
  transition-property: opacity, -webkit-transform;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.slide-in-down.mui-enter.mui-enter-active {
  -webkit-transform: translateY(0);
  transform: translateY(0);
}

.slide-out-down.mui-leave {
  transition-duration: 500ms;
  transition-timing-function: linear;
  -webkit-transform: translateY(0);
  transform: translateY(0);
  transition-property: opacity, -webkit-transform;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.slide-out-down.mui-leave.mui-leave-active {
  -webkit-transform: translateY(100%);
  transform: translateY(100%);
}

p {
  margin: 0 0 2rem;
  font-size: 1.8rem;
  line-height: 1.36;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

p:last-child {
  margin-bottom: 0;
}

@media print, screen and (max-width: 39.99875em) {
  p {
    font-size: 2.4rem;
    line-height: 1.5;
  }
}

strong {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  font-weight: 700;
}

i {
  font-style: italic;
}

a {
  transition: color .25s;
  text-decoration: none;
}

a:hover {
  color: #0580FF;
}

h1, h2, h3, h4, h5, h6 {
  font-weight: 700;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  margin-bottom: 2rem;
  line-height: 1.17;
  letter-spacing: -0.02em;
}

h1 {
  font-size: 4.4rem;
}

h2 {
  font-size: 4rem;
}

h3 {
  font-size: 3.6rem;
}

h4 {
  font-size: 3rem;
}

h5 {
  font-size: 2.4rem;
}

sup {
  vertical-align: super;
  font-size: 60%;
}

.section-title {
  position: relative;
  z-index: 1;
  font-weight: 700;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #222222;
  line-height: 1.1;
  margin-bottom: 3rem;
}

.section-title.m-group {
  margin-bottom: .5rem;
}

.article-title {
  position: relative;
  z-index: 1;
  font-size: 3rem;
  font-weight: 700;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #444444;
  text-transform: uppercase;
  line-height: 1.1;
  margin-bottom: 3rem;
}

._bold {
  font-weight: 700;
}

._semibold {
  font-weight: 600;
}

._medium {
  font-weight: 500;
}

._normal {
  font-weight: 400;
}

[class*="title-"], .section-title {
  letter-spacing: -0.02em;
  font-weight: 700;
}

[class*="title-"].mb-1, .section-title.mb-1 {
  margin-bottom: 1rem;
}

[class*="title-"].mb-2, .section-title.mb-2 {
  margin-bottom: 2rem;
}

[class*="title-"].mb-3, .section-title.mb-3 {
  margin-bottom: 3rem;
}

[class*="title-"].mb-4, .section-title.mb-4 {
  margin-bottom: 3rem;
}

[class*="title-"].mb-5, .section-title.mb-5 {
  margin-bottom: 5rem;
}

[class*="title-"].mt-1, .section-title.mt-1 {
  margin-top: 1rem;
}

[class*="title-"].mt-2, .section-title.mt-2 {
  margin-top: 2rem;
}

[class*="title-"].mt-3, .section-title.mt-3 {
  margin-top: 3rem;
}

[class*="title-"].mt-4, .section-title.mt-4 {
  margin-top: 3rem;
}

[class*="title-"].mt-5, .section-title.mt-5 {
  margin-top: 5rem;
}

[class*="title-"]._semibold, .section-title._semibold {
  font-weight: 600;
}

[class*="title-"]._medium, .section-title._medium {
  font-weight: 500;
}

[class*="title-"]._normal, .section-title._normal {
  font-weight: 400;
}

.title-0 {
  font-size: 8rem;
}

.title-1, .s-hero__title {
  font-size: 6rem;
}

.title-2, .section-title {
  font-size: 4.4rem;
}

.title-3 {
  font-size: 4rem;
}

.title-4, .b-location__title {
  font-size: 3.6rem;
}

.title-5 {
  font-size: 3.2rem;
}

.title-6, .b-post__title {
  font-size: 2.8rem;
}

@media screen and (max-width: 900px) {
  .title-1, .s-hero__title {
    font-size: 36px;
  }
}

@media screen and (max-width: 640px) {
  .title-0 {
    font-size: 4.4rem;
  }
  .title-1, .s-hero__title {
    font-size: 4.4rem;
  }
  .title-2, .section-title {
    font-size: 3.52rem;
  }
  .title-3 {
    font-size: 3.2rem;
  }
  .title-4, .b-location__title {
    font-size: 2.88rem;
  }
  .title-5 {
    font-size: 2.56rem;
  }
  .title-6, .b-post__title {
    font-size: 2.52rem;
  }
}

@media screen and (max-width: 425px) {
  .title-1, .s-hero__title {
    font-size: 26px;
  }
  .title-2, .section-title {
    font-size: 26px;
  }
}

.title-group [class="title-"], .title-group > span {
  display: block;
}

.text--xxlarge {
  font-size: 2.8rem;
}

.text--xlarge, .about-title {
  font-size: 2.4rem;
}

.text--large, .s-content-partners p, .s-content-post .article p, .s-content-post .article ul, .b-report__info p {
  font-size: 2.2rem;
}

.text--medium, .s-ai-personal__txt, .s-ai-about__txt, .b-cta-benefit__txt, .b-ai-product__txt {
  font-size: 2rem;
}

.text--small {
  font-size: 1.6rem;
}

.text--primary {
  color: #0580FF;
}

section.text-white .text--primary {
  color: #0580FF;
}

s-section.text-white .text--primary {
  color: #0580FF;
}

.text--secondary {
  color: #444444;
}

.text--white {
  color: #fff;
}

.text--white .text--opacity {
  opacity: .6;
}

.text--dark {
  color: #444444;
}

.text--dark * {
  color: #444444;
}

.text--black {
  color: #222222;
}

.text--blue {
  color: #0580FF;
}

.text--red {
  color: #FF0505;
}

.text--red2 {
  color: #ff005c;
}

.text--orange {
  color: #ff7a00;
}

.text--yellow {
  color: #FFE800;
}

.text--grey {
  color: #E5E5E5;
}

.text--darkgrey {
  color: #666666;
}

.text--magic {
  position: relative;
  padding-left: 7.8rem;
}

.text--magic:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 5rem;
  height: 5rem;
  background: url(../img/icon/magic.svg) 0 0 no-repeat;
}

.text--magic a {
  text-decoration: underline;
}

.text--magic a:hover {
  text-decoration: none;
}

@media print, screen and (max-width: 39.99875em) {
  .text--xxlarge {
    font-size: 2.4rem;
  }
  .text--xlarge, .about-title {
    font-size: 2.4rem;
  }
  .text--large, .s-content-partners p, .s-content-post .article p, .s-content-post .article ul, .b-report__info p {
    font-size: 2.4rem;
  }
  .text--medium, .s-ai-personal__txt, .s-ai-about__txt, .b-cta-benefit__txt, .b-ai-product__txt {
    font-size: 2.4rem;
  }
  .text--small {
    font-size: 1.6rem;
  }
}

.s-solutions-article__txt ol, .s-content-ai__about ol {
  list-style: decimal;
  margin-bottom: 2rem;
}

.s-solutions-article__txt ol li, .s-content-ai__about ol li {
  line-height: 1.67;
  margin-top: .5rem;
  margin-bottom: .5rem;
  margin-left: 2rem;
}

.article h1, .article h2, .article h3, .article h4, .article h5, .article h6 {
  color: #222222;
}

.article ol, .article .s-solutions-article__txt ol, .s-solutions-article__txt .article ol, .article .s-content-ai__about ol, .s-content-ai__about .article ol {
  list-style: decimal;
}

.article ol li, .article .s-solutions-article__txt ol li, .s-solutions-article__txt .article ol li, .article .s-content-ai__about ol li, .s-content-ai__about .article ol li {
  line-height: 1.67;
  margin-top: .5rem;
  margin-bottom: .5rem;
  margin-left: 2rem;
}

.article p a {
  color: #0580FF;
}

.list-disc, .article ul, .s-solutions-article__txt-group ul, .s-content-ai__about ul {
  list-style: disc;
}

.list-disc li, .article ul li, .s-solutions-article__txt-group ul li, .s-content-ai__about ul li {
  margin-bottom: 1.67rem;
  line-height: 1.67;
  margin-left: 2rem;
}

.list-arrow {
  list-style: none;
}

.list-arrow li {
  list-style: none;
  position: relative;
  padding-left: 1.3rem;
  margin-bottom: 1.67rem;
  line-height: 1.67;
  margin-left: 2rem;
}

.list-arrow li:before {
  content: '';
  position: absolute;
  left: -2rem;
  top: .7rem;
  background: url(../img/icon/arrow-list-right.svg) 0 0 no-repeat;
  background-size: contain;
  width: 1.9rem;
  height: 1.6rem;
}

.list-column {
  column-count: 2;
  column-gap: 6rem;
  column-width: auto;
}

.list-column.list-disc {
  list-style: none;
}

.list-column.list-disc li {
  list-style: none;
}

.list-column.list-disc li:before {
  content: "\2022";
  color: #0580FF;
  font-weight: bold;
  display: inline-block;
  width: 1.2em;
  margin-left: -1.2em;
}

@media print, screen and (max-width: 39.99875em) {
  .list-column.list-disc li:before {
    width: 1.6rem;
    margin-left: -2rem;
    font-size: 20px;
  }
}

.list-column > li, .list-column > div {
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  break-inside: avoid;
}

@media print, screen and (max-width: 47.99875em) {
  .list-column {
    column-count: 2;
    column-gap: 3rem;
    column-width: auto;
  }
  .list-column > li, .list-column > div {
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    break-inside: avoid;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .list-column {
    column-count: 1;
    column-gap: 0rem;
    column-width: auto;
  }
  .list-column > li, .list-column > div {
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    break-inside: avoid;
  }
}

.about-title {
  font-weight: 600;
}

@media print, screen and (max-width: 39.99875em) {
  .text-center--sm {
    text-align: center !important;
  }
}

.icon-play {
  font-size: 10px;
  display: inline-block;
  background: url(../img/common/icon/play.svg) 0 0 no-repeat;
  background-size: contain;
  width: 7.3em;
  height: 10.2em;
}

.icon-svg-bank-report {
  font-size: 10px;
  display: inline-block;
  background: url(../img/common/icon/bank-report.svg) 0 0 no-repeat;
  background-size: contain;
  width: 7.3em;
  height: 10.2em;
}

.icon-minus {
  font-size: 100%;
  display: inline-block;
  background: currentColor;
  width: 1.5em;
  height: 0.6em;
  color: currentColor;
}

.b-header {
  position: relative;
  background: transparent;
  color: #000;
}

.b-header.m-fixed {
  position: fixed;
  z-index: 99;
  left: 0;
  top: 0;
  width: 100%;
  background: transparent;
}

.b-header.m-fixed .b-header__wrp > .row {
  max-width: 100%;
}

.b-header.m-abs {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  z-index: 99;
  background: transparent;
}

.b-header .sticky, .b-header.sticky {
  transition: background .3s ease, padding .3s ease;
}

.b-header .sticky.is-stuck, .b-header.sticky.is-stuck {
  background: transparent;
}

.b-header * {
  color: #000;
}

.b-header__container, .b-header .container, .b-header__row {
  max-width: 100%;
}

.b-header__wrp {
  width: 100%;
  padding-top: 1.9rem;
  padding-bottom: 1.9rem;
}

.b-header__row {
  max-width: calc(100% + 3rem);
}

.b-header .b-logo img {
  max-width: 19.5rem;
}

.b-header .b-logo ._show-on-scroll {
  display: none;
}

.b-header .b-logo ._show-on-menu {
  display: none;
}

.b-header__menu-nav {
  position: relative;
}

.b-header__menu-nav > ul {
  display: flex;
  justify-content: space-between;
  font-size: 1.6rem;
  font-weight: 600;
}

.b-header__menu-nav > ul > li.current > a, .b-header__menu-nav > ul > li.is-active > a, .b-header__menu-nav > ul > li:hover > a {
  color: #ff7a00;
}

.b-header__menu-nav > ul > li.magic-item {
  text-transform: uppercase;
  position: relative;
}

.b-header__menu-nav > ul > li.magic-item:before {
  content: '';
  position: absolute;
  left: 0.5rem;
  top: -1.8rem;
  width: 2.8rem;
  height: 2.8rem;
  background: url(../img/icon/magic.svg) 50% 50% no-repeat;
  background-size: contain;
}

.b-header__menu-nav > ul > li.magic-item.is-active > a {
  display: block;
  position: relative;
}

.b-header__menu-nav > ul > li.magic-item.is-active > a:after {
  content: '';
  display: block;
  position: absolute;
  left: 1.5rem;
  right: 1.5rem;
  bottom: -.5rem;
  border-bottom: 2px solid;
}

.b-header__menu-nav > ul > li:hover > a {
  color: #ff7a00;
}

.b-header__menu-nav > ul > li a {
  color: #000;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.b-header__menu-nav > ul > li a span {
  display: block;
  font-size: 80%;
  opacity: .8;
  font-weight: normal;
}

.b-header__menu-nav > ul > li a:hover {
  text-decoration: none;
}

.b-header__auth {
  font-weight: 600;
  font-size: 1.6rem;
}

.b-header__auth a {
  color: #888888;
}

.b-header .burger {
  position: absolute;
  top: 2.7rem;
  right: 3rem;
}

.b-header--yellow {
  color: #fff;
}

.b-header--yellow .menu-icon.burger {
  color: #fff;
}

.b-header--yellow .menu-icon.burger:before, .b-header--yellow .menu-icon.burger:after {
  color: #fff;
}

.b-header--yellow .menu-icon.burger * {
  color: #fff;
}

.b-header--yellow .b-header__auth a {
  color: rgba(255, 255, 255, 0.6);
}

.b-header--yellow .b-header__menu-nav > ul > li.is-active > a, .b-header--yellow .b-header__menu-nav > ul > li.current > a, .b-header--yellow .b-header__menu-nav > ul > li:hover > a {
  color: #ff7a00;
}

.b-header--yellow .b-header__menu-nav > ul > li.is-active > a {
  display: block;
  position: relative;
}

.b-header--yellow .b-header__menu-nav > ul > li.is-active > a:after {
  content: '';
  display: block;
  position: absolute;
  left: 1.5rem;
  right: 1.5rem;
  bottom: -.5rem;
  border-bottom: 2px solid;
}

.b-header--yellow .b-header__menu-nav > ul > li > a {
  color: #fff;
}

.b-header[class*="nav-"] {
  background: #fff;
  position: fixed;
  width: 100%;
  top: 0;
  left: 0;
}

.b-header[class*="nav-"].m-abs {
  position: fixed;
  background: #fff;
}

.b-header[class*="nav-"].m-abs.lp-header {
  position: absolute;
  background: none;
}

.b-header[class*="nav-"].m-abs.lp-header .b-logo img {
  display: block;
}

.b-header[class*="nav-"].m-abs.lp-header .b-logo img._show-on-scroll {
  display: none;
}

.b-header[class*="nav-"] .b-logo img {
  display: none;
}

.b-header[class*="nav-"] .b-logo img._show-on-scroll {
  display: block;
}

.b-header[class*="nav-"] .menu-icon.burger {
  color: #000;
}

.b-header[class*="nav-"] .menu-icon.burger:before, .b-header[class*="nav-"] .menu-icon.burger:after {
  color: #000;
}

.b-header[class*="nav-"] .menu-icon.burger * {
  color: #000;
}

.is-menu-open .b-header[class*="nav-"] .menu-icon.burger {
  color: #fff;
}

.is-menu-open .b-header[class*="nav-"] .menu-icon.burger:before, .is-menu-open .b-header[class*="nav-"] .menu-icon.burger:after {
  color: #fff;
}

.is-menu-open .b-header[class*="nav-"] .menu-icon.burger * {
  color: #fff;
}

.b-header[class*="nav-"] .b-header__auth a {
  color: #888888;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li.is-active a:after {
  color: #ff7a00;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li.is-active.magic-item a:after {
  color: #ff7a00;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li a {
  color: #000000;
}

.b-header[class*="nav-"] .b-header__menu-nav ul > li a:hover {
  color: #ff7a00;
}

@media print, screen and (max-width: 47.99875em) {
  .b-header .column:last-of-type {
    padding-right: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-header__auth, .b-header__callback {
    display: none;
  }
}

@media screen and (max-width: 425px) {
  .b-header .burger {
    right: 20px;
  }
}

.is-menu-open {
  overflow: hidden !important;
}

.is-menu-open .b-header {
  background: #FFE800;
  background: #222222;
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
  overflow-x: hidden;
  overflow-y: auto;
  max-height: 100vh;
}

.is-menu-open .b-header[class*="nav-"] {
  background: #222222;
}

.is-menu-open .b-header[class*="nav-"].m-abs {
  background: #222222;
}

.is-menu-open .b-header[class*="nav-"] .b-header__menu-nav ul > li:not(.magic-item) a {
  color: #ffff;
}

.is-menu-open .b-header[class*="nav-"] .b-header__menu-nav ul > li a {
  color: #ff7a00;
  color: #ffff;
}

.is-menu-open .b-header__logo {
  margin-left: auto;
}

.is-menu-open .b-header .b-logo img {
  display: block;
  display: none;
}

.is-menu-open .b-header .b-logo img._show-on-scroll {
  display: none;
}

.is-menu-open .b-header .b-logo img._show-on-menu {
  display: block;
}

.is-menu-open .b-header .column:last-of-type {
  padding-right: 0;
}

.is-menu-open .b-header__menu {
  display: block !important;
  left: 0;
  width: 100%;
  background: #FFE800;
  background: #222222;
}

.is-menu-open .menu-icon.burger:before, .is-menu-open .menu-icon.burger:after {
  color: #fff;
}

.is-menu-open .menu-icon.burger span {
  color: #fff;
}

.is-menu-open .menu-icon.burger span:before, .is-menu-open .menu-icon.burger span:after {
  color: #fff;
}

.is-menu-open .b-header__menu-nav ul > li a {
  color: #ffff;
}

.is-menu-open .b-header__auth {
  display: block !important;
  text-align: center;
  width: 100%;
  font-size: 2.4rem;
}

@media screen and (max-width: 424px) {
  .is-menu-open .b-header__auth {
    font-size: 5vw;
  }
}

.is-menu-open .b-header__callback {
  display: block !important;
  text-align: center;
  width: 100%;
  margin-top: 1vh;
}

.is-menu-open .b-header__callback .btn, .is-menu-open .b-header__callback .btn-flat, .is-menu-open .b-header__callback .b-callback-form .btn-submit, .b-callback-form .is-menu-open .b-header__callback .btn-submit {
  font-weight: 700;
  font-size: 2rem;
}

@media screen and (max-width: 424px) {
  .is-menu-open .b-header__callback .btn, .is-menu-open .b-header__callback .btn-flat, .is-menu-open .b-header__callback .b-callback-form .btn-submit, .b-callback-form .is-menu-open .b-header__callback .btn-submit {
    font-size: 5vw;
  }
}

.is-menu-open .b-header__wrp {
  padding-bottom: 30px;
}

.is-menu-open .b-header__auth-itm {
  padding-top: .5vh;
  padding-top: 1rem;
  padding-bottom: .5vh;
  padding-bottom: 1rem;
  min-height: 50px;
}

.is-menu-open .b-header__auth-itm a {
  font-size: 20px;
}

.is-menu-open .b-header__menu-nav {
  padding-top: 3rem;
  padding-bottom: 0;
}

.is-menu-open .b-header__menu-nav ul {
  flex-direction: column;
  align-items: center;
}

.is-menu-open .b-header__menu-nav ul li {
  display: block;
  min-height: 50px;
  padding-top: .5vh;
  padding-top: 1rem;
  padding-bottom: .5vh;
  padding-bottom: 1rem;
}

.is-menu-open .b-header__menu-nav ul li.magic-item:before {
  top: -0.75rem;
  left: 0.5rem;
}

.is-menu-open .b-header__menu-nav ul li a {
  font-size: 2.4rem;
}

@media screen and (max-width: 424px) {
  .is-menu-open .b-header__menu-nav ul li a {
    font-size: 5vw;
    font-size: 20px;
  }
}

.b-footer {
  position: relative;
  overflow: hidden;
  background: #F5CE00;
  color: #222;
  font-size: 1.6rem;
  padding: 1.5rem 0;
}

.b-footer__container, .b-footer .container {
  max-width: 100%;
}

.b-footer__row {
  max-width: 100%;
}

.b-footer p {
  font-size: 100%;
}

.b-footer a {
  color: currentColor;
}

.b-footer__nav ul {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

.b-footer__nav ul li {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.b-footer__social .social-inline {
  padding-left: 3rem;
  padding-right: 3rem;
}

.b-footer__menu {
  display: inline-flex;
  align-items: center;
}

.b-footer__menu .social-inline {
  margin-left: 3rem;
}

.b-footer__menu .social-inline:first-of-type {
  margin-right: 3rem;
  margin-left: 0;
}

.b-footer .social-inline {
  padding-bottom: .6rem;
}

.b-footer .social-inline a:hover {
  opacity: .7;
}

@media print, screen and (min-width: 48em) {
  .b-footer__copy {
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    align-self: center;
    position: relative;
    padding-left: 6rem;
    min-height: 4rem;
  }
  .b-footer__copy:before {
    content: '';
    position: absolute;
    left: 0rem;
    top: 0;
    width: 4rem;
    height: 4rem;
    background: url(../img/logo-footer.svg) 0 0 no-repeat;
    background-size: contain;
  }
  .b-footer__copy.column {
    padding-left: 6rem;
  }
  .b-footer__copy._no-logo:before {
    display: none;
  }
  .b-footer__copy._no-logo.column {
    padding-left: 0rem;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .b-footer__copy, .b-footer__menu {
    text-align: center;
    margin-left: auto;
    margin-right: auto;
  }
  .b-footer__menu {
    order: -1;
    margin-bottom: 1rem;
    flex-wrap: wrap;
  }
  .b-footer__nav {
    order: -1;
    margin-bottom: 1rem;
    margin-left: auto;
    margin-right: auto;
    position: relative;
    margin-left: 6rem;
  }
  .b-footer__nav:before {
    content: '';
    position: absolute;
    left: -6rem;
    top: 0;
    width: 4rem;
    height: 4rem;
    background: url(../img/logo-footer.svg) 0 0 no-repeat;
    background-size: contain;
  }
  .b-footer .social-inline {
    flex: 0 0 100%;
    width: 100%;
  }
}

@media screen and (max-width: 425px) {
  .b-footer__copy {
    text-align: left;
  }
  .b-footer__menu .social-inline {
    text-align: left;
  }
  .b-footer__menu .social-inline:first-of-type {
    margin-right: 0;
  }
  .b-footer__nav {
    padding-left: 15px;
    padding-right: 15px;
  }
  .b-footer__nav ul {
    text-align: left;
    column-count: 2;
    column-gap: 3rem;
    column-width: auto;
  }
  .b-footer__nav ul > li, .b-footer__nav ul > div {
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
    break-inside: avoid;
  }
  .b-footer__nav ul li {
    width: 100%;
    padding-top: .5rem;
    padding-bottom: .5rem;
  }
}

.l-main {
  padding: 0;
}

.container, .container-fluid {
  max-width: 126rem;
  width: 100%;
  padding-left: 30px;
  padding-right: 30px;
  margin-left: auto;
  margin-right: auto;
}

.container--md, .container-fluid--md {
  max-width: 102rem;
}

.container > .row:not(.small-collapse), .container-fluid > .row:not(.small-collapse) {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

.container > .row:not(.small-collapse).row--wide, .container > .row.b-blog:not(.small-collapse), .container-fluid > .row:not(.small-collapse).row--wide, .container-fluid > .row.b-blog:not(.small-collapse) {
  margin-left: -30px;
  margin-right: -30px;
}

@media print, screen and (max-width: 39.99875em) {
  .container, .container-fluid {
    padding-left: 20px;
    padding-right: 20px;
  }
}

.row .row {
  margin-left: 0;
  margin-right: 0;
}

.row--narrow {
  margin-left: -6px;
  margin-right: -6px;
}

.row--narrow > .col, .row--narrow [class^="col-"] {
  padding-left: 6px;
  padding-right: 6px;
}

.row--wide, .b-blog.row {
  margin-left: -30px;
  margin-right: -30px;
}

.row--wide > .col, .b-blog.row > .col, .row--wide [class^="col-"], .b-blog.row [class^="col-"], .row--wide > .column, .b-blog.row > .column {
  padding-left: 30px;
  padding-right: 30px;
}

.row--list > .col, .row--list [class^="col-"], .row--list > .column {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

.row--section {
  margin-top: 5rem;
}

.sticky-container + .l-main {
  position: static;
}

.l-wrapper {
  background: #fff;
  position: relative;
  min-height: 1%;
  height: auto;
  overflow: hidden;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  -moz-flex-direction: column;
  -ms-flex-direction: column;
  -webkit-flex-direction: column;
  flex-direction: column;
  min-height: 100vh;
}

.l-wrapper main {
  overflow: hidden;
  display: block;
  width: 100%;
  position: relative;
}

.l-wrapper .l-main {
  flex: 1;
  -webkit-flex: 1 1 auto;
  -ms-flex: 1 1 auto;
  flex: 1 1 auto;
  -webkit-align-self: stretch;
  -ms-flex-item-align: stretch;
  align-self: stretch;
}

.l-header {
  width: 100%;
  display: block;
}

.l-footer {
  display: block;
  width: 100%;
  overflow: hidden;
}

.aside-main-menu {
  will-change: -webkit-transform;
  will-change: transform;
  position: fixed;
  z-index: 199;
  top: 0;
  right: 0;
  color: #fff;
  background: rgba(0, 0, 0, 0.9);
  width: 100%;
  max-width: 320px;
  height: 100%;
  min-height: 100vh;
  padding: 3rem;
  visibility: hidden;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  transition: transform 0.5s cubic-bezier(0.645, 0.045, 0.355, 1), visibility 0.5s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
  transform: translateX(100%);
  transform: translate3d(100%, 0%, 0);
}

.aside-main-menu.is-active {
  transform: translate3d(0, 0, 0);
  transform: translateX(0);
  visibility: visible;
}

.aside-main-menu__nav {
  padding-right: 15px;
  width: 100%;
  height: 100%;
  font-size: 1.875rem;
  font-weight: 300;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-transform: uppercase;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.aside-main-menu__nav ul {
  display: block;
}

.aside-main-menu__nav ul li {
  margin: .2em 0;
  display: block;
}

.aside-main-menu__nav ul li:last-child a {
  margin-bottom: 0;
}

.aside-main-menu__nav ul li a {
  display: inline-block;
  color: #fff;
  font-size: 1.2em;
  margin-bottom: 2vh;
  text-transform: uppercase;
  text-decoration: none;
  outline: 0;
  transition: all .3s ease;
}

.aside-main-menu__nav ul li a:hover, .aside-main-menu__nav ul li a.is-active {
  text-decoration: none;
  color: #444444;
  border-bottom-color: transparent;
}

@media screen and (max-width: 1024px) {
  .aside-main-menu__nav ul li a {
    font-size: 26px;
  }
}

@media screen and (max-width: 1024px) and (max-height: 400px) and (orientation: landscape) {
  .aside-main-menu__nav ul li a {
    font-size: 2rem;
  }
}

@media screen and (max-width: 640px) {
  .aside-main-menu__nav ul li a {
    font-size: 5vw;
    margin-bottom: 2.5vh;
    line-height: 1.4;
    border-bottom: none;
  }
}

@media screen and (max-width: 640px) and (max-height: 400px) and (orientation: landscape) {
  .aside-main-menu__nav ul li a {
    font-size: 2rem;
  }
}

.aside-main-menu__wrp {
  padding-top: 6rem;
}

.aside-main-menu .b-header__search {
  display: block !important;
  max-width: 100%;
  margin-bottom: 2vh;
}

.aside-main-menu .b-header__search-form .btn-search {
  color: #fff;
}

.aside-main-menu .b-header__search-form .btn-search:hover {
  color: #444444;
}

.aside-main-menu .menu-icon.burger {
  position: absolute;
  right: 1.5rem;
  top: 1.5rem;
  color: #fff;
}

.aside-main-menu .menu-icon.burger span {
  color: #fff;
}

.aside-main-menu .menu-icon.burger:before, .aside-main-menu .menu-icon.burger:after {
  color: #fff;
}

@media screen and (max-width: 1024px) {
  .aside-main-menu__nav {
    padding-top: 5rem;
  }
}

@media screen and (max-width: 640px) {
  .aside-main-menu__nav {
    padding-top: 2vh;
  }
}

.overlay {
  transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);
  display: block;
  position: fixed;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  z-index: 199;
  background: rgba(0, 0, 0, 0.85);
  visibility: hidden;
  opacity: 0;
}

.menu-is-open .overlay {
  visibility: visible;
  opacity: 1;
  transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);
}

.sidebar-is-open .overlay {
  visibility: visible;
  opacity: 1;
  transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);
}

input[type=text],
input[type=password],
input[type=email],
input[type=url],
input[type=time],
input[type=date],
input[type=datetime-local],
input[type=tel],
input[type=number],
input[type=search],
input[type=file],
textarea, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
  background-color: #fff;
  border: 1px solid #000;
  border-radius: 0px;
  outline: none;
  height: 4rem;
  line-height: 4rem;
  width: 100%;
  color: #444444;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  font-size: 1.5rem;
  font-weight: 400;
  padding: 0 1.2rem;
  margin-bottom: 2rem;
  transition: border .3s ease, box-shadow .3s ease;
  box-sizing: border-box;
  box-shadow: none;
}

input[type=text]::-webkit-input-placeholder,
input[type=password]::-webkit-input-placeholder,
input[type=email]::-webkit-input-placeholder,
input[type=url]::-webkit-input-placeholder,
input[type=time]::-webkit-input-placeholder,
input[type=date]::-webkit-input-placeholder,
input[type=datetime-local]::-webkit-input-placeholder,
input[type=tel]::-webkit-input-placeholder,
input[type=number]::-webkit-input-placeholder,
input[type=search]::-webkit-input-placeholder,
input[type=file]::-webkit-input-placeholder,
textarea::-webkit-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio)::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]:-moz-placeholder,
input[type=password]:-moz-placeholder,
input[type=email]:-moz-placeholder,
input[type=url]:-moz-placeholder,
input[type=time]:-moz-placeholder,
input[type=date]:-moz-placeholder,
input[type=datetime-local]:-moz-placeholder,
input[type=tel]:-moz-placeholder,
input[type=number]:-moz-placeholder,
input[type=search]:-moz-placeholder,
input[type=file]:-moz-placeholder,
textarea:-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]::-moz-placeholder,
input[type=password]::-moz-placeholder,
input[type=email]::-moz-placeholder,
input[type=url]::-moz-placeholder,
input[type=time]::-moz-placeholder,
input[type=date]::-moz-placeholder,
input[type=datetime-local]::-moz-placeholder,
input[type=tel]::-moz-placeholder,
input[type=number]::-moz-placeholder,
input[type=search]::-moz-placeholder,
input[type=file]::-moz-placeholder,
textarea::-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio)::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]:-ms-input-placeholder,
input[type=password]:-ms-input-placeholder,
input[type=email]:-ms-input-placeholder,
input[type=url]:-ms-input-placeholder,
input[type=time]:-ms-input-placeholder,
input[type=date]:-ms-input-placeholder,
input[type=datetime-local]:-ms-input-placeholder,
input[type=tel]:-ms-input-placeholder,
input[type=number]:-ms-input-placeholder,
input[type=search]:-ms-input-placeholder,
input[type=file]:-ms-input-placeholder,
textarea:-ms-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #000;
  font-weight: 400;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

input[type=text]:hover, input[type=text]:focus,
input[type=password]:hover,
input[type=password]:focus,
input[type=email]:hover,
input[type=email]:focus,
input[type=url]:hover,
input[type=url]:focus,
input[type=time]:hover,
input[type=time]:focus,
input[type=date]:hover,
input[type=date]:focus,
input[type=datetime-local]:hover,
input[type=datetime-local]:focus,
input[type=tel]:hover,
input[type=tel]:focus,
input[type=number]:hover,
input[type=number]:focus,
input[type=search]:hover,
input[type=search]:focus,
input[type=file]:hover,
input[type=file]:focus,
textarea:hover,
textarea:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):hover, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus {
  background-color: #fff;
  border-color: #0580FF;
}

input[type=text].inline,
input[type=password].inline,
input[type=email].inline,
input[type=url].inline,
input[type=time].inline,
input[type=date].inline,
input[type=datetime-local].inline,
input[type=tel].inline,
input[type=number].inline,
input[type=search].inline,
input[type=file].inline,
textarea.inline, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).inline {
  width: auto;
}

input[type=text].is-error, input[type=text].has-error,
input[type=password].is-error,
input[type=password].has-error,
input[type=email].is-error,
input[type=email].has-error,
input[type=url].is-error,
input[type=url].has-error,
input[type=time].is-error,
input[type=time].has-error,
input[type=date].is-error,
input[type=date].has-error,
input[type=datetime-local].is-error,
input[type=datetime-local].has-error,
input[type=tel].is-error,
input[type=tel].has-error,
input[type=number].is-error,
input[type=number].has-error,
input[type=search].is-error,
input[type=search].has-error,
input[type=file].is-error,
input[type=file].has-error,
textarea.is-error,
textarea.has-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).has-error {
  color: #e3725b;
  border-color: #e3725b;
}

input[type=text].is-error .required-icn, input[type=text].has-error .required-icn,
input[type=password].is-error .required-icn,
input[type=password].has-error .required-icn,
input[type=email].is-error .required-icn,
input[type=email].has-error .required-icn,
input[type=url].is-error .required-icn,
input[type=url].has-error .required-icn,
input[type=time].is-error .required-icn,
input[type=time].has-error .required-icn,
input[type=date].is-error .required-icn,
input[type=date].has-error .required-icn,
input[type=datetime-local].is-error .required-icn,
input[type=datetime-local].has-error .required-icn,
input[type=tel].is-error .required-icn,
input[type=tel].has-error .required-icn,
input[type=number].is-error .required-icn,
input[type=number].has-error .required-icn,
input[type=search].is-error .required-icn,
input[type=search].has-error .required-icn,
input[type=file].is-error .required-icn,
input[type=file].has-error .required-icn,
textarea.is-error .required-icn,
textarea.has-error .required-icn, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error .required-icn, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).has-error .required-icn {
  opacity: 1;
}

.has-error input[type=text]:hover, .has-error input[type=text]:focus, .has-error
input[type=password]:hover, .has-error
input[type=password]:focus, .has-error
input[type=email]:hover, .has-error
input[type=email]:focus, .has-error
input[type=url]:hover, .has-error
input[type=url]:focus, .has-error
input[type=time]:hover, .has-error
input[type=time]:focus, .has-error
input[type=date]:hover, .has-error
input[type=date]:focus, .has-error
input[type=datetime-local]:hover, .has-error
input[type=datetime-local]:focus, .has-error
input[type=tel]:hover, .has-error
input[type=tel]:focus, .has-error
input[type=number]:hover, .has-error
input[type=number]:focus, .has-error
input[type=search]:hover, .has-error
input[type=search]:focus, .has-error
input[type=file]:hover, .has-error
input[type=file]:focus, .has-error
textarea:hover, .has-error
textarea:focus, .has-error .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):hover, .has-error .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus {
  box-shadow: none;
  background-color: #fff;
}

.has-error input[type=text] .required-icn, .has-error
input[type=password] .required-icn, .has-error
input[type=email] .required-icn, .has-error
input[type=url] .required-icn, .has-error
input[type=time] .required-icn, .has-error
input[type=date] .required-icn, .has-error
input[type=datetime-local] .required-icn, .has-error
input[type=tel] .required-icn, .has-error
input[type=number] .required-icn, .has-error
input[type=search] .required-icn, .has-error
input[type=file] .required-icn, .has-error
textarea .required-icn, .has-error .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) .required-icn {
  opacity: 1;
}

input[type=text]:focus, input[type=text]:active,
input[type=password]:focus,
input[type=password]:active,
input[type=email]:focus,
input[type=email]:active,
input[type=url]:focus,
input[type=url]:active,
input[type=time]:focus,
input[type=time]:active,
input[type=date]:focus,
input[type=date]:active,
input[type=datetime-local]:focus,
input[type=datetime-local]:active,
input[type=tel]:focus,
input[type=tel]:active,
input[type=number]:focus,
input[type=number]:active,
input[type=search]:focus,
input[type=search]:active,
input[type=file]:focus,
input[type=file]:active,
textarea:focus,
textarea:active, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):active {
  border-color: #0580FF;
}

input[type=text]:focus.is-error, input[type=text]:focus.has-error, input[type=text]:active.is-error, input[type=text]:active.has-error,
input[type=password]:focus.is-error,
input[type=password]:focus.has-error,
input[type=password]:active.is-error,
input[type=password]:active.has-error,
input[type=email]:focus.is-error,
input[type=email]:focus.has-error,
input[type=email]:active.is-error,
input[type=email]:active.has-error,
input[type=url]:focus.is-error,
input[type=url]:focus.has-error,
input[type=url]:active.is-error,
input[type=url]:active.has-error,
input[type=time]:focus.is-error,
input[type=time]:focus.has-error,
input[type=time]:active.is-error,
input[type=time]:active.has-error,
input[type=date]:focus.is-error,
input[type=date]:focus.has-error,
input[type=date]:active.is-error,
input[type=date]:active.has-error,
input[type=datetime-local]:focus.is-error,
input[type=datetime-local]:focus.has-error,
input[type=datetime-local]:active.is-error,
input[type=datetime-local]:active.has-error,
input[type=tel]:focus.is-error,
input[type=tel]:focus.has-error,
input[type=tel]:active.is-error,
input[type=tel]:active.has-error,
input[type=number]:focus.is-error,
input[type=number]:focus.has-error,
input[type=number]:active.is-error,
input[type=number]:active.has-error,
input[type=search]:focus.is-error,
input[type=search]:focus.has-error,
input[type=search]:active.is-error,
input[type=search]:active.has-error,
input[type=file]:focus.is-error,
input[type=file]:focus.has-error,
input[type=file]:active.is-error,
input[type=file]:active.has-error,
textarea:focus.is-error,
textarea:focus.has-error,
textarea:active.is-error,
textarea:active.has-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus.is-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus.has-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):active.is-error, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):active.has-error {
  border-color: #e3725b;
  color: #e3725b;
}

input[type=text]:invalid:focus + .required-icn,
input[type=password]:invalid:focus + .required-icn,
input[type=email]:invalid:focus + .required-icn,
input[type=url]:invalid:focus + .required-icn,
input[type=time]:invalid:focus + .required-icn,
input[type=date]:invalid:focus + .required-icn,
input[type=datetime-local]:invalid:focus + .required-icn,
input[type=tel]:invalid:focus + .required-icn,
input[type=number]:invalid:focus + .required-icn,
input[type=search]:invalid:focus + .required-icn,
input[type=file]:invalid:focus + .required-icn,
textarea:invalid:focus + .required-icn, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):invalid:focus + .required-icn {
  opacity: 1;
}

input[type=text]:valid:focus, input[type=text]:focus,
input[type=password]:valid:focus,
input[type=password]:focus,
input[type=email]:valid:focus,
input[type=email]:focus,
input[type=url]:valid:focus,
input[type=url]:focus,
input[type=time]:valid:focus,
input[type=time]:focus,
input[type=date]:valid:focus,
input[type=date]:focus,
input[type=datetime-local]:valid:focus,
input[type=datetime-local]:focus,
input[type=tel]:valid:focus,
input[type=tel]:focus,
input[type=number]:valid:focus,
input[type=number]:focus,
input[type=search]:valid:focus,
input[type=search]:focus,
input[type=file]:valid:focus,
input[type=file]:focus,
textarea:valid:focus,
textarea:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):valid:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio):focus {
  border-color: #0580FF;
}

input[type=text].is-error:focus,
input[type=password].is-error:focus,
input[type=email].is-error:focus,
input[type=url].is-error:focus,
input[type=time].is-error:focus,
input[type=date].is-error:focus,
input[type=datetime-local].is-error:focus,
input[type=tel].is-error:focus,
input[type=number].is-error:focus,
input[type=search].is-error:focus,
input[type=file].is-error:focus,
textarea.is-error:focus, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error:focus {
  color: #444444;
  border-color: #0580FF;
}

input[type=text].is-error::-webkit-input-placeholder,
input[type=password].is-error::-webkit-input-placeholder,
input[type=email].is-error::-webkit-input-placeholder,
input[type=url].is-error::-webkit-input-placeholder,
input[type=time].is-error::-webkit-input-placeholder,
input[type=date].is-error::-webkit-input-placeholder,
input[type=datetime-local].is-error::-webkit-input-placeholder,
input[type=tel].is-error::-webkit-input-placeholder,
input[type=number].is-error::-webkit-input-placeholder,
input[type=search].is-error::-webkit-input-placeholder,
input[type=file].is-error::-webkit-input-placeholder,
textarea.is-error::-webkit-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error::-webkit-input-placeholder {
  /* WebKit browsers */
}

input[type=text].is-error:-moz-placeholder,
input[type=password].is-error:-moz-placeholder,
input[type=email].is-error:-moz-placeholder,
input[type=url].is-error:-moz-placeholder,
input[type=time].is-error:-moz-placeholder,
input[type=date].is-error:-moz-placeholder,
input[type=datetime-local].is-error:-moz-placeholder,
input[type=tel].is-error:-moz-placeholder,
input[type=number].is-error:-moz-placeholder,
input[type=search].is-error:-moz-placeholder,
input[type=file].is-error:-moz-placeholder,
textarea.is-error:-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
}

input[type=text].is-error::-moz-placeholder,
input[type=password].is-error::-moz-placeholder,
input[type=email].is-error::-moz-placeholder,
input[type=url].is-error::-moz-placeholder,
input[type=time].is-error::-moz-placeholder,
input[type=date].is-error::-moz-placeholder,
input[type=datetime-local].is-error::-moz-placeholder,
input[type=tel].is-error::-moz-placeholder,
input[type=number].is-error::-moz-placeholder,
input[type=search].is-error::-moz-placeholder,
input[type=file].is-error::-moz-placeholder,
textarea.is-error::-moz-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error::-moz-placeholder {
  /* Mozilla Firefox 19+ */
}

input[type=text].is-error:-ms-input-placeholder,
input[type=password].is-error:-ms-input-placeholder,
input[type=email].is-error:-ms-input-placeholder,
input[type=url].is-error:-ms-input-placeholder,
input[type=time].is-error:-ms-input-placeholder,
input[type=date].is-error:-ms-input-placeholder,
input[type=datetime-local].is-error:-ms-input-placeholder,
input[type=tel].is-error:-ms-input-placeholder,
input[type=number].is-error:-ms-input-placeholder,
input[type=search].is-error:-ms-input-placeholder,
input[type=file].is-error:-ms-input-placeholder,
textarea.is-error:-ms-input-placeholder, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).is-error:-ms-input-placeholder {
  /* Internet Explorer 10+ */
}

input[type=text].input-small,
input[type=password].input-small,
input[type=email].input-small,
input[type=url].input-small,
input[type=time].input-small,
input[type=date].input-small,
input[type=datetime-local].input-small,
input[type=tel].input-small,
input[type=number].input-small,
input[type=search].input-small,
input[type=file].input-small,
textarea.input-small, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio).input-small {
  width: 13rem;
  max-width: 13rem;
}

.row-field input[type=text], .row-field
input[type=password], .row-field
input[type=email], .row-field
input[type=url], .row-field
input[type=time], .row-field
input[type=date], .row-field
input[type=datetime-local], .row-field
input[type=tel], .row-field
input[type=number], .row-field
input[type=search], .row-field
input[type=file], .row-field
textarea, .row-field .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
  margin-bottom: 0;
}

@media print, screen and (max-width: 39.99875em) {
  input[type=text],
  input[type=password],
  input[type=email],
  input[type=url],
  input[type=time],
  input[type=date],
  input[type=datetime-local],
  input[type=tel],
  input[type=number],
  input[type=search],
  input[type=file],
  textarea, .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
    font-size: 2rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  input[type=text] input[type=text], input[type=password] input[type=text], input[type=email] input[type=text], input[type=url] input[type=text], input[type=time] input[type=text], input[type=date] input[type=text], input[type=datetime-local] input[type=text], input[type=tel] input[type=text], input[type=number] input[type=text], input[type=search] input[type=text], input[type=file] input[type=text], textarea input[type=text], .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=text], form input[type=text], .b-callback-form input[type=text],
  input[type=text] input[type=password],
  input[type=password] input[type=password],
  input[type=email] input[type=password],
  input[type=url] input[type=password],
  input[type=time] input[type=password],
  input[type=date] input[type=password],
  input[type=datetime-local] input[type=password],
  input[type=tel] input[type=password],
  input[type=number] input[type=password],
  input[type=search] input[type=password],
  input[type=file] input[type=password],
  textarea input[type=password],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=password],
  form input[type=password],
  .b-callback-form input[type=password],
  input[type=text] input[type=email],
  input[type=password] input[type=email],
  input[type=email] input[type=email],
  input[type=url] input[type=email],
  input[type=time] input[type=email],
  input[type=date] input[type=email],
  input[type=datetime-local] input[type=email],
  input[type=tel] input[type=email],
  input[type=number] input[type=email],
  input[type=search] input[type=email],
  input[type=file] input[type=email],
  textarea input[type=email],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=email],
  form input[type=email],
  .b-callback-form input[type=email],
  input[type=text] input[type=url],
  input[type=password] input[type=url],
  input[type=email] input[type=url],
  input[type=url] input[type=url],
  input[type=time] input[type=url],
  input[type=date] input[type=url],
  input[type=datetime-local] input[type=url],
  input[type=tel] input[type=url],
  input[type=number] input[type=url],
  input[type=search] input[type=url],
  input[type=file] input[type=url],
  textarea input[type=url],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=url],
  form input[type=url],
  .b-callback-form input[type=url],
  input[type=text] input[type=time],
  input[type=password] input[type=time],
  input[type=email] input[type=time],
  input[type=url] input[type=time],
  input[type=time] input[type=time],
  input[type=date] input[type=time],
  input[type=datetime-local] input[type=time],
  input[type=tel] input[type=time],
  input[type=number] input[type=time],
  input[type=search] input[type=time],
  input[type=file] input[type=time],
  textarea input[type=time],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=time],
  form input[type=time],
  .b-callback-form input[type=time],
  input[type=text] input[type=date],
  input[type=password] input[type=date],
  input[type=email] input[type=date],
  input[type=url] input[type=date],
  input[type=time] input[type=date],
  input[type=date] input[type=date],
  input[type=datetime-local] input[type=date],
  input[type=tel] input[type=date],
  input[type=number] input[type=date],
  input[type=search] input[type=date],
  input[type=file] input[type=date],
  textarea input[type=date],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=date],
  form input[type=date],
  .b-callback-form input[type=date],
  input[type=text] input[type=datetime-local],
  input[type=password] input[type=datetime-local],
  input[type=email] input[type=datetime-local],
  input[type=url] input[type=datetime-local],
  input[type=time] input[type=datetime-local],
  input[type=date] input[type=datetime-local],
  input[type=datetime-local] input[type=datetime-local],
  input[type=tel] input[type=datetime-local],
  input[type=number] input[type=datetime-local],
  input[type=search] input[type=datetime-local],
  input[type=file] input[type=datetime-local],
  textarea input[type=datetime-local],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=datetime-local],
  form input[type=datetime-local],
  .b-callback-form input[type=datetime-local],
  input[type=text] input[type=tel],
  input[type=password] input[type=tel],
  input[type=email] input[type=tel],
  input[type=url] input[type=tel],
  input[type=time] input[type=tel],
  input[type=date] input[type=tel],
  input[type=datetime-local] input[type=tel],
  input[type=tel] input[type=tel],
  input[type=number] input[type=tel],
  input[type=search] input[type=tel],
  input[type=file] input[type=tel],
  textarea input[type=tel],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=tel],
  form input[type=tel],
  .b-callback-form input[type=tel],
  input[type=text] input[type=number],
  input[type=password] input[type=number],
  input[type=email] input[type=number],
  input[type=url] input[type=number],
  input[type=time] input[type=number],
  input[type=date] input[type=number],
  input[type=datetime-local] input[type=number],
  input[type=tel] input[type=number],
  input[type=number] input[type=number],
  input[type=search] input[type=number],
  input[type=file] input[type=number],
  textarea input[type=number],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=number],
  form input[type=number],
  .b-callback-form input[type=number],
  input[type=text] input[type=search],
  input[type=password] input[type=search],
  input[type=email] input[type=search],
  input[type=url] input[type=search],
  input[type=time] input[type=search],
  input[type=date] input[type=search],
  input[type=datetime-local] input[type=search],
  input[type=tel] input[type=search],
  input[type=number] input[type=search],
  input[type=search] input[type=search],
  input[type=file] input[type=search],
  textarea input[type=search],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=search],
  form input[type=search],
  .b-callback-form input[type=search],
  input[type=text] input[type=file],
  input[type=password] input[type=file],
  input[type=email] input[type=file],
  input[type=url] input[type=file],
  input[type=time] input[type=file],
  input[type=date] input[type=file],
  input[type=datetime-local] input[type=file],
  input[type=tel] input[type=file],
  input[type=number] input[type=file],
  input[type=search] input[type=file],
  input[type=file] input[type=file],
  textarea input[type=file],
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) input[type=file],
  form input[type=file],
  .b-callback-form input[type=file],
  input[type=text] textarea,
  input[type=password] textarea,
  input[type=email] textarea,
  input[type=url] textarea,
  input[type=time] textarea,
  input[type=date] textarea,
  input[type=datetime-local] textarea,
  input[type=tel] textarea,
  input[type=number] textarea,
  input[type=search] textarea,
  input[type=file] textarea,
  textarea textarea,
  .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) textarea,
  form textarea,
  .b-callback-form textarea, input[type=text] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=password] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=email] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=url] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=time] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=date] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=datetime-local] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=tel] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=number] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=search] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), input[type=file] .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), textarea .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), form .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio), .b-callback-form .wpcf7-form-control:not(.wpcf7-checkbox):not(.wpcf7-radio) {
    font-size: 2rem;
    height: 40px;
    line-height: 40px;
  }
}

::-ms-reveal {
  display: none !important;
}

input[type=file] {
  text-indent: 0;
  line-height: 1;
  color: #0580FF;
}

textarea {
  padding: 1.4rem;
  overflow: auto;
  resize: none;
  line-height: 1.1;
  min-height: 210px;
}

.auto-width {
  width: auto;
}

input[type=text]::-ms-clear {
  display: none;
}

label {
  margin-bottom: .5rem;
}

label.is-error {
  display: block;
  color: #e3725b;
  margin-top: 5px;
  font-weight: normal;
  font-size: 1.4rem;
  line-height: 1;
}

.label {
  font-size: 1.4rem;
  line-height: 1;
  display: block;
  margin-bottom: .5rem;
}

.select-wrp {
  position: relative;
}

.select-wrp:before {
  content: '';
  content: "\e901";
  position: absolute;
  left: 1rem;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  font-size: 1.3rem;
  color: #000;
}

[dir="ltr"] .select-wrp:before {
  left: auto;
  right: 1rem;
}

.ltr .select-wrp:before {
  left: auto;
  right: 1rem;
}

.select-wrp select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  width: 100%;
  height: 4rem;
  background-color: #fff;
  border: 1px solid #000;
  border-radius: 0px;
  outline: none;
  line-height: 4rem;
  color: #444444;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  font-size: 1.5rem;
  font-weight: 400;
  padding: 0 1.2rem;
  padding-left: 4rem;
}

[dir="ltr"] .select-wrp select {
  padding-left: 1.2rem;
  padding-right: 4rem;
}

.ltr .select-wrp select {
  padding-left: 1.2rem;
  padding-right: 4rem;
}

.error-message {
  color: red;
  font-size: 1.6rem;
  line-height: 1.25;
  padding-bottom: 1.5rem;
}

.app-callback-form .btn, .app-callback-form .btn-flat, .app-callback-form .b-callback-form .btn-submit, .b-callback-form .app-callback-form .btn-submit {
  width: 100%;
}

/*****************************************
  upload button styles
******************************************/
.file-upload {
  position: relative;
  display: inline-block;
}

.file-upload__label {
  display: block;
  background: transparent;
  color: #0580FF;
  font-size: 18px;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

.file-upload__label:before {
  content: '';
  display: inline-block;
  margin-right: 10px;
  background: url(../img/icon/iconattach.svg) 0 0 no-repeat;
  background-size: contain;
  width: 20px;
  height: 20px;
  vertical-align: -2px;
}

.file-upload__label:hover {
  cursor: pointer;
}

.file-upload__input {
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  font-size: 0;
  width: 0;
  height: 100%;
  opacity: 0;
}

#gform_wrapper_3 .gform_confirmation_message, .gform_wrapper .gform_confirmation_message {
  font-size: 22px;
  text-align: center;
  font-weight: bold;
  padding: 0 20px 0 20px;
}

section .app-inline-form {
  margin-left: -20px;
  margin-right: -20px;
}

section .app-inline-form .gfield {
  padding-left: 20px;
  padding-right: 20px;
}

section #gform_wrapper_3.gform_wrapper .gform_button, section #gform_wrapper_3.gform_wrapper .button, section .gform_wrapper .gform_button, section .gform_wrapper .button {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #fff !important;
  padding: 1.2rem 1.5rem 1.2rem !important;
  font-size: 14px !important;
  font-weight: 700;
  border-radius: 0 !important;
  background: #0580FF !important;
  min-width: 160px;
  max-width: 240px;
}

section #gform_wrapper_3.gform_wrapper .gfield .gfield_error, section .gform_wrapper .gfield .gfield_error {
  border: none;
  background: transparent;
  /* Safari - Pre Flex Flow */
  -webkit-flex-direction: row;
  -webkit-flex-wrap: wrap;
  /* MS - Pre Flex Flow */
  -ms-flex-direction: row;
  -ms-flex-wrap: wrap;
  /* Moz - Pre Flex Flow */
  -moz-flex-direction: row;
  -moz-flex-wrap: wrap;
  /* Flex Flow  */
  -webkit-flex-flow: row wrap;
  -moz-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  -webkit-flex-flow: row wrap;
  flex-flow: row wrap;
}

section #gform_wrapper_3.gform_wrapper .gfield .gfield_error .validation_message, section .gform_wrapper .gfield .gfield_error .validation_message {
  padding-top: 0;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: red;
}

section #gform_wrapper_3.gform_wrapper .gfield .gfield_error input:not([type=submit]), section .gform_wrapper .gfield .gfield_error input:not([type=submit]) {
  border-color: red;
}

section #gform_wrapper_3.gform_wrapper .gfield_description, section .gform_wrapper .gfield_description {
  color: #888888;
}

section #gform_wrapper_3.gform_wrapper .gfield.field_description_below .ginput_container, section .gform_wrapper .gfield.field_description_below .ginput_container {
  max-width: 500px;
}

@media screen and (min-width: 567px) {
  section #gform_wrapper_3.gform_wrapper .gfield.field_description_below, section .gform_wrapper .gfield.field_description_below {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-box-align: center;
    -moz-box-align: center;
    -ms-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
  }
  section #gform_wrapper_3.gform_wrapper .gfield.field_description_below .gfield_label, section .gform_wrapper .gfield.field_description_below .gfield_label {
    flex: 0 0 220px;
    max-width: 220px;
    margin-top: 0;
    margin-bottom: 12px;
  }
  section #gform_wrapper_3.gform_wrapper .gfield.field_description_below .ginput_container, section .gform_wrapper .gfield.field_description_below .ginput_container {
    flex: 0 1 auto;
    flex: auto;
    max-width: calc(100% - 220px);
    max-width: 500px;
  }
}

section #gform_wrapper_3.gform_wrapper .gfield_label, section .gform_wrapper .gfield_label {
  color: #253343 !important;
  font-family: "Source Sans Pro", "Roboto", sans-serif !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  letter-spacing: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]), section .gform_wrapper .ginput_container input:not([type=submit]) {
  border-color: #AAAAAA;
  color: #444444 !important;
  font-size: 1.6rem !important;
  font-family: "Source Sans Pro", "Roboto", sans-serif !important;
  font-weight: normal !important;
  background: #fff !important;
  box-shadow: none !important;
  letter-spacing: 0;
  padding-left: 2rem !important;
  padding-right: 2rem !important;
  height: 5rem;
  width: 100%;
  margin-bottom: 0 !important;
}

@media print, screen and (max-width: 39.99875em) {
  section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]), section .gform_wrapper .ginput_container input:not([type=submit]) {
    font-size: 2rem !important;
  }
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit])::-webkit-input-placeholder, section .gform_wrapper .ginput_container input:not([type=submit])::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]):-moz-placeholder, section .gform_wrapper .ginput_container input:not([type=submit]):-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit])::-moz-placeholder, section .gform_wrapper .ginput_container input:not([type=submit])::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .ginput_container input:not([type=submit]):-ms-input-placeholder, section .gform_wrapper .ginput_container input:not([type=submit]):-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

section #gform_wrapper_3.gform_wrapper .dropbox-dropin-btn, section .gform_wrapper .dropbox-dropin-btn {
  color: #00A6D0 !important;
  border: none !important;
  border-radius: 0 !important;
  background: none !important;
  font-size: 18px !important;
  font-family: "Source Sans Pro", "Roboto", sans-serif !important;
  padding: 0 !important;
  font-weight: normal !important;
  height: 50px !important;
  line-height: 50px !important;
  margin-bottom: 15px;
}

section #gform_wrapper_3.gform_wrapper .dropbox-dropin-btn .dropin-btn-status, section .gform_wrapper .dropbox-dropin-btn .dropin-btn-status {
  background: url(../img/icon/icondropbox.svg) 0 0 no-repeat !important;
  background-size: contain !important;
  width: 20px !important;
  height: 21px !important;
  margin: 0 !important;
  margin-right: 8px !important;
  vertical-align: -2px !important;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload, section .gform_wrapper .ginput_container_fileupload {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  /* Safari - Pre Flex Flow */
  -webkit-flex-direction: row;
  -webkit-flex-wrap: wrap;
  /* MS - Pre Flex Flow */
  -ms-flex-direction: row;
  -ms-flex-wrap: wrap;
  /* Moz - Pre Flex Flow */
  -moz-flex-direction: row;
  -moz-flex-wrap: wrap;
  /* Flex Flow  */
  -webkit-flex-flow: row wrap;
  -moz-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  -webkit-flex-flow: row wrap;
  flex-flow: row wrap;
  margin-bottom: 20px;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .gfield_description, section .gform_wrapper .ginput_container_fileupload .gfield_description {
  font-size: 15px;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div, section .gform_wrapper .ginput_container_fileupload > div {
  cursor: pointer;
  display: inline-block;
  margin-right: 54px;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div:last-of-type, section .gform_wrapper .ginput_container_fileupload > div:last-of-type {
  margin-right: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div:last-child, section .gform_wrapper .ginput_container_fileupload > div:last-child {
  margin-right: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload > div:not(:first-child).dropbox-upload, section .gform_wrapper .ginput_container_fileupload > div:not(:first-child).dropbox-upload {
  margin-right: 0;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .dropbox-upload:hover, section .gform_wrapper .ginput_container_fileupload .dropbox-upload:hover {
  cursor: pointer;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn, section .gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn {
  margin-bottom: 0 !important;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn .dropin-btn-status, section .gform_wrapper .ginput_container_fileupload .dropbox-upload .dropbox-dropin-btn .dropin-btn-status {
  display: inline-block;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .file-upload__label, section .gform_wrapper .ginput_container_fileupload .file-upload__label {
  position: relative;
  cursor: pointer;
  z-index: 5;
}

section #gform_wrapper_3.gform_wrapper .ginput_container_fileupload .file-upload:hover, section .gform_wrapper .ginput_container_fileupload .file-upload:hover {
  cursor: pointer;
}

section #gform_wrapper_3.gform_wrapper .gform_footer, section .gform_wrapper .gform_footer {
  padding-left: 20px;
  padding-right: 20px;
}

.gfield.accept-policy {
  list-style: none;
  padding: 1rem .5rem;
  font-size: 14px;
  color: #888888;
}

@media print, screen and (max-width: 39.99875em) {
  .app-form-landing-request-demo .row .column {
    flex: 0 0 100%;
    max-width: 100%;
    width: 100%;
  }
  .app-form-landing-request-demo .row + .row {
    padding-top: 3rem;
  }
}

@media screen and (max-width: 39.99875em) and (max-width: 411px) {
  .app-form-landing-request-demo .btn-submit {
    width: 100%;
    padding-top: .7em;
    padding-bottom: .7em;
    font-size: 16px;
  }
}

.menu-icon, .menu-icon--aside {
  display: inline-block;
  width: 3.7rem;
  height: 3rem;
  border: none;
  background: transparent;
  position: relative;
  cursor: pointer;
}

.menu-is-open .menu-icon, .menu-is-open .menu-icon--aside {
  z-index: 200;
  color: #fff;
}

.menu-is-open .menu-icon.burger span, .menu-is-open .menu-icon.burger:before, .menu-is-open .menu-icon.burger:after, .menu-is-open .menu-icon--aside.burger span, .menu-is-open .menu-icon--aside.burger:before, .menu-is-open .menu-icon--aside.burger:after {
  color: #fff;
}

@media screen and (min-width: 1024px) {
  .menu-icon:hover, .menu-icon--aside:hover {
    color: #484a48;
  }
  .menu-icon:hover.burger span, .menu-icon:hover.burger:before, .menu-icon:hover.burger:after, .menu-icon--aside:hover.burger span, .menu-icon--aside:hover.burger:before, .menu-icon--aside:hover.burger:after {
    color: #484a48;
    transition: color .3s ease;
  }
}

.menu-icon.large, .menu-icon--aside.large {
  width: 2rem;
  height: 1.8rem;
}

.menu-icon:focus, .menu-icon--aside:focus {
  outline: none;
}

.menu-icon.burger:after, .menu-icon.burger:before,
.menu-icon.burger span, .menu-icon--aside.burger:after, .menu-icon--aside.burger:before,
.menu-icon--aside.burger span {
  color: #444444;
  width: 100%;
  height: 4px;
  border-radius: 5px;
  position: absolute;
  display: block;
  background: currentColor;
}

.menu-icon.burger:after, .menu-icon.burger:before, .menu-icon--aside.burger:after, .menu-icon--aside.burger:before {
  content: "";
  transition: 0.3s width 0.4s;
}

.menu-icon.burger:after, .menu-icon--aside.burger:after {
  top: 0;
  left: 0;
  margin-top: 0;
}

.menu-icon.burger:before, .menu-icon--aside.burger:before {
  bottom: 0;
  right: 0;
  margin-bottom: 0;
}

.menu-icon.burger span, .menu-icon--aside.burger span {
  top: 50%;
  margin-top: -2px;
  transition: transform 0.3s;
}

.menu-icon.burger span:before, .menu-icon--aside.burger span:before {
  content: "";
  background: currentColor;
  width: 100%;
  height: 4px;
  border-radius: 5px;
  position: absolute;
  left: 0;
  transition: transform 0.3s;
}

.menu-icon.burger.on:after, .menu-icon--aside.burger.on:after {
  transition: all 0.2s;
  width: 0;
  left: 0;
}

.menu-icon.burger.on:before, .menu-icon--aside.burger.on:before {
  transition: all 0.2s;
  width: 0;
  right: 0;
}

.menu-icon.burger.on span, .menu-icon--aside.burger.on span {
  transform: rotate(45deg);
  transition: 0.3s transform 0.4s;
}

.menu-icon.burger.on span:before, .menu-icon--aside.burger.on span:before {
  transform: rotate(-90deg);
  transition: 0.3s transform 0.4s;
}

.b-sidebar-menu__title {
  border-radius: 5px;
  background: #000;
  color: #fff;
  font-weight: bold;
  margin-bottom: 2px;
  text-align: center;
  font-size: 2rem;
  position: relative;
  overflow: hidden;
}

.b-sidebar-menu__title.is-active {
  background: #444444;
  color: #444444;
}

.b-sidebar-menu__title > a {
  text-decoration: none;
  padding: 1.8rem 1rem;
  display: block;
  color: currentColor;
}

.b-sidebar-menu__title > a:hover {
  text-decoration: none;
}

.b-sidebar-menu__content {
  padding: 2rem;
}

.b-sidebar-menu__nav li {
  font-size: 1.5rem;
  font-weight: 400;
}

.b-sidebar-menu__nav li:not(:last-of-type) {
  margin-bottom: 1rem;
}

.b-sidebar-menu__nav .is-active {
  font-weight: bold;
}

.navigation {
  font-size: 1.5rem;
}

.navigation .screen-reader-text {
  display: inline-block;
  vertical-align: middle;
  font-size: 1.5rem;
  font-weight: bold;
  margin: 0;
}

.navigation .nav-links {
  margin-left: 5px;
  margin-right: 5px;
  display: inline-block;
  vertical-align: middle;
}

.navigation .page-numbers {
  padding-left: .4rem;
  padding-right: .4rem;
}

.navigation .current {
  font-weight: bold;
}

.has-submenu {
  position: relative;
}

.has-submenu:hover .submenu-wrp {
  display: block;
}

.has-submenu .submenu-wrp {
  padding-top: 1rem;
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  width: 12rem;
}

.has-submenu .submenu {
  min-width: 120px;
  background: #fff;
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25);
  border-radius: 4px;
  display: block;
}

.is-menu-open .has-submenu .submenu {
  box-shadow: none;
  min-width: 0;
  margin-left: 0;
  text-align: center;
}

.has-submenu .submenu > li {
  display: block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.has-submenu .submenu > li + li {
  padding-top: 0;
}

.is-menu-open .has-submenu .submenu > li + li {
  padding-top: 1rem;
}

.has-submenu .submenu > li > a {
  color: #000;
  font-size: 1.6rem;
  font-weight: 400;
  padding-left: 11px;
  padding-right: 11px;
}

.has-submenu .submenu > li > a:hover {
  color: #888888;
}

.b-header--yellow .has-submenu .submenu > li > a {
  color: #000;
}

.b-header--yellow .has-submenu .submenu > li > a:hover {
  color: #888888;
}

.b-header[class*=nav-] .has-submenu .submenu > li > a {
  color: #000;
}

.b-header[class*=nav-] .has-submenu .submenu > li > a:hover {
  color: #888888;
}

@media print, screen and (max-width: 47.99875em) {
  .has-submenu .submenu-wrp {
    width: 100%;
    display: block;
    position: relative;
  }
  .has-submenu .submenu-wrp .submenu {
    background: none;
  }
  .has-submenu .submenu-wrp .submenu li.is-active a {
    color: #ff7a00;
  }
  .has-submenu .submenu-wrp .submenu li a {
    color: #fff;
  }
}

.close-button {
  display: block;
  margin-left: auto;
  position: relative;
  line-height: 1;
  font-size: 0;
  width: 5.1rem;
  height: 5.1rem;
  margin-bottom: 2rem;
  transition: opacity .3s ease, background .3s ease;
}

.close-button:before, .close-button:after {
  content: '';
  position: absolute;
  top: 0;
  left: 2.65rem;
  height: 5.2rem;
  width: 0.2rem;
  background-color: #444444;
}

.close-button:before {
  transform: rotate(45deg);
}

.close-button:after {
  transform: rotate(-45deg);
}

.close-button:hover {
  opacity: .5;
}

html.is-reveal-open body {
  height: auto;
}

.reveal-overlay {
  background: rgba(0, 68, 90, 0.95);
  background: rgba(13, 12, 30, 0.84);
}

.reveal {
  border: none;
  outline: none;
  padding: 5.8rem;
  max-width: 88rem;
  width: 100%;
}

.reveal.reveal-transparent {
  background: transparent;
}

.reveal.reveal-small {
  max-width: 70rem;
}

.reveal.reveal-box {
  max-width: 87rem;
}

.reveal.reveal-box .modal-txt {
  max-width: 67rem;
}

.reveal .close-button {
  display: block;
  margin-left: auto;
  position: relative;
  line-height: 1;
  font-size: 0;
  width: 5.1rem;
  height: 5.1rem;
  margin-bottom: 2rem;
  transition: opacity .3s ease, background .3s ease;
}

.reveal .close-button:before, .reveal .close-button:after {
  content: '';
  position: absolute;
  top: 0;
  left: 2.65rem;
  height: 5.2rem;
  width: 0.2rem;
  background-color: #444444;
}

.reveal .close-button:before {
  transform: rotate(45deg);
}

.reveal .close-button:after {
  transform: rotate(-45deg);
}

.reveal .close-button:hover {
  opacity: .5;
}

.reveal .modal-header {
  display: flex;
}

.reveal .modal-title {
  margin-bottom: 3rem;
}

.reveal .modal-title .article-title {
  margin-bottom: 0;
}

.reveal .modal-body p {
  font-size: 100%;
  line-height: 1.875;
}

.reveal .modal-txt {
  font-size: 1.6rem;
}

.reveal .modal-preview {
  padding-top: 2rem;
  margin-bottom: 4rem;
}

.reveal .modal-footer {
  margin-top: 3.5rem;
}

.reveal .modal-footer [class^="btn"], .reveal .modal-footer .btn, .reveal .modal-footer .btn-flat, .reveal .modal-footer .b-callback-form .btn-submit, .b-callback-form .reveal .modal-footer .btn-submit {
  margin-right: 1rem;
  margin-top: 1rem;
  text-transform: none;
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  min-width: 23.3rem;
  border-radius: 0;
}

.reveal .more-link {
  color: #444444;
  text-decoration: underline;
}

.reveal .more-link:hover {
  text-decoration: none;
}

.reveal iframe {
  width: 100%;
  max-width: 100%;
}

.reveal video {
  width: 100%;
  max-width: 100%;
  height: 100%;
  object-fit: cover;
}

.reveal .responsive-embed {
  background-color: #000;
  background: #ccc url(../img/common/loader.svg) 50% 50% no-repeat;
  background-size: 15rem auto;
}

.reveal.reveal-video {
  background: transparent;
  background-size: contain;
  padding: 0;
}

.reveal.reveal-video .close-button:before, .reveal.reveal-video .close-button:after {
  background-color: #fff;
}

.reveal.reveal-video .modal-body {
  line-height: 0;
}

@media print, screen and (max-width: 39.99875em) {
  .reveal {
    padding-left: 3rem;
    padding-right: 3rem;
  }
}

.section, .s-section {
  width: 100%;
  position: relative;
  padding-top: 10rem;
  padding-bottom: 10rem;
}

@media print, screen and (max-width: 47.99875em) {
  .section, .s-section {
    padding-top: 7rem;
    padding-bottom: 7rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .section, .s-section {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }
}

.section.p-md, .s-section.p-md {
  padding-top: 7rem;
  padding-bottom: 7rem;
}

@media print, screen and (max-width: 39.99875em) {
  .section.p-md, .s-section.p-md {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }
}

.section.m-grey, .s-section.m-grey {
  background-color: #E5E5E5;
}

.section.m-cyan, .s-section.m-cyan {
  background-color: #36D1DC;
}

.section.m-blue, .s-section.m-blue {
  background-color: #0580FF;
}

.section.m-blue:before, .s-section.m-blue:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(180deg, rgba(0, 58, 145, 0.5) 0%, rgba(5, 128, 255, 0) 100%);
}

.section.m-blue .section-title, .s-section.m-blue .section-title {
  color: #fff;
}

.section.m-wave:after, .s-section.m-wave:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .section.m-wave:after, .s-section.m-wave:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.section.m-primary, .s-section.m-primary {
  background-color: #0580FF;
}

.section.m-primary .section-title, .s-section.m-primary .section-title {
  color: #fff;
}

.section.m-orange, .s-section.m-orange {
  background-color: #ff7a00;
}

.section.m-yellow, .s-section.m-yellow {
  background-color: #FFE800;
}

.section.h100, .s-section.h100 {
  min-height: 100vh;
}

.section.pt-0, .s-section.pt-0 {
  padding-top: 0;
}

.section.pb-0, .s-section.pb-0 {
  padding-bottom: 0;
}

.section.text-white, .s-section.text-white {
  color: #fff;
}

.section.text-white .s-hero__title, .s-section.text-white .s-hero__title {
  color: #fff;
}

.section.text-white .s-hero__txt, .s-section.text-white .s-hero__txt {
  color: #fff;
}

.section-slider, .section-main-slider, .section-hero {
  width: 100%;
}

.section-slider .bg-img, .section-main-slider .bg-img, .section-hero .bg-img {
  background-size: cover;
}

.section-slider .bg-img img, .section-main-slider .bg-img img, .section-hero .bg-img img {
  opacity: 0;
  visibility: hidden;
}

.section-bg {
  position: relative;
}

.section-bg .bg-img {
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.section-bg .bg-img.bg-parallax {
  transform: scale(1.1);
  background-position: center center;
}

.section-bg .bg-img--fixed {
  background-attachment: fixed;
}

.section-bg .bg-img img {
  opacity: 0;
  visibility: hidden;
}

.section-bg .subtitle {
  color: #fff;
}

.section-bg .container, .section-bg .section-title, .section-bg .row {
  position: relative;
}

.video-wrap.bg-img {
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.video-wrap.bg-img img {
  opacity: 0;
  visibility: hidden;
}

.s-hero {
  background: #FFE800;
  position: relative;
  width: 100%;
}

.s-hero._header-offset {
  padding-top: 14rem;
}

.s-hero__bg.bg-img {
  background-position: 50% 100%;
  image-rendering: -webkit-optimize-contrast;
}

.s-hero__bg.bg-img._show-tablet {
  display: none;
}

@media screen and (max-width: 1280px) and (min-width: 1000px) {
  .s-hero__bg.bg-img {
    background-size: 1920px auto;
  }
}

@media screen and (max-width: 999px) and (min-width: 320px) {
  .s-hero__bg.bg-img {
    background-size: 115% auto;
    display: none;
  }
  .s-hero__bg.bg-img._show-tablet {
    display: block;
  }
}

.s-hero__content {
  padding-bottom: 14rem;
}

.s-hero__txt {
  max-width: 70rem;
  margin-bottom: 3.4rem;
  font-size: 2.4rem;
  color: #222222;
}

.s-hero__txt p {
  font-size: 100%;
  line-height: 1.33;
}

.s-hero__title {
  letter-spacing: -0.02em;
  margin-bottom: 2rem;
  color: #222222;
}

.s-hero__title span {
  color: #fff;
  text-shadow: 10px 4px 12px rgba(140, 84, 0, 0.6);
}

.s-hero__btn .btn + .btn, .s-hero__btn .btn-flat + .btn, .s-hero__btn .b-callback-form .btn-submit + .btn, .b-callback-form .s-hero__btn .btn-submit + .btn, .s-hero__btn .btn + .btn-flat, .s-hero__btn .btn-flat + .btn-flat, .s-hero__btn .b-callback-form .btn-submit + .btn-flat, .b-callback-form .s-hero__btn .btn-submit + .btn-flat, .s-hero__btn .b-callback-form .btn + .btn-submit, .b-callback-form .s-hero__btn .btn + .btn-submit, .s-hero__btn .b-callback-form .btn-flat + .btn-submit, .b-callback-form .s-hero__btn .btn-flat + .btn-submit, .s-hero__btn .b-callback-form .btn-submit + .btn-submit, .b-callback-form .s-hero__btn .btn-submit + .btn-submit {
  margin-left: 1rem;
}

.s-hero__btn .btn, .s-hero__btn .btn-flat, .s-hero__btn .b-callback-form .btn-submit, .b-callback-form .s-hero__btn .btn-submit {
  margin-bottom: 1rem;
}

@media screen and (min-width: 1200px) and (max-width: 1920px) and (max-height: 960px) {
  .home .s-hero {
    background: transparent;
    margin-bottom: -4rem;
    padding-bottom: 0;
    min-height: 60rem;
    padding-top: 9rem;
  }
  .home .s-hero--user-access {
    min-height: 77rem;
    padding-top: 17rem;
  }
}

@media screen and (min-aspect-ratio: 17 / 10) and (min-width: 1200px) {
  .home .s-hero {
    background: transparent;
    padding-bottom: 0;
    margin-bottom: -4rem;
    min-height: 60rem;
    padding-top: 9rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) {
  .home .s-hero {
    background: transparent;
    padding-bottom: 0;
    margin-bottom: -6rem;
    min-height: 51rem;
    padding-top: 9rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) and (max-width: 1600px) {
  .home .s-hero__bg.bg-img {
    background-size: 1600px auto;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) {
  .home .s-hero__title {
    font-size: 5rem;
  }
  .home .s-hero__txt {
    font-size: 2.2rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 600px) {
  .home .s-hero {
    min-height: 51rem;
    margin-bottom: -7rem;
  }
}

@media screen and (min-width: 1200px) {
  .s-hero {
    min-height: 72rem;
  }
}

@media print, screen and (max-width: 63.99875em) {
  .s-hero__content {
    padding-top: 0;
    padding-bottom: 8rem;
  }
}

@media screen and (max-width: 1280px) and (min-width: 1000px) {
  .s-hero__content {
    padding-top: 0rem;
    padding-bottom: 10rem;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .s-hero__content {
    padding-top: 0;
    padding-bottom: 15rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero__bg.bg-img {
    background-position: 95% 100%;
    background-size: 100rem auto;
  }
  .s-hero__content {
    padding-bottom: 24rem;
  }
  .s-hero__title {
    font-size: 32px;
  }
  .s-hero__btn {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }
  .s-hero__btn .btn, .s-hero__btn .btn-flat, .s-hero__btn .b-callback-form .btn-submit, .b-callback-form .s-hero__btn .btn-submit {
    width: auto;
    margin-left: 0;
  }
  .s-hero__btn .btn + .btn, .s-hero__btn .btn-flat + .btn, .s-hero__btn .b-callback-form .btn-submit + .btn, .b-callback-form .s-hero__btn .btn-submit + .btn, .s-hero__btn .btn + .btn-flat, .s-hero__btn .btn-flat + .btn-flat, .s-hero__btn .b-callback-form .btn-submit + .btn-flat, .b-callback-form .s-hero__btn .btn-submit + .btn-flat, .s-hero__btn .b-callback-form .btn + .btn-submit, .b-callback-form .s-hero__btn .btn + .btn-submit, .s-hero__btn .b-callback-form .btn-flat + .btn-submit, .b-callback-form .s-hero__btn .btn-flat + .btn-submit, .s-hero__btn .b-callback-form .btn-submit + .btn-submit, .b-callback-form .s-hero__btn .btn-submit + .btn-submit {
    margin-left: 0;
  }
}

@media screen and (max-width: 425px) {
  .s-hero._header-offset {
    padding-top: 10rem;
  }
  .s-hero__bg.bg-img {
    background-position: 68% 100%;
    background-size: 80rem auto;
  }
  .s-hero__content {
    padding-bottom: 17rem;
  }
}

.s-hero-solutions:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-solutions:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.s-hero-solutions__pic {
  position: absolute;
  bottom: 0;
  right: 0%;
  z-index: 0;
}

.s-hero-solutions__pic img {
  width: 54rem;
}

.s-hero-solutions__content {
  padding-top: 4rem;
}

@media print, screen and (max-width: 63.99875em) {
  .s-hero-solutions__pic {
    text-align: right;
  }
  .s-hero-solutions__pic img {
    width: 70%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-solutions {
    padding-bottom: 24rem;
  }
  .s-hero-solutions:after {
    background-size: 2000px auto;
    background-position: 51% 100%;
  }
  .s-hero-solutions .bg-img {
    background-position: 30% 0;
  }
  .s-hero-solutions__content {
    padding-top: 6rem;
    padding-bottom: 10rem;
    padding-right: 14%;
  }
  .s-hero-solutions .s-hero__txt {
    padding-right: 20%;
  }
  .s-hero-solutions__pic {
    right: -12%;
    max-width: 100%;
  }
}

@media screen and (max-width: 425px) {
  .s-hero-solutions {
    padding-bottom: 26rem;
  }
  .s-hero-solutions__content {
    padding-bottom: 0rem;
    padding-right: 20px;
  }
  .s-hero-solutions .s-hero__txt, .s-hero-solutions__txt {
    padding-right: 0;
  }
}

.s-hero-content {
  min-height: 55rem;
  background-color: #E5E5E5;
}

.s-hero-content.m-shadow:after {
  background: url(../img/common/bg__waveSolutions-shadow.svg) 100% 100% no-repeat;
  background-size: 100% auto;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-content.m-shadow:after {
    background-position: 0 101%;
    background-size: 2000px auto;
  }
}

.s-hero-content.m-clean:after {
  display: none;
}

.s-hero-content:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-content:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.s-hero-content .bg-img {
  overflow: hidden;
}

.s-hero-content .bg-img:before {
  content: '';
  z-index: 1;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 12rem;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
}

.s-hero-content .bg-img:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(34, 34, 34, 0.6);
}

.s-hero-blog {
  display: flex;
  align-items: center;
}

.s-hero-blog:after {
  display: none;
}

.s-hero-blog .s-hero-ai__content {
  padding-bottom: 0;
}

.s-ai-personal {
  padding-top: 15rem;
  padding-bottom: 20%;
  position: relative;
  z-index: 1;
  min-height: 89rem;
}

.s-ai-personal__info {
  padding-left: 30px;
}

.s-ai-personal__bg {
  z-index: -1;
}

.s-ai-personal__bg.bg-img {
  background-position: 50% 100%;
  background-size: 2000px auto;
}

@media screen and (min-width: 2000px) {
  .s-ai-personal__bg.bg-img {
    background-size: 100% auto;
    background-position: 100% 100%;
  }
}

.s-ai-personal__title {
  margin-bottom: 4rem;
}

.s-ai-personal__title:before {
  content: '';
  width: 8rem;
  height: 8rem;
  display: block;
  background: url(../img/icon/magic.svg) 0 0 no-repeat;
  background-size: contain;
  position: relative;
  margin-left: -4rem;
  margin-bottom: -1rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-personal__title:before {
    width: 5rem;
    height: 5rem;
    margin-left: -2rem;
  }
}

.s-ai-personal__title span {
  display: block;
}

.s-ai-personal__txt p {
  font-size: 100%;
  line-height: 1.5;
}

.s-ai-personal__btn {
  margin-top: 5rem;
}

@media print, screen and (max-width: 74.99875em) {
  .s-ai-personal {
    min-height: 75vw;
  }
}

@media print, screen and (max-width: 63.99875em) {
  .s-ai-personal {
    padding-top: 3rem;
  }
  .s-ai-personal .container {
    padding-top: 20rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-personal {
    padding-top: 4rem;
    padding-left: 10px;
    padding-bottom: 0;
  }
  .s-ai-personal__bg.bg-img {
    background-position: 100% 0%;
    background-size: 100% auto;
  }
  .s-ai-personal__title {
    margin-top: 6rem;
    margin-bottom: 20vw;
  }
  .s-ai-personal__txt {
    text-align: center;
  }
  .s-ai-personal__btn {
    text-align: center;
  }
  .s-ai-personal__info {
    padding-left: 20px;
  }
}

@media screen and (max-width: 500px) {
  .s-ai-personal__title {
    margin-bottom: 13rem;
    margin-bottom: 22rem;
    margin-top: 0;
  }
  .s-ai-personal .title-1, .s-ai-personal .s-hero__title {
    font-size: 26px;
  }
  .s-ai-personal__bg.bg-img {
    background-position: 50% 0%;
    background-size: 500px auto;
  }
}

.s-hero-industries {
  z-index: 5;
}

.s-hero-industries__bg:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
  height: 12rem;
}

.s-hero-industries__bg.bg-img {
  background-position: 50% 100%;
  background-size: cover;
}

@media screen and (max-width: 999px) and (min-width: 320px) {
  .s-hero-industries__bg.bg-img {
    background-size: cover;
  }
}

.s-hero-ai {
  background: #F1F1F1;
  position: relative;
  min-height: 52rem;
}

.s-hero-ai.m-shadow:after {
  background: url(../img/common/bg__waveSolutions-shadow.svg) 100% 100% no-repeat;
  background-size: 100% auto;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-ai.m-shadow:after {
    background-position: 0 101%;
    background-size: 2000px auto;
  }
}

.s-hero-ai:after {
  content: '';
  position: absolute;
  top: auto;
  bottom: -1px;
  left: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__waveSolutions.svg) 100% 100% no-repeat;
  background-size: 100% auto;
  pointer-events: none;
  z-index: 1;
}

@media screen and (max-width: 2000px) and (min-width: 1200px) {
  .s-hero-ai:after {
    background-position: 0 100%;
    background-size: 2000px auto;
  }
}

.s-hero-ai__content {
  padding-top: 6rem;
  padding-bottom: 6rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-ai {
    min-height: 20vh;
  }
  .s-hero-ai__content {
    padding-bottom: 0;
  }
}

.s-callback-form {
  padding-bottom: 5rem;
  min-height: 46rem;
}

.s-callback-form .form-title {
  padding-left: .5rem;
  padding-right: .5rem;
  padding-top: 5rem;
  margin-bottom: 2rem;
  font-weight: 700;
  color: #222222;
}

.s-callback-form__bg.bg-img {
  background-position: 0% 101%;
  background-size: 192rem auto;
}

@media screen and (min-width: 1200px) and (max-width: 2000px) {
  .s-callback-form__bg.bg-img {
    background-size: 2000px auto;
  }
}

@media screen and (min-width: 1600px) and (max-width: 2000px) {
  .s-callback-form__bg.bg-img {
    background-size: 2100px auto;
  }
}

.s-callback-form__content {
  padding-top: 17%;
}

.s-callback-form textarea {
  padding-top: 1rem;
  min-height: 14rem;
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-callback-form textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-callback-form textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-callback-form textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-callback-form textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-callback-form .b-form-list {
  font-size: 0;
  margin-top: -.5rem;
  margin-bottom: -.5rem;
  margin-right: .5rem;
}

.s-callback-form .b-form-list input:not([type=submit]), .s-callback-form .b-form-list textarea {
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-callback-form .b-form-list input:not([type=submit]):focus, .s-callback-form .b-form-list input:not([type=submit]):active, .s-callback-form .b-form-list textarea:focus, .s-callback-form .b-form-list textarea:active {
  border-color: #0580FF;
}

.s-callback-form .b-form-list input:not([type=submit])::-webkit-input-placeholder, .s-callback-form .b-form-list textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-callback-form .b-form-list input:not([type=submit]):-moz-placeholder, .s-callback-form .b-form-list textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-callback-form .b-form-list input:not([type=submit])::-moz-placeholder, .s-callback-form .b-form-list textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-callback-form .b-form-list input:not([type=submit]):-ms-input-placeholder, .s-callback-form .b-form-list textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-callback-form .b-form-list .has-error input:not([type=submit]), .s-callback-form .b-form-list .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-callback-form .b-form-list li {
  padding: .5rem;
  width: 50%;
  display: inline-block;
}

.s-callback-form .btn-submit {
  min-width: 18rem;
  background: #FFF166;
  border-color: #FFF166;
  color: rgba(34, 34, 34, 0.5);
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
}

.s-callback-form .btn-submit:hover, .s-callback-form .btn-submit:focus {
  background: #0580FF;
  border-color: #0580FF;
  color: #fff;
  opacity: 1;
}

.s-callback-form .btn-submit.btn, .s-callback-form .btn-submit.btn-flat, .s-callback-form .b-callback-form .btn-submit, .b-callback-form .s-callback-form .btn-submit {
  background: #0580FF;
  color: #fff;
  border-color: #0580FF;
}

.s-callback-form .btn-submit.btn:hover, .s-callback-form .btn-submit.btn-flat:hover, .s-callback-form .b-callback-form .btn-submit:hover, .b-callback-form .s-callback-form .btn-submit:hover {
  opacity: .7;
}

.s-callback-form .has-error input, .s-callback-form .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-callback-form .form-submit-message {
  max-width: 28rem;
  font-size: 2.4rem;
  line-height: 1.25;
}

.s-callback-form .form-submit-message p {
  font-size: 100%;
}

.s-callback-form .form-submit-message__title {
  font-size: 100%;
  font-weight: bold;
}

.s-callback-form .form-submit-message__txt {
  line-height: 1.25;
}

.s-callback-form .error-message {
  padding-left: .5rem;
}

@media print, screen and (max-width: 63.99875em) {
  .s-callback-form__bg.bg-img {
    background-position: 0 100%;
    background-size: 100% auto;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .s-callback-form {
    background: #FFE800;
    padding-bottom: 6rem;
    min-height: 0;
  }
  .s-callback-form__bg.bg-img {
    background-position: 0 0%;
    background-size: 100% auto;
    background-color: #FFE800;
  }
  .s-callback-form__content {
    padding-top: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-callback-form__content {
    padding-top: 42%;
  }
  .s-callback-form__bg.bg-img {
    background-position: 0 0;
    background-size: 100% auto;
  }
  .s-callback-form .text-right {
    text-align: center;
  }
  .s-callback-form form .column {
    text-align: center;
  }
  .s-callback-form form .shrink.small-12 {
    flex: 0 0 100%;
  }
  .s-callback-form .form-title {
    padding-top: 0;
    padding-left: 0rem;
  }
  .s-callback-form .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
    margin-bottom: .5rem;
  }
}

@media screen and (max-width: 425px) {
  .s-callback-form .b-form-list li {
    width: 100%;
  }
  .s-callback-form .ml-auto, .s-callback-form .mr-auto {
    margin-left: auto;
    margin-right: auto;
  }
  .s-callback-form .error-message {
    margin-bottom: 1.5rem;
  }
}

.s-ai-about {
  padding-top: 12rem;
  padding-bottom: 12rem;
  position: relative;
  z-index: 1;
}

.s-ai-about._no-bg:before {
  display: none;
}

.s-ai-about:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0%;
  z-index: -1;
  pointer-events: none;
  background: url(../img/common/bg__line2.svg) 55% 0 no-repeat;
  background-size: auto 100%;
}

@media screen and (min-width: 1600px) {
  .s-ai-about:before {
    background-position: 10% 0;
  }
}

@media screen and (max-width: 1199px) {
  .s-ai-about:before {
    display: none;
  }
}

.s-ai-about__row {
  align-items: center;
  padding-top: 6rem;
}

.s-ai-about__pic img, .s-ai-about__pic svg {
  max-width: 66rem;
}

.s-ai-about__info {
  max-width: 54rem;
}

.s-ai-about__title {
  font-weight: normal;
  color: #222222;
}

.s-ai-about__title span, .s-ai-about__title strong {
  font-weight: 700;
}

.s-ai-about__txt p {
  line-height: 1.5;
}

@media print, screen and (max-width: 63.99875em) {
  .s-ai-about {
    padding-top: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-about {
    padding-top: 0;
  }
  .s-ai-about__row {
    text-align: center;
  }
  .s-ai-about__row:nth-child(2n) .s-ai-about__pic {
    order: -1;
  }
  .s-ai-about__info {
    margin-left: auto;
    margin-right: auto;
  }
}

.s-ai-cta [class^="title-"] {
  color: #222222;
}

@media print, screen and (min-width: 40em) {
  .s-ai-cta__info {
    padding-left: 3rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-cta__btn {
    text-align: center;
  }
  .s-ai-cta__info {
    margin-bottom: -2rem;
  }
}

.s-ai-products {
  padding-top: 8.2rem;
  padding-bottom: 8.2rem;
  color: #000;
  z-index: 5;
  margin-bottom: -12%;
}

.s-ai-products:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 50%;
  width: 100%;
  background-color: #0094ff;
}

.s-ai-products:after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  background: url(../img/common/bg__wave.svg) 50% 100% no-repeat;
  background-size: 192rem auto;
  pointer-events: none;
}

.s-ai-products .container {
  position: relative;
  z-index: 1;
}

.s-ai-products + .section, .s-ai-products + section {
  padding-top: 12%;
}

.s-ai-products__info {
  padding-top: 8rem;
}

@media print, screen and (max-width: 74.99875em) {
  .s-ai-products {
    padding-bottom: 18rem;
  }
  .s-ai-products:after {
    background-position: 0 100%;
  }
}

@media screen and (min-width: 1000px) and (max-width: 1024px) {
  .s-ai-products {
    padding-bottom: 4.5rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-ai-products {
    padding-bottom: 5rem;
  }
  .s-ai-products:before {
    height: 80%;
  }
  .s-ai-products:after {
    background-size: 1000px auto;
    background-position: 44% 100%;
  }
  .s-ai-products__info {
    padding-top: 3rem;
  }
}

@media screen and (max-width: 425px) {
  .s-ai-products {
    padding-bottom: 5rem;
  }
  .s-ai-products:after {
    background-size: 1000px auto;
    background-position: 44% 100%;
  }
}

.s-review__video {
  padding-bottom: 7rem;
}

.s-review__video-wrp {
  max-width: 70rem;
  margin-left: auto;
  margin-right: auto;
}

.s-review__video .b-home-video {
  margin-bottom: 4.5rem;
  max-width: 70rem;
  margin-left: auto;
  margin-right: auto;
}

.s-review__video .b-home-video .btn-play {
  font-size: .6rem;
}

.s-review__video .b-home-video .responsive-embed {
  border-radius: 2rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-review {
    padding-top: 8rem;
  }
  .s-review__video {
    padding-bottom: 4rem;
  }
  .s-review__video .b-home-video {
    margin-bottom: 2rem;
  }
  .s-review__video .b-home-video__txt br {
    display: none;
  }
  .s-review .slick-slider .b-box-review {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
}

.s-solutions-article + .s-solutions-article {
  margin-top: 11.7rem;
}

.s-solutions-article__title {
  margin-bottom: 3rem;
  color: #222222;
}

.s-solutions-article__pic {
  margin-top: 5.4rem;
}

.s-solutions-article__tab-nav {
  position: relative;
  margin-top: 9rem;
  margin-bottom: 9rem;
  margin-left: auto;
  margin-right: auto;
}

.s-solutions-article__tab-nav:after {
  top: 100%;
  position: absolute;
  left: 50%;
  margin-left: -60rem;
  display: block;
  border-bottom: 1px solid #AAAAAA;
  width: 120rem;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li, .s-solutions-article__tab-nav .tabs-nav li {
  padding-left: 2.6rem;
  padding-right: 2.6rem;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li:hover .b-tabs__link, .s-solutions-article__tab-nav .tabs-nav li:hover .b-tabs__link {
  color: #fff;
  text-decoration: underline;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li:hover .b-tabs__link:after, .s-solutions-article__tab-nav .tabs-nav li:hover .b-tabs__link:after {
  background: rgba(0, 0, 0, 0);
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav li:hover .b-tabs__link span, .s-solutions-article__tab-nav .tabs-nav li:hover .b-tabs__link span {
  opacity: .7;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .is-active .b-tabs__link, .s-solutions-article__tab-nav .tabs-nav .is-active .b-tabs__link {
  color: #fff;
  text-decoration: underline;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .is-active .b-tabs__link:after, .s-solutions-article__tab-nav .tabs-nav .is-active .b-tabs__link:after {
  background: rgba(0, 0, 0, 0);
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .b-tabs__link, .s-solutions-article__tab-nav .tabs-nav .b-tabs__link {
  width: 20rem;
  height: 20rem;
  color: #fff;
  text-decoration: underline;
  border-radius: 50%;
  overflow: hidden;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .b-tabs__link:before, .s-solutions-article__tab-nav .tabs-nav .b-tabs__link:before {
  display: none;
}

.s-solutions-article__tab-nav .b-tabs--bg .tabs-nav .b-tabs__link span, .s-solutions-article__tab-nav .tabs-nav .b-tabs__link span {
  transition: .3s ease opacity;
}

@media screen and (max-width: 1023px) {
  .s-solutions-article__tab-nav ul {
    margin: -1.5rem;
  }
  .s-solutions-article__tab-nav li {
    padding: 1.5rem;
    flex: 0 0 50%;
    max-width: 50%;
    min-width: 24rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-solutions-article__tab-nav li {
    text-align: center;
    min-width: 50%;
    width: 50%;
    flex: 0 0 50%;
    padding: 0;
  }
  .s-solutions-article__tab-nav li:not(last-of-type) {
    margin-bottom: 3rem;
  }
  .s-solutions-article__tab-nav .b-tabs__link {
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 374px) {
  .s-solutions-article__tab-nav li {
    min-width: 100%;
    width: 100%;
    flex: 0 0 100%;
  }
}

.s-solutions-article__tab-body:not(.tab-content) .b-tab + .b-tab {
  padding-top: 10rem;
}

.s-solutions-article__tab-body:not(.tab-content) .b-tab {
  padding-top: 10rem;
}

.s-solutions-article__tab-body .bg-title {
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin-bottom: 6rem;
  padding: 4rem;
  letter-spacing: -0.02em;
  color: #222222;
  background-size: cover;
  background-position: 50% 50%;
  min-height: 20rem;
}

.s-solutions-article__tab-body .bg-title [class*="title"] {
  color: #222222;
  text-transform: uppercase;
}

.s-solutions-article__txt-title, .s-solutions-article h4, .s-solutions-article h5 {
  font-size: 2.4rem;
  color: #222222;
  font-weight: 700;
}

.s-solutions-article__txt-group + .s-solutions-article__txt-group {
  margin-top: 5rem;
}

.s-solutions-article__txt {
  font-size: 1.8rem;
}

.s-solutions-article__txt p {
  font-size: 100%;
  line-height: 1.67;
}

.s-solutions-article__txt ul {
  font-size: 100%;
}

.s-solutions-article__txt ul li {
  margin-top: .5rem;
  margin-bottom: .5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-solutions-article .row:not(.row--list) .column.small-12 + .column.small-12 {
    margin-top: 5rem;
  }
  .s-solutions-article__pic {
    margin-left: -20px;
    margin-right: -20px;
  }
  .s-solutions-article__tab-body .bg-title {
    padding: 20px;
    min-height: 80px;
    margin-left: -20px;
    margin-right: -20px;
  }
  .s-solutions-article__tab-body .bg-title [class^="title"] {
    margin-bottom: 0;
  }
  .s-solutions-article__tab-body .bg-title .title-2, .s-solutions-article__tab-body .bg-title .section-title {
    font-size: 25px;
  }
  .s-solutions-article__txt {
    font-size: 2.4rem;
  }
}

.article .grve-text-wrp {
  margin-top: 5rem;
}

.grve-text-wrp + .grve-text-wrp {
  margin-top: 5rem;
}

.s-company-article + .s-solutions-article {
  margin-top: 11.7rem;
}

.s-company-article__title {
  margin-bottom: 3rem;
  color: #222222;
}

.s-company-article__pic {
  margin-top: 5.4rem;
}

.s-company-article__txt {
  font-size: 2.2rem;
}

.s-company-article__txt p {
  font-size: 100%;
  line-height: 1.36;
}

@media print, screen and (max-width: 39.99875em) {
  .s-company-article__txt {
    font-size: 2.4rem;
  }
}

.s-content-partners p {
  line-height: 1.5;
}

@media print, screen and (max-width: 39.99875em) {
  .s-content-partners p {
    text-align: center;
  }
}

.s-company-about {
  padding-top: 18%;
  padding-bottom: 10.5rem;
}

.s-company-about__info {
  max-width: 38.5rem;
  color: #222222;
}

@media print, screen and (max-width: 89.99875em) {
  .s-company-about {
    padding-bottom: 10.5rem;
  }
}

@media print, screen and (max-width: 47.99875em) {
  .s-company-about {
    padding-top: 25%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-company-about {
    padding-top: 30%;
    padding-bottom: 15%;
    min-height: 55rem;
  }
  .s-company-about .bg-img {
    background-position: 50% 0%;
    background-size: 1000px auto;
  }
  .s-company-about .container {
    padding-left: 20px;
    padding-right: 20px;
  }
  .s-company-about__info {
    max-width: 22.5rem;
  }
}

.s-hero-company {
  overflow: hidden;
  height: 0;
  padding-bottom: 48.25%;
}

.s-hero-company .video-wrp:before {
  content: '';
  z-index: 1;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 12rem;
  background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
}

.s-hero-company > iframe, .s-hero-company > video {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.s-hero-company .bgVideo {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.s-hero-company .bgVideo iframe {
  object-fit: cover;
}

.s-hero-company .bgVideo .ytplayer-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
}

.s-hero-company2 {
  padding-bottom: 0;
  line-height: 1;
  margin-bottom: 5rem;
}

.s-hero-company2 .videoHero {
  width: 100%;
  position: relative;
  line-height: 0;
  box-shadow: 0px 10px 30px rgba(0, 0, 0, 0.4);
}

.s-hero-company2 .video-wrp {
  margin-bottom: -5rem;
  background: #fff;
  position: relative;
  z-index: 5;
  line-height: 0;
}

.s-hero-company2 .s-hero-ai__content, .s-hero-company2__content {
  padding-bottom: 0;
  padding-top: 0;
}

@media print, screen and (max-width: 47.99875em) {
  .s-hero-company2 .s-hero-ai__content, .s-hero-company2__content {
    padding-top: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-company2 {
    padding: 0;
    margin-bottom: 0;
  }
  .s-hero-company2 .s-hero-ai__content {
    padding: 0;
  }
  .s-hero-company2 .video-wrp {
    box-shadow: none;
    margin-bottom: 0;
    padding: 0;
  }
  .s-hero-company2 .video-wrp:before {
    content: '';
    z-index: 1;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 12rem;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);
  }
  .s-hero-company2 .video-wrp video {
    box-shadow: none;
    min-height: 180px;
    object-fit: cover;
  }
}

.s-request-demo {
  background: #fff;
}

.s-request-demo.m-fixed {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  z-index: 98;
  background: #fff;
  padding: 1rem 20px;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.25);
}

@media print, screen and (max-width: 39.99875em) {
  .s-request-demo:not(.hide) ~ .s-gartner.m-fixed {
    bottom: 6rem;
  }
}

.s-gartner {
  transition: transform .4s ease;
}

.s-gartner.is-hide {
  transform: translateX(100%);
  visibility: hidden;
  pointer-events: none;
}

.s-gartner.m-fixed {
  position: fixed;
  bottom: 2rem;
  right: 0;
  width: auto;
  z-index: 97;
  background: #fff;
  box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.25);
}

.s-gartner__wrp {
  width: 100%;
  display: flex;
  flex-direction: column;
  position: relative;
  max-width: 10rem;
}

.s-gartner__logo {
  flex: 0 0 10rem;
  width: 10rem;
  background: #182a54;
  line-height: 0;
}

.s-gartner__logo img {
  max-width: 100%;
  width: 100%;
}

.s-gartner__title {
  flex: 0 0 100%;
  font-family: "Roboto", Tahoma, Arial, Helvetica, sans-serif;
  padding: .6rem .3rem .9rem .9rem;
  font-size: 12px;
  font-weight: 500;
}

@media print, screen and (max-width: 39.99875em) {
  .s-gartner.m-fixed {
    bottom: 0;
    right: auto;
    left: 20px;
  }
  .s-gartner__wrp {
    flex-direction: row;
    max-width: 185px;
    max-width: 24rem;
  }
  .s-gartner__logo {
    flex: 0 0 90px;
    max-width: 90px;
    flex-grow: 1;
  }
  .s-gartner__title {
    background: #fff;
    padding: 15px 5px 15px 16px;
    flex: 0 1 auto;
    font-size: 14px !important;
    font-size: 1.75rem !important;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .has-show-gartner .b-footer {
    padding-bottom: 12rem;
  }
}

.s-content-ai__about p {
  line-height: 1.67;
}

.d-flex {
  display: flex;
  align-items: center;
}

.s-cookies.m-fixed {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  z-index: 99;
  background: #fff;
  padding: 1.5rem 4rem;
  box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.25);
}

.s-cookies__info {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.s-cookies .btn, .s-cookies .btn-flat, .s-cookies .b-callback-form .btn-submit, .b-callback-form .s-cookies .btn-submit {
  min-width: 9rem;
  margin-left: 3rem;
}

.s-cookies .close-button {
  position: absolute;
  right: 2rem;
  top: 1rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-cookies {
    flex-wrap: wrap;
  }
  .s-cookies.m-fixed {
    padding-left: 20px;
    padding-right: 20px;
  }
  .s-cookies .btn, .s-cookies .btn-flat, .s-cookies .b-callback-form .btn-submit, .b-callback-form .s-cookies .btn-submit {
    margin-left: 0;
  }
}

.b-socials__title {
  display: inline-block;
  vertical-align: middle;
  margin-right: 10px;
  color: #888888;
  font-size: 16px;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

.b-socials__title p {
  font-size: 100%;
  color: currentColor;
}

.b-socials__list {
  display: inline-block;
  vertical-align: middle;
  list-style: none;
  font-size: 0;
  margin: 0;
  line-height: 1;
}

.b-socials__list li {
  display: inline-block;
  vertical-align: middle;
  line-height: 1;
  padding-left: 10px;
  padding-right: 10px;
}

.b-socials__list li a {
  display: block;
}

.b-socials__list li a:hover {
  opacity: .7;
}

.s-content-footer {
  width: 100%;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.s-content-footer .b-socials {
  margin-left: auto;
}

.page-vacancy #grve-content .s-content-footer .b-vacancy-page__back-link {
  margin-bottom: 0;
}

@media screen and (max-width: 1024px) {
  .s-content-footer {
    padding-right: 25px;
    padding-left: 25px;
  }
}

@media screen and (max-width: 640px) {
  .s-content-footer {
    /* Safari - Pre Flex Flow */
    -webkit-flex-direction: row;
    -webkit-flex-wrap: wrap;
    /* MS - Pre Flex Flow */
    -ms-flex-direction: row;
    -ms-flex-wrap: wrap;
    /* Moz - Pre Flex Flow */
    -moz-flex-direction: row;
    -moz-flex-wrap: wrap;
    /* Flex Flow  */
    -webkit-flex-flow: row wrap;
    -moz-flex-flow: row wrap;
    -ms-flex-flow: row wrap;
    -webkit-flex-flow: row wrap;
    flex-flow: row wrap;
    padding-left: 0;
    padding-right: 0;
  }
  .s-content-footer .b-socials {
    width: 100%;
    margin-top: 30px;
    margin-left: 0;
    margin-right: auto;
  }
  .s-content-footer .b-socials li {
    padding-top: 10px;
    padding-bottom: 10px;
  }
}

.s-hero-request {
  position: relative;
  z-index: 5;
  padding-bottom: 20%;
  min-height: 56vh;
}

.s-hero-request .s-hero__txt {
  font-size: 2.2rem;
  max-width: 63rem;
}

.s-hero-request .s-hero__btn .btn, .s-hero-request .s-hero__btn .btn-flat, .s-hero-request .s-hero__btn .b-callback-form .btn-submit, .b-callback-form .s-hero-request .s-hero__btn .btn-submit {
  min-width: 16rem;
}

.s-hero-request .s-hero__title {
  color: #222;
}

.s-hero-request .s-hero__title.m-small {
  font-size: 5rem;
  letter-spacing: -0.02em;
  margin-bottom: 0.5rem;
}

.s-hero-request__content, .s-hero-request .container {
  position: relative;
  padding-top: 6rem;
}

.s-hero-request .bg-img {
  background-position: 40% 100%;
  background-repeat: no-repeat;
}

@media screen and (max-width: 999px) {
  .s-hero-request .bg-img {
    background-position: 50% 100%;
  }
}

@media screen and (max-width: 700px) {
  .s-hero-request .bg-img {
    background-position: 60% 100%;
  }
}

@media screen and (max-width: 700px) {
  .s-hero-request {
    min-height: 600px;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-request {
    min-height: 360px;
  }
  .s-hero-request .bg-img {
    background-size: 1400px auto;
    background-position: 62% 100%;
  }
  .s-hero-request .s-hero__title {
    max-width: 200px;
  }
}

.s-hero-request--landing {
  padding-bottom: 12%;
  margin-bottom: 10rem;
  background: #0094ff;
}

.s-hero-request--landing .bg-img {
  top: -1px;
  bottom: -1px;
}

@media screen and (max-width: 999px) {
  .s-hero-request--landing {
    padding-bottom: 14%;
  }
  .s-hero-request--landing .bg-img {
    background-position: 66% 100%;
    background-size: 130% auto;
  }
  .s-hero-request--landing .s-hero__txt {
    width: 80%;
    font-size: 2rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-request--landing {
    padding-bottom: 320px;
  }
  .s-hero-request--landing .bg-img {
    background-position: 80% 100%;
    background-size: 1000px auto;
  }
  .s-hero-request--landing .s-hero__title {
    max-width: 100%;
  }
  .s-hero-request--landing .s-hero__txt {
    width: 100%;
  }
  .s-hero-request--landing .s-hero__txt p br {
    display: none;
  }
}

.s-form {
  padding-top: 0;
  padding-bottom: 0;
  min-height: 40vh;
  min-height: calc(44vh - 5.5rem);
  background-color: #FFE800;
}

.s-form.s-form--request .b-form-list {
  margin-bottom: 0;
}

@media print, screen and (max-width: 39.99875em) {
  .s-form.s-form--request .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
    margin-bottom: .5rem;
  }
}

.s-form.s-form--landing {
  padding-bottom: 7rem;
  min-height: 40vh;
}

.s-form.s-form--landing .container {
  top: 0;
  margin-top: -10rem;
}

.s-form.s-form--landing .b-form-list {
  font-size: 0;
  margin: -.5rem;
}

.s-form.s-form--landing .b-form-list li {
  width: 100%;
}

.s-form.s-form--landing .b-form-list li:nth-child(1) {
  width: 50%;
}

.s-form.s-form--landing .b-form-list li:nth-child(2) {
  width: 50%;
}

.s-form.s-form--landing .s-form__partners > .row {
  max-width: 70rem;
}

.s-form.s-form--landing textarea, .s-form.s-form--landing input {
  border-radius: 3px;
}

@media print, screen and (min-width: 48em) {
  .s-form.s-form--landing textarea {
    height: 100%;
  }
}

.s-form.s-form--landing .error-message {
  padding-left: 0;
}

.s-form.s-form--landing .row .row:not(.small-collapse) {
  margin-left: -1.5rem;
  margin-right: -1.5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-form.s-form--landing .container {
    margin-top: -3rem;
  }
  .s-form.s-form--landing p br {
    display: none;
  }
  .s-form.s-form--landing .text--large, .s-form.s-form--landing .s-content-partners p, .s-content-partners .s-form.s-form--landing p, .s-form.s-form--landing .s-content-post .article p, .s-content-post .article .s-form.s-form--landing p, .s-form.s-form--landing .s-content-post .article ul, .s-content-post .article .s-form.s-form--landing ul, .s-form.s-form--landing .b-report__info p, .b-report__info .s-form.s-form--landing p {
    font-size: 2.2rem;
  }
  .s-form.s-form--landing .b-ai-partners__img {
    padding: 1rem;
  }
  .s-form.s-form--landing .b-ai-partners__img:first-child img {
    max-width: 7.7rem;
  }
  .s-form.s-form--landing .b-ai-partners__img:nth-child(5) img {
    max-width: 7rem;
  }
  .s-form.s-form--landing .b-ai-partners__img img {
    margin-top: 1rem;
    max-height: 5rem;
    min-height: 3.9rem;
    max-width: 5.3rem;
  }
}

.s-form.m-white {
  background: #fff;
}

.s-form .container {
  position: relative;
  z-index: 6;
  top: -7rem;
}

.s-form textarea {
  padding-top: 1rem;
  min-height: 14rem;
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-form textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-form textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-form textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-form textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-form .b-form-list {
  font-size: 0;
  margin-top: -.5rem;
  margin-bottom: 2rem;
  margin-right: .5rem;
}

.s-form .b-form-list input:not([type=submit]), .s-form .b-form-list textarea {
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.s-form .b-form-list input:not([type=submit]):focus, .s-form .b-form-list input:not([type=submit]):active, .s-form .b-form-list textarea:focus, .s-form .b-form-list textarea:active {
  border-color: #0580FF;
}

.s-form .b-form-list input:not([type=submit])::-webkit-input-placeholder, .s-form .b-form-list textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.s-form .b-form-list input:not([type=submit]):-moz-placeholder, .s-form .b-form-list textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.s-form .b-form-list input:not([type=submit])::-moz-placeholder, .s-form .b-form-list textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.s-form .b-form-list input:not([type=submit]):-ms-input-placeholder, .s-form .b-form-list textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.s-form .b-form-list .has-error input:not([type=submit]), .s-form .b-form-list .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-form .b-form-list li {
  padding: .5rem;
  width: 50%;
  display: inline-block;
}

.s-form .b-form-list li.accept-policy {
  width: 100%;
}

.s-form .btn-submit {
  min-width: 18rem;
  background: #FFF166;
  border-color: #FFF166;
  color: rgba(34, 34, 34, 0.5);
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
}

.s-form .btn-submit:hover, .s-form .btn-submit:focus {
  background: #0580FF;
  border-color: #0580FF;
  color: #fff;
  opacity: 1;
}

.s-form .btn-submit.btn, .s-form .btn-submit.btn-flat, .s-form .b-callback-form .btn-submit, .b-callback-form .s-form .btn-submit {
  background: #0580FF;
  color: #fff;
  border-color: #0580FF;
}

.s-form .btn-submit.btn:hover, .s-form .btn-submit.btn-flat:hover, .s-form .b-callback-form .btn-submit:hover, .b-callback-form .s-form .btn-submit:hover {
  opacity: .7;
}

.s-form .has-error input, .s-form .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.s-form .form-submit-message {
  max-width: 28rem;
  font-size: 2.4rem;
  line-height: 1.25;
}

.s-form .form-submit-message p {
  font-size: 100%;
}

.s-form .form-submit-message__title {
  font-size: 100%;
  font-weight: bold;
}

.s-form .form-submit-message__txt {
  line-height: 1.25;
}

.s-form .error-message {
  padding-left: .5rem;
}

.s-form__txt p {
  font-size: 100%;
}

@media print, screen and (max-width: 63.99875em) {
  .s-form .container {
    top: 0;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-form__txt {
    text-align: center;
    font-size: 20px;
  }
  .s-form__txt p {
    font-size: 100%;
  }
  .s-form .container {
    top: -8rem;
  }
  .s-form .text-right {
    text-align: left;
  }
}

@media screen and (max-width: 425px) {
  .s-form .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
  }
  .s-form .b-form-list li {
    width: 100%;
  }
}

.s-hero-ai:not(.text-white) [class^="title-"] {
  color: #222222;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-ai:not(.s-hero-industries):not(.s-hero-content) {
    padding-bottom: 24rem;
  }
  .s-hero-ai:not(.s-hero-industries):not(.s-hero-content):after {
    background-size: 1400px auto;
    background-position: 56% 100%;
  }
  .s-hero-ai:not(.s-hero-industries):not(.s-hero-content) .s-hero-ai__bg {
    background-position: 75% 100%;
    background-size: 1000px auto;
    background-blend-mode: multiply;
    background-color: #F1F1F1;
  }
  .s-hero-ai .title-1, .s-hero-ai .s-hero__title {
    font-size: 32px;
  }
}

.s-hero-industries:not(.text-white) [class^="title-"] {
  color: #222222;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero-industries {
    padding-bottom: 16rem;
  }
  .s-hero-industries:after {
    background-size: 1400px auto;
    background-position: 56% 101%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .page-template-page-ai .s-hero-ai .s-hero__txt {
    padding-right: 30%;
  }
}

.s-hero + .s-about-promo {
  padding-top: 12rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero + .s-about-promo {
    padding-top: 5rem;
  }
}

.s-features-promo {
  padding-top: 5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .s-features-promo:last-of-type {
    padding-bottom: 0;
  }
}

.responsive-embed {
  overflow: hidden;
  display: block;
}

.responsive-embed > img, .responsive-embed > iframe, .responsive-embed > video, .responsive-embed > .video-wrp {
  height: 100%;
  width: 100%;
  object-fit: cover;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

.responsive-embed > iframe {
  object-fit: fill;
}

.responsive-embed > .bg-img {
  background-size: cover;
}

.responsive-embed-wrp {
  position: relative;
  z-index: 5;
}

.responsive-embed-wrp.m-shadow:after {
  content: '';
  position: absolute;
  height: 72%;
  top: auto;
  right: -3rem;
  left: -3rem;
  bottom: -3rem;
  background: #0580FF;
  z-index: -1;
  pointer-events: none;
}

.responsive-embed-wrp.m-shadow .responsive-embed {
  border-radius: 1rem;
}

.b-social-inline {
  font-size: 0;
}

.b-social-inline li {
  padding: 0 7px;
}

.b-social-inline li a {
  transform: translateZ(0);
  display: block;
  transition: opacity .3s ease;
}

.b-social-inline li a:hover {
  opacity: .8;
}

.abs-link {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5;
}

.b-ai-partners__img {
  margin-top: -1.5rem;
  position: relative;
  overflow: hidden;
  max-width: 96rem;
}

.b-ai-partners__img img {
  margin-right: 5rem;
  margin-top: 1.5rem;
  max-height: 5.9rem;
  min-height: 4.9rem;
  width: auto;
  object-fit: contain;
}

.b-ai-partners__img img:last-child {
  margin-right: 0;
}

.b-ai-partners__img img.big, .b-ai-partners__img img:nth-child(2) {
  max-height: 5.9rem;
}

.b-ai-partners__img .slider-item {
  min-width: 10rem;
  text-align: center;
  flex: none;
}

.b-ai-partners__img-slider {
  padding-top: 1.5rem;
  width: 100%;
}

.b-ai-partners__img-slider .slider-item {
  padding: 1rem;
  padding-left: 1.5vw;
  padding-right: 1.5vw;
}

.b-ai-partners__img-slider .slider-item img {
  max-width: 100%;
}

.b-ai-partners__img-slider .slick-dots {
  margin-top: 0;
}

.b-ai-partners__img-slider.slider-marquee {
  display: flex;
  flex-wrap: nowrap;
  white-space: nowrap;
  justify-content: flex-start;
  min-width: 0;
}

.b-ai-partners__img-slider.slider-marquee.cloned {
  position: absolute;
  top: 1.5rem;
  left: 1.5rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-partners__img-slider.cloned .slider-item:first-of-type {
    padding-left: 1.5rem;
  }
  .b-ai-partners__img-slider .slider-item {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    min-width: 0;
    flex: 0 0 auto;
  }
  .b-ai-partners__img-slider .slider-item img {
    max-width: none;
  }
}

@media print, screen and (max-width: 63.99875em) {
  .b-ai-partners {
    margin-top: -10rem;
  }
  .b-ai-partners__txt {
    max-width: 50rem;
  }
  .b-ai-partners__img {
    margin-top: 0rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-partners {
    text-align: center;
    margin-top: -4rem;
  }
  .b-ai-partners__img {
    text-align: center;
    margin-top: 1.5rem;
    max-width: 100%;
    max-width: calc(100% - 20px);
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 425px) {
  .b-ai-partners__img {
    text-align: center;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
  }
  .b-ai-partners__img > img {
    margin-right: 1rem;
    margin-left: 1rem;
    max-width: 24%;
    flex: 0 1 auto;
    object-fit: contain;
  }
}

.b-box-review {
  max-width: 44rem;
  margin-right: auto;
  margin-left: auto;
}

.b-box-review-list {
  margin-top: 4rem;
}

.b-box-review-list.row.slick-slider {
  margin-left: auto;
  margin-right: auto;
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-review-list > .column {
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
  }
  .b-box-review-list > .column + .column {
    margin-top: 3rem;
  }
}

.b-box-review-list .b-box-review {
  height: 100%;
  display: flex;
  flex-direction: column;
  flex: 1;
}

.b-box-review-list .b-box-review__footer {
  margin-top: auto;
}

.b-box-review__pic {
  margin-bottom: 3.4rem;
  height: 10rem;
  width: 10rem;
  margin-right: auto;
  margin-left: auto;
}

.b-box-review__pic img {
  max-width: 10rem;
}

.b-box-review__pic .responsive-embed {
  height: 10rem;
  width: 10rem;
}

.b-box-review__pic .responsive-embed img {
  max-width: 100%;
}

.b-box-review__txt {
  font-size: 16px;
}

.b-box-review__body {
  padding-bottom: 2rem;
  font-size: 1.6rem;
}

.b-box-review__body p {
  font-size: 100%;
  line-height: 1.5;
}

.b-box-review__footer {
  font-size: 1.8rem;
  text-align: left;
  color: #888888;
  padding-top: 1.5rem;
  display: flex;
}

.b-box-review__footer p a {
  color: currentColor;
  text-decoration: underline;
}

.b-box-review__footer p a:hover {
  text-decoration: none;
}

.b-box-review__footer-col {
  border-right: 1px solid #ccc;
  flex: 0 1 auto;
  min-height: 7rem;
  padding-left: 2rem;
  padding-right: 2rem;
  display: inline-flex;
  flex-direction: column;
  height: 100%;
  justify-content: center;
}

.b-box-review__footer-col:last-of-type {
  border: none;
}

.b-box-review__footer p {
  margin-bottom: 0;
}

.b-box-review__author {
  color: #222;
  font-weight: 700;
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-review__txt, .b-box-review__author {
    font-size: 2.4rem;
  }
}

.b-report {
  display: flex;
  width: 100%;
}

.b-report-list {
  max-width: 90rem;
  margin-right: auto;
  margin-left: auto;
}

.b-report-list .b-report + .b-report {
  margin-top: 1rem;
}

.b-report--career .b-report__pic {
  padding: 0;
}

.b-report--career .b-report__pic img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.b-report--career .b-report__info {
  padding-left: 2.4rem;
  padding-right: 2.4rem;
}

.b-report--career .b-report__info p {
  font-size: 1.8rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-report--career .b-report__info p {
    font-size: 2.4rem;
  }
}

.b-report--career .b-report__info-btn .btn, .b-report--career .b-report__info-btn .btn-flat, .b-report--career .b-report__info-btn .b-callback-form .btn-submit, .b-callback-form .b-report--career .b-report__info-btn .btn-submit {
  min-width: 0;
}

.b-report__pic {
  background: #00563F;
  padding: 3rem;
  flex: 0 0 24rem;
  max-width: 24rem;
  flex-grow: 1;
  align-items: center;
  display: flex;
}

.b-report__info {
  padding-left: 4rem;
  padding-right: 4rem;
  flex: 1;
  flex: 0 0 calc(100% - 24rem);
  max-width: calc(100% - 24rem);
  background: #E9E9E9;
  color: #222;
  display: inline-flex;
  align-items: center;
}

.b-report__info-txt {
  flex: 1;
  margin-right: auto;
  padding-top: .75rem;
  padding-bottom: .75rem;
}

.b-report__info-btn {
  flex: 0 1 auto;
  margin-left: 4rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-report {
    flex-wrap: wrap;
  }
  .b-report__pic, .b-report__info {
    flex: 0 0 100%;
    max-width: 100%;
    padding: 3rem;
  }
}

@media screen and (max-width: 425px) {
  .b-report-list {
    max-width: 240px;
  }
  .b-report__info {
    flex-wrap: wrap;
    padding: 1.8rem 2rem 3rem;
  }
  .b-report__info-txt {
    flex: 0 0 100%;
    max-width: 100%;
    text-align: center;
    margin-bottom: 2rem;
  }
  .b-report__info-btn {
    margin-left: auto;
    margin-right: auto;
  }
}

.b-cta-benefit {
  position: relative;
  max-width: 28rem;
  min-width: 27rem;
}

.b-cta-benefit:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
  width: 5rem;
  height: 5rem;
  background: url(../img/icon/check-c.svg) 0 0 no-repeat;
  background-size: contain;
}

.b-cta-benefit__txt {
  padding-left: 5rem;
  padding-right: 3rem;
  padding-top: .4rem;
}

.b-cta-benefit p {
  font-size: 100%;
}

@media print, screen and (max-width: 39.99875em) {
  .b-cta-benefit {
    flex: 0 0 70%;
    padding-bottom: 4rem;
  }
  .b-cta-benefit:before {
    width: 4rem;
    height: 4rem;
  }
  .b-cta-benefit__txt {
    font-size: 20px;
  }
}

@media screen and (max-width: 424px) {
  .b-cta-benefit {
    flex: 0 0 100%;
    min-height: 7rem;
    max-width: 95%;
  }
  .b-cta-benefit__txt {
    padding-top: 0;
    padding-right: 0;
  }
}

.b-ai-product {
  display: flex;
  flex-wrap: wrap;
}

.slick-slider .b-ai-product {
  display: flex !important;
}

.b-ai-product__pic {
  flex: 0 0 45%;
  max-width: 45%;
  text-align: center;
}

.b-ai-product__pic img {
  margin-left: auto;
  margin-right: auto;
  margin-top: -10%;
}

.b-ai-product__info {
  flex: 0 0 55%;
  max-width: 55%;
  padding-top: 1rem;
  padding-left: 4rem;
  padding-right: 4rem;
}

.b-ai-product__title {
  margin-bottom: 1.8rem;
  color: #222;
}

.b-ai-product__txt p {
  font-size: 100%;
  line-height: 1.5;
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-product {
    padding-bottom: 6rem;
  }
  .b-ai-product__pic, .b-ai-product__info {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .b-ai-product__pic {
    padding-left: 10%;
    padding-right: 10%;
  }
  .b-ai-product__pic img {
    margin-bottom: -10%;
  }
  .b-ai-product__info {
    padding-left: 2rem;
    padding-right: 2rem;
    text-align: center;
  }
  .b-ai-product__info .text-right {
    text-align: center;
  }
}

.b-ai-product-slider__nav {
  position: relative;
  border-bottom: 1px solid rgba(0, 0, 0, 0.3);
  text-align: center;
  font-size: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}

.b-ai-product-slider__nav-icn {
  height: 5rem;
  margin-bottom: 1rem;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  align-items: center;
  justify-content: center;
}

.b-ai-product-slider__nav-icn img, .b-ai-product-slider__nav-icn svg {
  height: auto;
  max-width: 6.2rem;
  max-height: 4.6rem;
  object-fit: contain;
}

.b-ai-product-slider__nav-icn .icn-ux {
  width: 4.5rem;
}

.b-ai-product-slider__nav-itm {
  display: inline-block;
  text-align: center;
  position: relative;
  padding-left: 1.8rem;
  padding-right: 1.8rem;
  max-width: 18rem;
  width: 18rem;
  cursor: pointer;
}

.b-ai-product-slider__nav-itm.is-active {
  border-bottom: 0.8rem solid #FFE800;
}

.b-ai-product-slider__nav-itm.is-active * {
  color: #FFE800;
}

.b-ai-product-slider__nav-itm.is-active svg path {
  fill: #FFE800;
  fill-opacity: 1;
}

.b-ai-product-slider__nav-title {
  font-size: 1.4rem;
  padding-bottom: 1rem;
  text-transform: uppercase;
  color: rgba(0, 0, 0, 0.7);
}

.is-active .b-ai-product-slider__nav-title {
  font-weight: 700;
}

@media print, screen and (max-width: 39.99875em) {
  .b-ai-product-slider .slick-nav.slick-arrow {
    top: 20%;
  }
  .b-ai-product-slider__nav {
    flex-wrap: nowrap;
    justify-content: space-around;
  }
  .b-ai-product-slider__nav-itm {
    padding-left: .5rem;
    padding-right: .5rem;
    width: auto;
    max-width: none;
    flex: 1;
    border-bottom-width: 3px;
  }
  .b-ai-product-slider__nav-itm.is-active {
    border-bottom-width: 3px;
  }
  .b-ai-product-slider__nav-title {
    font-size: 10px;
    letter-spacing: -0.04em;
  }
}

@media screen and (max-width: 425px) {
  .b-ai-product-slider__nav-title {
    font-size: 11px;
    font-weight: 700;
  }
  .b-ai-product-slider__nav-icn svg, .b-ai-product-slider__nav-icn img {
    max-width: 4.2rem;
    max-height: 3.6rem;
  }
}

.b-use-case-list {
  display: flex;
  flex-wrap: wrap;
}

.b-use-case-list__itm {
  padding: 2rem;
  flex: 0 0 33%;
  max-width: 33.33%;
  flex-grow: 1;
}

@media print, screen and (max-width: 47.99875em) {
  .b-use-case-list__itm {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-use-case-list {
    margin-left: -2rem;
    margin-right: -2rem;
  }
  .b-use-case-list__itm {
    flex: 0 0 50%;
    max-width: 50%;
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 375px) {
  .b-use-case-list__itm {
    padding: 1rem;
  }
}

.b-use-case {
  position: relative;
  border-radius: 10px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  min-height: 22rem;
}

.b-use-case__pic {
  width: 100%;
  text-align: center;
}

.b-use-case__pic img {
  width: 100%;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.b-use-case__info {
  flex: 0 0 100%;
  padding-top: 1rem;
  padding-right: 1rem;
  padding-left: 1rem;
  text-align: center;
  position: absolute;
  left: 0;
  top: 55%;
  width: 100%;
}

.b-use-case__title {
  font-weight: 600;
  font-size: 2rem;
  line-height: 1.2;
  max-width: 20rem;
  margin-left: auto;
  margin-right: auto;
  letter-spacing: -0.02em;
}

@media print, screen and (max-width: 39.99875em) {
  .b-use-case__title {
    font-size: 12px;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-use-case__title {
    font-size: 18px;
    font-weight: 600;
  }
}

@media screen and (max-width: 375px) {
  .b-use-case {
    min-height: 0;
  }
}

.b-callback-form textarea {
  padding-top: 1rem;
  min-height: 14rem;
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.b-callback-form textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.b-callback-form textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.b-callback-form textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.b-callback-form textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.b-callback-form .b-form-list {
  font-size: 0;
  margin-top: -.5rem;
  margin-bottom: -.5rem;
  margin-right: .5rem;
}

.b-callback-form .b-form-list input:not([type=submit]), .b-callback-form .b-form-list textarea {
  margin-bottom: 0;
  border: 1px solid #CCCCCC;
}

.b-callback-form .b-form-list input:not([type=submit]):focus, .b-callback-form .b-form-list input:not([type=submit]):active, .b-callback-form .b-form-list textarea:focus, .b-callback-form .b-form-list textarea:active {
  border-color: #0580FF;
}

.b-callback-form .b-form-list input:not([type=submit])::-webkit-input-placeholder, .b-callback-form .b-form-list textarea::-webkit-input-placeholder {
  /* WebKit browsers */
  color: #AAAAAA;
}

.b-callback-form .b-form-list input:not([type=submit]):-moz-placeholder, .b-callback-form .b-form-list textarea:-moz-placeholder {
  /* Mozilla Firefox 4 to 18 */
  color: #AAAAAA;
}

.b-callback-form .b-form-list input:not([type=submit])::-moz-placeholder, .b-callback-form .b-form-list textarea::-moz-placeholder {
  /* Mozilla Firefox 19+ */
  color: #AAAAAA;
}

.b-callback-form .b-form-list input:not([type=submit]):-ms-input-placeholder, .b-callback-form .b-form-list textarea:-ms-input-placeholder {
  /* Internet Explorer 10+ */
  color: #AAAAAA;
}

.b-callback-form .b-form-list .has-error input:not([type=submit]), .b-callback-form .b-form-list .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.b-callback-form .b-form-list li {
  padding: .5rem;
  width: 50%;
  display: inline-block;
}

.b-callback-form .btn-submit.btn, .b-callback-form .btn-submit.btn-flat, .b-callback-form .btn-submit {
  background: #0580FF;
  color: #fff;
  border-color: #0580FF;
}

.b-callback-form .btn-submit.btn:hover, .b-callback-form .btn-submit.btn-flat:hover, .b-callback-form .btn-submit:hover {
  opacity: .7;
}

.b-callback-form .has-error input, .b-callback-form .has-error textarea {
  background-color: #FFE7E7;
  border: 1px solid #FF0000;
}

.b-callback-form .form-submit-message {
  max-width: 28rem;
  font-size: 2.4rem;
  line-height: 1.25;
}

.b-callback-form .form-submit-message p {
  font-size: 100%;
}

.b-callback-form .form-submit-message__title {
  font-size: 100%;
  font-weight: bold;
}

.b-callback-form .form-submit-message__txt {
  line-height: 1.25;
}

@media print, screen and (max-width: 39.99875em) {
  .b-callback-form .text-right {
    text-align: center;
  }
  .b-callback-form .column.ml-auto {
    margin-left: 0;
  }
  .b-callback-form .gform_footer {
    margin-top: 1rem;
  }
  .b-callback-form form .column {
    text-align: center;
  }
  .b-callback-form .b-form-list {
    margin-left: -.5rem;
    margin-right: -.5rem;
    margin-bottom: .5rem;
  }
}

@media screen and (max-width: 425px) {
  .b-callback-form .b-form-list li {
    width: 100%;
  }
}

.b-partners-list {
  font-size: 0;
}

.b-partners-list__itm {
  padding: 1rem 1.5rem;
  display: inline-block;
  vertical-align: middle;
}

.b-partners-list__itm img {
  object-fit: contain;
}

.b-location-list {
  display: flex;
  flex-wrap: wrap;
}

.b-location-list .b-location {
  margin-left: auto;
  margin-right: auto;
}

.b-location-list__itm {
  padding: 2rem;
  flex: 0 0 33%;
  max-width: 33.33%;
  flex-grow: 1;
}

@media print, screen and (max-width: 47.99875em) {
  .b-location-list__itm {
    flex: 0 0 50%;
    max-width: 50%;
  }
}

@media screen and (max-width: 767px) and (min-width: 375px) {
  .b-location-list {
    margin-left: -1rem;
    margin-right: -1rem;
  }
  .b-location-list__itm {
    flex: 0 0 33%;
    max-width: 33%;
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .b-location-list__itm > div {
    max-width: 100%;
    height: 100%;
  }
  .b-location-list__itm .b-location__info {
    padding-top: 9%;
  }
  .b-location-list__itm .b-location__title {
    font-size: 2rem;
    font-size: 4vw;
  }
  .b-location-list__itm .b-location__city {
    font-size: 1.8rem;
    font-size: 3.6vw;
  }
  .b-location-list__itm .b-location__marker {
    margin-bottom: 0;
    margin-bottom: 1vw;
  }
}

@media screen and (max-width: 374px) {
  .b-location-list__itm {
    flex: 0 0 100%;
    max-width: 100%;
  }
  .b-location-list__itm > div {
    width: 24rem;
    height: 24rem;
  }
}

.b-location {
  width: 28rem;
  height: 28rem;
  border-radius: 50%;
  position: relative;
}

.b-location__info {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  padding-top: 4rem;
}

.b-location__marker {
  margin-bottom: 1rem;
}

.b-location__title {
  font-weight: bold;
  color: #222222;
}

.b-location__city {
  font-size: 2.6rem;
}

.b-vacancy-list {
  margin-top: 3rem;
  max-width: 400px;
}

.b-vacancy-list__itm {
  border-bottom: 1px solid #ccc;
}

.b-vacancy {
  padding-top: 20px;
  padding-bottom: 20px;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: space-between;
  -moz-box-pack: space-between;
  -ms-flex-pack: space-between;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.b-vacancy-wrp {
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.b-vacancy__body {
  max-width: 80%;
  text-align: left;
}

.b-vacancy__title {
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  color: #0a0a0a;
  font-weight: 600;
  font-size: 18px;
}

.b-vacancy__title a {
  color: currentColor;
}

.b-vacancy__city {
  color: #888888;
  font-size: 16px;
}

.b-vacancy__link {
  color: #ff7a00;
  font-weight: 600;
  font-size: 16px;
  max-width: 20%;
}

.b-vacancy__link:hover {
  opacity: .7;
  color: #ff7a00;
}

@media screen and (max-width: 1023px) {
  .b-vacancy-list, .b-vacancy-wrp {
    margin-left: auto;
    margin-right: auto;
  }
  .b-vacancy-list.align-right, .b-vacancy-wrp.align-right {
    margin-left: auto;
    margin-right: auto;
  }
}

@media screen and (max-width: 767px) {
  .b-vacancy-list {
    margin-top: 25px;
    margin-bottom: 75px;
  }
}

.b-home-video {
  position: relative;
  max-width: 96rem;
  margin-left: auto;
  margin-right: auto;
}

.b-home-video .btn-play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 5;
  font-size: 1rem;
}

.b-home-video .btn-play:hover .icn-play-shadow {
  transform: scale(0.9);
}

.b-home-video .btn-play.is-hide {
  display: none;
}

.b-home-video .btn-play .icn-play-shadow {
  display: block;
  width: 22em;
  height: 22em;
  background: url(../img/icon/play-circle-shadow.svg) 50% 50% no-repeat;
  background-size: contain;
  transition: transform .3s ease;
}

@media print, screen and (max-width: 39.99875em) {
  .b-home-video .btn-play {
    font-size: 1.2vw;
  }
}

.b-home-video .responsive-embed {
  border-radius: 3rem;
}

.b-home-video__video-mob > iframe {
  object-fit: initial;
}

@media print, screen and (max-width: 39.99875em) {
  .b-home-video__video-mob > iframe {
    border-radius: 2rem;
  }
}

@media screen and (max-width: 1360px) {
  .b-home-video {
    max-width: 78rem;
  }
}

.b-box-promo-list .b-box-promo {
  max-width: 31rem;
  margin-left: auto;
  margin-right: auto;
}

.b-box-promo-list .is-active img {
  opacity: 0;
  visibility: hidden;
}

.b-box-promo-list .is-active .show-on-active {
  opacity: 1;
  visibility: visible;
}

.b-box-promo-list--features {
  text-align: center;
  backface-visibility: hidden;
}

.b-box-promo-list--features .b-box-promo-list__itm {
  transition: all .7s;
  transform: translate3d(0, 0, 0) scale(1, 1);
}

.b-box-promo-list--features .b-box-promo-list__itm.is-active {
  transition-delay: 0s;
  transform: translate3d(0, 0, 0) scale(1.27, 1.27);
}

.b-box-promo-list--features .slick-active .b-box-promo-list__itm {
  transition-delay: 0s;
  transform: translate3d(0, 0, 0) scale(1.27, 1.27);
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-promo-list .b-box-promo {
    max-width: 33rem;
  }
  .b-box-promo-list__itm {
    flex: 0 0 100%;
  }
  .b-box-promo-list__itm + .b-box-promo-list__itm {
    margin-top: 7rem;
  }
}

.b-box-promo {
  text-align: center;
}

.b-box-promo__pic {
  min-height: 14rem;
  position: relative;
}

.b-box-promo__pic img {
  transition: .7s ease-in-out;
}

.b-box-promo__pic .show-on-active {
  opacity: 0;
  visibility: hidden;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.b-box-promo__txt {
  font-size: 3rem;
}

.b-box-promo__txt p {
  font-size: 100%;
}

.b-box-promo--features .b-box-promo__pic {
  display: inline-flex;
  align-items: flex-end;
  margin-bottom: 2rem;
}

.b-box-promo--features .b-box-promo__pic .show-on-active {
  top: auto;
  bottom: 0;
}

.b-box-promo--features .b-box-promo__txt {
  font-size: 1.8rem;
}

.is-active .b-box-promo--features .b-box-promo__txt {
  font-weight: 600;
}

.slick-active .b-box-promo--features .b-box-promo__txt {
  font-weight: 600;
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-promo--features .b-box-promo__txt {
    font-size: 2.2rem;
  }
  .b-box-promo--features .b-box-promo__pic img {
    min-width: 20rem;
    max-height: 20rem;
    object-fit: contain;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-box-promo__pic img {
    max-height: 10rem;
    object-fit: contain;
  }
  .b-box-promo__txt {
    font-size: 2.2rem;
  }
}

[class*='btn-'] {
  display: inline-block;
}

[class*='btn-']:hover {
  text-decoration: none;
}

.btn-icon {
  background-color: transparent;
  border: medium none;
  outline: none;
  height: auto;
  line-height: 1;
  width: auto;
  padding: 1.1rem 1rem;
}

.btn-dropdown, .btn-link {
  background-color: transparent;
  border: medium none;
  outline: none;
  padding: 0;
}

.btn--block {
  display: block;
  width: 100%;
}

.btn, .btn-flat, .b-callback-form .btn-submit, .button, .btn-submit {
  position: relative;
  border-radius: 2rem;
  border: 1px solid #0580FF;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
  display: inline-block;
  line-height: 1;
  font-size: 1.4rem;
  font-weight: 700;
  color: #fff;
  text-transform: uppercase;
  background: #0580FF;
  padding: 1.2rem 1.5rem 1.2rem;
  text-align: center;
  transition: color .3s, background .3s, border-color .3s, opacity .3s ease;
}

.btn:link, .btn-flat:link, .b-callback-form .btn-submit:link, .button:link, .btn-submit:link {
  text-decoration: none;
}

.btn:link:hover, .btn-flat:link:hover, .b-callback-form .btn-submit:link:hover, .button:link:hover, .btn-submit:link:hover {
  text-decoration: none;
}

.btn:hover, .btn-flat:hover, .b-callback-form .btn-submit:hover, .btn:focus, .btn-flat:focus, .b-callback-form .btn-submit:focus, .button:hover, .button:focus, .btn-submit:hover, .btn-submit:focus {
  color: #fff;
  opacity: .7;
}

.btn.no-radius, .no-radius.btn-flat, .b-callback-form .no-radius.btn-submit, .button.no-radius, .no-radius.btn-submit {
  border-radius: 0;
}

.btn.m-white, .m-white.btn-flat, .b-callback-form .m-white.btn-submit, .button.m-white, .m-white.btn-submit {
  background: #fff;
  color: #444444;
}

.btn.m-white:hover, .m-white.btn-flat:hover, .b-callback-form .m-white.btn-submit:hover, .button.m-white:hover, .m-white.btn-submit:hover {
  opacity: .7;
}

.btn.btn--white, .btn--white.btn-flat, .b-callback-form .btn--white.btn-submit, .button.btn--white, .btn--white.btn-submit {
  color: rgba(0, 0, 0, 0.7);
  border-color: #fff;
  background: #ffffff;
}

.btn.btn--white:hover, .btn--white.btn-flat:hover, .b-callback-form .btn--white.btn-submit:hover, .btn.btn--white:focus, .btn--white.btn-flat:focus, .b-callback-form .btn--white.btn-submit:focus, .button.btn--white:hover, .button.btn--white:focus, .btn--white.btn-submit:hover, .btn--white.btn-submit:focus {
  color: #000;
  border-color: #fff;
  background: #ffffff;
  opacity: 1;
}

.btn.btn--primary, .btn--primary.btn-flat, .b-callback-form .btn--primary.btn-submit, .button.btn--primary, .btn--primary.btn-submit {
  color: #fff;
  border-color: #0580FF;
  background: #0580FF;
}

.btn.btn--primary:hover, .btn--primary.btn-flat:hover, .b-callback-form .btn--primary.btn-submit:hover, .btn.btn--primary:focus, .btn--primary.btn-flat:focus, .b-callback-form .btn--primary.btn-submit:focus, .button.btn--primary:hover, .button.btn--primary:focus, .btn--primary.btn-submit:hover, .btn--primary.btn-submit:focus {
  color: #fff;
  border-color: #0067d1;
  background: #0067d1;
  opacity: 1;
}

.btn.btn--red, .btn--red.btn-flat, .b-callback-form .btn--red.btn-submit, .button.btn--red, .btn--red.btn-submit {
  color: #fff;
  border-color: #ff005c;
  background: #ff005c;
}

.btn.btn--red:hover, .btn--red.btn-flat:hover, .b-callback-form .btn--red.btn-submit:hover, .btn.btn--red:focus, .btn--red.btn-flat:focus, .b-callback-form .btn--red.btn-submit:focus, .button.btn--red:hover, .button.btn--red:focus, .btn--red.btn-submit:hover, .btn--red.btn-submit:focus {
  color: #fff;
  border-color: #cc004a;
  background: #cc004a;
  opacity: 1;
}

.btn.btn--large, .btn--large.btn-flat, .b-callback-form .btn--large.btn-submit, .button.btn--large, .btn--large.btn-submit {
  font-size: 2.5rem;
  font-weight: 700;
  min-width: 30rem;
  border-radius: 6rem;
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.btn.m-shadow, .m-shadow.btn-flat, .b-callback-form .m-shadow.btn-submit, .button.m-shadow, .m-shadow.btn-submit {
  box-shadow: 0px 6px 20px rgba(0, 0, 0, 0.2);
}

.btn.m-fixed, .m-fixed.btn-flat, .b-callback-form .m-fixed.btn-submit, .button.m-fixed, .m-fixed.btn-submit {
  min-width: 18rem;
}

.btn.m-fixed--md, .m-fixed--md.btn-flat, .b-callback-form .m-fixed--md.btn-submit, .button.m-fixed--md, .m-fixed--md.btn-submit {
  min-width: 16rem;
}

.btn.m-rounded, .m-rounded.btn-flat, .b-callback-form .m-rounded.btn-submit, .button.m-rounded, .m-rounded.btn-submit {
  border-radius: 100px;
}

@media print, screen and (max-width: 39.99875em) {
  .btn, .btn-flat, .b-callback-form .btn-submit, .button, .btn-submit {
    font-size: 14px;
    border-radius: 20px;
  }
  .btn.m-fixed, .m-fixed.btn-flat, .b-callback-form .m-fixed.btn-submit, .button.m-fixed, .m-fixed.btn-submit {
    min-width: 180px;
  }
  .btn.m-fixed--md, .m-fixed--md.btn-flat, .b-callback-form .m-fixed--md.btn-submit, .button.m-fixed--md, .m-fixed--md.btn-submit {
    min-width: 160px;
  }
}

button {
  border: medium none;
}

button span {
  vertical-align: middle;
}

.btn-flat, .b-callback-form .btn-submit {
  background: transparent;
  color: #0580FF;
}

.btn-flat:hover, .b-callback-form .btn-submit:hover {
  border-color: #0580FF;
  background-color: #0580FF;
  color: #fff;
}

.btn-flat.m-white, .b-callback-form .m-white.btn-submit {
  background: transparent;
  border: 1px solid #fff;
  color: #fff;
}

.btn-flat.m-white:hover, .b-callback-form .m-white.btn-submit:hover, .btn-flat.m-white:focus, .b-callback-form .m-white.btn-submit:focus {
  opacity: .7;
}

.btn-more, .b-callback-form .btn-submit {
  min-width: 18rem;
  font-weight: 600;
}

@media print, screen and (max-width: 39.99875em) {
  .btn-more, .b-callback-form .btn-submit {
    font-size: 16px;
    min-width: 180px;
    border-radius: 20px;
  }
}

.back-link {
  color: #888888;
}

.back-link:hover {
  text-decoration: none;
}

.back-link svg, .back-link [class^="icon"] {
  margin-right: 1rem;
  fill: currentColor;
}

.back-link:hover {
  opacity: .7;
}

.back-link.text--blue {
  color: #0580FF;
}

.back-link.text--orange {
  color: #ff7a00;
}

.close-button {
  display: block;
  margin-left: auto;
  position: relative;
  line-height: 1;
  font-size: 0;
  width: 2rem;
  height: 2rem;
  margin-bottom: 2rem;
  transition: opacity .3s ease, background .3s ease;
}

.close-button:before, .close-button:after {
  content: '';
  position: absolute;
  top: 0;
  left: 1.1rem;
  height: 2.1rem;
  width: 0.2rem;
  background-color: #222222;
}

.close-button:before {
  transform: rotate(45deg);
}

.close-button:after {
  transform: rotate(-45deg);
}

.close-button:hover {
  opacity: .5;
}

.btn-watch {
  border-color: rgba(0, 0, 0, 0.5);
  color: rgba(0, 0, 0, 0.7);
}

.btn-watch:hover, .btn-watch:focus {
  opacity: .7;
  border-color: rgba(0, 0, 0, 0.5);
  color: rgba(0, 0, 0, 0.7);
}

.btn-watch.btn-flat, .b-callback-form .btn-watch.btn-submit {
  border-color: rgba(0, 0, 0, 0.5);
  background: none;
}

.btn-watch.btn-flat:hover, .b-callback-form .btn-watch.btn-submit:hover, .btn-watch.btn-flat:focus, .b-callback-form .btn-watch.btn-submit:focus {
  border-color: rgba(0, 0, 0, 0.5);
  color: rgba(0, 0, 0, 0.7);
  background: none;
}

.slick-slider.slider-progressive {
  opacity: 0;
  height: 0;
  visibility: hidden;
  transition: all 1.2s ease;
}

.slick-slider.slider-progressive.slick-initialized {
  opacity: 1;
  visibility: visible;
  height: auto;
}

.slick-slider.has-popover {
  position: relative;
  z-index: 50;
  overflow-y: visible;
}

.slick-slider.has-popover .slick-track, .slick-slider.has-popover .slick-list {
  overflow: visible;
}

.slick-slider.slider-visible .slick-track, .slick-slider.slider-visible .slick-list {
  overflow: visible;
}

.slick-slider .slick-dots {
  width: 100%;
  margin-top: 2rem;
  text-align: center;
  font-size: 0;
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.slick-slider .slick-dots li {
  display: inline-block;
  padding: 1rem;
}

.slick-slider .slick-dots li.slick-active button {
  background: #0580FF;
}

.slick-slider .slick-dots li button {
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 50%;
  border: 1px solid #0580FF;
  background: transparent;
}

@media print, screen and (max-width: 74.99875em) {
  .slick-slider .slick-dots li {
    padding: .5rem;
  }
  .slick-slider .slick-dots li button {
    width: 12px;
    height: 12px;
  }
}

.slick-slider .slick-arrow {
  position: absolute;
  top: 50%;
  z-index: 50;
  transform: translateY(-50%);
  font-size: 4rem;
  color: #444444;
  transition: .5s;
}

.slick-slider .slick-arrow.slick-disabled {
  opacity: 0;
  pointer-events: none;
}

.slick-slider .slick-arrow.slick-prev {
  left: -6rem;
}

.slick-slider .slick-arrow.slick-next {
  margin-left: 1rem;
  right: -6rem;
}

@media print, screen and (min-width: 90em) {
  .slick-slider .slick-arrow {
    font-size: 6rem;
  }
  .slick-slider .slick-arrow.slick-prev {
    left: -8rem;
  }
  .slick-slider .slick-arrow.slick-next {
    right: -8rem;
  }
}

.slick-slider .slick-nav.slick-arrow {
  width: 1.9rem;
  height: 3.2rem;
  display: block !important;
}

.slick-slider .slick-nav.slick-arrow.slick-disabled {
  opacity: .5;
  pointer-events: none;
}

.slick-slider .slick-nav.slick-arrow.slick-next {
  background: url(../img/icon/arrow-right.svg) 50% 50% no-repeat;
  background-size: contain;
}

.slick-slider .slick-nav.slick-arrow.slick-prev {
  background: url(../img/icon/arrow-left.svg) 50% 50% no-repeat;
  background-size: contain;
}

@media screen and (max-width: 1400px) {
  .slick-slider .slick-nav.slick-arrow.slick-next {
    right: -1.5rem;
  }
  .slick-slider .slick-nav.slick-arrow.slick-prev {
    left: -1.5rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .slick-slider .slick-nav.slick-arrow.slick-next {
    right: -0.5rem;
  }
  .slick-slider .slick-nav.slick-arrow.slick-prev {
    left: -0.5rem;
  }
}

.align-left .slick-slider .slick-track {
  margin-left: 0;
}

.align-right .slick-slider .slick-track {
  margin-right: 0;
}

.tabs-panel {
  display: none;
}

.tabs-panel.is-active {
  display: block;
}

.tabs {
  background: none;
  border: none;
}

.tabs:before, .tabs:after {
  display: none;
}

.tabs .tabs-title {
  float: none;
}

.tabs .tabs-title > a {
  padding: 0;
  background: none;
}

.tabs-content {
  border: none;
  background: none;
}

.tabs-content, .tab-content {
  border: none;
  background: none;
  overflow: hidden;
  position: relative;
  backface-visibility: hidden;
}

.tabs-content.has-loader, .tab-content.has-loader {
  background: url(../img/common/loader.svg) 50% 15% no-repeat;
  background-size: 12rem auto;
}

.tabs-content--visible, .tab-content--visible {
  overflow: visible;
}

.tabs-content--padding, .tab-content--padding {
  padding-top: 2rem;
}

.tabs-content .b-tab, .tab-content .b-tab {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  visibility: hidden;
  opacity: 0;
  transition: opacity .7s;
}

.tabs-content .b-tab.is-active, .tab-content .b-tab.is-active {
  opacity: 1;
  z-index: 50;
  visibility: visible;
  position: relative;
}

.b-tabs__link {
  display: inline-block;
  padding: .9rem 1.5rem;
  background: #fff;
  font-weight: 700;
  font-size: 1.6rem;
  color: #444444;
}

.b-tabs--bg .b-tabs__link {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  min-height: 12rem;
  font-size: 2.4rem;
  text-transform: uppercase;
}

.b-tabs--bg .b-tabs__link img {
  position: absolute;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

.b-tabs--bg .b-tabs__link span {
  position: relative;
  z-index: 4;
}

.b-tabs--bg .b-tabs-list {
  display: flex;
  flex-wrap: wrap;
}

.b-tabs--bg .b-tabs-list li {
  flex: 1;
  line-height: 0;
  overflow: hidden;
}

.b-tabs--bg .b-tabs-list li.is-active .b-tabs__link, .b-tabs--bg .b-tabs-list li:hover .b-tabs__link, .b-tabs--bg .b-tabs-list li:focus .b-tabs__link {
  background: #0580FF;
  color: #000;
}

.b-tabs--bg .b-tabs-list li.is-active .b-tabs__link:hover, .b-tabs--bg .b-tabs-list li:hover .b-tabs__link:hover, .b-tabs--bg .b-tabs-list li:focus .b-tabs__link:hover {
  text-decoration: none;
}

.b-tabs--bg .b-tabs-list li.is-active .b-tabs__link:before, .b-tabs--bg .b-tabs-list li:hover .b-tabs__link:before, .b-tabs--bg .b-tabs-list li:focus .b-tabs__link:before {
  content: '';
  height: 6px;
  width: 100%;
  background: #222;
  position: absolute;
  bottom: 0;
  left: 0;
  z-index: 1;
}

.b-tabs--bg .b-tabs-list li .b-tabs__link {
  color: #fff;
}

.b-tabs--bg .b-tabs-list li .b-tabs__link:after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
}

@media print, screen and (max-width: 39.99875em) {
  .b-tabs--bg .b-tabs-list li {
    flex: 0 0 100%;
  }
}

.b-tabs-list {
  font-size: 0;
}

.b-tabs-list li.is-active .b-tabs__link, .b-tabs-list li:hover .b-tabs__link, .b-tabs-list li:focus .b-tabs__link {
  background: #0580FF;
  color: #fff;
}

.b-tabs-list li.is-active .b-tabs__link:hover, .b-tabs-list li:hover .b-tabs__link:hover, .b-tabs-list li:focus .b-tabs__link:hover {
  text-decoration: none;
}

.b-post__author {
  color: #888888;
  font-size: 1.6rem;
}

.b-post__author a {
  color: currentColor;
}

.b-post__header {
  padding-bottom: 1rem;
}

.b-post__body {
  padding: 1.6rem 2.4rem;
  padding-left: 0;
}

.b-post__body a {
  color: #0580FF;
}

.b-post__pic {
  border-bottom: 6px solid #FFE800;
}

.b-post__title {
  font-weight: bold;
  line-height: 1.14;
  margin-bottom: 1.8rem;
  color: #222222;
}

.b-post__title a {
  color: currentColor;
}

.b-post__txt {
  font-size: 16px;
}

.b-post__txt p {
  font-size: 100%;
  line-height: 1.67;
}

.b-post__btn {
  margin-top: 1.8rem;
}

.b-post__btn .btn-more, .b-post__btn .b-callback-form .btn-submit, .b-callback-form .b-post__btn .btn-submit {
  min-width: 12rem;
}

@media print, screen and (max-width: 39.99875em) {
  .b-post__author {
    font-size: 16px;
  }
  .b-post__txt {
    font-size: 2.4rem;
  }
}

.b-pagination__list {
  font-size: 0;
  margin-left: -.5rem;
  margin-right: -.5rem;
  font-family: "Source Sans Pro", "Roboto", sans-serif;
}

.b-pagination__list .page-numbers {
  padding: .8rem .5rem;
  min-width: 3.6rem;
  text-align: center;
  font-size: 1.8rem;
  line-height: 1;
  border-radius: 5px;
  font-weight: 600;
  display: inline-block;
  border: 1px solid transparent;
  margin: .5rem;
  color: #0580FF;
  transition: opacity .2s ease;
}

.b-pagination__list .page-numbers:hover {
  opacity: .6;
}

.b-pagination__list .page-numbers:hover {
  text-decoration: none;
}

.b-pagination__list .page-numbers.current {
  background: #006ac0;
  border-color: #006ac0;
  color: #fff;
}

.b-pagination__list .page-numbers.current:hover {
  opacity: 1;
}

.b-pagination__list .page-numbers.next, .b-pagination__list .page-numbers.prev {
  padding-left: 1rem;
  padding-right: 1rem;
}

.b-pagination__list .page-numbers.dots {
  border: none;
}

@media print, screen and (max-width: 39.99875em) {
  .b-pagination {
    margin-top: 2.5rem;
  }
}

.gfield.hidden_label .gfield_label {
  display: none !important;
}

form.home-form .gfield_description.validation_message {
  display: none !important;
}

form.home-form .gform_footer input[type="submit"] {
  display: none !important;
}

#cookie-notice.cookie-notice-hidden {
  display: none;
}

#cookie-notice {
  font-size: inherit;
  font-family: inherit;
}

form.left-button .column.small-12.shrink.ml-auto.text-right {
  margin-left: 0;
}

.gfield.gform_hidden {
  display: none;
}

.error-message-block {
  width: 100%;
}

.error-message {
  padding-left: .5rem;
}

.page-user-success .b-header .b-logo img {
  max-width: 34.5rem;
  margin-left: 1.5rem;
  margin-top: 2rem;
}

.page-user-success .b-header[class*="nav-"] .b-logo img {
  max-width: 19.5rem;
  margin-top: 0;
}

.page-user-success .s-content .s-review__video {
  padding-bottom: 0;
}

.page-user-success .s-ai-about__pic img, .page-user-success .s-ai-about__pic svg {
  max-width: 95%;
}

.page-user-success .s-ai-about__txt p {
  font-size: 100%;
}

.page-user-success .s-ai-about__pic img {
  position: relative;
  left: -5%;
}

.page-user-success .s-ai-about__info + .s-ai-about__pic img {
  right: -5%;
  left: auto;
}

.page-user-success .s-review__video-wrp {
  max-width: 100rem;
}

.page-user-success .s-review__video-wrp .b-home-video {
  max-width: 100%;
}

.page-user-success .s-review__video-wrp .b-home-video .btn-play {
  font-size: 0.75rem;
}

@media screen and (max-width: 1380px) and (min-width: 1200px) {
  .page-user-success .s-hero + .s-about-promo {
    padding-top: 5rem;
  }
  .page-user-success .s-hero__title {
    font-size: 5rem;
  }
  .page-user-success .b-header .b-logo img {
    margin-top: 0;
    max-width: 24.5rem;
  }
  .page-user-success.home .s-hero--user-success {
    min-height: 64rem;
  }
  .page-user-success .s-hero--user-success .s-hero__content {
    top: -8rem;
  }
}

@media print, screen and (min-width: 90em) {
  .page-user-success .s-hero__content .column.ml-auto {
    margin-right: 6rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .page-user-success .b-header .b-logo img {
    max-width: 165px;
    transform: translateZ(0px);
  }
  .page-user-success .s-ai-about__pic img {
    left: auto;
    margin-bottom: 3rem;
  }
  .page-user-success .s-ai-about__info + .s-ai-about__pic img {
    right: auto;
    left: auto;
  }
  .page-user-success .s-ai-about__title {
    text-align: left;
    font-size: 21px;
    margin-bottom: .6rem;
  }
  .page-user-success .s-ai-about__txt {
    text-align: left;
    font-size: 2.2rem;
  }
  .page-user-success .s-ai-about__txt p {
    line-height: 1.3;
    font-size: 100%;
  }
  .page-user-success .s-review__video .title-2, .page-user-success .s-review__video .section-title {
    max-width: 34rem;
    margin-left: auto;
    margin-right: auto;
  }
}

.b-footer--user-success {
  background: url(../img/common/bg__footer@2x.png) 50% 100% no-repeat;
  min-height: 36.4rem;
  image-rendering: -webkit-optimize-contrast;
  padding-top: 20rem;
  padding-bottom: 5rem;
  background-size: 192rem auto;
  color: #fff;
}

.b-footer--user-success .b-logo img {
  max-width: 5rem;
  width: 5rem;
}

.b-footer--user-success .b-logo__copy {
  margin-top: 1rem;
  font-size: 2.5rem;
}

.b-footer--user-success .b-logo__copy a {
  text-decoration: none;
}

.b-footer--user-success .b-logo__copy a:hover {
  text-decoration: underline;
}

@media screen and (max-width: 1280px) {
  .b-footer--user-success {
    padding-top: 16rem;
    min-height: 0;
    background-size: 144rem auto;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .b-footer--user-success {
    background: url(../img/common/bg__footer_mob.png) 50% 100% no-repeat;
    background-size: 100% auto;
  }
}

.s-hero--user-success {
  background: #FFF;
}

@media screen and (min-width: 1200px) and (max-width: 1920px) and (max-height: 960px) {
  .home .s-hero--user-success {
    background: transparent;
    margin-bottom: -4rem;
    padding-bottom: 0;
    min-height: 77rem;
    padding-top: 17rem;
  }
}

@media screen and (min-aspect-ratio: 17 / 10) and (min-width: 1200px) {
  .home .s-hero--user-success {
    background: transparent;
    padding-bottom: 0;
    margin-bottom: -4rem;
    min-height: 77rem;
    padding-top: 17rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) {
  .home .s-hero--user-success {
    background: transparent;
    padding-bottom: 0;
    margin-bottom: -6rem;
    min-height: 77rem;
    padding-top: 17rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) and (max-width: 1600px) {
  .home .s-hero--user-success__bg.bg-img {
    background-size: 1600px auto;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 700px) {
  .home .s-hero--user-success__title {
    font-size: 5rem;
  }
  .home .s-hero--user-success__txt {
    font-size: 2.2rem;
  }
}

@media screen and (min-width: 1024px) and (max-width: 1920px) and (max-height: 600px) {
  .home .s-hero--user-success {
    margin-bottom: -7rem;
  }
}

.s-hero--user-success .s-hero__txt {
  font-size: 2.2rem;
}

@media screen and (max-width: 1280px) and (min-width: 1000px) {
  .s-hero--user-success .s-hero__bg.bg-img {
    background-size: 1378px auto;
    background-position: 50% 0;
    background-color: #fff;
  }
  .s-hero--user-success .s-hero__content {
    position: relative;
    top: -4rem;
  }
  .s-hero--user-success .btn.btn--large, .s-hero--user-success .btn--large.btn-flat, .s-hero--user-success .b-callback-form .btn--large.btn-submit, .b-callback-form .s-hero--user-success .btn--large.btn-submit {
    min-width: 25rem;
    padding-top: 1.4rem;
    padding-bottom: 1.4rem;
    font-size: 2rem;
  }
}

@media print, screen and (max-width: 39.99875em) {
  .s-hero--user-success {
    padding-bottom: 0;
  }
  .s-hero--user-success .s-hero__content {
    padding-left: 47px;
    padding-bottom: 20rem;
  }
  .s-hero--user-success .s-hero__btn {
    margin-left: 90px;
  }
  .s-hero--user-success .s-hero__txt {
    margin-bottom: 2rem;
  }
  .s-hero--user-success .btn.btn--large, .s-hero--user-success .btn--large.btn-flat, .s-hero--user-success .b-callback-form .btn--large.btn-submit, .b-callback-form .s-hero--user-success .btn--large.btn-submit {
    font-size: 14px;
    min-width: 148px;
    padding: 10px;
  }
  .s-hero--user-success .s-hero__title {
    font-size: 30px;
    line-height: 1.1;
    margin-bottom: 1rem;
  }
  .s-hero--user-success .s-hero__bg.bg-img {
    background-size: 100% auto;
    background-size: 100% 100%;
    background-position: 50% 100%;
  }
}

@media screen and (max-width: 425px) {
  .s-hero--user-success .s-hero__txt {
    font-size: 4.5vw;
  }
  .s-hero--user-success .s-hero__content {
    padding-bottom: 40vw;
  }
}

.s-callback-form--user-success {
  background: #ffffff;
}

.s-callback-form--user-success .form-title.title-2, .s-callback-form--user-success .form-title.section-title {
  font-size: 4.9rem;
}

.s-callback-form--user-success input, .s-callback-form--user-success textarea {
  border-radius: 2rem;
}

.s-callback-form--user-success .form-submit-message {
  max-width: 100%;
  font-size: 2.5rem;
}

.s-callback-form--user-success .form-submit-message__title {
  font-size: 112%;
  margin-bottom: 1rem;
}

@media screen and (max-width: 425px) {
  .s-callback-form--user-success .error-message {
    margin-bottom: .5rem;
  }
  .s-callback-form--user-success .b-form-list li {
    width: 50%;
  }
  .s-callback-form--user-success input, .s-callback-form--user-success textarea {
    border-radius: 1rem;
  }
  .s-callback-form--user-success .form-title.title-2, .s-callback-form--user-success .form-title.section-title {
    font-size: 21px;
  }
}

._bg-waves-grey {
  z-index: 1;
  position: relative;
  background-color: #fbfbfb;
}

._bg-waves-grey:before {
  content: '';
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  pointer-events: none;
  background: url(../img/common/bg__w_grey_top.png) 50% 0 no-repeat;
  background-size: 100% auto;
}

._bg-waves-grey:after {
  content: '';
  position: absolute;
  z-index: 0;
  bottom: -3.6%;
  left: 0;
  height: 100%;
  width: 100%;
  pointer-events: none;
  background: url(../img/common/bg__w_grey_bottom.png) 50% 100% no-repeat;
  background-size: 100% auto;
}

._bg-waves-grey > .container {
  margin-top: -6rem;
}

._bg-waves-grey + .section > *, ._bg-waves-grey + section > * {
  z-index: 2;
  position: relative;
}

@media print, screen and (max-width: 39.99875em) {
  ._bg-waves-grey:before, ._bg-waves-grey:after {
    background-size: 768px auto;
  }
  ._bg-waves-grey:after {
    bottom: 0;
    background-position-x: 32%;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19tYXRoLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191bml0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL192YWx1ZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fZGlyZWN0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19jb2xvci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fc2VsZWN0b3Iuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2ZsZXguc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX21peGlucy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fdHlwb2dyYXBoeS5zY3NzIiwiX3ZhcmlhYmxlcy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm91bmRhdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdmVuZG9yL25vcm1hbGl6ZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9fbWlzc2luZy1kZXBlbmRlbmNpZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3RydWUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fY29udGFpbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19wdXJnZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19yZW1vdmUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcmVwbGFjZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190by1saXN0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL191dGlsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9fZ2xvYmFsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZm9ybXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL190ZXh0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fY2hlY2tib3guc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19sYWJlbC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2hlbHAtdGV4dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX2lucHV0LWdyb3VwLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fZmllbGRzZXQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19zZWxlY3Quc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19yYW5nZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm9ybXMvX3Byb2dyZXNzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9mb3Jtcy9fbWV0ZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2Zvcm1zL19lcnJvci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYmFzZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9faGVscGVycy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdHlwb2dyYXBoeS9fYWxpZ25tZW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy90eXBvZ3JhcGh5L19wcmludC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZ3JpZC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fcm93LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19jb2x1bW4uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3NpemUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX3Bvc2l0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9ncmlkL19ndXR0ZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2NsYXNzZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2dyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZ3JpZC9fZmxleC1ncmlkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL194eS1ncmlkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ndXR0ZXJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19ncmlkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jZWxsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19mcmFtZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2xheW91dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fY29sbGFwc2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2NsYXNzZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2J1dHRvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9uLWdyb3VwLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jbG9zZS1idXR0b24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2xhYmVsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy1iYXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3NsaWRlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fc3dpdGNoLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJsZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYmFkZ2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2JyZWFkY3J1bWJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYWxsb3V0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19jYXJkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19kcm9wZG93bi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9vbHRpcC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYWNjb3JkaW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19tZWRpYS1vYmplY3Quc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX29yYml0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19yZXNwb25zaXZlLWVtYmVkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190YWJzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL190aHVtYm5haWwuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX21lbnUtaWNvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fYWNjb3JkaW9uLW1lbnUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2RyaWxsZG93bi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZHJvcGRvd24tbWVudS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fb2ZmLWNhbnZhcy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fcmV2ZWFsLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9jb21wb25lbnRzL19zdGlja3kuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3RpdGxlLWJhci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fdG9wLWJhci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvY29tcG9uZW50cy9fZmxvYXQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX2ZsZXguc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL2NvbXBvbmVudHMvX3Zpc2liaWxpdHkuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fcHJvdG90eXBlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3JlbGF0aW9uLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JveC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3RhdGUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC11dGlsaXRpZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fdGV4dC10cmFuc2Zvcm1hdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZm9udC1zdHlsaW5nLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2xpc3Qtc3R5bGUtdHlwZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19yb3VuZGVkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlcmVkLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NoYWRvdy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19hcnJvdy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zZXBhcmF0b3Iuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fb3ZlcmZsb3cuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3Byb3RvdHlwZS9fZGlzcGxheS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19ib3JkZXItYm94LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX2JvcmRlci1ub25lLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy9wcm90b3R5cGUvX3NpemluZy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvcHJvdG90eXBlL19zcGFjaW5nLnNjc3MiLCJhcHAvX19pbmRleC5zY3NzIiwiYXBwL2Jhc2UvX2Jhc2Uuc2NzcyIsImFwcC9iYXNlL19hcHAtbWl4aW5zLnNjc3MiLCJhcHAvYmFzZS9fbWl4aW5zLnNjc3MiLCJhcHAvYmFzZS9fcmVzZXQuc2NzcyIsImFwcC9iYXNlL19oZWxwZXJzLnNjc3MiLCJhcHAvYmFzZS9fc2V0dGluZ3Muc2NzcyIsImFwcC9iYXNlL19mb250ZmFjZS5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX19pbmRleC5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2FuaW1hdGUuc2NzcyIsImFwcC9jb21wb25lbnRzL190eXBvLnNjc3MiLCJhcHAvY29tcG9uZW50cy9faWNvbi5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2xheW91dC5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2hlYWRlci5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX2Zvb3Rlci5zY3NzIiwiYXBwL2NvbXBvbmVudHMvZm9ybS9fX2luZGV4LnNjc3MiLCJhcHAvY29tcG9uZW50cy9mb3JtL19mb3JtLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fbmF2LnNjc3MiLCJhcHAvY29tcG9uZW50cy9fbW9kYWwuc2NzcyIsImFwcC9jb21wb25lbnRzL19zZWN0aW9uLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fYm94LnNjc3MiLCJhcHAvY29tcG9uZW50cy9fYnRuLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fc2xpZGUuc2NzcyIsImFwcC9jb21wb25lbnRzL190YWJzLnNjc3MiLCJhcHAvY29tcG9uZW50cy9fYmxvZy5zY3NzIiwiYXBwL2NvbXBvbmVudHMvX3BhZ2luYXRpb24uc2NzcyIsImFwcC9jb21wb25lbnRzL19jdXN0b20uc2NzcyIsImFwcC9jb21wb25lbnRzL190aGVtZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCJzZXR0aW5nc1wiO1xyXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XHJcbkBpbXBvcnQgXCJmb3VuZGF0aW9uXCI7XHJcbkBpbXBvcnQgXCJhcHAvX2luZGV4XCI7XHJcbiIsIi8vICBGb3VuZGF0aW9uIGZvciBTaXRlcyBTZXR0aW5nc1xyXG4vLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy9cclxuLy8gIFRhYmxlIG9mIENvbnRlbnRzOlxyXG4vL1xyXG4vLyAgIDEuIEdsb2JhbFxyXG4vLyAgIDIuIEJyZWFrcG9pbnRzXHJcbi8vICAgMy4gVGhlIEdyaWRcclxuLy8gICA0LiBCYXNlIFR5cG9ncmFwaHlcclxuLy8gICA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcclxuLy8gICA2LiBBYmlkZVxyXG4vLyAgIDcuIEFjY29yZGlvblxyXG4vLyAgIDguIEFjY29yZGlvbiBNZW51XHJcbi8vICAgOS4gQmFkZ2VcclxuLy8gIDEwLiBCcmVhZGNydW1ic1xyXG4vLyAgMTEuIEJ1dHRvblxyXG4vLyAgMTIuIEJ1dHRvbiBHcm91cFxyXG4vLyAgMTMuIENhbGxvdXRcclxuLy8gIDE0LiBDYXJkXHJcbi8vICAxNS4gQ2xvc2UgQnV0dG9uXHJcbi8vICAxNi4gRHJpbGxkb3duXHJcbi8vICAxNy4gRHJvcGRvd25cclxuLy8gIDE4LiBEcm9wZG93biBNZW51XHJcbi8vICAxOS4gRm9ybXNcclxuLy8gIDIwLiBMYWJlbFxyXG4vLyAgMjEuIE1lZGlhIE9iamVjdFxyXG4vLyAgMjIuIE1lbnVcclxuLy8gIDIzLiBNZXRlclxyXG4vLyAgMjQuIE9mZi1jYW52YXNcclxuLy8gIDI1LiBPcmJpdFxyXG4vLyAgMjYuIFBhZ2luYXRpb25cclxuLy8gIDI3LiBQcm9ncmVzcyBCYXJcclxuLy8gIDI4LiBSZXNwb25zaXZlIEVtYmVkXHJcbi8vICAyOS4gUmV2ZWFsXHJcbi8vICAzMC4gU2xpZGVyXHJcbi8vICAzMS4gU3dpdGNoXHJcbi8vICAzMi4gVGFibGVcclxuLy8gIDMzLiBUYWJzXHJcbi8vICAzNC4gVGh1bWJuYWlsXHJcbi8vICAzNS4gVGl0bGUgQmFyXHJcbi8vICAzNi4gVG9vbHRpcFxyXG4vLyAgMzcuIFRvcCBCYXJcclxuXHJcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XHJcblxyXG4vLyAxLiBHbG9iYWxcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kZ2xvYmFsLWZvbnQtc2l6ZTogNjIuNSU7XHJcbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDE0NDApO1xyXG4kZ2xvYmFsLWxpbmVoZWlnaHQ6IDEuMjU7XHJcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcclxuICAgICAgICBwcmltYXJ5OiAjMTc3OWJhLFxyXG4gICAgICAgIHNlY29uZGFyeTogIzc2NzY3NixcclxuICAgICAgICBzdWNjZXNzOiAjM2FkYjc2LFxyXG4gICAgICAgIHdhcm5pbmc6ICNmZmFlMDAsXHJcbiAgICAgICAgYWxlcnQ6ICNjYzRiMzcsXHJcbik7XHJcblxyXG4kY29sb3I6IChcclxuICAgICAgICBwcmltYXJ5OiAjMmUyZTQ0LFxyXG4gICAgICAgIHJlZDogI2NjMzMzMyxcclxuICAgICAgICBibHVlOiAjM2E0MTg1LFxyXG4gICAgICAgIGdyZWVuOiAjMzZjYzYwLFxyXG4gICAgICAgIHRleHQ6ICMzNjM2MzYsXHJcbiAgICAgICAgYm9yZGVyOiNlN2U3ZTdcclxuKTtcclxuJHNoYWRvdzogKFxyXG4gICAgICAgIHRleHQ6IDBweCAxcHggM3B4IHJnYmEoOTEsIDkxLCA5MSwgMSksXHJcbiAgICAgICAgYm94OiAwcHggMXB4IDNweCAwLjA2cHggcmdiYSg5MSwgOTEsIDkxLCAxKVxyXG4pO1xyXG4kbGlnaHQtZ3JheTogI2U2ZTZlNjtcclxuJG1lZGl1bS1ncmF5OiAjY2FjYWNhO1xyXG4kZGFyay1ncmF5OiAjOGE4YThhO1xyXG4kYmxhY2s6ICMwYTBhMGE7XHJcbiR3aGl0ZTogI2ZlZmVmZTtcclxuJGJvZHktYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kYm9keS1mb250LWNvbG9yOiAkYmxhY2s7XHJcbiRib2R5LWZvbnQtZmFtaWx5OiAnUm9ib3RvJywgc2Fucy1zZXJpZjtcclxuJGJvZHktZm9udC1mYW1pbHkyOiAnUm9ib3RvJywnUGFudG9uJywgc2Fucy1zZXJpZjtcclxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWU7XHJcbiRnbG9iYWwtbWFyZ2luOiAxcmVtO1xyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW07XHJcbiRnbG9iYWwtd2VpZ2h0LW5vcm1hbDogMzAwO1xyXG4kZ2xvYmFsLXdlaWdodC1ib2xkOiBib2xkO1xyXG4kZ2xvYmFsLXJhZGl1czogMDtcclxuJGdsb2JhbC10ZXh0LWRpcmVjdGlvbjogbHRyO1xyXG4kZ2xvYmFsLWZsZXhib3g6IGZhbHNlO1xyXG4kcHJpbnQtdHJhbnNwYXJlbnQtYmFja2dyb3VuZHM6IHRydWU7XHJcblxyXG5AaW5jbHVkZSBhZGQtZm91bmRhdGlvbi1jb2xvcnM7XHJcblxyXG4vLyAyLiBCcmVha3BvaW50c1xyXG4vLyAtLS0tLS0tLS0tLS0tLVxyXG4kZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQ6IDEyO1xyXG4kYnJlYWtwb2ludHM6IChcclxuICAgICAgICBzbWFsbDogMCxcclxuICAgICAgICBtZWRpdW06IDY0MHB4LFxyXG4gICAgICAgIHRhYmxldDogNzY4cHgsXHJcbiAgICAgICAgbGFyZ2U6IDEwMjRweCxcclxuICAgICAgICB3bGFyZ2U6IDEyMDBweCxcclxuICAgICAgICB4bGFyZ2U6IDE0NDBweCxcclxuICAgICAgICB4eGxhcmdlOiAxOTIwcHgsXHJcbik7XHJcbiRwcmludC1icmVha3BvaW50OiB0YWJsZXQ7XHJcbiRwcmludC1icmVha3BvaW50OiB3bGFyZ2U7XHJcbiRwcmludC1icmVha3BvaW50OiB4bGFyZ2U7XHJcbiRwcmludC1icmVha3BvaW50OiB4eGxhcmdlO1xyXG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIHRhYmxldCBsYXJnZSB3bGFyZ2UgeGxhcmdlIHh4bGFyZ2UpO1xyXG5cclxuLy8gMy4gVGhlIEdyaWROXHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGg7XHJcbiRncmlkLWNvbHVtbi1jb3VudDogMTI7XHJcbiRncmlkLWNvbHVtbi1ndXR0ZXI6IChcclxuICAgICAgICBzbWFsbDogMzBweCxcclxuICAgICAgICBtZWRpdW06IDMwcHgsXHJcbik7XHJcbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlO1xyXG4kYmxvY2stZ3JpZC1tYXg6IDg7XHJcblxyXG4vLyA0LiBCYXNlIFR5cG9ncmFwaHlcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kaGVhZGVyLWZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcclxuJGhlYWRlci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbDtcclxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2U7XHJcbiRoZWFkZXItY29sb3I6IGluaGVyaXQ7XHJcbiRoZWFkZXItbGluZWhlaWdodDogMS40O1xyXG4kaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuJGhlYWRlci1zdHlsZXM6IChcclxuICAgICAgICBzbWFsbDogKFxyXG4gICAgICAgICAgICAgICAgJ2gxJzogKCdmb250LXNpemUnOiAyNCksXHJcbiAgICAgICAgICAgICAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcclxuICAgICAgICAgICAgICAgICdoMyc6ICgnZm9udC1zaXplJzogMTkpLFxyXG4gICAgICAgICAgICAgICAgJ2g0JzogKCdmb250LXNpemUnOiAxOCksXHJcbiAgICAgICAgICAgICAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcclxuICAgICAgICAgICAgICAgICdoNic6ICgnZm9udC1zaXplJzogMTYpLFxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWVkaXVtOiAoXHJcbiAgICAgICAgICAgICAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDQ4KSxcclxuICAgICAgICAgICAgICAgICdoMic6ICgnZm9udC1zaXplJzogNDApLFxyXG4gICAgICAgICAgICAgICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXHJcbiAgICAgICAgICAgICAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDI1KSxcclxuICAgICAgICAgICAgICAgICdoNSc6ICgnZm9udC1zaXplJzogMjApLFxyXG4gICAgICAgICAgICAgICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXHJcbiAgICAgICAgKSxcclxuKTtcclxuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xyXG4kc21hbGwtZm9udC1zaXplOiA4MCU7XHJcbiRoZWFkZXItc21hbGwtZm9udC1jb2xvcjogJG1lZGl1bS1ncmF5O1xyXG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNjtcclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4kcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XHJcbiRjb2RlLWNvbG9yOiAkYmxhY2s7XHJcbiRjb2RlLWZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbW9ub3NwYWNlO1xyXG4kY29kZS1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xyXG4kY29kZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJGNvZGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSk7XHJcbiRhbmNob3ItY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYW5jaG9yLWNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkYW5jaG9yLWNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcclxuJGFuY2hvci10ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lO1xyXG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGg7XHJcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvO1xyXG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XHJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcclxuJGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcclxuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7XHJcbiRsaXN0LXNpZGUtbWFyZ2luOiAxLjI1cmVtO1xyXG4kbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW46IDEuMjVyZW07XHJcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4kZGVmbmxpc3QtdGVybS13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XHJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbTtcclxuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXk7XHJcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSk7XHJcbiRibG9ja3F1b3RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMyk7XHJcbiRjaXRlLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnO1xyXG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XHJcbiRrZXlzdHJva2UtY29sb3I6ICRibGFjaztcclxuJGtleXN0cm9rZS1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCk7XHJcbiRrZXlzdHJva2UtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjaztcclxuXHJcbi8vIDUuIFR5cG9ncmFwaHkgSGVscGVyc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRsZWFkLWZvbnQtc2l6ZTogJGdsb2JhbC1mb250LXNpemUgKiAxLjI1O1xyXG4kbGVhZC1saW5laGVpZ2h0OiAxLjY7XHJcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xyXG4kc3ViaGVhZGVyLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtO1xyXG4kc3ViaGVhZGVyLW1hcmdpbi1ib3R0b206IDAuNXJlbTtcclxuJHN0YXQtZm9udC1zaXplOiAyLjVyZW07XHJcblxyXG4vLyA2LiBBYmlkZVxyXG4vLyAtLS0tLS0tLVxyXG5cclxuJGFiaWRlLWlucHV0czogdHJ1ZTtcclxuJGFiaWRlLWxhYmVsczogdHJ1ZTtcclxuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KTtcclxuJGZvcm0tbGFiZWwtY29sb3ItaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KTtcclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpO1xyXG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMik7XHJcbiRpbnB1dC1lcnJvci1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcclxuXHJcbi8vIDcuIEFjY29yZGlvblxyXG4vLyAtLS0tLS0tLS0tLS1cclxuXHJcbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kYWNjb3JkaW9uLXBsdXNtaW51czogdHJ1ZTtcclxuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKTtcclxuJGFjY29yZGlvbi1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXI6ICRsaWdodC1ncmF5O1xyXG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtO1xyXG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XHJcbiRhY2NvcmRpb24tY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcclxuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IDFyZW07XHJcblxyXG4vLyA4LiBBY2NvcmRpb24gTWVudVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlO1xyXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiRhY2NvcmRpb25tZW51LWFycm93LXNpemU6IDZweDtcclxuXHJcbi8vIDkuIEJhZGdlXHJcbi8vIC0tLS0tLS0tXHJcblxyXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRiYWRnZS1jb2xvcjogJHdoaXRlO1xyXG4kYmFkZ2UtY29sb3ItYWx0OiAkYmxhY2s7XHJcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xyXG4kYmFkZ2UtcGFkZGluZzogMC4zZW07XHJcbiRiYWRnZS1taW53aWR0aDogMi4xZW07XHJcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbTtcclxuXHJcbi8vIDEwLiBCcmVhZGNydW1ic1xyXG4vLyAtLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKTtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2s7XHJcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXk7XHJcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbTtcclxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlO1xyXG4kYnJlYWRjcnVtYnMtaXRlbS1zbGFzaDogdHJ1ZTtcclxuXHJcbi8vIDExLiBCdXR0b25cclxuLy8gLS0tLS0tLS0tLVxyXG5cclxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtO1xyXG4kYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDA7XHJcbiRidXR0b24tZmlsbDogc29saWQ7XHJcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XHJcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlcjogc2NhbGUtY29sb3IoJGJ1dHRvbi1iYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAtMTUlKTtcclxuJGJ1dHRvbi1jb2xvcjogJHdoaXRlO1xyXG4kYnV0dG9uLWNvbG9yLWFsdDogJGJsYWNrO1xyXG4kYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRidXR0b24tc2l6ZXM6IChcclxuICAgICAgICB0aW55OiAwLjZyZW0sXHJcbiAgICAgICAgc21hbGw6IDAuNzVyZW0sXHJcbiAgICAgICAgZGVmYXVsdDogMC45cmVtLFxyXG4gICAgICAgIGxhcmdlOiAxLjI1cmVtLFxyXG4pO1xyXG4kYnV0dG9uLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGU7XHJcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogLTIwJTtcclxuJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzOiAtNTAlO1xyXG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0O1xyXG5cclxuLy8gMTIuIEJ1dHRvbiBHcm91cFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtO1xyXG4kYnV0dG9uZ3JvdXAtc3BhY2luZzogMXB4O1xyXG4kYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3I6ICcuYnV0dG9uJztcclxuJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg6IDY7XHJcbiRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaDogdHJ1ZTtcclxuXHJcbi8vIDEzLiBDYWxsb3V0XHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlO1xyXG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSk7XHJcbiRjYWxsb3V0LW1hcmdpbjogMCAwIDFyZW0gMDtcclxuJGNhbGxvdXQtcGFkZGluZzogMXJlbTtcclxuJGNhbGxvdXQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcclxuJGNhbGxvdXQtZm9udC1jb2xvci1hbHQ6ICRib2R5LWJhY2tncm91bmQ7XHJcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRjYWxsb3V0LWxpbmstdGludDogMzAlO1xyXG5cclxuLy8gMTQuIENhcmRcclxuLy8gLS0tLS0tLS1cclxuXHJcbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJGNhcmQtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcclxuJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJGNhcmQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XHJcbiRjYXJkLXNoYWRvdzogbm9uZTtcclxuJGNhcmQtYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRjYXJkLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcclxuJGNhcmQtbWFyZ2luOiAkZ2xvYmFsLW1hcmdpbjtcclxuXHJcbi8vIDE1LiBDbG9zZSBCdXR0b25cclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGNsb3NlYnV0dG9uLXBvc2l0aW9uOiByaWdodCB0b3A7XHJcbiRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbDogKFxyXG4gICAgICAgIHNtYWxsOiAwLjY2cmVtLFxyXG4gICAgICAgIG1lZGl1bTogMXJlbSxcclxuKTtcclxuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogKFxyXG4gICAgICAgIHNtYWxsOiAwLjMzZW0sXHJcbiAgICAgICAgbWVkaXVtOiAwLjVyZW0sXHJcbik7XHJcbiRjbG9zZWJ1dHRvbi1zaXplOiAoXHJcbiAgICAgICAgc21hbGw6IDEuNWVtLFxyXG4gICAgICAgIG1lZGl1bTogMmVtLFxyXG4pO1xyXG4kY2xvc2VidXR0b24tbGluZWhlaWdodDogMTtcclxuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5O1xyXG4kY2xvc2VidXR0b24tY29sb3ItaG92ZXI6ICRibGFjaztcclxuXHJcbi8vIDE2LiBEcmlsbGRvd25cclxuLy8gLS0tLS0tLS0tLS0tLVxyXG5cclxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgbGluZWFyO1xyXG4kZHJpbGxkb3duLWFycm93czogdHJ1ZTtcclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3I7XHJcbiRkcmlsbGRvd24tYXJyb3ctc2l6ZTogNnB4O1xyXG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuXHJcbi8vIDE3LiBEcm9wZG93blxyXG4vLyAtLS0tLS0tLS0tLS1cclxuXHJcbiRkcm9wZG93bi1wYWRkaW5nOiAxcmVtO1xyXG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcclxuJGRyb3Bkb3duLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGRyb3Bkb3duLWZvbnQtc2l6ZTogMXJlbTtcclxuJGRyb3Bkb3duLXdpZHRoOiAzMDBweDtcclxuJGRyb3Bkb3duLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRkcm9wZG93bi1zaXplczogKFxyXG4gICAgICAgIHRpbnk6IDEwMHB4LFxyXG4gICAgICAgIHNtYWxsOiAyMDBweCxcclxuICAgICAgICBsYXJnZTogNDAwcHgsXHJcbik7XHJcblxyXG4vLyAxOC4gRHJvcGRvd24gTWVudVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJGRyb3Bkb3dubWVudS1hcnJvd3M6IHRydWU7XHJcbiRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3I6ICRhbmNob3ItY29sb3I7XHJcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4O1xyXG4kZHJvcGRvd25tZW51LW1pbi13aWR0aDogMjAwcHg7XHJcbiRkcm9wZG93bm1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kZHJvcGRvd25tZW51LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuXHJcbi8vIDE5LiBGb3Jtc1xyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XHJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCk7XHJcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApO1xyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMyk7XHJcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KTtcclxuJGhlbHB0ZXh0LWNvbG9yOiAkYmxhY2s7XHJcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKTtcclxuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYztcclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrO1xyXG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xyXG4kaW5wdXQtcHJlZml4LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGlucHV0LXByZWZpeC1wYWRkaW5nOiAxcmVtO1xyXG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrO1xyXG4kZm9ybS1sYWJlbC1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcclxuJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcclxuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuODtcclxuJHNlbGVjdC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICRkYXJrLWdyYXk7XHJcbiRzZWxlY3QtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJGlucHV0LWNvbG9yOiAkYmxhY2s7XHJcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogJG1lZGl1bS1ncmF5O1xyXG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiRpbnB1dC1mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcclxuJGlucHV0LWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGU7XHJcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheTtcclxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXk7XHJcbiRpbnB1dC1zaGFkb3c6IGluc2V0IDAgMXB4IDJweCByZ2JhKCRibGFjaywgMC4xKTtcclxuJGlucHV0LXNoYWRvdy1mb2N1czogMCAwIDVweCAkbWVkaXVtLWdyYXk7XHJcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkO1xyXG4kaW5wdXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzLCBib3JkZXItY29sb3IgMC4yNXMgZWFzZS1pbi1vdXQ7XHJcbiRpbnB1dC1udW1iZXItc3Bpbm5lcnM6IHRydWU7XHJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kZm9ybS1idXR0b24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDIwLiBMYWJlbFxyXG4vLyAtLS0tLS0tLS1cclxuXHJcbiRsYWJlbC1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuJGxhYmVsLWNvbG9yOiAkd2hpdGU7XHJcbiRsYWJlbC1jb2xvci1hbHQ6ICRibGFjaztcclxuJGxhYmVsLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGU7XHJcbiRsYWJlbC1mb250LXNpemU6IDAuOHJlbTtcclxuJGxhYmVsLXBhZGRpbmc6IDAuMzMzMzNyZW0gMC41cmVtO1xyXG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDIxLiBNZWRpYSBPYmplY3RcclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJG1lZGlhb2JqZWN0LW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XHJcbiRtZWRpYW9iamVjdC1pbWFnZS13aWR0aC1zdGFja2VkOiAxMDAlO1xyXG5cclxuLy8gMjIuIE1lbnVcclxuLy8gLS0tLS0tLS1cclxuXHJcbiRtZW51LW1hcmdpbjogMDtcclxuJG1lbnUtbWFyZ2luLW5lc3RlZDogMXJlbTtcclxuJG1lbnUtaXRlbS1wYWRkaW5nOiAwLjdyZW0gMXJlbTtcclxuJG1lbnUtaXRlbS1jb2xvci1hY3RpdmU6ICR3aGl0ZTtcclxuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpO1xyXG4kbWVudS1pY29uLXNwYWNpbmc6IDAuMjVyZW07XHJcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXk7XHJcbiRtZW51LWJvcmRlcjogJGxpZ2h0LWdyYXk7XHJcblxyXG4vLyAyMy4gTWV0ZXJcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kbWV0ZXItaGVpZ2h0OiAxcmVtO1xyXG4kbWV0ZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3I7XHJcbiRtZXRlci1maWxsLW1lZGl1bTogJHdhcm5pbmctY29sb3I7XHJcbiRtZXRlci1maWxsLWJhZDogJGFsZXJ0LWNvbG9yO1xyXG5cclxuLy8gMjQuIE9mZi1jYW52YXNcclxuLy8gLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRvZmZjYW52YXMtc2l6ZTogMjUwcHg7XHJcbiRvZmZjYW52YXMtdmVydGljYWwtc2l6ZTogMjUwcHg7XHJcbiRvZmZjYW52YXMtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XHJcbiRvZmZjYW52YXMtc2hhZG93OiAwIDAgMTBweCByZ2JhKCRibGFjaywgMC43KTtcclxuJG9mZmNhbnZhcy1wdXNoLXppbmRleDogMTtcclxuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTA7XHJcbiRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogMTtcclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cztcclxuJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZzogZWFzZTtcclxuJG9mZmNhbnZhcy1maXhlZC1yZXZlYWw6IHRydWU7XHJcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSk7XHJcbiRtYWluY29udGVudC1jbGFzczogJ29mZi1jYW52YXMtY29udGVudCc7XHJcblxyXG4vLyAyNS4gT3JiaXRcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kLWFjdGl2ZTogJGRhcmstZ3JheTtcclxuJG9yYml0LWJ1bGxldC1kaWFtZXRlcjogMS4ycmVtO1xyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtO1xyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbTtcclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW07XHJcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpO1xyXG4kb3JiaXQtY2FwdGlvbi1wYWRkaW5nOiAxcmVtO1xyXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KTtcclxuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbTtcclxuJG9yYml0LWNvbnRyb2wtemluZGV4OiAxMDtcclxuXHJcbi8vIDI2LiBQYWdpbmF0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcclxuJHBhZ2luYXRpb24tbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XHJcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3I6ICRibGFjaztcclxuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKTtcclxuJHBhZ2luYXRpb24taXRlbS1zcGFjaW5nOiByZW0tY2FsYygxKTtcclxuJHBhZ2luYXRpb24tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6ICR3aGl0ZTtcclxuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xyXG4kcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvcjogJGJsYWNrO1xyXG4kcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXM6IGZhbHNlO1xyXG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZTtcclxuJHBhZ2luYXRpb24tYXJyb3dzOiB0cnVlO1xyXG5cclxuLy8gMjcuIFByb2dyZXNzIEJhclxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtO1xyXG4kcHJvZ3Jlc3MtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xyXG4kcHJvZ3Jlc3MtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XHJcbiRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcclxuJHByb2dyZXNzLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyAyOC4gUmVzcG9uc2l2ZSBFbWJlZFxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMCk7XHJcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxyXG4gICAgICAgIGRlZmF1bHQ6IDQgYnkgMyxcclxuICAgICAgICBwb3J0cmFpdDogMyBieSA0LjUsXHJcbiAgICAgICAgc3F1YXJlOiAxIGJ5IDAuODgsXHJcbiAgICAgICAgZXZlbnQ6IDEgYnkgMC43MixcclxuICAgICAgICBtZWRpYS1zcXVhcmU6IDEgYnkgMSxcclxuICAgICAgICBtZWRpYS1wb3J0cmFpdDogMSBieSAxLjIsXHJcbiAgICAgICAgY2lyY2xlOiAxIGJ5IDEsXHJcbiAgICAgICAgd2lkZTogMSBieSAwLjY0LFxyXG4gICAgICAgIHZpZGVvOiAxIGJ5IDAuNTYyNSxcclxuICAgICAgICBibG9nOiAxIGJ5IDAuNjg3NSxcclxuICAgICAgICB3aWRlc2NyZWVuOiAxNiBieSA5LFxyXG4gICAgICAgIGNpbmVtYTogMjEgYnkgOSxcclxuICAgICAgICBwYW5vcmFtYTogMzUgYnkgOSxcclxuKTtcclxuXHJcbi8vIDI5LiBSZXZlYWxcclxuLy8gLS0tLS0tLS0tLVxyXG5cclxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGU7XHJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4O1xyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aDtcclxuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XHJcbiRyZXZlYWwtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xyXG4kcmV2ZWFsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcbiRyZXZlYWwtemluZGV4OiAxMDA1O1xyXG4kcmV2ZWFsLW92ZXJsYXktYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNCk7XHJcblxyXG4vLyAzMC4gU2xpZGVyXHJcbi8vIC0tLS0tLS0tLS1cclxuXHJcbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbTtcclxuJHNsaWRlci10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcclxuJHNsaWRlci1oZWlnaHQ6IDAuNXJlbTtcclxuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJHNsaWRlci1maWxsLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcclxuJHNsaWRlci1oYW5kbGUtaGVpZ2h0OiAxLjRyZW07XHJcbiRzbGlkZXItaGFuZGxlLXdpZHRoOiAxLjRyZW07XHJcbiRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xyXG4kc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjU7XHJcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDMxLiBTd2l0Y2hcclxuLy8gLS0tLS0tLS0tLVxyXG5cclxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XHJcbiRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU6ICRwcmltYXJ5LWNvbG9yO1xyXG4kc3dpdGNoLWhlaWdodDogMnJlbTtcclxuJHN3aXRjaC1oZWlnaHQtdGlueTogMS41cmVtO1xyXG4kc3dpdGNoLWhlaWdodC1zbWFsbDogMS43NXJlbTtcclxuJHN3aXRjaC1oZWlnaHQtbGFyZ2U6IDIuNXJlbTtcclxuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kc3dpdGNoLW1hcmdpbjogJGdsb2JhbC1tYXJnaW47XHJcbiRzd2l0Y2gtcGFkZGxlLWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtO1xyXG4kc3dpdGNoLXBhZGRsZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xyXG4kc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZS1vdXQ7XHJcblxyXG4vLyAzMi4gVGFibGVcclxuLy8gLS0tLS0tLS0tXHJcblxyXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kdGFibGUtY29sb3Itc2NhbGU6IDUlO1xyXG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XHJcbiR0YWJsZS1wYWRkaW5nOiByZW0tY2FsYyg4IDEwIDEwKTtcclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJTtcclxuJHRhYmxlLXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xyXG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpO1xyXG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZTtcclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XHJcbiR0YWJsZS1zdHJpcGU6IGV2ZW47XHJcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKTtcclxuJHRhYmxlLWhlYWQtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWhlYWQtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcclxuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSk7XHJcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XHJcbiR0YWJsZS1oZWFkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiR0YWJsZS1mb290LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XHJcbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2U7XHJcblxyXG4vLyAzMy4gVGFic1xyXG4vLyAtLS0tLS0tLVxyXG5cclxuJHRhYi1tYXJnaW46IDA7XHJcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlO1xyXG4kdGFiLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXk7XHJcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcclxuJHRhYi1pdGVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xyXG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlO1xyXG4kdGFiLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxLjVyZW07XHJcbiR0YWItZXhwYW5kLW1heDogNjtcclxuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcclxuJHRhYi1jb250ZW50LWJvcmRlcjogJGxpZ2h0LWdyYXk7XHJcbiR0YWItY29udGVudC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcclxuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW07XHJcblxyXG4vLyAzNC4gVGh1bWJuYWlsXHJcbi8vIC0tLS0tLS0tLS0tLS1cclxuXHJcbiR0aHVtYm5haWwtYm9yZGVyOiBzb2xpZCA0cHggJHdoaXRlO1xyXG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xyXG4kdGh1bWJuYWlsLXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoJGJsYWNrLCAwLjIpO1xyXG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KTtcclxuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xyXG4kdGh1bWJuYWlsLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XHJcblxyXG4vLyAzNS4gVGl0bGUgQmFyXHJcbi8vIC0tLS0tLS0tLS0tLS1cclxuXHJcbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkYmxhY2s7XHJcbiR0aXRsZWJhci1jb2xvcjogJHdoaXRlO1xyXG4kdGl0bGViYXItcGFkZGluZzogMC41cmVtO1xyXG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZDtcclxuJHRpdGxlYmFyLWljb24tY29sb3I6ICR3aGl0ZTtcclxuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheTtcclxuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbTtcclxuXHJcbi8vIDM2LiBUb29sdGlwXHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4kaGFzLXRpcC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcclxuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5O1xyXG4kdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XHJcbiR0b29sdGlwLWNvbG9yOiAkd2hpdGU7XHJcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW07XHJcbiR0b29sdGlwLWZvbnQtc2l6ZTogJHNtYWxsLWZvbnQtc2l6ZTtcclxuJHRvb2x0aXAtcGlwLXdpZHRoOiAwLjc1cmVtO1xyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NjtcclxuJHRvb2x0aXAtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcclxuXHJcbi8vIDM3LiBUb3AgQmFyXHJcbi8vIC0tLS0tLS0tLS0tXHJcblxyXG4kdG9wYmFyLXBhZGRpbmc6IDAuNXJlbTtcclxuJHRvcGJhci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheTtcclxuJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ6ICR0b3BiYXItYmFja2dyb3VuZDtcclxuJHRvcGJhci10aXRsZS1zcGFjaW5nOiAwLjVyZW0gMXJlbSAwLjVyZW0gMDtcclxuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHg7XHJcbiR0b3BiYXItdW5zdGFjay1icmVha3BvaW50OiBtZWRpdW07XHJcblxyXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuQGltcG9ydCAndW5pdCc7XG5AaW1wb3J0ICd2YWx1ZSc7XG5AaW1wb3J0ICdkaXJlY3Rpb24nO1xuQGltcG9ydCAnY29sb3InO1xuQGltcG9ydCAnc2VsZWN0b3InO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdicmVha3BvaW50JztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICd0eXBvZ3JhcGh5JztcbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuLy8vIEZpbmRzIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gaW50ZWdlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJGEgLSBGaXJzdCBudW1iZXIgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGIgLSBTZWNvbmQgbnVtYmVyIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3IuXG5AZnVuY3Rpb24gZ2NkKCRhLCAkYikge1xuICAvLyBGcm9tOiBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvR3JlYXRlc3RfY29tbW9uX2Rpdmlzb3IjSmF2YVNjcmlwdFxuICBAaWYgKCRiICE9IDApIHtcbiAgICBAcmV0dXJuIGdjZCgkYiwgJGEgJSAkYik7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYWJzKCRhKTtcbiAgfVxufVxuXG4vLy8gSGFuZGxlcyBkZWNpbWFsIGV4cG9uZW50cyBieSB0cnlpbmcgdG8gY29udmVydCB0aGVtIGludG8gYSBmcmFjdGlvbiBhbmQgdGhlbiB1c2UgYSBudGgtcm9vdC1hbGdvcml0aG0gZm9yIHBhcnRzIG9mIHRoZSBjYWxjdWxhdGlvblxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGJhc2UgbnVtYmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZXhwb25lbnQgLSBUaGUgZXhwb25lbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgcHJvZHVjdCBvZiB0aGUgZXhwb25lbnRpYXRpb24uXG5AZnVuY3Rpb24gcG93KCRiYXNlLCAkZXhwb25lbnQsICRwcmVjOiAxNikge1xuICBAaWYgKGZsb29yKCRleHBvbmVudCkgIT0gJGV4cG9uZW50KSB7XG4gICAgJHByZWMyIDogcG93KDEwLCAkcHJlYyk7XG4gICAgJGV4cG9uZW50OiByb3VuZCgkZXhwb25lbnQgKiAkcHJlYzIpO1xuICAgICRkZW5vbWluYXRvcjogZ2NkKCRleHBvbmVudCwgJHByZWMyKTtcbiAgICBAcmV0dXJuIG50aC1yb290KHBvdygkYmFzZSwgJGV4cG9uZW50IC8gJGRlbm9taW5hdG9yKSwgJHByZWMyIC8gJGRlbm9taW5hdG9yLCAkcHJlYyk7XG4gIH1cblxuICAkdmFsdWU6ICRiYXNlO1xuICBAaWYgJGV4cG9uZW50ID4gMSB7XG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkZXhwb25lbnQge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGV4cG9uZW50IDwgMSB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAtJGV4cG9uZW50IHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbkBmdW5jdGlvbiBudGgtcm9vdCgkbnVtLCAkbjogMiwgJHByZWM6IDEyKSB7XG4gIC8vIEZyb206IGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9OdGhfcm9vdCNKYXZhU2NyaXB0XG4gICR4OiAxO1xuXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJHByZWMge1xuICAgICR4OiAxIC8gJG4gKiAoKCRuIC0gMSkgKiAkeCArICgkbnVtIC8gcG93KCR4LCAkbiAtIDEpKSk7XG4gIH1cblxuICBAcmV0dXJuICR4O1xufVxuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgd2lkdGggZm9yIGEgZ2l2ZW4gcmF0aW8uXG4vLy8gQHBhcmFtIHtMaXN0fSAkcmF0aW8gLSBSYXRpbyB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBoZWlnaHQsIGZvcm1hdHRlZCBhcyBgeCBieSB5YC5cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IEEgcGVyY2VudGFnZSB2YWx1ZSBmb3IgdGhlIGhlaWdodCByZWxhdGl2ZSB0byB0aGUgd2lkdGggb2YgYSByZXNwb25zaXZlIGNvbnRhaW5lci5cbkBmdW5jdGlvbiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbykge1xuICAkdzogbnRoKCRyYXRpbywgMSk7XG4gICRoOiBudGgoJHJhdGlvLCAzKTtcbiAgQHJldHVybiAkaCAvICR3ICogMTAwJTtcbn1cblxuLy8vIFBhcnNlIHRoZSBnaXZlbiBgJGZyYWN0aW9uYCB0byBudW1lcmF0b3JzIGFuZCBkZW51bWVyYXRvcnMuXG4vLy9cbi8vLyBAcGFyYW0geyp9ICRmcmFjdGlvbiAtIFZhbHVlIHJlcHJlc2VudGluZyBhIGZyYWN0aW9uIHRvIHBhcnNlLiBJdCBjYW4gYmUgZm9ybWF0dGVkIGFzIGA1MCVgLCBgMSBvZiAyYCwgYDEvMmAgb3IgYDUwYCAobm8gZGVub21pbmF0b3Igd291bGQgYmUgcmV0dXJuZWQpLlxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH0gTGlzdCBvZiBwYXJzZWQgdmFsdWVzIHdpdGggbnVtZXJhdG9yIGF0IGZpcnN0IHBvc2l0aW9uIGFuZCBkZW51bWVyYXRvciBhcyBzZWNvbmQuIFRoZXNlIHZhbHVlcyBtYXkgYmUgbnVsbC5cbkBmdW5jdGlvbiB6Zi1wYXJzZS1mcmFjdGlvbigkZnJhY3Rpb24pIHtcblxuICBAaWYgdHlwZS1vZigkZnJhY3Rpb24pID09ICdudW1iZXInIHtcbiAgICAvLyBcIjUwJVwiXG4gICAgQGlmIHVuaXQoJGZyYWN0aW9uKSA9PSAnJScge1xuICAgICAgQHJldHVybiAoc3RyaXAtdW5pdCgkZnJhY3Rpb24pLCAxMDApO1xuICAgIH1cbiAgICBAZWxzZSBpZiAodW5pdCgkZnJhY3Rpb24pID09ICcnKSB7XG4gICAgICAvLyBcIjAuNVwiXG4gICAgICBAaWYgJGZyYWN0aW9uIDwgMSB7XG4gICAgICAgIEByZXR1cm4gKCRmcmFjdGlvbiAqIDEwMCwgMTAwKTtcbiAgICAgIH1cbiAgICAgIC8vIFwiNTBcIlxuICAgICAgQGVsc2Uge1xuICAgICAgICBAcmV0dXJuICgkZnJhY3Rpb24sIG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZyYWN0aW9uKSA9PSAnbGlzdCcge1xuICAgIC8vIFwiNTAgb2YgMTAwXCIsIFwiNTAvMTAwXCIuLi5cbiAgICBAaWYgbGVuZ3RoKCRmcmFjdGlvbikgPT0gM1xuICAgICAgYW5kIHR5cGUtb2YobnRoKCRmcmFjdGlvbiwgMSkgPT0gJ251bWJlcicpXG4gICAgICBhbmQgdHlwZS1vZihudGgoJGZyYWN0aW9uLCAzKSA9PSAnbnVtYmVyJykge1xuICAgICAgQHJldHVybiAobnRoKCRmcmFjdGlvbiwgMSksIG50aCgkZnJhY3Rpb24sIDMpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIChudWxsLCBudWxsKTtcbn1cblxuLy8vIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gYCR2YWx1ZWAgcmVwcmVzZW50cyBhIGZyYWN0aW9uLiBTdXBwb3J0cyBmb3JtYXRzIGxpa2UgYDUwJWAsIGAxIG9mIDJgLCBgMSBwZXIgMmAgb3IgYDEvMmAuXG4vLy9cbi8vLyBAcGFyYW0geyp9ICR2YWx1ZSAtIFZhbHVlIHRvIHRlc3QuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYWxsb3ctbm8tZGVub21pbmF0b3IgW2ZhbHNlXSAtIElmIGB0cnVlYCwgc2ltcGxlIG51bWJlcnMgd2l0aG91dCBkZW5vbWluYXRvcnMgbGlrZSBgNTBgIGFyZSBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSBgdHJ1ZWAgaWYgYCR2YWx1ZWAgcmVwcmVzZW50cyBhIGZyYWN0aW9uLCBgZmFsc2VgIG90aGVyd2lzZS5cbkBmdW5jdGlvbiB6Zi1pcy1mcmFjdGlvbigkdmFsdWUsICRhbGxvdy1uby1kZW5vbWluYXRvcjogZmFsc2UpIHtcbiAgJHBhcnNlZDogemYtcGFyc2UtZnJhY3Rpb24oJHZhbHVlKTtcbiAgQHJldHVybiBub3QobnRoKCRwYXJzZWQsIDEpID09IG51bGxcbiAgICBvciAobnRoKCRwYXJzZWQsIDIpID09IG51bGwgYW5kICRhbGxvdy1uby1kZW5vbWluYXRvciA9PSBmYWxzZSkpO1xufVxuXG4vLy8gQ2FsY3VsYXRlIGEgcGVyY2VudGFnZSBmcm9tIGEgZ2l2ZW4gZnJhY3Rpb24uXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkZnJhY3Rpb24gLSBWYWx1ZSByZXByZXNlbnRpbmcgYSBmcmFjdGlvbiB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlLCBmb3JtYXR0ZWQgYXMgYDUwYCAocmVsYXRpdmUgdG8gYCRkZW5vbWluYXRvcmApLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGRlbm9taW5hdG9yIC0gRGVmYXVsdCB2YWx1ZSB0byB1c2UgYXMgZGVub21pbmF0b3Igd2hlbiBgJGZyYWN0aW9uYCByZXByZXNlbnRzIGFuIGFic29sdXRlIHZhbHVlLlxuQGZ1bmN0aW9uIGZyYWN0aW9uLXRvLXBlcmNlbnRhZ2UoXG4gICRmcmFjdGlvbixcbiAgJGRlbm9taW5hdG9yOiBudWxsXG4pIHtcbiAgJHBhcnNlZDogemYtcGFyc2UtZnJhY3Rpb24oJGZyYWN0aW9uKTtcbiAgJHBhcnNlZC1ub21pbmF0b3I6IG50aCgkcGFyc2VkLCAxKTtcbiAgJHBhcnNlZC1kZW5vbWluYXRvcjogbnRoKCRwYXJzZWQsIDIpO1xuXG4gIEBpZiAkcGFyc2VkLW5vbWluYXRvciA9PSBudWxsIHtcbiAgICBAZXJyb3IgJ1dyb25nIHN5bnRheCBmb3IgXCJmcmFjdGlvbi10by1wZXJjZW50YWdlKClcIi4gVXNlIGEgbnVtYmVyLCBkZWNpbWFsLCBwZXJjZW50YWdlLCBvciBcIm4gb2YgblwiIC8gXCJuL25cIi4nO1xuICB9XG4gIEBpZiAkcGFyc2VkLWRlbm9taW5hdG9yID09IG51bGwge1xuICAgIEBpZiB0eXBlLW9mKCRkZW5vbWluYXRvcikgPT0gJ251bWJlcicge1xuICAgICAgJHBhcnNlZC1kZW5vbWluYXRvcjogJGRlbm9taW5hdG9yO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAZXJyb3IgJ0Vycm9yIHdpdGggXCJmcmFjdGlvbi10by1wZXJjZW50YWdlKClcIi4gQSBkZWZhdWx0IFwiJGRlbm9taW5hdG9yXCIgaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBhYnNvbHV0ZSB2YWx1ZXMnO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gcGVyY2VudGFnZSgkcGFyc2VkLW5vbWluYXRvciAvICRwYXJzZWQtZGVub21pbmF0b3IpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBzYW1lIG51bWJlciwgc2FucyB1bml0LlxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbn1cblxuLy8vIENvbnZlcnRzIG9uZSBvciBtb3JlIHBpeGVsIHZhbHVlcyBpbnRvIG1hdGNoaW5nIHJlbSB2YWx1ZXMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkdmFsdWVzIC0gT25lIG9yIG1vcmUgdmFsdWVzIHRvIGNvbnZlcnQuIEJlIHN1cmUgdG8gc2VwYXJhdGUgdGhlbSB3aXRoIHNwYWNlcyBhbmQgbm90IGNvbW1hcy4gSWYgeW91IG5lZWQgdG8gY29udmVydCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB3cmFwIHRoZSBsaXN0IGluIHBhcmVudGhlc2VzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBUaGUgYmFzZSB2YWx1ZSB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgYHJlbWAuIElmIHlvdSdyZSB1c2luZyBGb3VuZGF0aW9uIG91dCBvZiB0aGUgYm94LCB0aGlzIGlzIDE2cHguIElmIHRoaXMgcGFyYW1ldGVyIGlzIGBudWxsYCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVmZXJlbmNlIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlIGFzIHRoZSBiYXNlLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEEgbGlzdCBvZiBjb252ZXJ0ZWQgdmFsdWVzLlxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlOiBudWxsKSB7XG4gICRyZW0tdmFsdWVzOiAoKTtcbiAgJGNvdW50OiBsZW5ndGgoJHZhbHVlcyk7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIC8vIFRoaXMgaXMgYmVjYXVzZSAxMDAlIGZvbnQgc2l6ZSA9IDE2cHggaW4gbW9zdCBhbGwgYnJvd3NlcnNcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIC8vIFVzaW5nIHJlbSBhcyBiYXNlIGFsbG93cyBjb3JyZWN0IHNjYWxpbmdcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmICRjb3VudCA9PSAxIHtcbiAgICBAcmV0dXJuIC16Zi10by1yZW0oJHZhbHVlcywgJGJhc2UpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY291bnQge1xuICAgICRyZW0tdmFsdWVzOiBhcHBlbmQoJHJlbS12YWx1ZXMsIC16Zi10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlbS12YWx1ZXM7XG59XG5cbi8vIENvbnZlcnRzIGEgdW5pdGxlc3MsIHBpeGVsLCBvciByZW0gdmFsdWUgdG8gZW0sIGZvciB1c2UgaW4gYnJlYWtwb2ludHMuXG5AZnVuY3Rpb24gLXpmLWJwLXRvLWVtKCR2YWx1ZSkge1xuICAvLyBQaXhlbCBhbmQgdW5pdGxlc3MgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gcmVtc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcgb3IgdW5pdGxlc3MoJHZhbHVlKSB7XG4gICAgJHZhbHVlOiByZW0tY2FsYygkdmFsdWUsICRiYXNlOiAxNnB4KTtcbiAgfVxuXG4gIC8vIFRoZW4gdGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBlbXNcbiAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxZW07XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsIHZhbHVlIHRvIG1hdGNoaW5nIHJlbSB2YWx1ZS4gKkFueSogdmFsdWUgcGFzc2VkLCByZWdhcmRsZXNzIG9mIHVuaXQsIGlzIGFzc3VtZWQgdG8gYmUgYSBwaXhlbCB2YWx1ZS4gQnkgZGVmYXVsdCwgdGhlIGJhc2UgcGl4ZWwgdmFsdWUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHJlbSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFBpeGVsIHZhbHVlIHRvIGNvbnZlcnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIEJhc2UgZm9yIHBpeGVsIGNvbnZlcnNpb24uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciBpbiByZW1zLCBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZSBhbmQgdGhlIGJhc2UgcGl4ZWwgdmFsdWUuIHJlbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzIGlzLlxuQGZ1bmN0aW9uIC16Zi10by1yZW0oJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnbnVtYmVyJyB7XG4gICAgQHdhcm4gaW5zcGVjdCgkdmFsdWUpICsgJyB3YXMgcGFzc2VkIHRvIHJlbS1jYWxjKCksIHdoaWNoIGlzIG5vdCBhIG51bWJlci4nO1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGVtIGludG8gcmVtIGlmIHNvbWVvbmUgaGFuZHMgb3ZlciAnZW0nc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gVHVybiAwcmVtIGludG8gMFxuICBAaWYgJHZhbHVlID09IDByZW0ge1xuICAgICR2YWx1ZTogMDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCwgcGVyY2VudGFnZSwgcmVtIG9yIGVtIHZhbHVlIHRvIGEgdW5pdGxlc3MgdmFsdWUgYmFzZWQgb24gYSBnaXZlbiBmb250IHNpemUuIElkZWFsIGZvciB3b3JraW5nIG91dCB1bml0bGVzcyBsaW5lIGhlaWdodHMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gY29udmVydCB0byBhIHVuaXRsZXNzIGxpbmUgaGVpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGZvbnQgc2l6ZSB0byB1c2UgdG8gd29yayBvdXQgdGhlIGxpbmUgaGVpZ2h0IC0gZGVmYXVsdHMgdG8gJGdsb2JhbC1mb250LXNpemVcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBVbml0bGVzcyBudW1iZXJcbkBmdW5jdGlvbiB1bml0bGVzcy1jYWxjKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBGaXJzdCwgbGV0cyBjb252ZXJ0IG91ciAkYmFzZSB0byBwaXhlbHNcblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gTm93IGxldCdzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogKCR2YWx1ZSAvIDEwMCUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgLy8gJ3B4J1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcge1xuICAgIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlciB0aGFuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBub3QgZmFsc2V5LCBpbiBDU1MgdGVybXMuIEZhbHNleSB2YWx1ZXMgYXJlIGBudWxsYCwgYG5vbmVgLCBgMGAgd2l0aCBhbnkgdW5pdCwgb3IgYW4gZW1wdHkgbGlzdC5cbi8vL1xuLy8vIEBwYXJhbSB7TWl4ZWR9ICR2YWwgLSBWYWx1ZSB0byBjaGVjay5cbi8vL1xuLy8vIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgYCR2YWxgIGlzIG5vdCBmYWxzZXkuXG5AZnVuY3Rpb24gaGFzLXZhbHVlKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gbnVsbCBvciAkdmFsID09IG5vbmUge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gJ251bWJlcicgYW5kIHN0cmlwLXVuaXQoJHZhbCkgPT0gMCB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICBAaWYgdHlwZS1vZigkdmFsKSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkdmFsKSA9PSAwIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vIERldGVybWluZSBhIHRvcC9yaWdodC9ib3R0b20vcmlnaHQgdmFsdWUgb24gYSBwYWRkaW5nLCBtYXJnaW4sIGV0Yy4gcHJvcGVydHksIG5vIG1hdHRlciBob3cgbWFueSB2YWx1ZXMgd2VyZSBwYXNzZWQgaW4uIFVzZSB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHNpZGUgb2YgYSB2YWx1ZSwgYnV0IGRvbid0IGtub3cgaWYgdGhlIHZhbHVlIGlzIHVzaW5nIGEgc2hvcnRoYW5kIGZvcm1hdC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdHxOdW1iZXJ9ICR2YWwgLSBWYWx1ZSB0byBhbmFseXplLiBTaG91bGQgYmUgYSBzaG9ydGhhbmQgc2l6aW5nIHByb3BlcnR5LCBlLmcuIFwiMWVtIDJlbSAxZW1cIlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRvIHJldHVybi4gU2hvdWxkIGJlIGB0b3BgLCBgcmlnaHRgLCBgYm90dG9tYCwgb3IgYGxlZnRgLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gYCR2YWxgIGFuZCBgJHNpZGVgLlxuQGZ1bmN0aW9uIGdldC1zaWRlKCR2YWwsICRzaWRlKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkdmFsKTtcblxuICBAaWYgJGxlbmd0aCA9PSAxIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgQHJldHVybiBtYXAtZ2V0KChcbiAgICAgIHRvcDogbnRoKCR2YWwsIDEpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICksICRzaWRlKTtcbiAgfVxuICBAaWYgJGxlbmd0aCA9PSAzIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoKFxuICAgICAgdG9wOiBudGgoJHZhbCwgMSksXG4gICAgICBsZWZ0OiBudGgoJHZhbCwgMiksXG4gICAgICByaWdodDogbnRoKCR2YWwsIDIpLFxuICAgICAgYm90dG9tOiBudGgoJHZhbCwgMyksXG4gICAgKSwgJHNpZGUpO1xuICB9XG4gIEBpZiAkbGVuZ3RoID09IDQge1xuICAgIEByZXR1cm4gbWFwLWdldCgoXG4gICAgICB0b3A6IG50aCgkdmFsLCAxKSxcbiAgICAgIHJpZ2h0OiBudGgoJHZhbCwgMiksXG4gICAgICBib3R0b206IG50aCgkdmFsLCAzKSxcbiAgICAgIGxlZnQ6IG50aCgkdmFsLCA0KSxcbiAgICApLCAkc2lkZSk7XG4gIH1cbn1cblxuLy8vIEdpdmVuIGJvcmRlciAkdmFsLCBmaW5kIGEgc3BlY2lmaWMgZWxlbWVudCBvZiB0aGUgYm9yZGVyLCB3aGljaCBpcyAkZWxlbS4gVGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgJGVsZW0gYXJlIHdpZHRoLCBzdHlsZSwgYW5kIGNvbG9yLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsIC0gQm9yZGVyIHZhbHVlIHRvIGZpbmQgYSB2YWx1ZSBpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIC0gQm9yZGVyIGNvbXBvbmVudCB0byBleHRyYWN0LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBJZiB0aGUgdmFsdWUgZXhpc3RzLCByZXR1cm5zIHRoZSB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIG5vdCBpbiB0aGUgYm9yZGVyIGRlZmluaXRpb24sIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBhIDBweCB3aWR0aCwgc29saWQgc3R5bGUsIG9yIGJsYWNrIGJvcmRlci5cbkBmdW5jdGlvbiBnZXQtYm9yZGVyLXZhbHVlKCR2YWwsICRlbGVtKSB7XG4gIC8vIEZpbmQgdGhlIHdpZHRoLCBzdHlsZSwgb3IgY29sb3IgYW5kIHJldHVybiBpdFxuICBAZWFjaCAkdiBpbiAkdmFsIHtcbiAgICAkdHlwZTogdHlwZS1vZigkdik7XG4gICAgQGlmICRlbGVtID09IHdpZHRoIGFuZCAkdHlwZSA9PSAnbnVtYmVyJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgICBAaWYgJGVsZW0gPT0gc3R5bGUgYW5kICR0eXBlID09ICdzdHJpbmcnIHtcbiAgICAgIEByZXR1cm4gJHY7XG4gICAgfVxuICAgIEBpZiAkZWxlbSA9PSBjb2xvciBhbmQgJHR5cGUgPT0gJ2NvbG9yJyB7XG4gICAgICBAcmV0dXJuICR2O1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmF1bHRzXG4gICRkZWZhdWx0czogKFxuICAgIHdpZHRoOiAwLFxuICAgIHN0eWxlOiBzb2xpZCxcbiAgICBjb2xvcjogIzAwMCxcbiAgKTtcblxuICBAcmV0dXJuIG1hcC1nZXQoJGRlZmF1bHRzLCAkZWxlbSk7XG59XG5cbi8vLyBGaW5kcyBhIHZhbHVlIGluIGEgbmVzdGVkIG1hcC5cbi8vLyBAbGluayBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvZGVlcC1nZXRzZXQtbWFwcy8gRGVlcCBHZXQvU2V0IGluIE1hcHNcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHB1bGwgYSB2YWx1ZSBmcm9tLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5cy4uLiAtIEtleXMgdG8gdXNlIHdoZW4gbG9va2luZyBmb3IgYSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWFwLlxuQGZ1bmN0aW9uIG1hcC1kZWVwLWdldCgkbWFwLCAka2V5cy4uLikge1xuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICB9XG4gIEByZXR1cm4gJG1hcDtcbn1cblxuLy8vIENhc3RzIGEgbWFwIGludG8gYSBsaXN0LlxuLy8vIEBsaW5rIGh0dHA6Ly9odWdvZ2lyYXVkZWwuY29tLzIwMTQvMDQvMjgvY2FzdGluZy1tYXAtaW50by1saXN0L1xuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gcHVsbCBhIHZhbHVlIGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRGVwZW5kaW5nIG9uIHRoZSBmbGFnLCByZXR1cm5zIGVpdGhlciAka2V5cyBvciAkdmFsdWVzIG9yIGJvdGguXG5AZnVuY3Rpb24gbWFwLXRvLWxpc3QoJG1hcCwgJGtlZXA6ICdib3RoJykge1xuICAka2VlcDogaWYoaW5kZXgoJ2tleXMnICd2YWx1ZXMnLCAka2VlcCksICRrZWVwLCAnYm90aCcpO1xuXG4gIEBpZiB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcbiAgICAka2V5czogKCk7XG4gICAgJHZhbHVlczogKCk7XG5cbiAgICBAZWFjaCAka2V5LCAkdmFsIGluICRtYXAge1xuICAgICAgJGtleXM6IGFwcGVuZCgka2V5cywgJGtleSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHZhbCk7XG4gICAgfVxuXG4gICAgQGlmICRrZWVwID09ICdrZXlzJyB7XG4gICAgICBAcmV0dXJuICRrZXlzO1xuICAgIH1cbiAgICBAZWxzZSBpZiAka2VlcCA9PSAndmFsdWVzJyB7XG4gICAgICBAcmV0dXJuICR2YWx1ZXM7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gemlwKCRrZXlzLCAkdmFsdWVzKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGlmKHR5cGUtb2YoJG1hcCkgIT0gJ2xpc3QnLCAoJHZhbHVlLCksICRtYXApO1xuXG59XG5cbi8vLyBSZXR1cm4gYSBqb2luIG9mIHRoZSB0d28gZ2l2ZW4gc3RyaW5ncyBgJHN0cjFgIGFuZCBgJHN0cjJgLlxuLy8vIElmIHRoZSB0d28gc3RyaW5ncyBhcmUgbm90IGVtcHR5LCB0aGV5IGFyZSBzZXBhcmF0ZWQgYnkgYCRkZWxpbWl0ZXJgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHIxIFtudWxsXSAtIEZpcnN0IHN0cmluZyB0byBqb2luLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyMSBbbnVsbF0gLSBTZWNvbmQgc3RyaW5nIHRvIGpvaW4uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWxpbWl0ZXIgW251bGxdIC0gRGVsaW1pZXRlciBiZXR3ZWVuIGAkc3RyMWAgYW5kIGAkc3RyMmAuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBKb2luIG9mIGAkc3RyMWAsIGAkZGVsaW1pdGVyYCBhbmQgYCRzdHIyYC5cbkBmdW5jdGlvbiB6Zi1zdHItam9pbihcbiAgJHN0cjE6IG51bGwsXG4gICRzdHIyOiBudWxsLFxuICAkZGVsaW1pdGVyOiBudWxsXG4pIHtcbiAgJHJldDogJyc7XG5cbiAgQGlmICRzdHIxIGFuZCBzdHItbGVuZ3RoKCRzdHIxKSA+IDAge1xuICAgICRyZXQ6ICRyZXQgKyAkc3RyMTtcblxuICAgIEBpZiAkZGVsaW1pdGVyIGFuZCBzdHItbGVuZ3RoKCRkZWxpbWl0ZXIpID4gMCBhbmQgJHN0cjIgYW5kIHN0ci1sZW5ndGgoJHN0cjIpID4gMCB7XG4gICAgICAkcmV0OiAkcmV0ICsgJGRlbGltaXRlcjtcbiAgICB9XG4gIH1cbiAgQGlmICRzdHIyIGFuZCBzdHItbGVuZ3RoKCRzdHIyKSA+IDAge1xuICAgICRyZXQ6ICRyZXQgKyAkc3RyMjtcbiAgfVxuXG4gIEByZXR1cm4gJHJldDtcbn1cblxuLy8vIFNhZmVseSByZXR1cm4gYSB2YWx1ZSBmcm9tIGEgbWFwLlxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gcmV0cmlldmUgYSB2YWx1ZSBmcm9tLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gTmFtZSBvZiB0aGUgbWFwIGtleS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBGb3VuZCB2YWx1ZS5cbkBmdW5jdGlvbiBtYXAtc2FmZS1nZXQoJG1hcCwgJGtleSkge1xuICBAaWYgKHR5cGUtb2YoJG1hcCkgPT0gJ21hcCcgb3IgKHR5cGUtb2YoJG1hcCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJG1hcCkgPT0gMCkpIHtcbiAgICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XG4gICAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBlcnJvciAnS2V5OiBgI3ska2V5fWAgaXMgbm90IGF2YWlsYWJsZSBpbiBgI3skbWFwfWAnO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yICdgI3skbWFwfWAgaXMgbm90IGEgdmFsaWQgbWFwJztcbiAgfVxufVxuXG4vLy8gQ29udmVydCB0aGUgZ2l2ZW4gYCR2YWxgIHRvIGEgQm9vbGVhbi4gRW1wdHkgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGFzIGZhbHNlLlxuLy8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHsqfSAkdmFsIC0gVmFsdWUgdG8gY29udmVydC5cbi8vL1xuLy8vIEByZXR1cm5zIHtCb29sZWFufSBDb252ZXJ0ZWQgQm9vbGVhbiB2YWx1ZS5cbkBmdW5jdGlvbiAtemYtYm9vbCgkdmFsKSB7XG4gIEByZXR1cm4gJHZhbCAhPSBmYWxzZSBhbmQgaGFzLXZhbHVlKCR2YWwpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4vLy8gUmV0dXJucyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIG9mICRkaXJcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciAtIFVzZWQgZGlyZWN0aW9uIGJldHdlZW4gXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiIGFuZCBcImxlZnRcIi5cbi8vLyBAcmV0dXJuIHtLZXl3b3JkfSBPcHBvc2l0ZSBkaXJlY3Rpb24gb2YgJGRpclxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1vcHBvc2l0ZShcbiAgJGRpclxuKSB7XG4gICRkaXJzOiAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTtcbiAgJHBsYWNlOiBpbmRleCgkZGlycywgJGRpcik7XG5cbiAgQGlmICRwbGFjZSA9PSBudWxsIHtcbiAgICBAZXJyb3IgJ2RpcmVjdGlvbi1vcHBvc2l0ZTogSW52YWxpZCAkZGlyIHBhcmFtZXRlciwgZXhwZWN0ZWQgYSB2YWx1ZSBmcm9tIFwiI3skZGlyc31cIiwgZm91bmQgXCIjeyRkaXJ9XCIuJztcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgdGhlIG9wcG9zaXRlIHBsYWNlIGluIGEgY2lyY2xlLCB3aXRoIGEgc3RhcnRpbmcgaW5kZXggb2YgMVxuICAkbGVuZ3RoOiBsZW5ndGgoJGRpcnMpO1xuICAkZGVtaTogJGxlbmd0aCAvIDI7XG4gICRvcHBvc2l0ZS1wbGFjZTogKCgkcGxhY2UgKyAkZGVtaSAtIDEpICUgJGxlbmd0aCkgKyAxO1xuXG4gIEByZXR1cm4gbnRoKCRkaXJzLCAkb3Bwb3NpdGUtcGxhY2UpO1xufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbkBpbXBvcnQgJ21hdGgnO1xuXG4kY29udHJhc3Qtd2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIGNoZWNrIHRoZSBsdW1pbmFuY2Ugb2YuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuQGZ1bmN0aW9uIGNvbG9yLWx1bWluYW5jZSgkY29sb3IpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXG4gICRyZ2JhOiByZWQoJGNvbG9yKSwgZ3JlZW4oJGNvbG9yKSwgYmx1ZSgkY29sb3IpO1xuICAkcmdiYTI6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XG4gICAgJHJnYjogbnRoKCRyZ2JhLCAkaSk7XG4gICAgJHJnYjogJHJnYiAvIDI1NTtcblxuICAgICRyZ2I6IGlmKCRyZ2IgPCAwLjAzOTI4LCAkcmdiIC8gMTIuOTIsIHBvdygoJHJnYiArIDAuMDU1KSAvIDEuMDU1LCAyLjQpKTtcblxuICAgICRyZ2JhMjogYXBwZW5kKCRyZ2JhMiwgJHJnYik7XG4gIH1cblxuICBAcmV0dXJuIDAuMjEyNiAqIG50aCgkcmdiYTIsIDEpICsgMC43MTUyICogbnRoKCRyZ2JhMiwgMikgKyAwLjA3MjIgKiBudGgoJHJnYmEyLCAzKTtcbn1cblxuLy8vIENoZWNrcyB0aGUgY29udHJhc3QgcmF0aW8gb2YgdHdvIGNvbG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjEgLSBGaXJzdCBjb2xvciB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvcjIgLSBTZWNvbmQgY29sb3IgdG8gY29tcGFyZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBjb250cmFzdCByYXRpbyBvZiB0aGUgY29tcGFyZWQgY29sb3JzLlxuQGZ1bmN0aW9uIGNvbG9yLWNvbnRyYXN0KCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI2NvbnRyYXN0LXJhdGlvZGVmXG4gICRsdW1pbmFuY2UxOiBjb2xvci1sdW1pbmFuY2UoJGNvbG9yMSkgKyAwLjA1O1xuICAkbHVtaW5hbmNlMjogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjIpICsgMC4wNTtcbiAgJHJhdGlvOiAkbHVtaW5hbmNlMSAvICRsdW1pbmFuY2UyO1xuXG4gIEBpZiAkbHVtaW5hbmNlMiA+ICRsdW1pbmFuY2UxIHtcbiAgICAkcmF0aW86IDEgLyAkcmF0aW87XG4gIH1cblxuICAkcmF0aW86IHJvdW5kKCRyYXRpbyAqIDEwKSAvIDEwO1xuXG4gIEByZXR1cm4gJHJhdGlvO1xufVxuXG4vLy8gQ2hlY2tzIHRoZSBsdW1pbmFuY2Ugb2YgYCRiYXNlYCwgYW5kIHJldHVybnMgdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFzZSAtIENvbG9yIHRvIGNoZWNrIGx1bWluYW5jZS5cbi8vLyBAcGFyYW0ge0xpc3R9ICRjb2xvcnMgWygkd2hpdGUsICRibGFjayldIC0gQ29sb3JzIHRvIGNvbXBhcmUuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b2xlcmFuY2UgWyRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2VdIC0gQ29udHJhc3QgdG9sZXJhbmNlLlxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSB0aGUgY29sb3IgZnJvbSBgJGNvbG9yc2AgKGxpc3Qgb2YgY29sb3JzKSB0aGF0IGhhcyB0aGUgbW9zdCBjb250cmFzdC5cbkBmdW5jdGlvbiBjb2xvci1waWNrLWNvbnRyYXN0KCRiYXNlLCAkY29sb3JzOiAoJHdoaXRlLCAkYmxhY2spLCAkdG9sZXJhbmNlOiAkZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlKSB7XG4gICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAxKSk7XG4gICRiZXN0OiBudGgoJGNvbG9ycywgMSk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGNvbG9ycykge1xuICAgICRjdXJyZW50LWNvbnRyYXN0OiBjb2xvci1jb250cmFzdCgkYmFzZSwgbnRoKCRjb2xvcnMsICRpKSk7XG4gICAgQGlmICgkY3VycmVudC1jb250cmFzdCAtICRjb250cmFzdCA+ICR0b2xlcmFuY2UpIHtcbiAgICAgICRjb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgICAgJGJlc3Q6IG50aCgkY29sb3JzLCAkaSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICgkY29udHJhc3Qtd2FybmluZ3MgYW5kICRjb250cmFzdCA8IDMpIHtcbiAgICBAd2FybiBcIkNvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9XCI7XG4gIH1cblxuICBAcmV0dXJuICRiZXN0O1xufVxuXG4vLy8gU2NhbGVzIGEgY29sb3IgdG8gYmUgZGFya2VyIGlmIGl0J3MgbGlnaHQsIG9yIGxpZ2h0ZXIgaWYgaXQncyBkYXJrLiBVc2UgdGhpcyBmdW5jdGlvbiB0byB0aW50IGEgY29sb3IgYXBwcm9wcmlhdGUgdG8gaXRzIGxpZ2h0bmVzcy5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIHNjYWxlLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHNjYWxlIFs1JV0gLSBBbW91bnQgdG8gc2NhbGUgdXAgb3IgZG93bi5cbi8vLyBAcGFyYW0ge1BlcmNlbnRhZ2V9ICR0aHJlc2hvbGQgWzQwJV0gLSBUaHJlc2hvbGQgb2YgbGlnaHRuZXNzIHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IEEgc2NhbGVkIGNvbG9yLlxuQGZ1bmN0aW9uIHNtYXJ0LXNjYWxlKCRjb2xvciwgJHNjYWxlOiA1JSwgJHRocmVzaG9sZDogNDAlKSB7XG4gIEBpZiBsaWdodG5lc3MoJGNvbG9yKSA+ICR0aHJlc2hvbGQge1xuICAgICRzY2FsZTogLSRzY2FsZTtcbiAgfVxuICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHNjYWxlKTtcbn1cblxuLy8vIEdldCBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHBhcmFtIHtrZXl9IGNvbG9yIGtleSBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuLy8vXG4vLy8gQHJldHVybnMge0NvbG9yfSBjb2xvciBmcm9tIGZvdW5kYXRpb24tcGFsZXR0ZVxuQGZ1bmN0aW9uIGdldC1jb2xvcigka2V5KSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCAka2V5KSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAZXJyb3IgJ2dpdmVuICRrZXkgaXMgbm90IGF2YWlsYWJsZSBpbiAkZm91bmRhdGlvbi1wYWxldHRlJztcbiAgfVxufVxuXG4vLy8gVHJhbnNmZXJzIHRoZSBjb2xvcnMgaW4gdGhlIGAkZm91bmRhdGlvbi1wYWxldHRlYCBtYXAgaW50byB2YXJpYWJsZXMsIHN1Y2ggYXMgYCRwcmltYXJ5LWNvbG9yYCBhbmQgYCRzZWNvbmRhcnktY29sb3JgLiBDYWxsIHRoaXMgbWl4aW4gYmVsb3cgdGhlIEdsb2JhbCBzZWN0aW9uIG9mIHlvdXIgc2V0dGluZ3MgZmlsZSB0byBwcm9wZXJseSBtaWdyYXRlIHlvdXIgY29kZWJhc2UuXG5AbWl4aW4gYWRkLWZvdW5kYXRpb24tY29sb3JzKCkge1xuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkge1xuICAgICRwcmltYXJ5LWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHByaW1hcnkpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRwcmltYXJ5LWNvbG9yOiAjMTc3OWJhICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHNlY29uZGFyeSkge1xuICAgICRzZWNvbmRhcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc2Vjb25kYXJ5LWNvbG9yOiAjNzY3Njc2ICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzdWNjZXNzKSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkc3VjY2Vzcy1jb2xvcjogIzNhZGI3NiAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSB7XG4gICAgJHdhcm5pbmctY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgd2FybmluZykgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHdhcm5pbmctY29sb3I6ICNmZmFlMDAgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpIHtcbiAgICAkYWxlcnQtY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgYWxlcnQpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRhbGVydC1jb2xvcjogI2NjNGIzNyAhZ2xvYmFsO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBHZW5lcmF0ZXMgYSBzZWxlY3RvciB3aXRoIGV2ZXJ5IHRleHQgaW5wdXQgdHlwZS4gWW91IGNhbiBhbHNvIGZpbHRlciB0aGUgbGlzdCB0byBvbmx5IG91dHB1dCBhIHN1YnNldCBvZiB0aG9zZSBzZWxlY3RvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R8S2V5d29yZH0gJHR5cGVzIFsoKV0gLSBBIGxpc3Qgb2YgdGV4dCBpbnB1dCB0eXBlcyB0byB1c2UuIExlYXZlIGJsYW5rIHRvIHVzZSBhbGwgb2YgdGhlbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRtb2RpZmllciBbJyddIC0gQSBtb2RpZmllciB0byBiZSBhcHBsaWVkIHRvIGVhY2ggdGV4dCBpbnB1dCB0eXBlIChlLmcuIGEgY2xhc3Mgb3IgYSBwc2V1ZG8tY2xhc3MpLiBMZWF2ZSBibGFuayB0byBpZ25vcmUuXG5AZnVuY3Rpb24gdGV4dC1pbnB1dHMoJHR5cGVzOiAoKSwgJG1vZGlmaWVyOiAnJykge1xuICAkcmV0dXJuOiAoKTtcblxuICAkYWxsLXR5cGVzOlxuICAgIHRleHRcbiAgICBwYXNzd29yZFxuICAgIGRhdGVcbiAgICBkYXRldGltZVxuICAgIGRhdGV0aW1lLWxvY2FsXG4gICAgbW9udGhcbiAgICB3ZWVrXG4gICAgZW1haWxcbiAgICBudW1iZXJcbiAgICBzZWFyY2hcbiAgICB0ZWxcbiAgICB0aW1lXG4gICAgdXJsXG4gICAgY29sb3I7XG5cbiAgQGlmIG5vdCBoYXMtdmFsdWUoJHR5cGVzKSB7XG4gICAgJHR5cGVzOiAkYWxsLXR5cGVzO1xuICB9XG5cbiAgQGVhY2ggJHR5cGUgaW4gJHR5cGVzIHtcbiAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgdW5xdW90ZSgnW3R5cGU9XFwnI3skdHlwZX1cXCddI3skbW9kaWZpZXJ9JyksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIkBmdW5jdGlvbiAtemYtZmxleC1qdXN0aWZ5KCR0ZXh0LWRpcmVjdGlvbil7XG4gICQtemYtZmxleC1qdXN0aWZ5OiAoXG4gICAgJ2xlZnQnOiBpZigkdGV4dC1kaXJlY3Rpb24gPT0gcnRsLCBmbGV4LWVuZCwgZmxleC1zdGFydCksXG4gICAgJ3JpZ2h0JzogaWYoJHRleHQtZGlyZWN0aW9uID09IHJ0bCwgZmxleC1zdGFydCwgZmxleC1lbmQpLFxuICAgICdjZW50ZXInOiBjZW50ZXIsXG4gICAgJ2p1c3RpZnknOiBzcGFjZS1iZXR3ZWVuLFxuICAgICdzcGFjZWQnOiBzcGFjZS1hcm91bmQsXG4gICk7XG5cbiAgQHJldHVybiAkLXpmLWZsZXgtanVzdGlmeTtcbn1cblxuXG4kLXpmLWZsZXgtYWxpZ246IChcbiAgJ3RvcCc6IGZsZXgtc3RhcnQsXG4gICdib3R0b20nOiBmbGV4LWVuZCxcbiAgJ21pZGRsZSc6IGNlbnRlcixcbiAgJ3N0cmV0Y2gnOiBzdHJldGNoLFxuKTtcblxuJC16Zi1mbGV4LWRpcmVjdGlvbjogKFxuICAncm93Jzogcm93LFxuICAncm93LXJldmVyc2UnOiByb3ctcmV2ZXJzZSxcbiAgJ2NvbHVtbic6IGNvbHVtbixcbiAgJ2NvbHVtbi1yZXZlcnNlJzogY29sdW1uLXJldmVyc2UsXG4pO1xuXG4vLy8gRW5hYmxlcyBmbGV4Ym94IGJ5IGFkZGluZyBgZGlzcGxheTogZmxleGAgdG8gdGhlIGVsZW1lbnQuXG5AbWl4aW4gZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi8vLyBIb3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBhbGlnbnMgdGhlIGl0ZW1zIHdpdGhpbiBhIGZsZXggY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeCBbbnVsbF0gLSBIb3Jpem9udGFsIGFsaWdubWVudCB0byB1c2UuIENhbiBiZSBgbGVmdGAsIGByaWdodGAsIGBjZW50ZXJgLCBganVzdGlmeWAsIG9yIGBzcGFjZWRgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkeSBbbnVsbF0gLSBWZXJ0aWNhbCBhbGlnbm1lbnQgdG8gdXNlLiBDYW4gYmUgYHRvcGAsIGBib3R0b21gLCBgbWlkZGxlYCwgb3IgYHN0cmV0Y2hgLiBPciwgc2V0IGl0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpIHRvIG5vdCBzZXQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIGZsZXgtYWxpZ24oJHg6IG51bGwsICR5OiBudWxsKSB7XG4gIEBpZiAkeCB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCQtemYtZmxleC1qdXN0aWZ5LCAkeCkge1xuICAgICAgJHg6IG1hcC1nZXQoJC16Zi1mbGV4LWp1c3RpZnksICR4KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJ2ZsZXgtZ3JpZC1yb3ctYWxpZ24oKTogI3skeH0gaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGhvcml6b250YWwgYWxpZ25tZW50LiBVc2UgbGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSwgb3Igc3BhY2VkLic7XG4gICAgfVxuICB9XG5cbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtcm93LWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAganVzdGlmeS1jb250ZW50OiAkeDtcbiAgYWxpZ24taXRlbXM6ICR5O1xufVxuXG4vLy8gVmVydGljYWxseSBhbGlnbiBhIHNpbmdsZSBjb2x1bW4gd2l0aGluIGEgZmxleCByb3cuIEFwcGx5IHRoaXMgbWl4aW4gdG8gYSBmbGV4IGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHkgW251bGxdIC0gVmVydGljYWwgYWxpZ25tZW50IHRvIHVzZS4gQ2FuIGJlIGB0b3BgLCBgYm90dG9tYCwgYG1pZGRsZWAsIG9yIGBzdHJldGNoYC4gT3IsIHNldCBpdCB0byBgbnVsbGAgKHRoZSBkZWZhdWx0KSB0byBub3Qgc2V0IHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiBmbGV4LWFsaWduLXNlbGYoJHk6IG51bGwpIHtcbiAgQGlmICR5IHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJC16Zi1mbGV4LWFsaWduLCAkeSkge1xuICAgICAgJHk6IG1hcC1nZXQoJC16Zi1mbGV4LWFsaWduLCAkeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICdmbGV4LWdyaWQtY29sdW1uLWFsaWduKCk6ICN7JHl9IGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBhbGlnbm1lbnQuIFVzZSB0b3AsIGJvdHRvbSwgbWlkZGxlLCBvciBzdHJldGNoLic7XG4gICAgfVxuICB9XG5cbiAgYWxpZ24tc2VsZjogJHk7XG59XG5cbi8vLyBDaGFuZ2VzIHRoZSBzb3VyY2Ugb3JkZXIgb2YgYSBmbGV4IGNoaWxkLiBDaGlsZHJlbiB3aXRoIGxvd2VyIG51bWJlcnMgYXBwZWFyIGZpcnN0IGluIHRoZSBsYXlvdXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRvcmRlciBbMF0gLSBPcmRlciBudW1iZXIgdG8gYXBwbHkuXG5AbWl4aW4gZmxleC1vcmRlcigkb3JkZXI6IDApIHtcbiAgb3JkZXI6ICRvcmRlcjtcbn1cblxuLy8vIENoYW5nZSBmbGV4LWRpcmVjdGlvblxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpcmVjdGlvbiBbcm93XSAtIEZsZXggZGlyZWN0aW9uIHRvIHVzZS4gQ2FuIGJlXG4vLy8gICAtIHJvdyAoZGVmYXVsdCk6IHNhbWUgYXMgdGV4dCBkaXJlY3Rpb25cbi8vLyAgIC0gcm93LXJldmVyc2U6IG9wcG9zaXRlIHRvIHRleHQgZGlyZWN0aW9uXG4vLy8gICAtIGNvbHVtbjogc2FtZSBhcyByb3cgYnV0IHRvcCB0byBib3R0b21cbi8vLyAgIC0gY29sdW1uLXJldmVyc2U6IHNhbWUgYXMgcm93LXJldmVyc2UgdG9wIHRvIGJvdHRvbVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb246IHJvdykge1xuICBmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVha3BvaW50c1xuLy8vL1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzOiAoXG4gIHNtYWxsOiAwLFxuICBtZWRpdW06IDY0MHB4LFxuICBsYXJnZTogMTAyNHB4LFxuICB4bGFyZ2U6IDEyMDBweCxcbiAgeHhsYXJnZTogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBIaURQSSBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcyBmb3IgcmVzb2x1dGlvbnMuXG4vLy8gVmFsdWVzIG11c3QgcmVwcmVzZW50IHRoZSBkZXZpY2UgcGl4ZWxzIC8gd2ViIHBpeGVscyByYXRpb24gYW5kIGJlIHVuaXRsZXNzIG9yIGluIERQUFguXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHMtaGlkcGk6IChcbiAgaGlkcGktMTogMSxcbiAgaGlkcGktMS01OiAxLjUsXG4gIGhpZHBpLTI6IDIsXG4gIHJldGluYTogMixcbiAgaGlkcGktMzogM1xuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcbi8vLyBAdHlwZSBLZXl3b3JkXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2UgIWRlZmF1bHQ7XG5cbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcblxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XG5cbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcbiAgQGVycm9yICdUaGUgZmlyc3Qga2V5IGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIG11c3QgaGF2ZSBhIHZhbHVlIG9mIFwiMFwiLic7XG59XG5AZWxzZSB7XG4gICQtemYtemVyby1icmVha3BvaW50OiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgMSk7XG59XG5cbi8vLyBBbGwgb2YgdGhlIG5hbWVzIGluIHRoaXMgbGlzdCB3aWxsIGJlIG91dHB1dCBhcyBjbGFzc2VzIGluIHlvdXIgQ1NTLCBsaWtlIGAuc21hbGwtMTJgLCBgLm1lZGl1bS02YCwgYW5kIHNvIG9uLiBFYWNoIHZhbHVlIGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcC5cbi8vLyBAdHlwZSBMaXN0XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHN0cmluZyBtYXRjaGluZyB0aGUgaW5wdXQgdmFsdWUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gc2VlIHdoYXQgdGhlIHBvc3NpYmxlIGlucHV0cyBhcmUuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsIFtzbWFsbF0gLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsOiAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyBXZWIgc3RhbmRhcmQgUGl4ZWxzIHBlciBpbmNoLiAoMWRkcHggLyAkc3RkLXdlYi1kcGkpID0gMWRwaVxuICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy12YWx1ZXMtMy8jYWJzb2x1dGUtbGVuZ3Roc1xuICAkc3RkLXdlYi1kcGk6IDk2O1xuXG4gIC8vIFNpemUgb3Iga2V5d29yZFxuICAkYnA6IG50aCgkdmFsLCAxKTtcbiAgLy8gVmFsdWUgb2YgdGhlIGZvbGxvd2luZyBicmVha3BvaW50XG4gICRicC1uZXh0OiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1pbjogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1pbi13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1tYXg6IG51bGw7XG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xuICAvLyBJZiBuYW1lZCwgbmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuICAkbmFtZTogbnVsbDtcbiAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSBIaURQSSBicmVha3BvaW50XG4gICRoaWRwaTogZmFsc2U7XG5cbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xuICB9XG5cbiAgLy8gSWYgYSBicmVha3BvaW50IG5hbWUgaXMgZ2l2ZW4sIGdldCBpdHMgdmFsdWUgZnJvbSB0aGUgJGJyZWFrcG9pbnRzLyRicmVha3BvaW50cy1oaWRwaSBtYXAuXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cy1oaWRwaSwgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cy1oaWRwaSwgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dC1udW1iZXIoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApO1xuICAgICAgJGhpZHBpOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyIGAkYnJlYWtwb2ludHNgIG9yIGAkYnJlYWtwb2ludHMtaGlkcGlgIHNldHRpbmcuJztcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRuYW1lIGFuZCAkZGlyID09ICdvbmx5JyB7XG4gICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIGBvbmx5YCByYW5nZS4nO1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE9ubHkgJ29ubHknIGFuZCAndXAnIGhhdmUgYSBtaW4gbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICd1cCcge1xuICAgICRicC1taW46IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gIH1cbiAgLy8gT25seSAnb25seScgYW5kICdkb3duJyBoYXZlIGEgbWF4IGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgdmFsdWUsIHVzZSBpdCBhcyBtYXggbGltaXQuXG4gICAgQGlmIG5vdCAkbmFtZSB7XG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBuYW1lZCwgdGhlIG1heCBsaW1pdCBpcyB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnQgLSAxcHguXG4gICAgQGVsc2UgaWYgJGJwLW5leHQge1xuICAgICAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAgICAgLy8gVXNlIGEgcHJlY2lzaW9uIHVuZGVyIDFweCB0byBzdXBwb3J0IGJyb3dzZXIgem9vbSwgYnV0IG5vdCB0byBsb3cgdG8gYXZvaWQgcm91bmRpbmcuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgJGJwLW5leHQgLSAoMS8kc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dF9udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHRfbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dF9udW1iZXIpIHtcbiAgICAgICRuZXh0X251bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dF9udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGFuIGlubmVyIGJveC1zaGFkb3cgZm9yIG9ubHkgb25lIHNpZGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpZGUgLSBTaWRlIHRoZSBzaGFkb3cgaXMgc3VwcG9zZWQgdG8gYXBwZWFyLiBDYW4gYmUgYHRvcGAsIGBsZWZ0YCwgYHJpZ2h0YCBvciBgYm90dG9tYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNpemUgLSBXaWR0aCBmb3IgdGhlIHRhcmdldCBzaWRlLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIG9mIHRoZSBzaGFkb3cuXG5AbWl4aW4gaW5uZXItc2lkZS1zaGFkb3coXG4gICRzaWRlOiBib3R0b20sXG4gICRzaXplOiAyMHB4LFxuICAkY29sb3I6IHJnYmEoJGJsYWNrLCAwLjI1KVxuKSB7XG5cbiAgJGhlbHBlcjogcm91bmQoJHNpemUgKiAwLjY1KTtcblxuICBAaWYgKCRzaWRlID09IHRvcCkge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgJGhlbHBlciAkc2l6ZSAoLTEpKiRoZWxwZXIgJGNvbG9yO1xuICB9IEBlbHNlIGlmICgkc2lkZSA9PSBsZWZ0KSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgJGhlbHBlciAwICRzaXplICgtMSkqJGhlbHBlciAkY29sb3I7XG4gIH0gQGVsc2UgaWYgKCRzaWRlID09IHJpZ2h0KSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgKC0xKSokaGVscGVyIDAgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfSBAZWxzZSBpZiAoJHNpZGUgPT0gYm90dG9tKSB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAoLTEpKiRoZWxwZXIgJHNpemUgKC0xKSokaGVscGVyICRjb2xvcjtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIENTUyB0cmlhbmdsZSwgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRyb3Bkb3duIGFycm93cywgZHJvcGRvd24gcGlwcywgYW5kIG1vcmUuIFVzZSB0aGlzIG1peGluIGluc2lkZSBhIGAmOjpiZWZvcmVgIG9yIGAmOjphZnRlcmAgc2VsZWN0b3IsIHRvIGF0dGFjaCB0aGUgdHJpYW5nbGUgdG8gYW4gZXhpc3RpbmcgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdHJpYW5nbGUtc2l6ZSAtIFdpZHRoIG9mIHRoZSB0cmlhbmdsZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkdHJpYW5nbGUtY29sb3IgLSBDb2xvciBvZiB0aGUgdHJpYW5nbGUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdHJpYW5nbGUtZGlyZWN0aW9uIC0gRGlyZWN0aW9uIHRoZSB0cmlhbmdsZSBwb2ludHMuIENhbiBiZSBgdXBgLCBgcmlnaHRgLCBgZG93bmAsIG9yIGBsZWZ0YC5cbkBtaXhpbiBjc3MtdHJpYW5nbGUoXG4gICR0cmlhbmdsZS1zaXplLFxuICAkdHJpYW5nbGUtY29sb3IsXG4gICR0cmlhbmdsZS1kaXJlY3Rpb25cbikge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcblxuICBib3JkZXI6IGluc2V0ICR0cmlhbmdsZS1zaXplO1xuXG4gIGNvbnRlbnQ6ICcnO1xuXG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6ICR0cmlhbmdsZS1jb2xvciB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxuICBAaWYgKCR0cmlhbmdsZS1kaXJlY3Rpb24gPT0gdXApIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yO1xuICB9XG4gIEBpZiAoJHRyaWFuZ2xlLWRpcmVjdGlvbiA9PSByaWdodCkge1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAkdHJpYW5nbGUtY29sb3I7XG4gIH1cbiAgQGlmICgkdHJpYW5nbGUtZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgJHRyaWFuZ2xlLWNvbG9yIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vLyBDcmVhdGVzIGEgbWVudSBpY29uIHdpdGggYSBzZXQgd2lkdGgsIGhlaWdodCwgbnVtYmVyIG9mIGJhcnMsIGFuZCBjb2xvcnMuIFRoZSBtaXhpbiB1c2VzIHRoZSBoZWlnaHQgb2YgdGhlIGljb24gYW5kIHRoZSB3ZWlnaHQgb2YgdGhlIGJhcnMgdG8gZGV0ZXJtaW5lIHNwYWNpbmcuIDxkaXYgY2xhc3M9XCJkb2NzLWV4YW1wbGUtYnVyZ2VyXCI+PC9kaXY+XG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvci1ob3ZlciBbJGRhcmstZ3JheV0gLSBDb2xvciB0byB1c2Ugd2hlbiB0aGUgaWNvbiBpcyBob3ZlcmVkIG92ZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbMjBweF0gLSBXaWR0aCBvZiB0aGUgaWNvbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbMTZweF0gLSBIZWlnaHQgb2YgdGhlIGljb24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3ZWlnaHQgWzJweF0gLSBIZWlnaHQgb2YgaW5kaXZpZHVhbCBiYXJzIGluIHRoZSBpY29uLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFycyBbM10gLSBOdW1iZXIgb2YgYmFycyBpbiB0aGUgaWNvbi5cbkBtaXhpbiBoYW1idXJnZXIoXG4gICRjb2xvcjogJGJsYWNrLFxuICAkY29sb3ItaG92ZXI6ICRkYXJrLWdyYXksXG4gICR3aWR0aDogMjBweCxcbiAgJGhlaWdodDogMTZweCxcbiAgJHdlaWdodDogMnB4LFxuICAkYmFyczogM1xuKSB7XG4gIC8vIGJveC1zaGFkb3cgQ1NTIG91dHB1dFxuICAkc2hhZG93OiAoKTtcbiAgJGhvdmVyLXNoYWRvdzogKCk7XG5cbiAgLy8gU3BhY2luZyBiZXR3ZWVuIGJhcnMgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBpY29uIGFuZCB0aGUgd2VpZ2h0IG9mIGVhY2ggYmFyXG4gICRzcGFjaW5nOiAoJGhlaWdodCAtICgkd2VpZ2h0ICogJGJhcnMpKSAvICgkYmFycyAtIDEpO1xuXG4gIEBpZiB1bml0KCRzcGFjaW5nKSA9PSAncHgnIHtcbiAgICAkc3BhY2luZzogZmxvb3IoJHNwYWNpbmcpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XG4gICAgJG9mZnNldDogKCR3ZWlnaHQgKyAkc3BhY2luZykgKiAoJGkgLSAxKTtcbiAgICAkc2hhZG93OiBhcHBlbmQoJHNoYWRvdywgMCAkb2Zmc2V0IDAgJGNvbG9yLCBjb21tYSk7XG4gIH1cblxuICAvLyBJY29uIGNvbnRhaW5lclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6ICR3aWR0aDtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gSWNvbiBiYXJzXG4gICY6OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICR3ZWlnaHQ7XG5cbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgYm94LXNoYWRvdzogJHNoYWRvdztcblxuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG5cbiAgLy8gSG92ZXIgc3RhdGVcbiAgQGlmICRjb2xvci1ob3ZlciB7XG4gICAgLy8gR2VuZXJhdGUgQ1NTXG4gICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkYmFycyB7XG4gICAgICAkb2Zmc2V0OiAoJHdlaWdodCArICRzcGFjaW5nKSAqICgkaSAtIDEpO1xuICAgICAgJGhvdmVyLXNoYWRvdzogYXBwZW5kKCRob3Zlci1zaGFkb3csIDAgJG9mZnNldCAwICRjb2xvci1ob3ZlciwgY29tbWEpO1xuICAgIH1cblxuICAgICY6aG92ZXI6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1ob3ZlcjtcbiAgICAgIGJveC1zaGFkb3c6ICRob3Zlci1zaGFkb3c7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIGEgZG93bndhcmQtZmFjaW5nIHRyaWFuZ2xlIGFzIGEgYmFja2dyb3VuZCBpbWFnZSB0byBhbiBlbGVtZW50LiBUaGUgaW1hZ2UgaXMgZm9ybWF0dGVkIGFzIGFuIFNWRywgbWFraW5nIGl0IGVhc3kgdG8gY2hhbmdlIHRoZSBjb2xvci4gQmVjYXVzZSBJbnRlcm5ldCBFeHBsb3JlciBkb2Vzbid0IHN1cHBvcnQgZW5jb2RlZCBTVkdzIGFzIGJhY2tncm91bmQgaW1hZ2VzLCBhIFBORyBmYWxsYmFjayBpcyBhbHNvIGluY2x1ZGVkLlxuLy8vIFRoZXJlIGFyZSB0d28gUE5HIGZhbGxiYWNrczogYSBibGFjayB0cmlhbmdsZSBhbmQgYSB3aGl0ZSB0cmlhbmdsZS4gVGhlIG9uZSB1c2VkIGRlcGVuZHMgb24gdGhlIGxpZ2h0bmVzcyBvZiB0aGUgaW5wdXQgY29sb3IuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IgWyRibGFja10gLSBDb2xvciB0byB1c2UgZm9yIHRoZSB0cmlhbmdsZS5cbkBtaXhpbiBiYWNrZ3JvdW5kLXRyaWFuZ2xlKCRjb2xvcjogJGJsYWNrKSB7XG4gICRyZ2I6ICdyZ2IlMjgje3JvdW5kKHJlZCgkY29sb3IpKX0sICN7cm91bmQoZ3JlZW4oJGNvbG9yKSl9LCAje3JvdW5kKGJsdWUoJGNvbG9yKSl9JTI5JztcblxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgdmVyc2lvbj0nMS4xJyB3aWR0aD0nMzInIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAzMiAyNCc+PHBvbHlnb24gcG9pbnRzPScwLDAgMzIsMCAxNiwyNCcgc3R5bGU9J2ZpbGw6ICN7JHJnYn0nPjwvcG9seWdvbj48L3N2Zz5cIik7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDowXFwwKSB7XG4gICAgQGlmIGxpZ2h0bmVzcygkY29sb3IpIDwgNjAlIHtcbiAgICAgIC8vIFdoaXRlIHRyaWFuZ2xlXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBWUNBWUFBQUNiVS84MEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBSXBKUkVGVWVOckVrY2tOZ0RBTUJCZlJrRXQwT2JSQkJkc0dYVURnbVFmSzRYaEgybThjelFBQXkyN1IzdHN3NFFmZTJ4OHVPTzZvWUxiNkdsT29yM0dGK3N3VVJBT21VSitSd3RFSnM5V3ZUR0VZeEJYcUkxTVFBWmhDZlVRS1J6RE1WaitUd3JBSVY2anZTVUVrWUFyMUxTa2N5VEJiL1YrS1lmWDd4QWV1c3Ezc0xEdEdIM2tFR0FDUFdJZmxOWmZoUlFBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gQmxhY2sgdHJpYW5nbGVcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFZQ0FZQUFBQ2JVLzgwQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFNQkpSRUZVZU5yRWxsc09oQ0FNUlZzekM5SWx6VTdLQ21WSFRKc29NV1lNVXRweXY5QmdidVhRQjVaU2RnQllZWTR5Y2dCaXZrOEtZRnNRTWZNaVRUQlA0bzNuVXpDS3pPYWJMSmJMeTIvZzMxZXZHa0FnaW5SNC9aZWdLSDVxWDNiSkNzY0EzdDB4M2tnTzV0UUZ5aGhGZjUweFJxRkxieU1VTkpRemd5akdTL3dnQ3B2S3FrUkJwdVdyRTRWOWQrMUU0ZFBVWHFJZzEwN1NRT0UvMkRSUXhNd1REeWdJSW5WREVUOVQzbENvai82ai9WQ21HalpPbDJsS3BaOEFBd0RRUDd6SWltREdGUUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyB0aGUgbWljcm8gY2xlYXJmaXggaGFjayBwb3B1bGFyaXplZCBieSBOaWNvbGFzIEdhbGxhZ2hlci4gSW5jbHVkZSB0aGlzIG1peGluIG9uIGEgY29udGFpbmVyIGlmIGl0cyBjaGlsZHJlbiBhcmUgYWxsIGZsb2F0ZWQsIHRvIGdpdmUgdGhlIGNvbnRhaW5lciBhIHByb3BlciBoZWlnaHQuXG4vLy8gVGhlIGNsZWFyZml4IGlzIGF1Z21lbnRlZCB3aXRoIHNwZWNpZmljIHN0eWxlcyB0byBwcmV2ZW50IGJvcmRlcnMgaW4gZmxleGJveCBlbnZpcm9ubWVudHNcbi8vLyBAbGluayBodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8gTWljcm8gQ2xlYXJmaXggSGFja1xuLy8vIEBsaW5rIGh0dHA6Ly9kYW5pc2FkZXNpZ25lci5jb20vYmxvZy9mbGV4Ym94LWNsZWFyLWZpeC1wc2V1ZG8tZWxlbWVudHMvIEZsZXhib3ggZml4XG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjb250ZW50OiAnICc7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXgtYmFzaXM6IDA7XG4gICAgICBvcmRlcjogMTtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuLy8vIEFkZHMgQ1NTIGZvciBhIFwicXVhbnRpdHkgcXVlcnlcIiBzZWxlY3RvciB0aGF0IGF1dG9tYXRpY2FsbHkgc2l6ZXMgZWxlbWVudHMgYmFzZWQgb24gaG93IG1hbnkgdGhlcmUgYXJlIGluc2lkZSBhIGNvbnRhaW5lci5cbi8vLyBAbGluayBodHRwOi8vYWxpc3RhcGFydC5jb20vYXJ0aWNsZS9xdWFudGl0eS1xdWVyaWVzLWZvci1jc3MgUXVhbnRpdHkgUXVlcmllcyBmb3IgQ1NTXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1heCAtIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGRldGVjdC4gVGhlIGhpZ2hlciB0aGlzIG51bWJlciBpcywgdGhlIG1vcmUgQ1NTIHRoYXQncyByZXF1aXJlZCB0byBjb3ZlciBlYWNoIG51bWJlciBvZiBpdGVtcy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRlbGVtIFtsaV0gLSBUYWcgdG8gdXNlIGZvciBzaWJsaW5nIHNlbGVjdG9ycy5cbkBtaXhpbiBhdXRvLXdpZHRoKCRtYXgsICRlbGVtOiBsaSkge1xuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRtYXgge1xuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkLFxuICAgICY6bnRoLWxhc3QtY2hpbGQoI3skaX0pOmZpcnN0LWNoaWxkIH4gI3skZWxlbX0ge1xuICAgICAgd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFJlbW92ZXMgdGhlIGZvY3VzIHJpbmcgYXJvdW5kIGFuIGVsZW1lbnQgd2hlbiBhIG1vdXNlIGlucHV0IGlzIGRldGVjdGVkLlxuQG1peGluIGRpc2FibGUtbW91c2Utb3V0bGluZSB7XG4gIFtkYXRhLXdoYXRpbnB1dD0nbW91c2UnXSAmIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG59XG5cbi8vLyBNYWtlcyBhbiBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiwgYnV0IHN0aWxsIGFjY2Vzc2libGUgdG8ga2V5Ym9hcmRzIGFuZCBhc3Npc3RpdmUgZGV2aWNlcy5cbi8vLyBAbGluayBodHRwOi8vc25vb2suY2EvYXJjaGl2ZXMvaHRtbF9hbmRfY3NzL2hpZGluZy1jb250ZW50LWZvci1hY2Nlc3NpYmlsaXR5IEhpZGluZyBDb250ZW50IGZvciBBY2Nlc3NpYmlsaXR5XG4vLy8gQGxpbmsgaHR0cDovL2h1Z29naXJhdWRlbC5jb20vMjAxNi8xMC8xMy9jc3MtaGlkZS1hbmQtc2Vlay9cbi8vL1xuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGVuZm9yY2UgLSBJZiBgdHJ1ZWAsIHVzZSBgIWltcG9ydGFudGAgb24gYXBwbGllZCBwcm9wZXJ0aWVzXG5AbWl4aW4gZWxlbWVudC1pbnZpc2libGUoXG4gICRlbmZvcmNlOiB0cnVlXG4pIHtcbiAgJGltcG9ydGFudDogaWYoJGVuZm9yY2UsICchaW1wb3J0YW50JywgbnVsbCk7XG5cbiAgcG9zaXRpb246IGFic29sdXRlICN7JGltcG9ydGFudH07XG4gIHdpZHRoOiAxcHggI3skaW1wb3J0YW50fTtcbiAgaGVpZ2h0OiAxcHggI3skaW1wb3J0YW50fTtcbiAgcGFkZGluZzogMCAjeyRpbXBvcnRhbnR9O1xuICBvdmVyZmxvdzogaGlkZGVuICN7JGltcG9ydGFudH07XG4gIGNsaXA6IHJlY3QoMCwwLDAsMCkgI3skaW1wb3J0YW50fTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAjeyRpbXBvcnRhbnR9O1xuICBib3JkZXI6IDAgI3skaW1wb3J0YW50fTtcbn1cblxuLy8vIFJldmVyc2VzIHRoZSBDU1Mgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlIGBlbGVtZW50LWludmlzaWJsZSgpYCBtaXhpbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRlbmZvcmNlIC0gSWYgYHRydWVgLCB1c2UgYCFpbXBvcnRhbnRgIG9uIGFwcGxpZWQgcHJvcGVydGllc1xuQG1peGluIGVsZW1lbnQtaW52aXNpYmxlLW9mZihcbiAgJGVuZm9yY2U6IHRydWVcbikge1xuICAkaW1wb3J0YW50OiBpZigkZW5mb3JjZSwgJyFpbXBvcnRhbnQnLCBudWxsKTtcblxuICBwb3NpdGlvbjogc3RhdGljICN7JGltcG9ydGFudH07XG4gIHdpZHRoOiBhdXRvICN7JGltcG9ydGFudH07XG4gIGhlaWdodDogYXV0byAjeyRpbXBvcnRhbnR9O1xuICBvdmVyZmxvdzogdmlzaWJsZSAjeyRpbXBvcnRhbnR9O1xuICBjbGlwOiBhdXRvICN7JGltcG9ydGFudH07XG4gIHdoaXRlLXNwYWNlOiBub3JtYWwgI3skaW1wb3J0YW50fTtcbn1cblxuLy8vIFZlcnRpY2FsbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gdmVydGljYWwtY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLy8gSG9yaXpvbnRhbGx5IGNlbnRlcnMgdGhlIGVsZW1lbnQgaW5zaWRlIG9mIGl0cyBmaXJzdCBub24tc3RhdGljIHBhcmVudCxcbi8vLyBAbGluayBodHRwOi8vd3d3LnNpdGVwb2ludC5jb20vY2VudGVyaW5nLXdpdGgtc2Fzcy8gQ2VudGVyaW5nIFdpdGggU2Fzc1xuQG1peGluIGhvcml6b250YWwtY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cblxuLy8vIEFic29sdXRlbHkgY2VudGVycyB0aGUgZWxlbWVudCBpbnNpZGUgb2YgaXRzIGZpcnN0IG5vbi1zdGF0aWMgcGFyZW50LFxuLy8vIEBsaW5rIGh0dHA6Ly93d3cuc2l0ZXBvaW50LmNvbS9jZW50ZXJpbmctd2l0aC1zYXNzLyBDZW50ZXJpbmcgV2l0aCBTYXNzXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuLy8vIEl0ZXJhdGVzIHRocm91Z2ggYnJlYWtwb2ludHMgZGVmaW5lZCBpbiBgJGJyZWFrcG9pbnQtY2xhc3Nlc2AgYW5kIHByaW50cyB0aGUgQ1NTIGluc2lkZSB0aGUgbWl4aW4gYXQgZWFjaCBicmVha3BvaW50J3MgbWVkaWEgcXVlcnkuIFVzZSB0aGlzIHdpdGggdGhlIGdyaWQsIG9yIGFueSBvdGhlciBjb21wb25lbnQgdGhhdCBoYXMgcmVzcG9uc2l2ZSBjbGFzc2VzLlxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkc21hbGwgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgc2tpcCB0aGUgYHNtYWxsYCBicmVha3BvaW50LiBVc2UgdGhpcyB3aXRoIGNvbXBvbmVudHMgdGhhdCBkb24ndCBwcmVmaXggY2xhc3NlcyB3aXRoIGBzbWFsbC1gLCBvbmx5IGBtZWRpdW0tYCBhbmQgdXAuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHMgW3RydWVdIC0gSWYgYGZhbHNlYCwgdGhlIG1peGluIHdpbGwgaXRlcmF0ZSBvdmVyIGJyZWFrcG9pbnRzIHdpdGhvdXQgZG9pbmcgdGhlIG1lZGlhIHF1ZXJ5IGl0c2VsZi4gVXNlZnVsIGZvciBtb3JlIGNvbXBsZXggbWVkaWEgcXVlcnkgZ2VuZXJhdGlvbiBhcyBpbiB0aGUgbWFyZ2luIGdyaWQuXG5AbWl4aW4gLXpmLWVhY2gtYnJlYWtwb2ludChcbiAgJHNtYWxsOiB0cnVlLFxuICAkYXV0by1pbnNlcnQtYnJlYWtwb2ludHM6IHRydWVcbikge1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50LWluKGF1dG8sIC16Zi1ib29sKCRzbWFsbCksIC16Zi1ib29sKCRhdXRvLWluc2VydC1icmVha3BvaW50cykpIHtcbiAgICBAY29udGVudFxuICB9O1xufVxuXG4vLy8gSXRlcmF0ZXMgd2l0aCBgQGNvbnRlbnRgIHRocm91Z2ggdGhlIGdpdmVuIGxpc3Qgb2YgYnJlYWtwb2ludHMgYCRicmVha3BvaW50c2AuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxMaXN0fSAkYnJlYWtwb2ludHMgW2F1dG9dIC0gQnJlYWtwb2ludHMgdG8gaXRlcmF0ZXMgb24uIEl0IGNhbiBiZSBhIGJyZWFrcG9pbnQgbmFtZSwgbGlzdCBvZiBicmVha3BvaW50cyBvciBgYXV0b2AgZm9yIGFsbCBicmVha3BvaW50cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW58TnVsbH0gJHplcm8tYnJlYWtwb2ludCBbbnVsbF0gLSBXaGV0aGVyIHRoZSB6ZXJvLWJyZWFrcG9pbnQgKG9mdGVuIGBzbWFsbGApIG11c3QgYmUgaW5jbHVkZWQuIElmIGB0cnVlYCwgaXQgd2lsbCBhbHdheXMgYmUgYWRkZWQgdG8gdGhlIGxpc3QgaWYgbm90IGFscmVhZHkgdGhlcmUuIElmIGBmYWxzZWAsIGl0IHdpbGwgYWx3YXlzIGJlIHJlbW92ZWQuIERvZXMgbm90aGluZyBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7Qm9vbGVhbnxLZXl3b3JkfSAkbWVkaWEtcXVlcmllcyBbdHJ1ZV0gLSBXaGV0aGVyIG1lZGlhLXF1ZXJpZXMgbXVzdCBiZSBnZW5lcmF0ZWQuIElmIGBmb3ItbGlzdHNgLCBvbmx5IGdlbmVyYXRlIG1lZGlhLXF1ZXJpZXMgd2hlbiBgJGJyZWFrcG9pbnRzYCBpcyBhIGxpc3QuXG5AbWl4aW4gLXpmLWVhY2gtYnJlYWtwb2ludC1pbihcbiAgJGJyZWFrcG9pbnRzOiBhdXRvLFxuICAkemVyby1icmVha3BvaW50OiBudWxsLFxuICAkbWVkaWEtcXVlcmllczogdHJ1ZVxuKSB7XG4gICQtbGlzdDogKCk7XG4gICQtYnJlYWtwb2ludHMtaXMtYS1saXN0OiB0cnVlO1xuXG4gIC8vIFJldHJpZXZlIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnQocykgdG8gaXRlcmF0ZSBvbi5cbiAgQGlmICRicmVha3BvaW50cyA9PSBhdXRvIHtcbiAgICAkLWxpc3Q6ICRicmVha3BvaW50LWNsYXNzZXM7XG4gIH1cbiAgQGVsc2UgaWYgdHlwZS1vZigkYnJlYWtwb2ludHMpID09ICdsaXN0JyB7XG4gICAgJC1saXN0OiAkYnJlYWtwb2ludHM7XG4gIH1cbiAgQGVsc2UgaWYgdHlwZS1vZigkYnJlYWtwb2ludHMpID09ICdzdHJpbmcnIHtcbiAgICAkLWxpc3Q6ICgkYnJlYWtwb2ludHMpO1xuICAgICQtYnJlYWtwb2ludHMtaXMtYS1saXN0OiBmYWxzZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGVycm9yICdXcm9uZyBzeW50YXggZm9yIFwiJGJyZWFrcG9pbnRzXCIgaW4gXCItemYtZWFjaC1icmVha3BvaW50LWluKClcIi4gR290IFwiI3skYnJlYWtwb2ludHN9XCIgKCN7dHlwZS1vZigkYnJlYWtwb2ludHMpfSkuIEV4cGVjdGVkIGEgYnJlYWtwb2ludCBuYW1lLCBhIGxpc3Qgb2YgYnJlYWtwb2ludHMgb3IgXCJhdXRvXCInO1xuICB9XG5cbiAgLy8gQWRkIG9yIHJlbW92ZSB0aGUgemVybyBicmVha3BvaW50IGFjY29yZGluZyB0byBgJHplcm8tYnJlYWtwb2ludGBcbiAgQGlmICR6ZXJvLWJyZWFrcG9pbnQgPT0gdHJ1ZSB7XG4gICAgJC1saXN0OiBqb2luKCgkLXpmLXplcm8tYnJlYWtwb2ludCksIHNsLXJlbW92ZSgkLWxpc3QsICQtemYtemVyby1icmVha3BvaW50KSk7XG4gIH1cbiAgQGVsc2UgaWYgJHplcm8tYnJlYWtwb2ludCA9PSBmYWxzZSB7XG4gICAgJC1saXN0OiBzbC1yZW1vdmUoJC1saXN0LCAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gIH1cblxuICAvLyBJdGVyYXRlIG9uIGJyZWFrcG9pbnQocylcbiAgQGVhY2ggJGJwIGluICQtbGlzdCB7XG4gICAgJG9sZC16Zi1zaXplOiBudWxsO1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSB7XG4gICAgICAkb2xkLXpmLXNpemU6ICQtemYtc2l6ZTtcbiAgICB9XG4gICAgJC16Zi1zaXplOiAkYnAgIWdsb2JhbDtcblxuICAgIEBpZiAoJG1lZGlhLXF1ZXJpZXMgPT0gdHJ1ZVxuICAgICAgb3IgKCRtZWRpYS1xdWVyaWVzID09ICdmb3ItbGlzdHMnIGFuZCAkLWJyZWFrcG9pbnRzLWlzLWEtbGlzdCkpIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJwKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBHZW5lcmF0ZSB0aGUgYEBjb250ZW50YCBwYXNzZWQgdG8gdGhlIG1peGluIHdpdGggYSB2YWx1ZSBgJC16Zi1icC12YWx1ZWAgcmVsYXRlZCB0byBhIGJyZWFrcG9pbnQsIGRlcGVuZGluZyBvbiB0aGUgYCRuYW1lYCBwYXJhbWV0ZXI6XG4vLy8gLSBGb3IgYSBzaW5nbGUgdmFsdWUsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGlzIHZhbHVlLlxuLy8vIC0gRm9yIGEgYnJlYWtwb2ludCBuYW1lLCBgJC16Zi1icC12YWx1ZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludCB2YWx1ZSBpbiBgJG1hcGAuXG4vLy8gLSBGb3IgXCJhdXRvXCIsIGAkLXpmLWJwLXZhbHVlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlIGluIGAkbWFwYCBhbmQgaXMgcGFzc2VkIHRvIGBAY29udGVudGAsIHdoaWNoIGlzIG1hZGUgcmVzcG9uc2l2ZSBmb3IgZWFjaCBicmVha3BvaW50IG9mIGAkbWFwYC5cbi8vLyBAcGFyYW0ge051bWJlcnxBcnJheXxLZXl3b3JkfSAkbmFtZSBbYXV0b10gLSBTaW5nbGUgdmFsdWUsIGJyZWFrcG9pbnQgbmFtZSwgb3IgbGlzdCBvZiBicmVha3BvaW50IG5hbWVzIHRvIHVzZS4gXCJhdXRvXCIgYnkgZGVmYXVsdC5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBNYXAgb2YgYnJlYWtwb2ludHMgYW5kIHZhbHVlcyBvciBzaW5nbGUgdmFsdWUgdG8gdXNlLlxuQG1peGluIC16Zi1icmVha3BvaW50LXZhbHVlKFxuICAkbmFtZTogYXV0byxcbiAgJG1hcDogbnVsbFxuKSB7XG4gIEBpZiAkbmFtZSA9PSBhdXRvIGFuZCB0eXBlLW9mKCRtYXApID09ICdtYXAnIHtcbiAgICAvLyBcImF1dG9cIlxuICAgIEBlYWNoICRrLCAkdiBpbiAkbWFwIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGspIHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJHYsICRtYXApIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gYnJlYWtwb2ludCBuYW1lXG4gICAgQGlmIHR5cGUtb2YoJG5hbWUpID09ICdzdHJpbmcnIHtcbiAgICAgICRicC12YWx1ZTogLXpmLWdldC1icC12YWwoJG1hcCwgJG5hbWUpO1xuICAgICAgQGlmICRicC12YWx1ZSAhPSBudWxsIHtcbiAgICAgICAgJG5hbWU6ICRicC12YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBicmVha3BvaW50IHZhbHVlXG4gICAgJC16Zi1icC12YWx1ZTogJG5hbWUgIWdsb2JhbDtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kLXpmLWZvbnQtc3RhY2s6IChcbiAgJ2dlb3JnaWEnOiAoR2VvcmdpYSwgXCJVUlcgQm9va21hbiBMXCIsIHNlcmlmKSxcbiAgJ2hlbHZldGljYSc6IChIZWx2ZXRpY2EsIEFyaWFsLCBcIk5pbWJ1cyBTYW5zIExcIiwgc2Fucy1zZXJpZiksXG4gICdsdWNpZGEtZ3JhbmRlJzogKFwiTHVjaWRhIEdyYW5kZVwiLCBcIkx1Y2lkYSBTYW5zIFVuaWNvZGVcIiwgXCJCaXRzdHJlYW0gVmVyYSBTYW5zXCIsIHNhbnMtc2VyaWYpLFxuICAnbW9ub3NwYWNlJzogKFwiQ291cmllciBOZXdcIiwgQ291cmllciwgXCJOaW1idXMgU2FucyBMXCIsIG1vbm9zcGFjZSksXG4gICdzeXN0ZW0nOiAoLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJPeHlnZW5cIiwgXCJVYnVudHVcIiwgXCJDYW50YXJlbGxcIiwgXCJGaXJhIFNhbnNcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmKSxcbiAgJ3ZlcmRhbmEnOiAoVmVyZGFuYSwgR2VuZXZhLCBcIkRlamFWdSBTYW5zXCIsIHNhbnMtc2VyaWYpLFxuKTtcblxuLy8vIFJldHVybiBhIGZvbnQgc3RhY2sgbGlzdCBmcm9tIGEgbWFwLiBFcXVpdmFsZW50IHRvIGBtYXAtc2FmZS1nZXQoJG5hbWUsICQtemYtZm9udC1zdGFjaylgLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdGFjayAtIE5hbWUgb2YgdGhlIGZvbnQgc3RhY2suXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgWyQtemYtZm9udC1zdGFja10gLSBNYXAgb2YgZm9udCBzdGFja3MgdG8gcmV0cmlldmUgYSBsaXN0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TGlzdH0gRm91bmQgZm9udCBzdGFjay5cbkBmdW5jdGlvbiBmb250LXN0YWNrKCRzdGFjaywgJG1hcDogJC16Zi1mb250LXN0YWNrKSB7XG4gIEByZXR1cm4gbWFwLXNhZmUtZ2V0KCRtYXAsICRzdGFjayk7XG59XG4iLCIkZm9udC1uYW1lOiAnU291cmNlIFNhbnMgUHJvJztcclxuJGZvbnQtZmFtaWx5LWJhc2U6ICRmb250LW5hbWUsJ1JvYm90bycsIHNhbnMtc2VyaWY7XHJcbiRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJhc2U7XHJcbiRmb250LWZhbWlseS1mYWxsYmFjazogJ1JvYm90bycsVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xyXG4kZm9udC1mYW1pbHktdGl0bGU6ICRmb250LW5hbWUsJ1JvYm90bycsIHNhbnMtc2VyaWY7XHJcbiRmb250LWZhbWlseS1saWdodDogJGZvbnQtbmFtZSwnUm9ib3RvJywgc2Fucy1zZXJpZjtcclxuJGZvbnQtZmFtaWx5MjogJGZvbnQtbmFtZSwnUm9ib3RvJywgc2Fucy1zZXJpZjtcclxuJGxldHRlci1zcGFjaW5nOiAwZW07XHJcbiRodG1sLWZvbnQtc2l6ZTogNjIuNSU7XHJcbiRmb250LXNpemUtYm9keTogMS44cmVtO1xyXG4kZm9udC1zaXplLWJvZHktbW9iOiAyLjRyZW07XHJcbiRmb250LXNpemUtYmFzZTogMS44cmVtO1xyXG4kYmctY29sb3I6ICNmZmY7XHJcblxyXG4kdGl0bGU6IChcclxuICAgICAgICBmczogNnJlbSxcclxuICAgICAgICBmcy1tZDogNC40cmVtLFxyXG4gICAgICAgIGZzLXNtOiAzcmVtLFxyXG4gICAgICAgIGxoOiAxLjE1XHJcbik7XHJcblxyXG4kc2VjdGlvbjogKFxyXG4gICAgICAgIHBhZGRpbmc6IDEwcmVtLFxyXG4gICAgICAgIHBhZGRpbmctbWQ6IDdyZW0sXHJcbiAgICAgICAgcGFkZGluZy1zbTogNXJlbVxyXG4pO1xyXG5cclxuJGNvbnRhaW5lci13aWR0aDogMTI2cmVtO1xyXG4kY29udGFpbmVyLXdpZHRoLXB4OiAxMjYwcHg7XHJcbiRnbG9iYWwtZm9udC1zaXplOiA2Mi41JTtcclxuJGdsb2JhbC13aWR0aDogcmVtLWNhbGMoMTI2MCk7XHJcblxyXG4kYm9yZGVyLXJhZGl1cy1iYXNlOiAwcHg7XHJcbiRib3JkZXItcmFkaXVzLWJ0bjogMnJlbTtcclxuXHJcbiRmb290ZXItcGFkZGluZy15OiAxLjVyZW07XHJcbiRmb290ZXItc2l6ZTogMS42cmVtO1xyXG5cclxuXHJcbiRjb2xvci1yZWQ6ICNjMTI3MmQ7XHJcbiRjb2xvci1yZWQtbGlnaHQ6ICNlMzcyNWI7XHJcbiRjb2xvci1yZWQtZm9ybTogI2UzNzI1YjtcclxuXHJcbiRjb2xvci1ibHVlOiAjMDU4MEZGO1xyXG4kY29sb3ItZGFyay1ibHVlOiAjMDA0NDVhO1xyXG4kY29sb3ItY3lhbjogIzM2RDFEQztcclxuJGNvbG9yLWdyZWVuOiAjMDA1NjNGO1xyXG4kY29sb3IteWVsbG93OiAjRkZFODAwO1xyXG4kY29sb3ItZ3JlZW4tbGlnaHQ6ICNlY2YwZWI7XHJcbiRjb2xvci1ncmVlbi1kYXJrOiAjMmI5MzIzO1xyXG4kY29sb3ItbGlnaHRncmVlbjogIzFmZGY1YztcclxuJGNvbG9yLXllbGxvdy1saWdodDogI2ZmZWI5NjtcclxuJGNvbG9yLW9yYW5nZTogI2ZmN2EwMDtcclxuJGNvbG9yLWFzcGhhbHQ6ICM3MDc4ODI7XHJcbiRjb2xvci1icm93bjogIzczNTAzMjtcclxuJGNvbG9yLWJyb3duMTogIzZlNGQyZjtcclxuJGNvbG9yLWJyb3duLWRhcmtlc3Q6ICM1YTNiMjA7XHJcbiRjb2xvci1icm93bi1kYXJrZXN0MTogIzM2MjMxMztcclxuJGNvbG9yLWJyb3duLW1lZGl1bTogIzdlNjA0ODtcclxuJGNvbG9yLWJyb3duLWxpZ2h0OiAjRUNFNkRDO1xyXG4kY29sb3ItYmxhY2s6ICMxZDFkMWQ7XHJcbiRjb2xvci1ncmV5OiAjRTVFNUU1O1xyXG4kY29sb3ItZ3JleTI6ICM4ODg4ODg7XHJcbiRjb2xvci1ncmV5LWFjY2VudDogIzY2NjY2NjtcclxuJGNvbG9yLWRhcmtncmV5OiAjYzBjMGMwO1xyXG4kY29sb3ItbGlnaHRncmV5OiAjY2NjO1xyXG5cclxuXHJcbiRjb2xvci10ZXh0OiAjNDQ0NDQ0O1xyXG4kY29sb3ItaGVhZGluZzogIzIyMjIyMjtcclxuJGNvbG9yLXByaW1hcnk6ICRjb2xvci1ibHVlO1xyXG4kY29sb3Itc2Vjb25kYXJ5OiAkY29sb3ItdGV4dDtcclxuJGNvbG9yLWxpbms6ICRjb2xvci1wcmltYXJ5O1xyXG4kY29sb3ItbGluay1hY3RpdmU6ICRjb2xvci1wcmltYXJ5O1xyXG4kY29sb3ItYm9yZGVyOiAjY2NjO1xyXG4kY29sb3ItYm9yZGVyLWlucHV0OiAjMDAwO1xyXG4kY29sb3ItYmctaGVhZGVyOiB0cmFuc3BhcmVudDtcclxuJGNvbG9yLWhlYWRlcjogIzAwMDtcclxuJGNvbG9yLWJnLWZvb3RlcjogI0Y1Q0UwMDtcclxuJGNvbG9yLWZvb3RlcjogIzIyMjtcclxuJGNvbG9yLWJveC1ib3JkZXI6ICRjb2xvci1ib3JkZXI7XHJcblxyXG5cclxuJHNoYWRvdzogMHB4IDBweCAyNXB4IDBweCByZ2JhKDM3LCAzOCwgMzcsIC4xKTtcclxuJG1vZGFsLXNoYWRvdzogMHB4IDBweCAyNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4kYnRuLXNoYWRvdzogMHB4IDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcclxuIiwiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlc1xuICogVmVyc2lvbiA2LjYuM1xuICogaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cblxuLy8gLS0tIERlcGVuZGVuY2llcyAtLS1cbkBpbXBvcnQgJ3ZlbmRvci9ub3JtYWxpemUnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL21pc3NpbmctZGVwZW5kZW5jaWVzJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy90cnVlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL2NvbnRhaW4nO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcHVyZ2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvcmVtb3ZlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlcGxhY2UnO1xuQGltcG9ydCAnLi4vX3ZlbmRvci9zYXNzeS1saXN0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvdG8tbGlzdCc7XG5cbi8vIC0tLSBTZXR0aW5ncyAtLS1cbi8vIGltcG9ydCB5b3VyIG93biBgc2V0dGluZ3NgIGhlcmUgb3Jcbi8vIGltcG9ydCBhbmQgbW9kaWZ5IHRoZSBkZWZhdWx0IHNldHRpbmdzIHRocm91Z2hcbi8vIEBpbXBvcnQgJ3NldHRpbmdzL3NldHRpbmdzJztcblxuLy8gLS0tIENvbXBvbmVudHMgLS0tXG4vLyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG4vLyBHbG9iYWwgc3R5bGVzXG5AaW1wb3J0ICdnbG9iYWwnO1xuQGltcG9ydCAnZm9ybXMvZm9ybXMnO1xuQGltcG9ydCAndHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcblxuLy8gR3JpZHNcbkBpbXBvcnQgJ2dyaWQvZ3JpZCc7XG5AaW1wb3J0ICd4eS1ncmlkL3h5LWdyaWQnO1xuLy8gR2VuZXJpYyBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2Nsb3NlLWJ1dHRvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2xhYmVsJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvcHJvZ3Jlc3MtYmFyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc2xpZGVyJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvc3dpdGNoJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFibGUnO1xuLy8gQmFzaWMgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9iYWRnZSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvY2FsbG91dCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhcmQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3BhZ2luYXRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy90b29sdGlwJztcblxuLy8gQ29udGFpbmVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9hY2NvcmRpb24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9tZWRpYS1vYmplY3QnO1xuQGltcG9ydCAnY29tcG9uZW50cy9vcmJpdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Jlc3BvbnNpdmUtZW1iZWQnO1xuQGltcG9ydCAnY29tcG9uZW50cy90YWJzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGh1bWJuYWlsJztcbi8vIE1lbnUtYmFzZWQgY29udGFpbmVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudS1pY29uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uLW1lbnUnO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcmlsbGRvd24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9kcm9wZG93bi1tZW51JztcblxuLy8gTGF5b3V0IGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb2ZmLWNhbnZhcyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3JldmVhbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N0aWNreSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RpdGxlLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RvcC1iYXInO1xuXG4vLyBIZWxwZXJzXG5AaW1wb3J0ICdjb21wb25lbnRzL2Zsb2F0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZmxleCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Zpc2liaWxpdHknO1xuQGltcG9ydCAncHJvdG90eXBlL3Byb3RvdHlwZSc7XG5cblxuQG1peGluIGZvdW5kYXRpb24tZXZlcnl0aGluZyhcbiAgJGZsZXg6IHRydWUsXG4gICRwcm90b3R5cGU6IGZhbHNlLFxuICAkeHktZ3JpZDogJHh5LWdyaWRcbikge1xuICBAaWYgJGZsZXgge1xuICAgICRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmICR4eS1ncmlkIHtcbiAgICAkeHktZ3JpZDogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgLy8gR2xvYmFsIHN0eWxlc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdsb2JhbC1zdHlsZXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybXM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdHlwb2dyYXBoeTtcblxuICAvLyBHcmlkc1xuICBAaWYgbm90ICRmbGV4IHtcbiAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLWdyaWQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkeHktZ3JpZCB7XG4gICAgICBAaW5jbHVkZSBmb3VuZGF0aW9uLXh5LWdyaWQtY2xhc3NlcztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbGV4LWdyaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJpYyBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbi1ncm91cDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jbG9zZS1idXR0b247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvZ3Jlc3MtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXNsaWRlcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zd2l0Y2g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFibGU7XG4gIC8vIEJhc2ljIGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1iYWRnZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1icmVhZGNydW1icztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYWxsb3V0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWNhcmQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZHJvcGRvd247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcGFnaW5hdGlvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b29sdGlwO1xuXG4gIC8vIENvbnRhaW5lcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW9yYml0O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJlc3BvbnNpdmUtZW1iZWQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGFicztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10aHVtYm5haWw7XG4gIC8vIE1lbnUtYmFzZWQgY29udGFpbmVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnU7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbWVudS1pY29uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWFjY29yZGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyaWxsZG93bi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duLW1lbnU7XG5cbiAgLy8gTGF5b3V0IGNvbXBvbmVudHNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vZmYtY2FudmFzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXJldmVhbDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zdGlja3k7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGl0bGUtYmFyO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRvcC1iYXI7XG5cbiAgLy8gSGVscGVyc1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsb2F0LWNsYXNzZXM7XG4gIEBpZiAkZmxleCB7IEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzOyB9XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzO1xuICBAaWYgJHByb3RvdHlwZSB7IEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWNsYXNzZXM7IH1cbn1cbiIsIkBtaXhpbiBmb3VuZGF0aW9uLW5vcm1hbGl6ZSgpIHtcbiAgLyohIG5vcm1hbGl6ZS5jc3MgdjguMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4gIC8vIERvY3VtZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUy5cblxuICBodG1sIHtcbiAgICBsaW5lLWhlaWdodDogMS4xNTsgLy8gMVxuICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLy8gMlxuICB9XG5cbiAgLy8gU2VjdGlvbnNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgYm9keSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICAvLyBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuXG4gIGgxIHtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBtYXJnaW46IDAuNjdlbSAwO1xuICB9XG5cbiAgLy8gR3JvdXBpbmcgY29udGVudFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gIC8vIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuXG4gIGhyIHtcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLy8gMVxuICAgIGhlaWdodDogMDsgLy8gMVxuICAgIG92ZXJmbG93OiB2aXNpYmxlOyAvLyAyXG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgcHJlIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8vIDFcbiAgICBmb250LXNpemU6IDFlbTsgLy8gMlxuICB9XG5cbiAgLy8gVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG5cbiAgYSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAvLyAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3LVxuICAvLyAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuXG4gIGFiYnJbdGl0bGVdIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lOyAvLyAxXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC8vIDJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7IC8vIDJcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG5cbiAgYixcbiAgc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG5cbiAgLy8gMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAgLy8gMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIGNvZGUsXG4gIGtiZCxcbiAgc2FtcCB7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvLyAxXG4gICAgZm9udC1zaXplOiAxZW07IC8vIDJcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuXG4gIHNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbiAgfVxuXG4gIC8vIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpblxuICAvLyBhbGwgYnJvd3NlcnMuXG5cbiAgc3ViLFxuICBzdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gIH1cblxuICBzdWIge1xuICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgfVxuXG4gIHN1cCB7XG4gICAgdG9wOiAtMC41ZW07XG4gIH1cblxuICAvLyBFbWJlZGRlZCBjb250ZW50XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cblxuICBpbWcge1xuICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgfVxuXG4gIC8vIEZvcm1zXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gIC8vIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cblxuICBidXR0b24sXG4gIGlucHV0LFxuICBvcHRncm91cCxcbiAgc2VsZWN0LFxuICB0ZXh0YXJlYSB7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8vIDFcbiAgICBmb250LXNpemU6IDEwMCU7IC8vIDFcbiAgICBsaW5lLWhlaWdodDogMS4xNTsgLy8gMVxuICAgIG1hcmdpbjogMDsgLy8gMlxuICB9XG5cbiAgLy8gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gIC8vIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG5cbiAgYnV0dG9uLFxuICBpbnB1dCB7IC8vIDFcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSwgRmlyZWZveCwgYW5kIElFLlxuICAvLyAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG5cbiAgYnV0dG9uLFxuICBzZWxlY3QgeyAvLyAxXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG5cbiAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuICBbdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLy8gUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuXG4gIGJ1dHRvbjotbW96LWZvY3VzcmluZyxcbiAgW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG4gIFt0eXBlPVwicmVzZXRcIl06LW1vei1mb2N1c3JpbmcsXG4gIFt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG4gIH1cblxuICAvLyBDb3JyZWN0IHRoZSBwYWRkaW5nIGluIEZpcmVmb3guXG5cbiAgZmllbGRzZXQge1xuICAgIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gIC8vIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAgLy8gMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICAvLyAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cblxuICBsZWdlbmQge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIDFcbiAgICBjb2xvcjogaW5oZXJpdDsgLy8gMlxuICAgIGRpc3BsYXk6IHRhYmxlOyAvLyAxXG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvLyAxXG4gICAgcGFkZGluZzogMDsgLy8gM1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8vIDFcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG5cbiAgcHJvZ3Jlc3Mge1xuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuXG4gIHRleHRhcmVhIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8vIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICAvLyAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG5cbiAgW3R5cGU9XCJjaGVja2JveFwiXSxcbiAgW3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gMVxuICAgIHBhZGRpbmc6IDA7IC8vIDJcbiAgfVxuXG4gIC8vIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cblxuICBbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC8vIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICAvLyAyLiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaS5cblxuICBbdHlwZT1cInNlYXJjaFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8vIDFcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDsgLy8gMlxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuXG4gIFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICAvLyAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICAvLyAyLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXG5cbiAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8vIDFcbiAgICBmb250OiBpbmhlcml0OyAvLyAyXG4gIH1cblxuICAvLyBJbnRlcmFjdGl2ZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG5cbiAgZGV0YWlscyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAvLyBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG5cbiAgc3VtbWFyeSB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICB9XG5cbiAgLy8gTWlzY1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cblxuICB0ZW1wbGF0ZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8vIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuXG4gIFtoaWRkZW5dIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCIvLy9cbi8vLyBDaGVja3Mgd2hldGhlciBgJGZ1bmN0aW9uc2AgZXhpc3QgaW4gZ2xvYmFsIHNjb3BlLlxuLy8vXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ0xpc3R9ICRmdW5jdGlvbnMgLSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBjaGVjayBmb3Jcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9IFdoZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBtaXNzaW5nIGRlcGVuZGVuY2llc1xuLy8vXG4gXG5AZnVuY3Rpb24gc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJGZ1bmN0aW9ucy4uLikge1xuICAkbWlzc2luZy1kZXBlbmRlbmNpZXM6ICgpO1xuICBcbiAgQGVhY2ggJGZ1bmN0aW9uIGluICRmdW5jdGlvbnMge1xuICAgIEBpZiBub3QgZnVuY3Rpb24tZXhpc3RzKCRmdW5jdGlvbikge1xuICAgICAgJG1pc3NpbmctZGVwZW5kZW5jaWVzOiBhcHBlbmQoJG1pc3NpbmctZGVwZW5kZW5jaWVzLCAkZnVuY3Rpb24sIGNvbW1hKTtcbiAgICB9XG4gIH1cbiAgXG4gIEBpZiBsZW5ndGgoJG1pc3NpbmctZGVwZW5kZW5jaWVzKSA+IDAge1xuICAgIEBlcnJvciAnVW5tZXQgZGVwZW5kZW5jaWVzISBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgcmVxdWlyZWQ6ICN7JG1pc3NpbmctZGVwZW5kZW5jaWVzfS4nO1xuICB9XG5cbiAgQHJldHVybiBsZW5ndGgoJG1pc3NpbmctZGVwZW5kZW5jaWVzKSA+IDA7XG59XG4iLCIvLy9cbi8vLyBSZXR1cm5zIHRydXRoaW5lc3Mgb2YgYCR2YWx1ZWAuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gdmFsdWUgdG8gY2hlY2tcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG4vLy9cbiBcbkBmdW5jdGlvbiBzbC1pcy10cnVlKCR2YWx1ZSkge1xuICBAcmV0dXJuIGlmKCR2YWx1ZSA9PSBudWxsLCBmYWxzZSwgJHZhbHVlIGFuZCAkdmFsdWUgIT0gbnVsbCBhbmQgJHZhbHVlICE9ICcnIGFuZCAkdmFsdWUgIT0gKCkpO1xufVxuIiwiLy8vXG4vLy8gUmV0dXJucyB3aGV0aGVyIGAkbGlzdGAgY29udGFpbnMgYCR2YWx1ZWAuXG4vLy9cbi8vLyBAaWdub3JlIERvY3VtZW50YXRpb246IGh0dHA6Ly9hdC1pbXBvcnQuZ2l0aHViLmlvL1Nhc3N5TGlzdHMvZG9jdW1lbnRhdGlvbi8jZnVuY3Rpb24tc2wtY29udGFpblxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAgICAkbGlzdCAgLSBsaXN0IHRvIGNoZWNrXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgLSB2YWx1ZSB0byBsb29rIGZvclxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1jb250YWluKGEgYiBjLCBhKVxuLy8vIC8vIHRydWVcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtY29udGFpbihhIGIgYywgeilcbi8vLyAvLyBmYWxzZVxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cbi8vL1xuXG5AZnVuY3Rpb24gc2wtY29udGFpbigkbGlzdCwgJHZhbHVlKSB7XG4gIEByZXR1cm4gbm90IG5vdCBpbmRleCgkbGlzdCwgJHZhbHVlKTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLWNvbnRhaW5cbi8vLyBAYWxpYXMgc2wtY29udGFpblxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtaW5jbHVkZSgkbGlzdCwgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2wtY29udGFpbigkbGlzdCwgJHZhbHVlKTtcbn1cbiIsIi8vLyBSZW1vdmVzIGFsbCBmYWxzZSBhbmQgbnVsbCB2YWx1ZXMgZnJvbSBgJGxpc3RgLlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXB1cmdlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRsaXN0IC0gbGlzdCB0byBwdXJnZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1wdXJnZShudWxsIGEgZmFsc2UgYilcbi8vLyAvLyBhIGJcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXB1cmdlKCRsaXN0KSB7XG4gICRfOiBzbC1taXNzaW5nLWRlcGVuZGVuY2llcygnc2wtaXMtdHJ1ZScsICdzbC10by1saXN0Jyk7XG4gIFxuICAkcmVzdWx0OiAoKTtcblxuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIHNsLWlzLXRydWUoJGl0ZW0pIHtcbiAgICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkaXRlbSwgbGlzdC1zZXBhcmF0b3IoJGxpc3QpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHJlc3VsdCk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxuLy8vIEBhbGlhcyBzbC1wdXJnZVxuLy8vXG4gXG5AZnVuY3Rpb24gc2wtY2xlYW4oJGxpc3QpIHtcbiAgQHJldHVybiBzbC1wdXJnZSgkbGlzdCk7XG59XG4iLCIvLy9cbi8vLyBSZW1vdmVzIHZhbHVlKHMpIGAkdmFsdWVgIGZyb20gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZW1vdmVcbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1yZXBsYWNlXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAgICAgLSBsaXN0IHRvIHVwZGF0ZVxuLy8vIEBwYXJhbSB7Kn0gICAgICAgJHZhbHVlICAgICAtIHZhbHVlIHRvIHJlbW92ZVxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZW1vdmUoYSBiIGMsIGEpXG4vLy8gLy8gYiBjXG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fVxuLy8vXG5cbkBmdW5jdGlvbiBzbC1yZW1vdmUoJGxpc3QsICR2YWx1ZSkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLXJlcGxhY2UnKTtcblxuICBAcmV0dXJuIHNsLXJlcGxhY2UoJGxpc3QsICR2YWx1ZSwgbnVsbCk7XG59XG5cbi8vL1xuLy8vIEByZXF1aXJlcyBzbC1yZW1vdmVcbi8vLyBAYWxpYXMgc2wtcmVtb3ZlXG4vLy9cblxuQGZ1bmN0aW9uIHNsLXdpdGhvdXQoJGxpc3QsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLXJlbW92ZSgkbGlzdCwgJHZhbHVlKTtcbn1cbiIsIi8vL1xuLy8vIFJlcGxhY2VzIGAkb2xkYCBieSBgJG5ld2AgaW4gYCRsaXN0YC5cbi8vL1xuLy8vIEBpZ25vcmUgRG9jdW1lbnRhdGlvbjogaHR0cDovL2F0LWltcG9ydC5naXRodWIuaW8vU2Fzc3lMaXN0cy9kb2N1bWVudGF0aW9uLyNmdW5jdGlvbi1zbC1yZXBsYWNlXG4vLy9cbi8vLyBAcmVxdWlyZXMgc2wtaXMtdHJ1ZVxuLy8vIEByZXF1aXJlcyBzbC1wdXJnZVxuLy8vIEByZXF1aXJlcyBzbC10by1saXN0XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICAgICRsaXN0ICAtIGxpc3QgdG8gdXBkYXRlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkb2xkICAgLSB2YWx1ZSB0byByZXBsYWNlXG4vLy8gQHBhcmFtIHsqfSAgICAgICAkdmFsdWUgLSBuZXcgdmFsdWUgZm9yICRvbGRcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtcmVwbGFjZShhIGIgYywgYiwgeilcbi8vLyAvLyBhIHogY1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyBzbC1yZXBsYWNlKGEgYiBjLCB5LCB6KVxuLy8vIC8vIGEgYiBjXG4vLy8gXG4vLy8gQHJldHVybiB7TGlzdH1cbi8vL1xuIFxuQGZ1bmN0aW9uIHNsLXJlcGxhY2UoJGxpc3QsICRvbGQsICR2YWx1ZSkge1xuICAkXzogc2wtbWlzc2luZy1kZXBlbmRlbmNpZXMoJ3NsLWlzLXRydWUnLCAnc2wtcHVyZ2UnLCAnc2wtdG8tbGlzdCcpO1xuXG4gICRydW5uaW5nOiB0cnVlO1xuXG4gIEB3aGlsZSAkcnVubmluZyB7XG4gICAgJGluZGV4OiBpbmRleCgkbGlzdCwgJG9sZCk7XG5cbiAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAkcnVubmluZzogZmFsc2U7XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgJGxpc3Q6IHNldC1udGgoJGxpc3QsICRpbmRleCwgJHZhbHVlKTtcbiAgICB9XG5cbiAgfVxuXG4gICRsaXN0OiBpZihzbC1pcy10cnVlKCR2YWx1ZSksICRsaXN0LCBzbC1wdXJnZSgkbGlzdCkpO1xuICBcbiAgQHJldHVybiBzbC10by1saXN0KCRsaXN0KTtcbn1cbiIsIi8vL1xuLy8vIENhc3RzIGAkdmFsdWVgIGludG8gYSBsaXN0LlxuLy8vXG4vLy8gQGlnbm9yZSBEb2N1bWVudGF0aW9uOiBodHRwOi8vYXQtaW1wb3J0LmdpdGh1Yi5pby9TYXNzeUxpc3RzL2RvY3VtZW50YXRpb24vI2Z1bmN0aW9uLXNsLXRvLWxpc3Rcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlIC0gdmFsdWUgdG8gY2FzdCB0byBsaXN0XG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZXBhcmF0b3IgW3NwYWNlXSAtIHNlcGFyYXRvciB0byB1c2Vcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gc2wtdG8tbGlzdChhIGIgYywgY29tbWEpXG4vLy8gLy8gYSwgYiwgY1xuLy8vIFxuLy8vIEByZXR1cm4ge0xpc3R9XG4vLy9cblxuQGZ1bmN0aW9uIHNsLXRvLWxpc3QoJHZhbHVlLCAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFsdWUpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJHZhbHVlLCAkc2VwYXJhdG9yKTtcbn1cblxuLy8vXG4vLy8gQHJlcXVpcmVzIHNsLXRvLWxpc3Rcbi8vLyBAYWxpYXMgc2wtdG8tbGlzdFxuLy8vXG5cbkBmdW5jdGlvbiBzbC1saXN0aWZ5KCR2YWx1ZSkge1xuICBAcmV0dXJuIHNsLXRvLWxpc3QoJHZhbHVlKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQGltcG9ydCAnbWF0aCc7XG5AaW1wb3J0ICd1bml0JztcbkBpbXBvcnQgJ3ZhbHVlJztcbkBpbXBvcnQgJ2RpcmVjdGlvbic7XG5AaW1wb3J0ICdjb2xvcic7XG5AaW1wb3J0ICdzZWxlY3Rvcic7XG5AaW1wb3J0ICdmbGV4JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQnO1xuQGltcG9ydCAnbWl4aW5zJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHknO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBzYXNzLWxpbnQ6ZGlzYWJsZSBuby1jb2xvci1saXRlcmFscywgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIGdsb2JhbFxuLy8vL1xuXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuXG4vLy8gRm9udCBzaXplIGF0dHJpYnV0ZSBhcHBsaWVkIHRvIGA8aHRtbD5gIGFuZCBgPGJvZHk+YC4gV2UgdXNlIDEwMCUgYnkgZGVmYXVsdCBzbyB0aGUgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHVzZXIncyBicm93c2VyIHNldHRpbmdzLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgd2lkdGggb2YgeW91ciBzaXRlLiBVc2VkIGJ5IHRoZSBncmlkIHRvIGRldGVybWluZSByb3cgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXdpZHRoOiByZW0tY2FsYygxMjAwKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGFsbCB0eXBlLiBgJGdsb2JhbC1saW5laGVpZ2h0YCBpcyAyNHB4IHdoaWxlIGAkZ2xvYmFsLWZvbnQtc2l6ZWAgaXMgMTZweFxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1saW5laGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcnMgdXNlZCBmb3IgYnV0dG9ucywgY2FsbG91dHMsIGxpbmtzLCBldGMuIFRoZXJlIG11c3QgYWx3YXlzIGJlIGEgY29sb3IgY2FsbGVkIGBwcmltYXJ5YC5cbi8vLyBAdHlwZSBNYXBcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcbiAgcHJpbWFyeTogIzE3NzliYSxcbiAgc2Vjb25kYXJ5OiAjNzY3Njc2LFxuICBzdWNjZXNzOiAjM2FkYjc2LFxuICB3YXJuaW5nOiAjZmZhZTAwLFxuICBhbGVydDogI2NjNGIzNyxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBsaWdodCBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbGlnaHQtZ3JheTogI2U2ZTZlNiAhZGVmYXVsdDtcblxuLy8vIENvbG9yIHVzZWQgZm9yIG1lZGl1bSBncmF5IFVJIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVkaXVtLWdyYXk6ICNjYWNhY2EgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBkYXJrIGdyYXkgVUkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkYXJrLWdyYXk6ICM4YThhOGEgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciB1c2VkIGZvciBibGFjayB1aSBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJsYWNrOiAjMGEwYTBhICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdXNlZCBmb3Igd2hpdGUgdWkgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiR3aGl0ZTogI2ZlZmVmZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3RhY2sgb2YgdGhlIGJvZHkuXG4vLy8gQHR5cGUgTGlzdFxuJGJvZHktZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZiAhZGVmYXVsdDtcblxuLy8vIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIGFudGlhbGlhc2VkIHR5cGUsIHVzaW5nIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgYW5kIGAtbW96LW9zeC1mb250LXNtb290aGluZ2AgQ1NTIHByb3BlcnRpZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJvZHktYW50aWFsaWFzZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgbWFyZ2luIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLW1hcmdpbjogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBwYWRkaW5nIG9uIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgcG9zaXRpb25pbmcgb24gY29tcG9uZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtcG9zaXRpb246IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3Igbm9ybWFsIHR5cGUuXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGdsb2JhbC13ZWlnaHQtbm9ybWFsOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgZm9udCB3ZWlnaHQgdXNlZCBmb3IgYm9sZCB0eXBlLlxuLy8vIEB0eXBlIEtleXdvcmQgfCBOdW1iZXJcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBHbG9iYWwgdmFsdWUgdXNlZCBmb3IgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGJvcmRlciByYWRpdXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ2xvYmFsLXJhZGl1czogMCAhZGVmYXVsdDtcblxuLy8vIEdsb2JhbCB2YWx1ZSB1c2VkIGZvciBhbGwgbWVudSBzdHlsZXMuIENhbiBiZSBvdmVyd3JpdHRlbiBhdCBpbmRpdmlkdWFsIG1lbnUgY29tcG9uZW50IGxldmVsLlxuLy8vIEB0eXBlIE51bWJlclxuJGdsb2JhbC1tZW51LXBhZGRpbmc6IDAuN3JlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gR2xvYmFsIHZhbHVlIHVzZWQgZm9yIGFsbCBtZW51IHN0eWxlcy4gTmVzdGVkIG1hcmdpbiBmb3Igc3VibWVudS5cbiRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIENTUy4gQ2FuIGJlIGVpdGhlciBgbHRyYCBvciBgcnRsYC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHIgIWRlZmF1bHQ7XG5cbi8vLyBFbmFibGVzIGZsZXhib3ggZm9yIGNvbXBvbmVudHMgdGhhdCBzdXBwb3J0IGl0LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRnbG9iYWwtZmxleGJveDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEVuYWJsZWQgcmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgcHJvdG90eXBlcyBpZiBhcHBsaWNhYmxlXG4vLy8gQHR5cGUgQm9vbGVhblxuJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQnV0dG9uIGN1cnNvcidzIHZhbHVlLCBgYXV0b2AgYnkgZGVmYXVsdFxuLy8vIEB0eXBlIEtleXdvcmRcbiRnbG9iYWwtYnV0dG9uLWN1cnNvcjogYXV0byAhZGVmYXVsdDtcblxuQGlmIG5vdCBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gIEBlcnJvciAnSW4gJGZvdW5kYXRpb24tcGFsZXR0ZSwgeW91IG11c3QgaGF2ZSBhIGNvbG9yIG5hbWVkIFwicHJpbWFyeVwiLic7XG59XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciB0ZXh0IGRpcmVjdGlvblxuJGdsb2JhbC1sZWZ0OiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCwgcmlnaHQsIGxlZnQpO1xuJGdsb2JhbC1yaWdodDogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIGxlZnQsIHJpZ2h0KTtcblxuLy8gSW50ZXJuYWwgdmFyaWFibGUgdGhhdCBjb250YWlucyB0aGUgZmxleCBqdXN0aWZ5aW5nIG9wdGlvbnNcbiQtemYtZmxleC1qdXN0aWZ5OiAtemYtZmxleC1qdXN0aWZ5KCRnbG9iYWwtdGV4dC1kaXJlY3Rpb24pO1xuXG4vLy8gR2xvYmFsIHRvbGVyYW5jZSBmb3IgY29sb3IgcGljayBjb250cmFzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRnbG9iYWwtY29sb3ItcGljay1jb250cmFzdC10b2xlcmFuY2U6IDAgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBjb2xvcnNcbkBpbmNsdWRlIGFkZC1mb3VuZGF0aW9uLWNvbG9ycztcblxuQG1peGluIGZvdW5kYXRpb24tZ2xvYmFsLXN0eWxlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tbm9ybWFsaXplO1xuXG4gIC8vIFRoZXNlIHN0eWxlcyBhcmUgYXBwbGllZCB0byBhIDxtZXRhPiB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdFxuICAuZm91bmRhdGlvbi1tcSB7XG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xuICB9XG5cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBmb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gU2V0IGJveC1zaXppbmcgZ2xvYmFsbHkgdG8gaGFuZGxlIHBhZGRpbmcgYW5kIGJvcmRlciB3aWR0aHNcbiAgKixcbiAgKjo6YmVmb3JlLFxuICAqOjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxuXG4gIC8vIERlZmF1bHQgYm9keSBzdHlsZXNcbiAgYm9keSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYm9keS1iYWNrZ3JvdW5kO1xuXG4gICAgZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4gICAgbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodDtcbiAgICBjb2xvcjogJGJvZHktZm9udC1jb2xvcjtcblxuICAgIEBpZiAoJGJvZHktYW50aWFsaWFzZWQpIHtcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIC8vIEdldCByaWQgb2YgZ2FwIHVuZGVyIGltYWdlcyBieSBtYWtpbmcgdGhlbSBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJ5IGRlZmF1bHRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgIC8vIEdyaWQgZGVmYXVsdHMgdG8gZ2V0IGltYWdlcyBhbmQgZW1iZWRzIHRvIHdvcmsgcHJvcGVybHlcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJpY3ViaWM7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGV4dGFyZWEgdGFrZXMgb24gaGVpZ2h0IGF1dG9tYXRpY2FsbHlcbiAgdGV4dGFyZWEge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICB9XG5cbiAgLy8gTWFrZSBzZWxlY3QgZWxlbWVudHMgYXJlIDEwMCUgd2lkdGggYnkgZGVmYXVsdFxuICBzZWxlY3Qge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gIH1cblxuICAvLyBTdHlsZXMgR29vZ2xlIE1hcHMgYW5kIE1hcFF1ZXN0IGVtYmVkcyBwcm9wZXJseVxuICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLWlkc1xuICAubWFwX2NhbnZhcyxcbiAgLm1xYS1kaXNwbGF5IHtcbiAgICBpbWcsXG4gICAgZW1iZWQsXG4gICAgb2JqZWN0IHtcbiAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IDxidXR0b24+IHN0eWxlcyBjcmVhdGVkIGJ5IG1vc3QgYnJvd3NlcnNcbiAgYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjdXJzb3I6ICRnbG9iYWwtYnV0dG9uLWN1cnNvcjtcbiAgfVxuXG4gIC8vIFByZXZlbnQgdGV4dCBvdmVyZmxvdyBvbiBwcmVcbiAgcHJlIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxuXG4gIC8vIE1ha2UgcmVzZXQgaW5oZXJpdCBmb250LWZhbWlseSBpbnN0ZWFkIG9mIHNldHRpbmdzIHNhbnMtc2VyaWZcbiAgYnV0dG9uLFxuICBpbnB1dCxcbiAgb3B0Z3JvdXAsXG4gIHNlbGVjdCxcbiAgdGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgY2xhc3NlcyB0byBzaG93L2hpZGUgZWxlbWVudHMgaW4gSmF2YVNjcmlwdFxuICAuaXMtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pcy1oaWRkZW4ge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBHbG9iYWwgc3BhY2luZyBmb3IgZm9ybSBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLXNwYWNpbmc6IHJlbS1jYWxjKDE2KSAhZGVmYXVsdDtcblxuQGltcG9ydCAndGV4dCc7XG5AaW1wb3J0ICdjaGVja2JveCc7XG5AaW1wb3J0ICdsYWJlbCc7XG5AaW1wb3J0ICdoZWxwLXRleHQnO1xuQGltcG9ydCAnaW5wdXQtZ3JvdXAnO1xuQGltcG9ydCAnZmllbGRzZXQnO1xuQGltcG9ydCAnc2VsZWN0JztcbkBpbXBvcnQgJ3JhbmdlJztcbkBpbXBvcnQgJ3Byb2dyZXNzJztcbkBpbXBvcnQgJ21ldGVyJztcbkBpbXBvcnQgJ2Vycm9yJztcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybXMge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tdGV4dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWNoZWNrYm94O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm0tbGFiZWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXByZXBvc3RmaXg7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tZm9ybS1maWVsZHNldDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLXNlbGVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mb3JtLWVycm9yO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBGb250IGNvbG9yIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEZvbnQgY29sb3Igb2YgcGxhY2Vob2xkZXIgdGV4dCB3aXRoaW4gdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgRm9udFxuJGlucHV0LWZvbnQtZmFtaWx5OiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGlucHV0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGlucHV0LWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtbGluZS1oZWlnaHQ6ICRnbG9iYWwtbGluZWhlaWdodCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGZvY3VzZWQgb2YgdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGRpc2FibGVkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGlucHV0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBhcm91bmQgZm9jdXNlZCB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIG9mIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtcGFkZGluZzogJGZvcm0tc3BhY2luZyAvIDIgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IGluc2lkZSB0ZXh0IGlucHV0cyB3aGVuIG5vdCBmb2N1c2VkLlxuLy8vIEB0eXBlIFNoYWRvd1xuJGlucHV0LXNoYWRvdzogaW5zZXQgMCAxcHggMnB4IHJnYmEoJGJsYWNrLCAwLjEpICFkZWZhdWx0O1xuXG4vLy8gQm94IHNoYWRvdyBvdXRzaWRlIHRleHQgaW5wdXRzIHdoZW4gZm9jdXNlZC5cbi8vLyBAdHlwZSBTaGFkb3dcbiRpbnB1dC1zaGFkb3ctZm9jdXM6IDAgMCA1cHggJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQ3Vyc29yIHRvIHVzZSB3aGVuIGhvdmVyaW5nIG92ZXIgYSBkaXNhYmxlZCB0ZXh0IGlucHV0LlxuLy8vIEB0eXBlIEN1cnNvclxuJGlucHV0LWN1cnNvci1kaXNhYmxlZDogbm90LWFsbG93ZWQgIWRlZmF1bHQ7XG5cbi8vLyBQcm9wZXJ0aWVzIHRvIHRyYW5zaXRpb24gb24gdGV4dCBpbnB1dHMuXG4vLy8gQHR5cGUgVHJhbnNpdGlvblxuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xuXG4vLy8gRW5hYmxlcyB0aGUgdXAvZG93biBidXR0b25zIHRoYXQgQ2hyb21lIGFuZCBGaXJlZm94IGFkZCB0byBgPGlucHV0IHR5cGU9J251bWJlcic+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kaW5wdXQtbnVtYmVyLXNwaW5uZXJzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gUmFkaXVzIGZvciB0ZXh0IGlucHV0cy5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBmb3IgZm9ybSBidXR0b25zLCBkZWZhdWx0ZWQgdG8gZ2xvYmFsLXJhZGl1cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmb3JtLWJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG5AbWl4aW4gZm9ybS1lbGVtZW50IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKiB1bml0bGVzcy1jYWxjKCRpbnB1dC1saW5lLWhlaWdodCkpICsgKGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAndG9wJykgKyBnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ2JvdHRvbScpKSAtIHJlbS1jYWxjKDEpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAkaW5wdXQtcGFkZGluZztcblxuICBib3JkZXI6ICRpbnB1dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRpbnB1dC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kO1xuICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93O1xuXG4gIGZvbnQtZmFtaWx5OiAkaW5wdXQtZm9udC1mYW1pbHk7XG4gIGZvbnQtc2l6ZTogJGlucHV0LWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1mb250LXdlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRpbnB1dC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1jb2xvcjtcblxuICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gIH1cblxuICAvLyBGb2N1cyBzdGF0ZVxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlcjogJGlucHV0LWJvcmRlci1mb2N1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1mb2N1cztcbiAgICBib3gtc2hhZG93OiAkaW5wdXQtc2hhZG93LWZvY3VzO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkaW5wdXQtdHJhbnNpdGlvbikge1xuICAgICAgdHJhbnNpdGlvbjogJGlucHV0LXRyYW5zaXRpb247XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tdGV4dCB7XG4gIC8vIFRleHQgaW5wdXRzXG4gICN7dGV4dC1pbnB1dHMoKX0sXG4gIHRleHRhcmVhIHtcbiAgICBAaW5jbHVkZSBmb3JtLWVsZW1lbnQ7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIC8vIFRleHQgYXJlYXNcbiAgdGV4dGFyZWEge1xuICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICZbcm93c10ge1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0LFxuICB0ZXh0YXJlYSB7XG4gICAgLy8gRGlzYWJsZWQvcmVhZG9ubHkgc3RhdGVcbiAgICAmOmRpc2FibGVkLFxuICAgICZbcmVhZG9ubHldIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkO1xuICAgICAgY3Vyc29yOiAkaW5wdXQtY3Vyc29yLWRpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2V0IHN0eWxlcyBvbiBidXR0b24tbGlrZSBpbnB1dHNcbiAgW3R5cGU9J3N1Ym1pdCddLFxuICBbdHlwZT0nYnV0dG9uJ10ge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogJGZvcm0tYnV0dG9uLXJhZGl1cztcbiAgfVxuXG4gIC8vIFJlc2V0IE5vcm1hbGl6ZSBzZXR0aW5nIGNvbnRlbnQtYm94IHRvIHNlYXJjaCBlbGVtZW50c1xuICBpbnB1dFt0eXBlPSdzZWFyY2gnXSB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICAvLyBOdW1iZXIgaW5wdXQgc3R5bGVzXG4gIFt0eXBlPSdudW1iZXInXSB7XG4gICAgQGlmIG5vdCAkaW5wdXQtbnVtYmVyLXNwaW5uZXJzIHtcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuXG4gICAgICAmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuICAgICAgJjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBsYWNlaG9sZGVyIHRleHRcbiAgOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tY2hlY2tib3gge1xuICBbdHlwZT0nZmlsZSddLFxuICBbdHlwZT0nY2hlY2tib3gnXSxcbiAgW3R5cGU9J3JhZGlvJ10ge1xuICAgIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIH1cblxuICAvLyBTdHlsZXMgZm9yIGlucHV0L2xhYmVsIHNpYmxpbmdzXG4gIFt0eXBlPSdjaGVja2JveCddICsgbGFiZWwsXG4gIFt0eXBlPSdyYWRpbyddICsgbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkZm9ybS1zcGFjaW5nICogMC41O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkZm9ybS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAmW2Zvcl0ge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxlcyBmb3IgaW5wdXRzIGluc2lkZSBsYWJlbHNcbiAgbGFiZWwgPiBbdHlwZT0nY2hlY2tib3gnXSxcbiAgbGFiZWwgPiBbdHlwZT0ncmFkaW8nXSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRmb3JtLXNwYWNpbmcgKiAwLjU7XG4gIH1cblxuICAvLyBOb3JtYWxpemUgZmlsZSBpbnB1dCB3aWR0aFxuICBbdHlwZT0nZmlsZSddIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZvcm1zXG4vLy8vXG5cbi8vLyBDb2xvciBmb3IgZm9ybSBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRmb3JtLWxhYmVsLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGZvcm0gbGFiZWxzLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tbGFiZWwtZm9udC1zaXplOiByZW0tY2FsYygxNCkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBmb3IgZm9ybSBsYWJlbHMuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIExpbmUgaGVpZ2h0IGZvciBmb3JtIGxhYmVscy4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYWJlbCBhbmQgaXRzIGlucHV0IGZpZWxkLlxuLy8vIEB0eXBlIE51bWJlclxuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuOCAhZGVmYXVsdDtcblxuQG1peGluIGZvcm0tbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwO1xuXG4gIGZvbnQtc2l6ZTogJGZvcm0tbGFiZWwtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGZvcm0tbGFiZWwtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkZm9ybS1sYWJlbC1saW5lLWhlaWdodDtcbiAgY29sb3I6ICRmb3JtLWxhYmVsLWNvbG9yO1xufVxuXG5AbWl4aW4gZm9ybS1sYWJlbC1taWRkbGUge1xuICAkaW5wdXQtYm9yZGVyLXdpZHRoOiBnZXQtYm9yZGVyLXZhbHVlKCRpbnB1dC1ib3JkZXIsIHdpZHRoKTtcblxuICBtYXJnaW46IDAgMCAkZm9ybS1zcGFjaW5nO1xuICBwYWRkaW5nOiAoJGZvcm0tc3BhY2luZyAvIDIgKyByZW0tY2FsYygkaW5wdXQtYm9yZGVyLXdpZHRoKSkgMDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1sYWJlbCB7XG4gIGxhYmVsIHtcbiAgICBAaW5jbHVkZSBmb3JtLWxhYmVsO1xuXG4gICAgJi5taWRkbGUge1xuICAgICAgQGluY2x1ZGUgZm9ybS1sYWJlbC1taWRkbGU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGhlbHAgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGhlbHB0ZXh0LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBmb3IgaGVscCB0ZXh0LlxuLy8vIEB0eXBlIE51bWJlclxuJGhlbHB0ZXh0LWZvbnQtc2l6ZTogcmVtLWNhbGMoMTMpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHN0eWxlIGZvciBoZWxwIHRleHQuXG4vLy8gQHR5cGUgS2V5d29yZFxuJGhlbHB0ZXh0LWZvbnQtc3R5bGU6IGl0YWxpYyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1oZWxwdGV4dCB7XG4gIC5oZWxwLXRleHQge1xuICAgICRtYXJnaW4tdG9wOiAoJGZvcm0tc3BhY2luZyAqIDAuNSkgKiAtMTtcblxuICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIGZvbnQtc2l6ZTogJGhlbHB0ZXh0LWZvbnQtc2l6ZTtcbiAgICBmb250LXN0eWxlOiAkaGVscHRleHQtZm9udC1zdHlsZTtcbiAgICBjb2xvcjogJGhlbHB0ZXh0LWNvbG9yO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIENvbG9yIG9mIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LXByZWZpeC1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBsYWJlbHMgcHJlZml4ZWQgdG8gYW4gaW5wdXQuXG4vLy8gQHR5cGUgQ29sb3JcbiRpbnB1dC1wcmVmaXgtYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgYXJvdW5kIGxhYmVscyBwcmVmaXhlZCB0byBhbiBpbnB1dC5cbi8vLyBAdHlwZSBCb3JkZXJcbiRpbnB1dC1wcmVmaXgtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTGVmdC9yaWdodCBwYWRkaW5nIG9mIGFuIHByZS9wb3N0Zml4ZWQgaW5wdXQgbGFiZWxcbiRpbnB1dC1wcmVmaXgtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1wcmVwb3N0Zml4IHtcbiAgJGhlaWdodDogKCRpbnB1dC1mb250LXNpemUgKiAkaW5wdXQtbGluZS1oZWlnaHQpICsgKGdldC1zaWRlKCRpbnB1dC1wYWRkaW5nLCAndG9wJykgKyBnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ2JvdHRvbScpKSAtIHJlbS1jYWxjKDEpO1xuXG4gIC5pbnB1dC1ncm91cCB7XG4gICAgZGlzcGxheTogaWYoJGdsb2JhbC1mbGV4Ym94LCBmbGV4LCB0YWJsZSk7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZztcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxuXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgJiwgJi5pbnB1dC1ncm91cC1idXR0b24gPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDAsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgJiwgJi5pbnB1dC1ncm91cC1idXR0b24gPiAqIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBydGwsICRpbnB1dC1yYWRpdXMgMCAwICRpbnB1dC1yYWRpdXMsIDAgJGlucHV0LXJhZGl1cyAkaW5wdXQtcmFkaXVzIDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICVpbnB1dC1ncm91cC1jaGlsZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAuaW5wdXQtZ3JvdXAtbGFiZWwge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmc6IDAgJGlucHV0LXByZWZpeC1wYWRkaW5nO1xuICAgIGJvcmRlcjogJGlucHV0LXByZWZpeC1ib3JkZXI7XG4gICAgYmFja2dyb3VuZDogJGlucHV0LXByZWZpeC1iYWNrZ3JvdW5kO1xuXG4gICAgY29sb3I6ICRpbnB1dC1wcmVmaXgtY29sb3I7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHdpZHRoOiAxJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC1wcmVmaXgtYm9yZGVyKSB7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLSN7JGdsb2JhbC1yaWdodH06IDA7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcbiAgICBAZXh0ZW5kICVpbnB1dC1ncm91cC1jaGlsZDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5pbnB1dC1ncm91cC1idXR0b24ge1xuICAgIEBleHRlbmQgJWlucHV0LWdyb3VwLWNoaWxkO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMSU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgYSxcbiAgICBpbnB1dCxcbiAgICBidXR0b24sXG4gICAgbGFiZWwge1xuICAgICAgQGV4dGVuZCAlaW5wdXQtZ3JvdXAtY2hpbGQ7XG5cbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIH1cbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lmaWNpdHkgYnVtcCBuZWVkZWQgdG8gcHJldmVudCBvdmVycmlkZSBieSBidXR0b25zXG4gIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAuaW5wdXQtZ3JvdXAge1xuICAgICAgLmlucHV0LWdyb3VwLWJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZm9ybXNcbi8vLy9cblxuLy8vIERlZmF1bHQgYm9yZGVyIGFyb3VuZCBjdXN0b20gZmllbGRzZXRzLlxuLy8vIEB0eXBlIEJvcmRlclxuJGZpZWxkc2V0LWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1wYWRkaW5nOiByZW0tY2FsYygyMCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBhcm91bmQgY3VzdG9tIGZpZWxkc2V0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRmaWVsZHNldC1tYXJnaW46IHJlbS1jYWxjKDE4IDApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGJldHdlZW4gdGhlIGxlZ2VuZCB0ZXh0IGFuZCBmaWVsZHNldCBib3JkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMykgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmaWVsZHNldCB7XG4gIG1hcmdpbjogJGZpZWxkc2V0LW1hcmdpbjtcbiAgcGFkZGluZzogJGZpZWxkc2V0LXBhZGRpbmc7XG4gIGJvcmRlcjogJGZpZWxkc2V0LWJvcmRlcjtcblxuICBsZWdlbmQge1xuICAgIC8vIENvdmVycyB1cCB0aGUgZmllbGRzZXQncyBib3JkZXIgdG8gY3JlYXRlIGFydGlmaWNpYWwgcGFkZGluZ1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiByZW0tY2FsYygtMyk7XG4gICAgcGFkZGluZzogJGxlZ2VuZC1wYWRkaW5nO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWZvcm0tZmllbGRzZXQge1xuICBmaWVsZHNldCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAwO1xuICB9XG5cbiAgbGVnZW5kIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tc3BhY2luZyAqIDAuNTtcbiAgfVxuXG4gIC5maWVsZHNldCB7XG4gICAgQGluY2x1ZGUgZmllbGRzZXQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmb3Jtc1xuLy8vL1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3Igc2VsZWN0IG1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBkcm9wZG93biB0cmlhbmdsZSBpbnNpZGUgc2VsZWN0IG1lbnVzLiBTZXQgdG8gYHRyYW5zcGFyZW50YCB0byByZW1vdmUgaXQgZW50aXJlbHkuXG4vLy8gQHR5cGUgQ29sb3JcbiRzZWxlY3QtdHJpYW5nbGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3Igc2VsZWN0IG1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kc2VsZWN0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3JtLXNlbGVjdCB7XG4gICRoZWlnaHQ6ICgkaW5wdXQtZm9udC1zaXplICogdW5pdGxlc3MtY2FsYygkaW5wdXQtbGluZS1oZWlnaHQpKSArIChnZXQtc2lkZSgkaW5wdXQtcGFkZGluZywgJ3RvcCcpICsgZ2V0LXNpZGUoJGlucHV0LXBhZGRpbmcsICdib3R0b20nKSkgLSByZW0tY2FsYygxKTtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG1hcmdpbjogMCAwICRmb3JtLXNwYWNpbmc7XG4gIHBhZGRpbmc6ICRpbnB1dC1wYWRkaW5nO1xuXG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogJGlucHV0LWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJHNlbGVjdC1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzZWxlY3QtYmFja2dyb3VuZDtcblxuICBmb250LWZhbWlseTogJGlucHV0LWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6ICRpbnB1dC1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkaW5wdXQtZm9udC13ZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkaW5wdXQtY29sb3I7XG5cbiAgQGlmICRzZWxlY3QtdHJpYW5nbGUtY29sb3IgIT0gdHJhbnNwYXJlbnQge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtdHJpYW5nbGUoJHNlbGVjdC10cmlhbmdsZS1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46IGNvbnRlbnQtYm94O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRnbG9iYWwtcmlnaHQgKC0kZm9ybS1zcGFjaW5nKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDlweCA2cHg7XG5cbiAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICgkZm9ybS1zcGFjaW5nICogMS41KTtcbiAgfVxuXG4gIEBpZiBoYXMtdmFsdWUoJGlucHV0LXRyYW5zaXRpb24pIHtcbiAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgfVxuXG4gIC8vIEZvY3VzIHN0YXRlXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiAkaW5wdXQtYm9yZGVyLWZvY3VzO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iYWNrZ3JvdW5kLWZvY3VzO1xuICAgIGJveC1zaGFkb3c6ICRpbnB1dC1zaGFkb3ctZm9jdXM7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRpbnB1dC10cmFuc2l0aW9uKSB7XG4gICAgICB0cmFuc2l0aW9uOiAkaW5wdXQtdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAmOmRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtYmFja2dyb3VuZC1kaXNhYmxlZDtcbiAgICBjdXJzb3I6ICRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ7XG4gIH1cblxuICAvLyBIaWRlIHRoZSBkcm9wZG93biBhcnJvdyBzaG93biBpbiBuZXdlciBJRSB2ZXJzaW9uc1xuICAmOjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJlttdWx0aXBsZV0ge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG4gICY6bm90KFttdWx0aXBsZV0pIHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1mb3JtLXNlbGVjdCB7XG4gIHNlbGVjdCB7XG4gICAgQGluY2x1ZGUgZm9ybS1zZWxlY3Q7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBzbGlkZXJcbi8vLy9cblxuLy8vIERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhlaWdodDogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBzbGlkZXIncyB0cmFjay5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGFjdGl2ZSBmaWxsIGNvbG9yIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRzbGlkZXItZmlsbC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGhlaWdodCBvZiB0aGUgaGFuZGxlIG9mIHRoZSBzbGlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc2xpZGVyLWhhbmRsZS1oZWlnaHQ6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgd2lkdGggb2YgdGhlIGhhbmRsZSBvZiB0aGUgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1oYW5kbGUtd2lkdGg6IDEuNHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGhhbmRsZSBmb3IgdGhlIHNsaWRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgYW1vdW50IG9mIGEgZGlzYWJsZWQgc2xpZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHNsaWRlci1vcGFjaXR5LWRpc2FibGVkOiAwLjI1ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgZm9yIHNsaWRlci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcmFuZ2UtaW5wdXQge1xuICBpbnB1dFt0eXBlPSdyYW5nZSddIHsgIC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICRtYXJnaW46ICgkc2xpZGVyLWhhbmRsZS1oZWlnaHQgLSAkc2xpZGVyLWhlaWdodCkgLyAyO1xuXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcblxuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRzbGlkZXItcmFkaXVzO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgb3V0bGluZTogMDtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tdmVuZG9yLXByZWZpeFxuXG4gICAgLy8gQ2hyb21lL1NhZmFyaVxuICAgICY6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHtcbiAgICAgIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaXJlZm94XG4gICAgJjo6LW1vei1yYW5nZS10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgd2lkdGg6ICRzbGlkZXItaGFuZGxlLXdpZHRoO1xuICAgICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgICBtYXJnaW4tdG9wOiAtJG1hcmdpbjtcblxuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lOyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXZlbmRvci1wcmVmaXhlc1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkc2xpZGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkc2xpZGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnRlcm5ldCBFeHBsb3JlclxuICAgICY6Oi1tcy10cmFjayB7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuXG4gICAgICBib3JkZXI6IDA7XG4gICAgICBib3JkZXItdG9wOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XG4gICAgICBib3JkZXItYm90dG9tOiAkbWFyZ2luIHNvbGlkICRib2R5LWJhY2tncm91bmQ7XG4gICAgICBiYWNrZ3JvdW5kOiAkc2xpZGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi1tcy10aHVtYiB7XG4gICAgICB3aWR0aDogJHNsaWRlci1oYW5kbGUtd2lkdGg7XG4gICAgICBoZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJhY2tncm91bmQ6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHNsaWRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtbG93ZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJjo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgYmFja2dyb3VuZDogJHNsaWRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIEBhdC1yb290IHtcbiAgICAgIG91dHB1dCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzbGlkZXItaGFuZGxlLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm9ncmVzcy1iYXJcbi8vLy9cblxuLy8vIEhlaWdodCBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGEgcHJvZ3Jlc3MgYmFyLlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvZ3Jlc3MtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBhIHByb2dyZXNzIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgYSBwcm9ncmVzcyBiYXIncyBtZXRlci5cbi8vLyBAdHlwZSBDb2xvclxuJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCByYWRpdXMgb2YgYSBwcm9ncmVzcyBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvZ3Jlc3MtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tcHJvZ3Jlc3MtZWxlbWVudCB7XG4gIHByb2dyZXNzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRwcm9ncmVzcy1oZWlnaHQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XG5cbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkcHJvZ3Jlc3MtcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgIH1cblxuICAgIC8vIEZvciBGaXJlZm94XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xuXG4gICAgJjo6LXdlYmtpdC1wcm9ncmVzcy1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJHByb2dyZXNzLW1ldGVyLWJhY2tncm91bmQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJHByb2dyZXNzLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRmb3VuZGF0aW9uLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIC8vIEludGVybmV0IEV4cGxvcmVyIHNldHMgdGhlIGZpbGwgd2l0aCBjb2xvclxuICAgICAgICBjb2xvcjogJGNvbG9yO1xuXG4gICAgICAgICY6Oi13ZWJraXQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi1tb3otcHJvZ3Jlc3MtYmFyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3IgSUUgYW5kIEVkZ2VcbiAgICAmOjotbXMtZmlsbCB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gICAgICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHByb2dyZXNzLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1ldGVyXG4vLy8vXG5cbi8vLyBIZWlnaHQgb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRtZXRlci1oZWlnaHQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgcmFkaXVzIG9mIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kbWV0ZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIE1ldGVyIGZpbGwgZm9yIGFuIG9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhbiBhdmVyYWdlIHZhbHVlIGluIGEgYDxtZXRlcj5gIGVsZW1lbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRtZXRlci1maWxsLW1lZGl1bTogJHdhcm5pbmctY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBNZXRlciBmaWxsIGZvciBhIHN1Ym9wdGltYWwgdmFsdWUgaW4gYSBgPG1ldGVyPmAgZWxlbWVudC5cbi8vLyBAdHlwZSBDb2xvclxuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3IgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1ldGVyLWVsZW1lbnQge1xuICBtZXRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkbWV0ZXItaGVpZ2h0O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICAvLyBEaXNhYmxlIGAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmVgIGZyb20gZ2V0dGluZyBwcmVmaXhlZCxcbiAgICAvLyBXZSBoYXZlIGRpc2FibGVkIGF1dG9wcmVmaXhlciBmaXJzdCBhbmQgYXJlIGp1c3Qgb25seSB1c2luZyBcbiAgICAvLyBgLW1vei1hcHBlYXJhbmNlOiBub25lYCBhcyBhIHByZWZpeCBhbmQgbmVnbGVjdGluZyB0aGUgd2Via2l0LlxuICAgIFxuICAgIC8qISBhdXRvcHJlZml4ZXI6IG9mZiAqL1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby12ZW5kb3ItcHJlZml4ZXNcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuXG4gICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgIH1cblxuICAgIC8vIEZvciBGaXJlZm94XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuXG4gICAgLy8gQ2hyb21lL1NhZmFyaS9FZGdlXG4gICAgJjo6LXdlYmtpdC1tZXRlci1iYXIge1xuICAgICAgYm9yZGVyOiAwO1xuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtbWV0ZXItaW5uZXItZWxlbWVudCB7XG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOjotd2Via2l0LW1ldGVyLW9wdGltdW0tdmFsdWUge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1zdWJvcHRpbXVtLXZhbHVlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcblxuICAgICAgQGlmIGhhcy12YWx1ZSgkbWV0ZXItcmFkaXVzKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRtZXRlci1yYWRpdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1tZXRlci1ldmVuLWxlc3MtZ29vZC12YWx1ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG5cbiAgICAgIEBpZiBoYXMtdmFsdWUoJG1ldGVyLXJhZGl1cykge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkbWV0ZXItcmFkaXVzO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xuXG4gICAgICBAaWYgaGFzLXZhbHVlKCRtZXRlci1yYWRpdXMpIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJG1ldGVyLXJhZGl1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItb3B0aW11bTo6LW1vei1tZXRlci1iYXIge1xuICAgICAgYmFja2dyb3VuZDogJG1ldGVyLWZpbGwtZ29vZDtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLW9wdGltdW06Oi1tb3otbWV0ZXItYmFyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRtZXRlci1maWxsLW1lZGl1bTtcbiAgICB9XG5cbiAgICAmOi1tb3otbWV0ZXItc3ViLXN1Yi1vcHRpbXVtOjotbW96LW1ldGVyLWJhciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkbWV0ZXItZmlsbC1iYWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWJpZGVcbi8vLy9cblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBpbnB1dHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWlucHV0czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgaWYgZXJyb3Igc3R5bGVzIHNob3VsZCBiZSBhZGRlZCB0byBsYWJlbHMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFiaWRlLWxhYmVsczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgdG8gdXNlIGZvciBpbnZhbGlkIHRleHQgaW5wdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kaW5wdXQtYmFja2dyb3VuZC1pbnZhbGlkOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gQ29sb3IgdG8gdXNlIGZvciBsYWJlbHMgb2YgaW52YWxpZCBpbnB1dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBDb2xvclxuJGlucHV0LWVycm9yLWNvbG9yOiBnZXQtY29sb3IoYWxlcnQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRpbnB1dC1lcnJvci1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIGZvcm0gZXJyb3IgdGV4dC5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlciBvZiBhbiBpbnB1dCBmaWVsZCB0byBoYXZlIGFuIGVycm9yIHN0YXRlLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRhbGVydC1jb2xvcl0gLSBDb2xvciB0byB1c2UgZm9yIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYWNrZ3JvdW5kLWxpZ2h0ZW4gWzEwJV0gLSBMaWdodG5lc3MgbGV2ZWwgb2YgdGhlIGJhY2tncm91bmQgY29sb3IuXG5AbWl4aW4gZm9ybS1pbnB1dC1lcnJvcihcbiAgJGJhY2tncm91bmQ6ICRpbnB1dC1iYWNrZ3JvdW5kLWludmFsaWQsXG4gICRiYWNrZ3JvdW5kLWxpZ2h0ZW46IDEwJVxuKSB7XG4gICY6bm90KDpmb2N1cykge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCRiYWNrZ3JvdW5kLCAkd2hpdGUsICRiYWNrZ3JvdW5kLWxpZ2h0ZW4pO1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBlcnJvciBzdHlsZXMgdG8gYSBmb3JtIGVsZW1lbnQsIHVzaW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHNldHRpbmdzIGZpbGUuXG5AbWl4aW4gZm9ybS1lcnJvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG1hcmdpbi10b3A6ICRmb3JtLXNwYWNpbmcgKiAtMC41O1xuICBtYXJnaW4tYm90dG9tOiAkZm9ybS1zcGFjaW5nO1xuXG4gIGZvbnQtc2l6ZTogJGlucHV0LWVycm9yLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6ICRpbnB1dC1lcnJvci1mb250LXdlaWdodDtcbiAgY29sb3I6ICRpbnB1dC1lcnJvci1jb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tZm9ybS1lcnJvciB7XG4gIEBpZiAkYWJpZGUtaW5wdXRzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgaW52YWxpZCBpbnB1dHNcbiAgICAuaXMtaW52YWxpZC1pbnB1dCB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWlucHV0LWVycm9yO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkYWJpZGUtbGFiZWxzIHtcbiAgICAvLyBFcnJvciBjbGFzcyBmb3IgbGFiZWxzIG9mIGludmFsaWQgb3V0cHV0c1xuICAgIC5pcy1pbnZhbGlkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkZm9ybS1sYWJlbC1jb2xvci1pbnZhbGlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gZXJyb3IgZWxlbWVudFxuICAuZm9ybS1lcnJvciB7XG4gICAgQGluY2x1ZGUgZm9ybS1lcnJvcjtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5XG4vLy8vXG5cbi8vIEJhc2UgdHlwb2dyYXBoeSBzdHlsZXMgKHRhZ3Mgb25seSlcbkBpbXBvcnQgJ2Jhc2UnO1xuXG4vLyBUeXBvZ3JhcGh5IGhlbHBlciBjbGFzc2VzIChjbGFzc2VzIG9ubHkpXG5AaW1wb3J0ICdoZWxwZXJzJztcblxuLy8gVGV4dCBhbGlnbm1lbnQgY2xhc3Nlc1xuQGltcG9ydCAnYWxpZ25tZW50JztcblxuLy8gUHJpbnQgc3R5bGVzXG5AaW1wb3J0ICdwcmludCc7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHkge1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHktYmFzZTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10eXBvZ3JhcGh5LWhlbHBlcnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGV4dC1hbGlnbm1lbnQ7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJpbnQtc3R5bGVzO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHR5cG9ncmFwaHktYmFzZVxuLy8vL1xuXG4vLyBCYXNlIFR5cG9ncmFwaHlcbi8vIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtXG4vLyBUaGVzZSBhcmUgc3R5bGVzIGFwcGxpZWQgdG8gYmFzaWMgSFRNTCB0YWdzLCBpbmNsdWRpbmc6XG4vLyAgIC0gUGFyYWdyYXBocyA8cD5cbi8vICAgLSBCb2xkL2l0YWxpY3MgPGI+IDxzdHJvbmc+IDxpPiA8ZW0+XG4vLyAgIC0gU21hbGwgdGV4dCA8c21hbGw+XG4vLyAgIC0gSGVhZGluZ3MgPGgxPi08aDY+XG4vLyAgIC0gQW5jaG9ycyA8YT5cbi8vICAgLSBEaXZpZGVycyA8aHI+XG4vLyAgIC0gTGlzdHMgPHVsPiA8b2w+IDxkbD5cbi8vICAgLSBCbG9ja3F1b3RlcyA8YmxvY2txdW90ZT5cbi8vICAgLSBDb2RlIGJsb2NrcyA8Y29kZT5cbi8vICAgLSBBYmJyZXZpYXRpb25zIDxhYmJyPlxuLy8gICAtIENpdGF0aW9ucyA8Y2l0ZT5cbi8vICAgLSBLZXlzdHJva2VzIDxrYmQ+XG5cbi8vLyBGb250IGZhbWlseSBmb3IgaGVhZGVyIGVsZW1lbnRzLlxuLy8vIEB0eXBlIFN0cmluZyB8IExpc3RcbiRoZWFkZXItZm9udC1mYW1pbHk6ICRib2R5LWZvbnQtZmFtaWx5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc3R5bGUgKGUuZy4gaXRhbGljaXplZCkgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRoZWFkZXItZm9udC1zdHlsZTogbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzdGFjayB1c2VkIGZvciBlbGVtZW50cyB0aGF0IHVzZSBtb25vc3BhY2VkIHR5cGUsIHN1Y2ggYXMgY29kZSBzYW1wbGVzXG4vLy8gQHR5cGUgU3RyaW5nIHwgTGlzdFxuJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTogQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBDb3VyaWVyLCBtb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIENvbG9yXG4kaGVhZGVyLWNvbG9yOiBpbmhlcml0ICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgb2YgaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRoZWFkZXItbGluZWhlaWdodDogMS40ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBTdHlsZXMgZm9yIGhlYWRpbmdzIGF0IHZhcmlvdXMgc2NyZWVuIHNpemVzLiBFYWNoIGtleSBpcyBhIGJyZWFrcG9pbnQsIGFuZCBlYWNoIHZhbHVlIGlzIGEgbWFwIG9mIGhlYWRpbmcgc3R5bGVzLlxuLy8vIEB0eXBlIE1hcFxuJGhlYWRlci1zdHlsZXM6IChcbiAgc21hbGw6IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDI0KSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDIwKSxcbiAgICAnaDMnOiAoJ2ZvbnQtc2l6ZSc6IDE5KSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDE4KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDE3KSxcbiAgICAnaDYnOiAoJ2ZvbnQtc2l6ZSc6IDE2KSxcbiAgKSxcbiAgbWVkaXVtOiAoXG4gICAgJ2gxJzogKCdmb250LXNpemUnOiA0OCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiA0MCksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAzMSksXG4gICAgJ2g0JzogKCdmb250LXNpemUnOiAyNSksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAxNiksXG4gICksXG4pICFkZWZhdWx0O1xuXG4vLyAkaGVhZGVyLXN0eWxlcyBtYXAgaXMgYnVpbHQgZnJvbSAkaGVhZGVyLXNpemVzIGluIG9yZGVyIHRvIGVuc3VyZSBkb3dud2FyZCBjb21wYXRpYmlsaXR5XG4vLyB3aGVuICRoZWFkZXItc2l6ZXMgaXMgZGVwcmVjaWF0ZWQsICRoZWFkZXItc3R5bGVzIG5lZWRzIHRvIGdldCAhZGVmYXVsdCB2YWx1ZXMgbGlrZSBzZXR0aW5ncy5zY3NzXG5AZnVuY3Rpb24gYnVpbGRfZnJvbV9oZWFkZXItc2l6ZXMoJGhlYWRlci1zaXplcykge1xuICBAd2FybiAnTm90ZSwgdGhhdCAkaGVhZGVyLXNpemVzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggJGhlYWRlci1zdHlsZXMuICRoZWFkZXItc2l6ZXMgc3RpbGwgd29ya3MsIGJ1dCBpdCBpcyBnb2luZyB0byBiZSBkZXByZWNpYXRlZC4nO1xuICAkaGVhZGVyLXN0eWxlczogKCk7XG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXNpemVzIHtcbiAgICAkaGVhZGVyLW1hcDogKCk7XG4gICAgQGVhY2ggJGhlYWRlciwgJGZvbnQtc2l6ZSBpbiAkaGVhZGVycyB7XG4gICAgICAkaGVhZGVyLW1hcDogbWFwLW1lcmdlKCRoZWFkZXItbWFwLCAoJGhlYWRlcjogKCdmb250LXNpemUnOiAkZm9udC1zaXplKSkpO1xuICAgIH1cbiAgICAkaGVhZGVyLXN0eWxlczogbWFwLW1lcmdlKCRoZWFkZXItc3R5bGVzLCAoJHNpemU6ICRoZWFkZXItbWFwKSk7XG4gIH1cbiAgQHJldHVybiAkaGVhZGVyLXN0eWxlcztcbn1cblxuLy8gSWYgaXQgZXhpc3RzICRoZWFkZXJzLXNpemVzIGlzIHVzZWQgdG8gYnVpbGQgJGhlYWRlci1zdHlsZXMuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbi5cbkBpZiB2YXJpYWJsZS1leGlzdHMoaGVhZGVyLXNpemVzKSB7XG4gICRoZWFkZXItc3R5bGVzOiBidWlsZF9mcm9tX2hlYWRlci1zaXplcygkaGVhZGVyLXNpemVzKTtcbn1cblxuLy8vIFRleHQgcmVuZGVyaW5nIG1ldGhvZCBvZiBoZWFkZXJzLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGhlYWRlci10ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5ICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGA8c21hbGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzbWFsbC1mb250LXNpemU6IDgwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGA8c21hbGw+YCBlbGVtZW50cyB3aGVuIHBsYWNlZCBpbnNpZGUgaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBMaW5lIGhlaWdodCBvZiB0ZXh0IGluc2lkZSBgPHA+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYXJhZ3JhcGgtbGluZWhlaWdodDogMS42ICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIG1hcmdpbiBvZiBwYXJhZ3JhcGhzLlxuLy8vIEB0eXBlIE51bWJlclxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCByZW5kZXJpbmcgbWV0aG9kIGZvciBwYXJhZ3JhcGggdGV4dC5cbi8vLyBAdHlwZSBTdHJpbmdcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eSAhZGVmYXVsdDtcblxuLy8vIFVzZSB0aGUgYC5jb2RlLWlubGluZWAgY29tcG9uZW50IGFzIGRlZmF1bHQgZm9yIGA8Y29kZT5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRlbmFibGUtY29kZS1pbmxpbmU6IHRydWU7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcy5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJGFuY2hvci1jb2xvci1ob3Zlcjogc2NhbGUtY29sb3IoJGFuY2hvci1jb2xvciwgJGxpZ2h0bmVzczogLTE0JSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRleHQgZGVjb3JhdGlvbiBmb3IgbGlua3MuXG4vLy8gQHR5cGUgU3RyaW5nXG4kYW5jaG9yLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBkZWNvcmF0aW9uIGZvciBsaW5rcyBvbiBob3Zlci5cbi8vLyBAdHlwZSBTdHJpbmdcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uLWhvdmVyOiBub25lICFkZWZhdWx0O1xuXG4vLy8gTWF4aW11bSB3aWR0aCBvZiBhIGRpdmlkZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIExpc3RcbiRoci1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBmb3IgYSBkaXZpZGVyLlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRoci1tYXJnaW46IHJlbS1jYWxjKDIwKSBhdXRvICFkZWZhdWx0O1xuXG4vLy8gTGluZSBoZWlnaHQgZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LWxpbmVoZWlnaHQ6ICRwYXJhZ3JhcGgtbGluZWhlaWdodCAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbSAhZGVmYXVsdDtcblxuLy8vIEJ1bGxldCB0eXBlIHRvIHVzZSBmb3IgdW5vcmRlcmVkIGxpc3RzIChlLmcuLCBgc3F1YXJlYCwgYGNpcmNsZWAsIGBkaXNjYCkuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjICFkZWZhdWx0O1xuXG4vLy8gUG9zaXRpb25pbmcgZm9yIGJ1bGxldHMgb24gdW5vcmRlcmVkIGxpc3QgaXRlbXMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kbGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZSAhZGVmYXVsdDtcblxuLy8vIExlZnQgKG9yIHJpZ2h0KSBtYXJnaW4gZm9yIGxpc3RzLlxuLy8vIEB0eXBlIE51bWJlclxuJGxpc3Qtc2lkZS1tYXJnaW46IDEuMjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IChvciByaWdodCkgbWFyZ2luIGZvciBhIGxpc3QgaW5zaWRlIGEgbGlzdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIEJvdHRvbSBtYXJnaW4gZm9yIGA8ZGw+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRm9udCB3ZWlnaHQgZm9yIGA8ZHQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRkZWZubGlzdC10ZXJtLXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBgPGR0PmAgYW5kIGA8ZGQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkZWZubGlzdC10ZXJtLW1hcmdpbi1ib3R0b206IDAuM3JlbSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRibG9ja3F1b3RlLWNvbG9yOiAkZGFyay1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgYSBgPGJsb2NrcXVvdGU+YCBlbGVtZW50LlxuLy8vIEB0eXBlIE51bWJlciB8IExpc3RcbiRibG9ja3F1b3RlLXBhZGRpbmc6IHJlbS1jYWxjKDkgMjAgMCAxOSkgIWRlZmF1bHQ7XG5cbi8vLyBTaWRlIGJvcmRlciBmb3IgYDxibG9ja3F1b3RlPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gVXNlIHRoZSBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudCBhcyBkZWZhdWx0IGZvciBgPGNpdGU+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZW5hYmxlLWNpdGUtYmxvY2s6IHRydWU7XG5cbi8vLyBGb250IGZhbWlseSBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2UgIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBgPGtiZD5gIGVsZW1lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4ka2V5c3Ryb2tlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBmb3IgYDxrYmQ+YCBlbGVtZW50cy5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4ka2V5c3Ryb2tlLXBhZGRpbmc6IHJlbS1jYWxjKDIgNCAwKSAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGA8a2JkPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTnVtYmVyIHwgTGlzdFxuJGtleXN0cm9rZS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm90dG9tIGJvcmRlciBzdHlsZSBmb3IgYDxhYmJyPmAgZWxlbWVudHMuXG4vLy8gQHR5cGUgTGlzdFxuJGFiYnItdW5kZXJsaW5lOiAxcHggZG90dGVkICRibGFjayAhZGVmYXVsdDtcblxuQG1peGluIGZvdW5kYXRpb24tdHlwb2dyYXBoeS1iYXNlIHtcbiAgLy8gVHlwb2dyYXBoeSByZXNldHNcbiAgZGl2LFxuICBkbCxcbiAgZHQsXG4gIGRkLFxuICB1bCxcbiAgb2wsXG4gIGxpLFxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2LFxuICBwcmUsXG4gIGZvcm0sXG4gIHAsXG4gIGJsb2NrcXVvdGUsXG4gIHRoLFxuICB0ZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBQYXJhZ3JhcGhzXG4gIHAge1xuICAgIG1hcmdpbi1ib3R0b206ICRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTtcblxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgIHRleHQtcmVuZGVyaW5nOiAkcGFyYWdyYXBoLXRleHQtcmVuZGVyaW5nO1xuICB9XG5cbiAgLy8gRW1waGFzaXplZCB0ZXh0XG4gIGVtLFxuICBpIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cblxuICAvLyBTdHJvbmcgdGV4dFxuICBzdHJvbmcsXG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gU21hbGwgdGV4dFxuICBzbWFsbCB7XG4gICAgZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgLy8gSGVhZGluZ3NcbiAgaDEsIC5oMSxcbiAgaDIsIC5oMixcbiAgaDMsIC5oMyxcbiAgaDQsIC5oNCxcbiAgaDUsIC5oNSxcbiAgaDYsIC5oNiB7XG4gICAgZm9udC1mYW1pbHk6ICRoZWFkZXItZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJGhlYWRlci1mb250LXN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkaGVhZGVyLWZvbnQtd2VpZ2h0O1xuICAgIGNvbG9yOiAkaGVhZGVyLWNvbG9yO1xuICAgIHRleHQtcmVuZGVyaW5nOiAkaGVhZGVyLXRleHQtcmVuZGVyaW5nO1xuXG4gICAgc21hbGwge1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBjb2xvcjogJGhlYWRlci1zbWFsbC1mb250LWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlYWRpbmcgc3R5bGVzXG4gIEBlYWNoICRzaXplLCAkaGVhZGVycyBpbiAkaGVhZGVyLXN0eWxlcyB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgQGVhY2ggJGhlYWRlciwgJGhlYWRlci1kZWZzIGluICRoZWFkZXJzIHtcbiAgICAgICAgJGZvbnQtc2l6ZS10ZW1wOiAxcmVtO1xuICAgICAgICAjeyRoZWFkZXJ9LCAuI3skaGVhZGVyfSB7XG5cbiAgICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJGhlYWRlci1kZWZzLCBmb250LXNpemUpIHtcbiAgICAgICAgICAgICRmb250LXNpemUtdGVtcDogcmVtLWNhbGMobWFwLWdldCgkaGVhZGVyLWRlZnMsIGZvbnQtc2l6ZSkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGZzKSB7XG4gICAgICAgICAgICAkZm9udC1zaXplLXRlbXA6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBmcykpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXRlbXA7XG4gICAgICAgICAgfSBAZWxzZSBpZiAkc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtdGVtcDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRoZWFkZXItZGVmcywgbGluZS1oZWlnaHQpIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB1bml0bGVzcy1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBsaW5lLWhlaWdodCksICRmb250LXNpemUtdGVtcCk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIGxoKSB7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdW5pdGxlc3MtY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbGgpLCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH0gQGVsc2UgaWYgJHNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHVuaXRsZXNzLWNhbGMoJGhlYWRlci1saW5laGVpZ2h0LCAkZm9udC1zaXplLXRlbXApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi10b3ApIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tdG9wKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG10KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbXQpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1hcmdpbi1ib3R0b20pIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKG1hcC1nZXQoJGhlYWRlci1kZWZzLCBtYXJnaW4tYm90dG9tKSk7XG4gICAgICAgICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkaGVhZGVyLWRlZnMsIG1iKSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyhtYXAtZ2V0KCRoZWFkZXItZGVmcywgbWIpKTtcbiAgICAgICAgICB9IEBlbHNlIGlmICRzaXplID09ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKCRoZWFkZXItbWFyZ2luLWJvdHRvbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGlua3NcbiAgYSB7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICRhbmNob3ItY29sb3I7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbjtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogJGFuY2hvci1jb2xvci1ob3ZlcjtcbiAgICAgIEBpZiAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbi1ob3ZlciAhPSAkYW5jaG9yLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1nIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHJ1bGVcbiAgaHIge1xuICAgIGNsZWFyOiBib3RoO1xuXG4gICAgbWF4LXdpZHRoOiAkaHItd2lkdGg7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogJGhyLW1hcmdpbjtcblxuICAgIGJvcmRlci10b3A6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci1ib3R0b206ICRoci1ib3JkZXI7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cblxuICAvLyBMaXN0c1xuICB1bCxcbiAgb2wsXG4gIGRsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkbGlzdC1tYXJnaW4tYm90dG9tO1xuICAgIGxpc3Qtc3R5bGUtcG9zaXRpb246ICRsaXN0LXN0eWxlLXBvc2l0aW9uO1xuICAgIGxpbmUtaGVpZ2h0OiAkbGlzdC1saW5laGVpZ2h0O1xuICB9XG5cbiAgLy8gTGlzdCBpdGVtc1xuICBsaSB7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICB9XG5cbiAgLy8gVW5vcmRlcmVkIGxpc3RzXG4gIHVsIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6ICRsaXN0LXN0eWxlLXR5cGU7XG4gIH1cblxuICAvLyBPcmRlcmVkIGxpc3RzXG4gIG9sIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1zaWRlLW1hcmdpbjtcbiAgfVxuXG4gIC8vIE5lc3RlZCB1bm9yZGVyZWQvb3JkZXJlZCBsaXN0c1xuICB1bCwgb2wge1xuICAgICYgJiB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbGlzdC1uZXN0ZWQtc2lkZS1tYXJnaW47XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlZmluaXRpb24gbGlzdHNcbiAgZGwge1xuICAgIG1hcmdpbi1ib3R0b206ICRkZWZubGlzdC1tYXJnaW4tYm90dG9tO1xuXG4gICAgZHQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkZGVmbmxpc3QtdGVybS13ZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2txdW90ZXNcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAwIDAgJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tO1xuICAgIHBhZGRpbmc6ICRibG9ja3F1b3RlLXBhZGRpbmc7XG4gICAgYm9yZGVyLSN7JGdsb2JhbC1sZWZ0fTogJGJsb2NrcXVvdGUtYm9yZGVyO1xuXG4gICAgJiwgcCB7XG4gICAgICBsaW5lLWhlaWdodDogJHBhcmFncmFwaC1saW5laGVpZ2h0O1xuICAgICAgY29sb3I6ICRibG9ja3F1b3RlLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC8vIElubGluZSBDaXRhdGlvbnNcbiAgQGlmICgkZW5hYmxlLWNpdGUtYmxvY2sgPT0gdHJ1ZSkge1xuICAgIGNpdGUge1xuICAgICAgLy8gRXh0ZW5kaW5nIGEgY2xhc3MgaXMgbm90IHJlY29tbWVuZGVkLlxuICAgICAgLy8gVE9ETzogQnJlYWsgdGhlIHR5cG9ncmFwaHktYmFzZS90eXBvZ3JhcGh5LWhlbHBlcnMgc2VwYXJhdGlvblxuICAgICAgQGV4dGVuZCAuY2l0ZS1ibG9jaztcbiAgICB9XG4gIH1cblxuICAvLyBBYmJyZXZpYXRpb25zXG4gIGFiYnIsIGFiYnJbdGl0bGVdIHtcbiAgICBib3JkZXItYm90dG9tOiAkYWJici11bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBoZWxwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIEZpZ3VyZXNcbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAvLyBDb2RlXG4gIEBpZiAoJGVuYWJsZS1jb2RlLWlubGluZSA9PSB0cnVlKSB7XG4gICAgY29kZSB7XG4gICAgICBAZXh0ZW5kIC5jb2RlLWlubGluZTtcbiAgICB9XG4gIH1cblxuICAvLyBLZXlzdHJva2VzXG4gIGtiZCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6ICRrZXlzdHJva2UtcGFkZGluZztcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRrZXlzdHJva2UtYmFja2dyb3VuZDtcblxuICAgIGZvbnQtZmFtaWx5OiAka2V5c3Ryb2tlLWZvbnQ7XG4gICAgY29sb3I6ICRrZXlzdHJva2UtY29sb3I7XG5cbiAgICBAaWYgaGFzLXZhbHVlKCRrZXlzdHJva2UtcmFkaXVzKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiAka2V5c3Ryb2tlLXJhZGl1cztcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0eXBvZ3JhcGh5LWhlbHBlcnNcbi8vLy9cblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsZWFkIHBhcmFncmFwaHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIGxlYWQgcGFyYWdyYXBocy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbGluZSBoZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLWxpbmVoZWlnaHQ6IDEuNCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBDb2xvclxuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCB3ZWlnaHQgZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgU3RyaW5nXG4kc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHRvcCBtYXJnaW4gZm9yIHN1YmhlYWRlcnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3ViaGVhZGVyLW1hcmdpbi10b3A6IDAuMnJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmb3Igc3ViaGVhZGVycy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzdWJoZWFkZXItbWFyZ2luLWJvdHRvbTogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IHNpemUgZm9yIHN0YXRpc3RpYyBudW1iZXJzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN0YXQtZm9udC1zaXplOiAyLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBUZXh0IGNvbG9yIGZvciBgLmNpdGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGNpdGUtY29sb3I6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGAuY2l0ZS1ibG9ja2AgY29tcG9uZW50LlxuLy8vIEB0eXBlIE51bWJlclxuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMykgIWRlZmF1bHQ7XG5cbi8vLyBQc2V1ZG8gY29udGVudCBmb3IgYC5jaXRlLWJsb2NrYCBjb21wb25lbnQuXG4vLy8gQHR5cGUgU3RyaW5nXG4kY2l0ZS1wc2V1ZG8tY29udGVudDogJ1xcMjAxNCBcXDAwMjAnICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY29kZS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gRm9udCBmYW1pbHkgb2YgYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBTdHJpbmcgfCBMaXN0XG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZSAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2VpZ2h0IG9mIHRleHQgaW4gYC5jb2RlLWlubGluZWAgYW5kIGAuY29kZS1ibG9ja2AgY29tcG9uZW50cy5cbi8vLyBAdHlwZSBTdHJpbmdcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGAuY29kZS1pbmxpbmVgIGFuZCBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjb2RlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGFyb3VuZCBgLmNvZGUtaW5saW5lYCBhbmQgYC5jb2RlLWJsb2NrYCBjb21wb25lbnRzLlxuLy8vIEB0eXBlIExpc3RcbiRjb2RlLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgYXJvdW5kIHRleHQgb2YgdGhlIGAuY29kZS1pbmxpbmVgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kY29kZS1wYWRkaW5nOiByZW0tY2FsYygyIDUgMSkgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGFyb3VuZCB0ZXh0IG9mIHRoZSBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kY29kZS1ibG9jay1wYWRkaW5nOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIHVuZGVyIHRoZSBgLmNvZGUtYmxvY2tgIGNvbXBvbmVudC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRjb2RlLWJsb2NrLW1hcmdpbi1ib3R0b206IDEuNXJlbSAhZGVmYXVsdDtcblxuQG1peGluIGNpdGUtYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29sb3I6ICRjaXRlLWNvbG9yO1xuICBmb250LXNpemU6ICRjaXRlLWZvbnQtc2l6ZTtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJGNpdGUtcHNldWRvLWNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIEFkZCBiYXNpYyBzdHlsZXMgZm9yIGEgY29kZSBoZWxwZXIuXG4vLy8gU2VlIGBjb2RlLWlubGluZWAgYW5kIGBjb2RlLWJsb2NrYCBtaXhpbnMuXG5AbWl4aW4gY29kZS1zdHlsZSB7XG4gIGJvcmRlcjogJGNvZGUtYm9yZGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZS1iYWNrZ3JvdW5kO1xuXG4gIGZvbnQtZmFtaWx5OiAkY29kZS1mb250LWZhbWlseTtcbiAgZm9udC13ZWlnaHQ6ICRjb2RlLWZvbnQtd2VpZ2h0O1xuICBjb2xvcjogJGNvZGUtY29sb3I7XG59XG5cbi8vLyBNYWtlIGNvZGUgaGVscGVyIGZyb20gdGhlIGBjb2RlLXN0eWxlYCBtaXhpbiBpbmxpbmUuXG4vLy8gVXNlZCB0byBnZW5lcmF0ZSBgLmNvZGUtaW5saW5lYFxuQG1peGluIGNvZGUtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcblxuICBwYWRkaW5nOiAkY29kZS1wYWRkaW5nO1xufVxuXG4vLy8gTWFrZSBjb2RlIGhlbHBlciBmcm9tIHRoZSBgY29kZS1zdHlsZWAgbWl4aW4gYSBibG9jay5cbi8vLyBVc2VkIHRvIGdlbmVyYXRlIGAuY29kZS1ibG9ja2BcbkBtaXhpbiBjb2RlLWJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuXG4gIHBhZGRpbmc6ICRjb2RlLWJsb2NrLXBhZGRpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRjb2RlLWJsb2NrLW1hcmdpbi1ib3R0b207XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXR5cG9ncmFwaHktaGVscGVycyB7XG4gIC8vIFVzZSB0byBjcmVhdGUgYSBzdWJoZWFkaW5nIHVuZGVyIGEgbWFpbiBoZWFkZXJcbiAgLy8gTWFrZSBzdXJlIHlvdSBwYWlyIHRoZSB0d28gZWxlbWVudHMgaW4gYSA8aGVhZGVyPiBlbGVtZW50LCBsaWtlIHRoaXM6XG4gIC8vIDxoZWFkZXI+XG4gIC8vICAgPGgxPkhlYWRpbmc8L2gxPlxuICAvLyAgIDxoMj5TdWJoZWFkaW5nPC9oMj5cbiAgLy8gPC9oZWFkZXI+XG4gIC5zdWJoZWFkZXIge1xuICAgIG1hcmdpbi10b3A6ICRzdWJoZWFkZXItbWFyZ2luLXRvcDtcbiAgICBtYXJnaW4tYm90dG9tOiAkc3ViaGVhZGVyLW1hcmdpbi1ib3R0b207XG5cbiAgICBmb250LXdlaWdodDogJHN1YmhlYWRlci1mb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJHN1YmhlYWRlci1saW5laGVpZ2h0O1xuICAgIGNvbG9yOiAkc3ViaGVhZGVyLWNvbG9yO1xuICB9XG5cbiAgLy8gVXNlIHRvIHN0eWxlIGFuIGludHJvZHVjdG9yeSBsZWFkLCBkZWNrLCBibHVyYiwgZXRjLlxuICAubGVhZCB7XG4gICAgZm9udC1zaXplOiAkbGVhZC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRsZWFkLWxpbmVoZWlnaHQ7XG4gIH1cblxuICAvLyBVc2UgdG8gc3R5bGUgYSBsYXJnZSBudW1iZXIgdG8gZGlzcGxheSBhIHN0YXRpc3RpY1xuICAuc3RhdCB7XG4gICAgZm9udC1zaXplOiAkc3RhdC1mb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBwICsgJiB7XG4gICAgICBtYXJnaW4tdG9wOiAtMXJlbTtcbiAgICB9XG4gIH1cblxuICB1bCwgb2wge1xuICAgIC8vIFVzZSB0byByZW1vdmUgbnVtYmVycyBmcm9tIG9yZGVyZWQgbGlzdCAmIGJ1bGxldHMgZnJvbSB1bm9yZGVyZWQgbGlzdFxuICAgICYubm8tYnVsbGV0IHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5jaXRlLWJsb2NrIHtcbiAgICBAaW5jbHVkZSBjaXRlLWJsb2NrO1xuICB9XG5cbiAgLmNvZGUtaW5saW5lIHtcbiAgICBAaW5jbHVkZSBjb2RlLXN0eWxlO1xuICAgIEBpbmNsdWRlIGNvZGUtaW5saW5lO1xuICB9XG5cbiAgLmNvZGUtYmxvY2sge1xuICAgIEBpbmNsdWRlIGNvZGUtc3R5bGU7XG4gICAgQGluY2x1ZGUgY29kZS1ibG9jaztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi10ZXh0LWFsaWdubWVudCB7XG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgIEBlYWNoICRhbGlnbiBpbiAobGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LSN7JGFsaWdufSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiAkYWxpZ247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAudGV4dC0jeyRhbGlnbn0ge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogJGFsaWduO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSWYgYHRydWVgLCBhbGwgZWxlbWVudHMgd2lsbCBoYXZlIHRyYW5zcGFyZW50IGJhY2tncm91bmRzIHdoZW4gcHJpbnRlZCwgdG8gc2F2ZSBvbiBpbmsuXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBncm91cCBnbG9iYWxcbiRwcmludC10cmFuc3BhcmVudC1iYWNrZ3JvdW5kczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgZGlzcGxheXMgbmV4dCB0byBhbGwgbGlua3MgdGhlaXIgXCJocmVmXCIgd2hlbiBwcmludGVkLlxuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAZ3JvdXAgZ2xvYmFsXG4kcHJpbnQtaHJlZnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIHNhc3MtbGludDpkaXNhYmxlLWFsbFxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcmludC1zdHlsZXMge1xuICAuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICBAbWVkaWEgcHJpbnQge1xuICAgICoge1xuICAgICAgLy8gRW5zdXJlIGEgXCJibGFjay1vbi13aGl0ZVwiIHByaW50IGJ5IHJlbW92aW5nIGJhY2tncm91bmRzLFxuICAgICAgLy8gdXNpbmcgYmxhY2sgdGV4dCBldmVyeXdoZXJlIGFuZCBmb3JjaW5nIHRoZSBicm93c2VyIHRvIGVjb25vbWl6ZSBpbmsuXG4gICAgICBAaWYgJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7IC8vIEJsYWNrIHByaW50cyBmYXN0ZXI6IGg1YnAuY29tL3NcbiAgICAgICAgY29sb3ItYWRqdXN0OiBlY29ub215O1xuICAgICAgfVxuICAgICAgLy8gT3RoZXJ3aXNlLCBwcmV2ZW50IGFueSBlY29ub215IGJ5IHRoZSBicm93c2VyLlxuICAgICAgQGVsc2Uge1xuICAgICAgICBjb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgfVxuXG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICAuaGlkZS1mb3ItcHJpbnQgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuICAgIHRhYmxlLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfVxuICAgIHRoZWFkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwICFpbXBvcnRhbnQ7IH1cbiAgICB0Ym9keS5zaG93LWZvci1wcmludCB7IGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cCAhaW1wb3J0YW50OyB9XG4gICAgdHIuc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfVxuICAgIHRkLnNob3ctZm9yLXByaW50IHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9XG4gICAgdGguc2hvdy1mb3ItcHJpbnQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH1cblxuICAgIC8vIERpc3BsYXkgdGhlIFVSTCBvZiBhIGxpbmsgYWZ0ZXIgdGhlIHRleHRcbiAgICBhLFxuICAgIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO31cbiAgICBAaWYgJHByaW50LWhyZWZzIHtcbiAgICAgIGFbaHJlZl06YWZ0ZXIgeyBjb250ZW50OiAnICgnIGF0dHIoaHJlZikgJyknOyB9XG4gICAgfVxuXG4gICAgLy8gRG9uJ3QgZGlzcGxheSB0aGUgVVJMIGZvciBpbWFnZXMgb3IgSmF2YVNjcmlwdC9pbnRlcm5hbCBsaW5rc1xuICAgIC5pciBhOmFmdGVyLFxuICAgIGFbaHJlZl49J2phdmFzY3JpcHQ6J106YWZ0ZXIsXG4gICAgYVtocmVmXj0nIyddOmFmdGVyIHsgY29udGVudDogJyc7IH1cblxuICAgIC8vIERpc3BsYXkgd2hhdCBhbiBhYmJyZXZpYXRpb24gc3RhbmRzIGZvciBhZnRlciB0aGUgdGV4dFxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHsgY29udGVudDogJyAoJyBhdHRyKHRpdGxlKSAnKSc7IH1cblxuICAgIC8vIFByZXZlbnQgcGFnZSBicmVha3MgaW4gdGhlIG1pZGRsZSBvZiBhIGJsb2NrcXVvdGUgb3IgcHJlZm9ybWF0dGVkIHRleHQgYmxvY2tcbiAgICBwcmUsXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAkZGFyay1ncmF5O1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC8vIGg1YnAuY29tL3RcbiAgICB0aGVhZCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxuXG4gICAgdHIsXG4gICAgaW1nIHsgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG5cbiAgICBpbWcgeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4gICAgQHBhZ2UgeyBtYXJnaW46IDAuNWNtOyB9XG5cbiAgICBwLFxuICAgIGgyLFxuICAgIGgzIHtcbiAgICAgIG9ycGhhbnM6IDM7XG4gICAgICB3aWRvd3M6IDM7XG4gICAgfVxuXG4gICAgLy8gQXZvaWQgcGFnZSBicmVha3MgYWZ0ZXIgYSBoZWFkaW5nXG4gICAgaDIsXG4gICAgaDMgeyBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfVxuXG4gICAgLy8gSGVscGVyIHRvIHJlLWFsbG93IHBhZ2UgYnJlYWtzIGluIHRoZSBtaWRkbGUgb2YgY2VydGFpbiBlbGVtZW50cyAoZS5nLiBwcmUsIGJsb2NrcXVvdGUsIHRyKVxuICAgIC5wcmludC1icmVhay1pbnNpZGUge1xuICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gVGhlIG1heGltdW0gd2lkdGggb2YgYSByb3cuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1yb3ctd2lkdGg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgZGVmYXVsdCBjb2x1bW4gY291bnQgb2YgYSBncmlkLiBDaGFuZ2luZyB0aGlzIHZhbHVlIGFmZmVjdHMgdGhlIGxvZ2ljIG9mIHRoZSBncmlkIG1peGlucywgYW5kIHRoZSBudW1iZXIgb2YgQ1NTIGNsYXNzZXMgb3V0cHV0LlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29sdW1uLWNvdW50OiAxMiAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiBjb2x1bW5zIGF0IGRpZmZlcmVudCBzY3JlZW4gc2l6ZXMuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4vLy8gQHNpbmNlIDYuMS4wXG4kZ3JpZC1jb2x1bW4tZ3V0dGVyOiAoXG4gIHNtYWxsOiAyMHB4LFxuICBtZWRpdW06IDMwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0aGUgbGFzdCBjb2x1bW4gaW4gYSByb3cgd2lsbCBhbGlnbiB0byB0aGUgb3Bwb3NpdGUgZWRnZSBvZiB0aGUgcm93LlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2VsZWN0b3IgdXNlZCBmb3IgYW4gYWxpYXMgb2YgY29sdW1uICh3aXRoIEBleHRlbmQpLiBJZiBgZmFsc2VgLCBubyBhbGlhcyBpcyBjcmVhdGVkLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucycgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgaGlnaGVzdCBudW1iZXIgb2YgYC54LXVwYCBjbGFzc2VzIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZSBibG9jayBncmlkIENTUy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcblxuLy8gSW50ZXJuYWwgdmFsdWUgdG8gc3RvcmUgdGhlIGVuZCBjb2x1bW4gZmxvYXQgZGlyZWN0aW9uXG4kLXpmLWVuZC1mbG9hdDogaWYoJGdyaWQtY29sdW1uLWFsaWduLWVkZ2UsICRnbG9iYWwtcmlnaHQsICRnbG9iYWwtbGVmdCk7XG5cbkBpbXBvcnQgJ3Jvdyc7XG5AaW1wb3J0ICdjb2x1bW4nO1xuQGltcG9ydCAnc2l6ZSc7XG5AaW1wb3J0ICdwb3NpdGlvbic7XG5AaW1wb3J0ICdndXR0ZXInO1xuQGltcG9ydCAnY2xhc3Nlcyc7XG5AaW1wb3J0ICdsYXlvdXQnO1xuXG5AaW1wb3J0ICdmbGV4LWdyaWQnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIENoYW5nZSB0aGUgYmVoYXZpb3Igb2YgY29sdW1ucyBkZWZpbmVkIGluc2lkZSB0aGlzIG1peGluIHRvIHVzZSBhIGRpZmZlcmVudCBjb2x1bW4gY291bnQuXG4vLy8gQGNvbnRlbnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyAtIE51bWJlciBvZiBjb2x1bW5zIHRvIHVzZS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRyb290IFtmYWxzZV1cbi8vLyAgIElmIGBmYWxzZWAsIHNlbGVjdG9ycyBpbnNpZGUgdGhpcyBtaXhpbiB3aWxsIG5lc3QgaW5zaWRlIHRoZSBwYXJlbnQgc2VsZWN0b3IuXG4vLy8gICBJZiBgdHJ1ZWAsIHNlbGVjdG9ycyB3aWxsIG5vdCBuZXN0LlxuQG1peGluIGdyaWQtY29udGV4dChcbiAgJGNvbHVtbnMsXG4gICRyb290OiBmYWxzZVxuKSB7XG4gIC8vIFN0b3JlIHRoZSBjdXJyZW50IGNvbHVtbiBjb3VudCBzbyBpdCBjYW4gYmUgcmUtc2V0IGxhdGVyXG4gICRvbGQtZ3JpZC1jb2x1bW4tY291bnQ6ICRncmlkLWNvbHVtbi1jb3VudDtcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkY29sdW1ucyAhZ2xvYmFsO1xuXG4gIEBpZiAkcm9vdCB7XG4gICAgQGF0LXJvb3QgeyBAY29udGVudDsgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gIC8vIFJlc3RvcmUgdGhlIG9sZCBjb2x1bW4gY291bnRcbiAgJGdyaWQtY29sdW1uLWNvdW50OiAkb2xkLWdyaWQtY29sdW1uLWNvdW50ICFnbG9iYWw7XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCByb3cuXG4vLy8gQGNvbnRlbnRcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkY29sdW1ucyBbbnVsbF0gLSBDb2x1bW4gY291bnQgZm9yIHRoaXMgcm93LiBgbnVsbGAgd2lsbCB1c2UgdGhlIGRlZmF1bHQgY29sdW1uIGNvdW50LlxuLy8vIEBwYXJhbSB7S2V5d29yZHN9ICRiZWhhdmlvciBbbnVsbF1cbi8vLyAgIE1vZGlmaWNhdGlvbnMgdG8gdGhlIGRlZmF1bHQgZ3JpZCBzdHlsZXMuIGBuZXN0YCBpbmRpY2F0ZXMgdGhlIHJvdyB3aWxsIGJlIHBsYWNlZCBpbnNpZGUgYW5vdGhlciByb3cuIGBjb2xsYXBzZWAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbHVtbnMgaW5zaWRlIHRoaXMgcm93IHdpbGwgbm90IGhhdmUgcGFkZGluZy4gYG5lc3QgY29sbGFwc2VgIGNvbWJpbmVzIGJvdGggYmVoYXZpb3JzLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRjZiBbdHJ1ZV0gLSBXaGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlIGEgY2xlYXJmaXguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLXJvdyhcbiAgJGNvbHVtbnM6IG51bGwsXG4gICRiZWhhdmlvcjogbnVsbCxcbiAgJHNpemU6ICRncmlkLXJvdy13aWR0aCxcbiAgJGNmOiB0cnVlLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gICRtYXJnaW46IGF1dG87XG5cbiAgQGlmIGluZGV4KCRiZWhhdmlvciwgbmVzdCkgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3V0dGVycyk7XG5cbiAgICBAaWYgaW5kZXgoJGJlaGF2aW9yLCBjb2xsYXBzZSkgIT0gbnVsbCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LXNpemUoJHNpemUpO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxuXG4gIEBpZiAkY2Yge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9XG5cbiAgQGlmICRjb2x1bW5zICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtY29udGV4dCgkY29sdW1ucykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBJbnZlcnRzIHRoZSBtYXJnaW5zIG9mIGEgcm93IHRvIG5lc3QgaXQgaW5zaWRlIG9mIGEgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucy4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBncmlkLXJvdy1uZXN0KCRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyKSB7XG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgICRtYXJnaW46IHJlbS1jYWxjKC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkLXpmLXNpemUpKSAvIDIgKiAtMTtcblxuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxufVxuXG4vLy8gU2V0IGEgZ3JpZCByb3cgc2l6ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgWyRncmlkLXJvdy13aWR0aF0gTWF4aW11bSBzaXplIG9mIHRoZSByb3cuIFNldCB0byBgZXhwYW5kYCB0byBtYWtlIHRoZSByb3cgdGFraW5nIHRoZSBmdWxsIHdpZHRoLlxuQG1peGluIGdyaWQtcm93LXNpemUoJHNpemU6ICRncmlkLXJvdy13aWR0aCkge1xuICBAaWYgJHNpemUgPT0gZXhwYW5kIHtcbiAgICAkc2l6ZTogbm9uZTtcbiAgfVxuXG4gIG1heC13aWR0aDogJHNpemU7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgYSBjb2x1bW4gYmFzZWQgb24gYSBudW1iZXIgb2YgZmFjdG9ycy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRjb2x1bW5zXG4vLy8gICBXaWR0aCBvZiB0aGUgY29sdW1uLiBBY2NlcHRzIG11bHRpcGxlIHZhbHVlczpcbi8vLyAgIC0gQSBwZXJjZW50YWdlIHZhbHVlIHdpbGwgbWFrZSB0aGUgY29sdW1uIHRoYXQgZXhhY3Qgc2l6ZS5cbi8vLyAgIC0gQSBzaW5nbGUgZGlnaXQgd2lsbCBtYWtlIHRoZSBjb2x1bW4gc3BhbiB0aGF0IG51bWJlciBvZiBjb2x1bW5zIHdpZGUsIHRha2luZyBpbnRvIGFjY291bnQgdGhlIGNvbHVtbiBjb3VudCBvZiB0aGUgcGFyZW50IHJvdy5cbi8vLyAgIC0gQSBsaXN0IG9mIHRoZSBmb3JtYXQgXCJ4IG9mIHlcIiAod2l0aG91dCBxdW90ZXMpIHdpbGwgbWFrZSBhIGNvbHVtbiB0aGF0IGlzICp4KiBjb2x1bW5zIHdpZGUsIGFzc3VtaW5nICp5KiB0b3RhbCBjb2x1bW5zIGZvciB0aGUgcGFyZW50LlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBjYWxjdWxhdGVkIHBlcmNlbnRhZ2UgdmFsdWUuXG5AZnVuY3Rpb24gZ3JpZC1jb2x1bW4oJGNvbHVtbnMpIHtcbiAgQHJldHVybiBmcmFjdGlvbi10by1wZXJjZW50YWdlKCRjb2x1bW5zLCAkZGVub21pbmF0b3I6ICRncmlkLWNvbHVtbi1jb3VudCk7XG59XG5cbi8vLyBDcmVhdGVzIGEgZ3JpZCBjb2x1bW4uXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbi8vLyBAcGFyYW0ge01peGVkfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBTcGFjaW5nIGJldHdlZW4gY29sdW1ucy4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbkBtaXhpbiBncmlkLWNvbHVtbihcbiAgJGNvbHVtbnM6ICRncmlkLWNvbHVtbi1jb3VudCxcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcbiAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcblxuICAvLyBHdXR0ZXJzXG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyczogJGd1dHRlcnMpO1xuXG4gIC8vIFBvc2l0aW9uXG4gIEBpbmNsdWRlIGdyaWQtY29sLXBvcyhhdXRvKTtcbn1cblxuLy8vIENyZWF0ZXMgYSBncmlkIGNvbHVtbiByb3cuIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYWRkaW5nIGAucm93YCBhbmQgYC5jb2x1bW5gIHRvIHRoZSBzYW1lIGVsZW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBXaWR0aCBvZiB0aGUgZ3V0dGVycyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgY29sdW1uIHJvdy4gUmVmZXIgdG8gdGhlIGBncmlkLWNvbHVtbi1ndXR0ZXIoKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbkBtaXhpbiBncmlkLWNvbHVtbi1yb3coXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgZ3JpZC1yb3c7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uKCRndXR0ZXJzOiAkZ3V0dGVycyk7XG5cbiAgJixcbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uXG5AZnVuY3Rpb24gZ3JpZC1jb2woXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICBAcmV0dXJuIGdyaWQtY29sdW1uKCRjb2x1bW5zKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uKClgLlxuLy8vIEBhbGlhcyBncmlkLWNvbHVtblxuQG1peGluIGdyaWQtY29sKFxuICAkY29sdW1uczogJGdyaWQtY29sdW1uLWNvdW50LFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uKCRjb2x1bW5zLCAkZ3V0dGVycyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1yb3coKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXJvd1xuQG1peGluIGdyaWQtY29sLXJvdyhcbiAgJGd1dHRlcnM6ICRncmlkLWNvbHVtbi1ndXR0ZXJcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1yb3coJGd1dHRlcnMpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGdyaWRcbi8vLy9cblxuLy8vIFNldCB0aGUgd2lkdGggb2YgYSBncmlkIGNvbHVtbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICR3aWR0aCBbJGdyaWQtY29sdW1uLWNvdW50XSAtIFdpZHRoIHRvIG1ha2UgdGhlIGNvbHVtbi4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIGZ1bmN0aW9uLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICB3aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tc2l6ZSgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tc2l6ZVxuQG1peGluIGdyaWQtY29sLXNpemUoXG4gICRjb2x1bW5zOiAkZ3JpZC1jb2x1bW4tY291bnRcbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1zaXplKCRjb2x1bW5zKTtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBSZXBvc2l0aW9uIGEgY29sdW1uLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJHBvc2l0aW9uIC0gSXQgY2FuIGJlOlxuLy8vICAgKiBBIG51bWJlcjogVGhlIGNvbHVtbiB3aWxsIG1vdmUgZXF1YWwgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gY291bnRcbi8vLyAgICAgc3BlY2lmaWVkLiBBIHBvc2l0aXZlIG51bWJlciB3aWxsIHB1c2ggdGhlIGNvbHVtbiB0byB0aGUgcmlnaHQsIHdoaWxlXG4vLy8gICAgIGEgbmVnYXRpdmUgbnVtYmVyIHdpbGwgcHVsbCBpdCB0byB0aGUgbGVmdC5cbi8vLyAgICogYGNlbnRlcmA6IENvbHVtbiB3aWxsIGJlIGNlbnRlcmVkXG4vLy8gICAqIGBhdXRvYDogQ29sdW1uIHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBsZWZ0IChvciB0byB0aGUgcmlnaHQgZm9yIHRoZSBsYXN0IGNvbHVtbikuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tcG9zaXRpb24oJHBvc2l0aW9uKSB7XG4gIC8vIEF1dG8gcG9zaXRpb25pbmdcbiAgQGlmICRwb3NpdGlvbiA9PSBhdXRvIHtcbiAgICAmLCAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgIC8vIExhc3QgY29sdW1uIGFsaWdubWVudFxuICAgIEBpZiAkZ3JpZC1jb2x1bW4tYWxpZ24tZWRnZSB7XG4gICAgICAmOmxhc3QtY2hpbGQ6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICBmbG9hdDogJGdsb2JhbC1yaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQdXNoL3B1bGxcbiAgQGVsc2UgaWYgdHlwZS1vZigkcG9zaXRpb24pID09ICdudW1iZXInIHtcbiAgICAkb2Zmc2V0OiBwZXJjZW50YWdlKCRwb3NpdGlvbiAvICRncmlkLWNvbHVtbi1jb3VudCk7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkb2Zmc2V0O1xuICB9XG5cbiAgLy8gQ2VudGVyIHBvc2l0aW9uaW5nXG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBjZW50ZXIge1xuICAgICYsICY6bGFzdC1jaGlsZDpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1dyb25nIHN5bnRheCBmb3IgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKS4gRW50ZXIgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBudW1iZXIsIFwiY2VudGVyXCIgb3IgXCJhdXRvXCIuJztcbiAgfVxufVxuXG4vLy8gUmVzZXQgYSBwb3NpdGlvbiBkZWZpbml0aW9uLlxuQG1peGluIGdyaWQtY29sdW1uLXVucG9zaXRpb24ge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbihhdXRvKTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLy8vIE9mZnNldHMgYSBjb2x1bW4gdG8gdGhlIHJpZ2h0IGJ5IGAkbmAgY29sdW1ucy5cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkbiAtIFdpZHRoIHRvIG9mZnNldCBieS4gWW91IGNhbiBwYXNzIGluIGFueSB2YWx1ZSBhY2NlcHRlZCBieSB0aGUgYGdyaWQtY29sdW1uKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuQG1peGluIGdyaWQtY29sdW1uLW9mZnNldCgkbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiBncmlkLWNvbHVtbigkbik7XG59XG5cbi8vLyBEaXNhYmxlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBsYXN0IGNvbHVtbiBpbiBhIHJvdyBhbGlnbmluZyB0byB0aGUgb3Bwb3NpdGUgZWRnZS5cbkBtaXhpbiBncmlkLWNvbHVtbi1lbmQge1xuICAvLyBUaGlzIGV4dHJhIHNwZWNpZmljaXR5IGlzIHJlcXVpcmVkIGZvciB0aGUgcHJvcGVydHkgdG8gYmUgYXBwbGllZFxuICAmOmxhc3QtY2hpbGQ6bGFzdC1jaGlsZCB7XG4gICAgZmxvYXQ6ICRnbG9iYWwtbGVmdDtcbiAgfVxufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tcG9zaXRpb24oKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLXBvc2l0aW9uXG5AbWl4aW4gZ3JpZC1jb2wtcG9zKCRwb3NpdGlvbikge1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1wb3NpdGlvbigkcG9zaXRpb24pO1xufVxuXG4vLy8gU2hvcnRoYW5kIGZvciBgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvblxuQG1peGluIGdyaWQtY29sLXVucG9zIHtcbiAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tdW5wb3NpdGlvbjtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLW9mZnNldCgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tb2Zmc2V0XG5AbWl4aW4gZ3JpZC1jb2wtb2ZmKCRuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLW9mZnNldCgkbik7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1lbmQoKWAuXG4vLy8gQGFsaWFzIGdyaWQtY29sdW1uLWVuZFxuQG1peGluIGdyaWQtY29sLWVuZCB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWVuZDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTZXQgdGhlIGd1dHRlcnMgb24gYSBjb2x1bW5cbi8vLyBAcGFyYW0ge051bWJlcnxLZXl3b3JkfSAkZ3V0dGVyIFthdXRvXVxuLy8vICAgU3BhY2luZyBiZXR3ZWVuIGNvbHVtbnMsIGFjY2VwdHMgbXVsdGlwbGUgdmFsdWVzOlxuLy8vICAgLSBBIHNpbmdsZSB2YWx1ZSB3aWxsIG1ha2UgdGhlIGd1dHRlciB0aGF0IGV4YWN0IHNpemUuXG4vLy8gICAtIEEgYnJlYWtwb2ludCBuYW1lIHdpbGwgbWFrZSB0aGUgZ3V0dGVyIHRoZSBjb3JyZXNwb25kaW5nIHNpemUgaW4gdGhlICRndXR0ZXJzIG1hcC5cbi8vLyAgIC0gXCJhdXRvXCIgd2lsbCBtYWtlIHRoZSBndXR0ZXIgcmVzcG9uc2l2ZSwgdXNpbmcgdGhlICRndXR0ZXJzIG1hcCB2YWx1ZXMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2UuIFJlc3BvbnNpdmUgZ3V0dGVyIHNldHRpbmdzIGJ5IGRlZmF1bHQuXG5AbWl4aW4gZ3JpZC1jb2x1bW4tZ3V0dGVyKFxuICAkZ3V0dGVyOiBhdXRvLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKCRndXR0ZXIsICRndXR0ZXJzKSB7XG4gICAgJHBhZGRpbmc6IHJlbS1jYWxjKCQtemYtYnAtdmFsdWUpIC8gMjtcblxuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cbn1cblxuLy8vIENvbGxhcHNlIHRoZSBndXR0ZXJzIG9uIGEgY29sdW1uIGJ5IHJlbW92aW5nIHRoZSBwYWRkaW5nLiAqKk5vdGU6Kiogb25seSB1c2UgdGhpcyBtaXhpbiB3aXRoaW4gYSBicmVha3BvaW50LiBUbyBjb2xsYXBzZSBhIGNvbHVtbidzIGd1dHRlcnMgb24gYWxsIHNjcmVlbiBzaXplcywgdXNlIHRoZSBgJGd1dHRlcmAgcGFyYW1ldGVyIG9mIHRoZSBgZ3JpZC1jb2x1bW4oKWAgbWl4aW4gaW5zdGVhZC5cbkBtaXhpbiBncmlkLWNvbHVtbi1jb2xsYXBzZSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigwKTtcbn1cblxuLy8vIFNob3J0aGFuZCBmb3IgYGdyaWQtY29sdW1uLWd1dHRlcigpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tZ3V0dGVyXG5AbWl4aW4gZ3JpZC1jb2wtZ3V0dGVyKFxuICAkZ3V0dGVyOiBhdXRvLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWd1dHRlcigkZ3V0dGVyLCAkZ3V0dGVycyk7XG59XG5cbi8vLyBTaG9ydGhhbmQgZm9yIGBncmlkLWNvbHVtbi1jb2xsYXBzZSgpYC5cbi8vLyBAYWxpYXMgZ3JpZC1jb2x1bW4tY29sbGFwc2VcbkBtaXhpbiBncmlkLWNvbC1jb2xsYXBzZSB7XG4gIEBpbmNsdWRlIGdyaWQtY29sdW1uLWNvbGxhcHNlO1xufVxuXG4vLy8gU2V0cyBib3R0b20gbWFyZ2luIG9uIGdyaWQgY29sdW1ucyB0byBtYXRjaCBndXR0ZXJzXG4vLy8gQHBhcmFtIHtOdW1iZXJ8S2V5d29yZH0gJG1hcmdpbiBbYXV0b11cbi8vLyAgIFRoZSBib3R0b20gbWFyZ2luIG9uIGdyaWQgY29sdW1ucywgYWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtIEEgc2luZ2xlIHZhbHVlIHdpbGwgbWFrZSB0aGUgbWFyZ2luIHRoYXQgZXhhY3Qgc2l6ZS5cbi8vLyAgIC0gQSBicmVha3BvaW50IG5hbWUgd2lsbCBtYWtlIHRoZSBtYXJnaW4gdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSBpbiB0aGUgJG1hcmdpbnMgbWFwLlxuLy8vICAgLSBcImF1dG9cIiB3aWxsIG1ha2UgdGhlIG1hcmdpbiByZXNwb25zaXZlLCB1c2luZyB0aGUgJG1hcmdpbnMgbWFwIHZhbHVlcy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXJnaW5zIFskZ3JpZC1jb2x1bW4tZ3V0dGVyXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgdG8gdXNlLiBSZXNwb25zaXZlIGd1dHRlciBzZXR0aW5ncyBieSBkZWZhdWx0LlxuQG1peGluIGdyaWQtY29sdW1uLW1hcmdpbiAoXG4gICRtYXJnaW46IGF1dG8sXG4gICRtYXJnaW5zOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgQGluY2x1ZGUgLXpmLWJyZWFrcG9pbnQtdmFsdWUoJG1hcmdpbiwgJG1hcmdpbnMpIHtcbiAgICAkbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoJC16Zi1icC12YWx1ZSk7XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG5cbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgZ3JpZFxuLy8vL1xuXG4vLy8gT3V0cHV0cyBDU1MgY2xhc3NlcyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG5AbWl4aW4gZm91bmRhdGlvbi1ncmlkKFxuICAkcm93OiAncm93JyxcbiAgJGNvbHVtbjogJ2NvbHVtbicsXG4gICRjb2x1bW4tcm93OiAnY29sdW1uLXJvdycsXG4gICRndXR0ZXI6ICdndXR0ZXInLFxuICAkcHVzaDogJ3B1c2gnLFxuICAkcHVsbDogJ3B1bGwnLFxuICAkY2VudGVyOiAnY2VudGVyZWQnLFxuICAkdW5jZW50ZXI6ICd1bmNlbnRlcmVkJyxcbiAgJGNvbGxhcHNlOiAnY29sbGFwc2UnLFxuICAkdW5jb2xsYXBzZTogJ3VuY29sbGFwc2UnLFxuICAkb2Zmc2V0OiAnb2Zmc2V0JyxcbiAgJGVuZDogJ2VuZCcsXG4gICRleHBhbmRlZDogJ2V4cGFuZGVkJyxcbiAgJGJsb2NrOiAnYmxvY2snXG4pIHtcbiAgLy8gUm93XG4gIC4jeyRyb3d9IHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdztcblxuICAgIC8vIENvbGxhcHNpbmdcbiAgICAmLiN7JGNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtY29sbGFwc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmVzdGluZ1xuICAgICYgLiN7JHJvd30ge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1yb3ctbmVzdCgkZ3JpZC1jb2x1bW4tZ3V0dGVyKTtcblxuICAgICAgJi4jeyRjb2xsYXBzZX0ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cGFuZGVkIChmdWxsLXdpZHRoKSByb3dcbiAgICAmLiN7JGV4cGFuZGVkfSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG5cbiAgICAgIC4jeyRyb3d9IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguI3skZXhwYW5kZWR9KSAuI3skcm93fSB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJGdyaWQtY29sdW1uLWd1dHRlcikgPT0gJ21hcCcge1xuICAgICAgLy8gU3RhdGljICh1bnJlc3BvbnNpdmUpIHJvdyBndXR0ZXJzXG4gICAgICAvL1xuICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3JpZC1jb2x1bW4tZ3V0dGVyIHtcbiAgICAgICAgJi4jeyRndXR0ZXJ9LSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgICA+IC4jeyRjb2x1bW59IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLWd1dHRlcigkdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtblxuICAuI3skY29sdW1ufSB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2w7XG5cbiAgICBAaWYgJGdyaWQtY29sdW1uLWFsaWduLWVkZ2Uge1xuICAgICAgJi4jeyRlbmR9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtbiByb3dcbiAgLy8gVGhlIGRvdWJsZSAucm93IGNsYXNzIGlzIG5lZWRlZCB0byBidW1wIHVwIHRoZSBzcGVjaWZpY2l0eVxuICAuI3skY29sdW1ufS4jeyRyb3d9LiN7JHJvd30ge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG5cbiAgLy8gVG8gcHJvcGVybHkgbmVzdCBhIGNvbHVtbiByb3csIHBhZGRpbmcgYW5kIG1hcmdpbiBpcyByZW1vdmVkXG4gIC4jeyRyb3d9IC4jeyRjb2x1bW59LiN7JHJvd30uI3skcm93fSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICB9XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW4tY291bnQge1xuICAgICAgLy8gQ29sdW1uIHdpZHRoXG4gICAgICAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtc2l6ZSgkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNvdXJjZSBvcmRlcmluZ1xuICAgICAgQGlmICRpIDwgJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgICAgQGlmICRwdXNoIHtcbiAgICAgICAgICAuI3skLXpmLXNpemV9LSN7JHB1c2h9LSN7JGl9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygkaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICRwdWxsIHtcbiAgICAgICAgICAuI3skLXpmLXNpemV9LSN7JHB1bGx9LSN7JGl9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcygtJGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBPZmZzZXRzXG4gICAgICAkbzogJGkgLSAxO1xuXG4gICAgICBAaWYgJG9mZnNldCB7XG4gICAgICAgIC4jeyQtemYtc2l6ZX0tI3skb2Zmc2V0fS0jeyRvfSB7XG4gICAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2wtb2ZmKCRvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsb2NrIGdyaWRcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRibG9jay1ncmlkLW1heCB7XG4gICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1sYXlvdXQoJGksICcuI3skY29sdW1ufScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgY29sbGFwc2luZ1xuICAgIC4jeyQtemYtc2l6ZX0tI3skY29sbGFwc2V9IHtcbiAgICAgID4gLiN7JGNvbHVtbn0geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxuXG4gICAgICAuI3skcm93fSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLiN7JGV4cGFuZGVkfS4jeyRyb3d9IC4jeyQtemYtc2l6ZX0tI3skY29sbGFwc2V9LiN7JHJvd30ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLiN7JC16Zi1zaXplfS0jeyR1bmNvbGxhcHNlfSB7XG4gICAgICA+IC4jeyRjb2x1bW59IHsgQGluY2x1ZGUgZ3JpZC1jb2wtZ3V0dGVyKCQtemYtc2l6ZSk7IH1cbiAgICB9XG5cbiAgICAvLyBQb3NpdGlvbmluZ1xuICAgIEBpZiAkY2VudGVyIHtcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skY2VudGVyfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXBvcyhjZW50ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEd1dHRlciBhZGp1c3RtZW50XG4gICAgJC1ndXR0ZXItdW5wb3Mtc2VsZWN0b3I6IChcbiAgICAgIGlmKCR1bmNlbnRlciwgJy4jeyQtemYtc2l6ZX0tI3skdW5jZW50ZXJ9JywgbnVsbCksXG4gICAgICBpZigkcHVzaCwgJy4jeyQtemYtc2l6ZX0tI3skcHVzaH0tMCcsIG51bGwpLFxuICAgICAgaWYoJHB1bGwsICcuI3skLXpmLXNpemV9LSN7JHB1bGx9LTAnLCBudWxsKSxcbiAgICApO1xuICAgIEBpZiAoJHVuY2VudGVyIG9yICRwdXNoIG9yICRwdWxsKSB7XG4gICAgICAjeyQtZ3V0dGVyLXVucG9zLXNlbGVjdG9yfSB7XG4gICAgICAgIEBpbmNsdWRlIGdyaWQtY29sLXVucG9zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEJsb2NrIGdyaWQgY29sdW1uc1xuICAuI3skY29sdW1ufS0jeyRibG9ja30ge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW1hcmdpbjtcbiAgfVxuXG4gIEBpZiAkY29sdW1uID09ICdjb2x1bW4nIGFuZCBoYXMtdmFsdWUoJGdyaWQtY29sdW1uLWFsaWFzKSB7XG4gICAgLiN7JGdyaWQtY29sdW1uLWFsaWFzfSB7XG4gICAgICAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1ibG9jayBwbGFjZWhvbGRlci1pbi1leHRlbmRcbiAgICAgIEBleHRlbmQgLmNvbHVtbjtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBncmlkXG4vLy8vXG5cbi8vLyBTaXplcyBjaGlsZCBlbGVtZW50cyBzbyB0aGF0IGAkbmAgbnVtYmVyIG9mIGl0ZW1zIGFwcGVhciBvbiBlYWNoIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBlbGVtZW50cyB0byBkaXNwbGF5IHBlciByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJy5jb2x1bW4nXSAtIFNlbGVjdG9yKHMpIHRvIHVzZSBmb3IgY2hpbGQgZWxlbWVudHMuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJGd1dHRlclxuLy8vICAgVGhlIGd1dHRlciB0byBhcHBseSB0byBjaGlsZCBlbGVtZW50cy4gQWNjZXB0cyBtdWx0aXBsZSB2YWx1ZXM6XG4vLy8gICAtICRncmlkLWNvbHVtbi1ndXR0ZXIgd2lsbCB1c2UgdGhlIHZhbHVlcyBpbiB0aGUgJGdyaWQtY29sdW1uLWd1dHRlciBtYXAsIGluY2x1ZGluZyBicmVha3BvaW50IHNpemVzLlxuLy8vICAgLSBBIGZpeGVkIG51bWVyaWMgdmFsdWUgd2lsbCBhcHBseSB0aGlzIGd1dHRlciB0byBhbGwgYnJlYWtwb2ludHMuXG5AbWl4aW4gZ3JpZC1sYXlvdXQoXG4gICRuLFxuICAkc2VsZWN0b3I6ICcuY29sdW1uJyxcbiAgJGd1dHRlcjogbnVsbFxuKSB7XG4gICYgPiAjeyRzZWxlY3Rvcn0ge1xuICAgIGZsb2F0OiAkZ2xvYmFsLWxlZnQ7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgICAvLyBJZiBhICRndXR0ZXIgdmFsdWUgaXMgcGFzc2VkXG4gICAgQGlmKCRndXR0ZXIpIHtcbiAgICAgIC8vIEd1dHRlcnNcbiAgICAgIEBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdtYXAnIHtcbiAgICAgICAgQGVhY2ggJGJyZWFrcG9pbnQsICR2YWx1ZSBpbiAkZ3V0dGVyIHtcbiAgICAgICAgICAkcGFkZGluZzogcmVtLWNhbGMoJHZhbHVlKSAvIDI7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiB0eXBlLW9mKCRndXR0ZXIpID09ICdudW1iZXInIGFuZCBzdHJpcC11bml0KCRndXR0ZXIpID4gMCB7XG4gICAgICAgICRwYWRkaW5nOiByZW0tY2FsYygkZ3V0dGVyKSAvIDI7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoMW4pIHtcbiAgICAgIGNsZWFyOiBub25lO1xuICAgIH1cblxuICAgICY6bnRoLW9mLXR5cGUoI3skbn1uKzEpIHtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBmbG9hdDogJGdsb2JhbC1sZWZ0O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBleHRyYSBDU1MgdG8gYmxvY2sgZ3JpZCBjaGlsZHJlbiBzbyB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgcm93IGNlbnRlciBhdXRvbWF0aWNhbGx5LiBBcHBseSB0aGlzIHRvIHRoZSBjb2x1bW5zLCBub3QgdGhlIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBpdGVtcyB0aGF0IGFwcGVhciBpbiBlYWNoIHJvdy5cbkBtaXhpbiBncmlkLWxheW91dC1jZW50ZXItbGFzdCgkbikge1xuICBAZm9yICRpIGZyb20gMSB0byAkbiB7XG4gICAgQGlmICRpID09IDEge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogKDEwMCAtIDEwMC8kbiAqICRpKSAvIDIgKiAxJTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJjpudGgtY2hpbGQoI3skbn1uKzEpOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAoMTAwIC0gMTAwLyRuICogJGkpIC8gMiAqIDElO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZsZXgtZ3JpZFxuLy8vL1xuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgYSBmbGV4IGdyaWQgcm93LlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfExpc3R9ICRiZWhhdmlvciBbbnVsbF1cbi8vLyAgIE1vZGlmaWNhdGlvbnMgdG8gdGhlIGRlZmF1bHQgZ3JpZCBzdHlsZXMuIGBuZXN0YCBpbmRpY2F0ZXMgdGhlIHJvdyB3aWxsIGJlIHBsYWNlZCBpbnNpZGUgYW5vdGhlciByb3cuIGBjb2xsYXBzZWAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbHVtbnMgaW5zaWRlIHRoaXMgcm93IHdpbGwgbm90IGhhdmUgcGFkZGluZy4gYG5lc3QgY29sbGFwc2VgIGNvbWJpbmVzIGJvdGggYmVoYXZpb3JzLlxuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFskZ3JpZC1yb3ctd2lkdGhdIE1heGltdW0gc2l6ZSBvZiB0aGUgcm93LiBTZXQgdG8gYGV4cGFuZGAgdG8gbWFrZSB0aGUgcm93IHRha2luZyB0aGUgZnVsbCB3aWR0aC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGNvbHVtbnMgW251bGxdIC0gTnVtYmVyIG9mIGNvbHVtbnMgdG8gdXNlIGZvciB0aGlzIHJvdy4gSWYgc2V0IHRvIGBudWxsYCAodGhlIGRlZmF1bHQpLCB0aGUgZ2xvYmFsIGNvbHVtbiBjb3VudCB3aWxsIGJlIHVzZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkYmFzZSBbdHJ1ZV0gLSBTZXQgdG8gYGZhbHNlYCB0byBwcmV2ZW50IGJhc2ljIHN0eWxlcyBmcm9tIGJlaW5nIG91dHB1dC4gVXNlZnVsIGlmIHlvdSdyZSBjYWxsaW5nIHRoaXMgbWl4aW4gb24gdGhlIHNhbWUgZWxlbWVudCB0d2ljZSwgYXMgaXQgcHJldmVudHMgZHVwbGljYXRlIENTUyBvdXRwdXQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBTZXQgdG8gYGZhbHNlYCB0byBoYXZlIHJvdyB3cmFwcGluZyBiZWhhdmlvciBzZXQgdG8gbm93cmFwXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtY29sdW1uLWd1dHRlcl0gLSBHdXR0ZXIgbWFwIG9yIHNpbmdsZSB2YWx1ZSB0byB1c2Ugd2hlbiBpbnZlcnRpbmcgbWFyZ2lucywgaW4gY2FzZSB0aGUgcm93IGlzIG5lc3RlZC4gUmVzcG9uc2l2ZSBndXR0ZXIgc2V0dGluZ3MgYnkgZGVmYXVsdC5cbkBtaXhpbiBmbGV4LWdyaWQtcm93KFxuICAkYmVoYXZpb3I6IG51bGwsXG4gICRzaXplOiAkZ3JpZC1yb3ctd2lkdGgsXG4gICRjb2x1bW5zOiBudWxsLFxuICAkYmFzZTogdHJ1ZSxcbiAgJHdyYXA6IHRydWUsXG4gICRndXR0ZXJzOiAkZ3JpZC1jb2x1bW4tZ3V0dGVyXG4pIHtcbiAgJG1hcmdpbjogYXV0bztcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xuXG4gIEBpZiBpbmRleCgkYmVoYXZpb3IsIG5lc3QpICE9IG51bGwge1xuICAgIEBpbmNsdWRlIGdyaWQtcm93LW5lc3QoJGd1dHRlcnMpO1xuXG4gICAgQGlmIGluZGV4KCRiZWhhdmlvciwgY29sbGFwc2UpICE9IG51bGwge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKCRzaXplKTtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIH1cblxuICBAaWYgJGJhc2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgJHdyYXA7XG4gIH1cblxuICBAaWYgJGNvbHVtbnMgIT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb250ZXh0KCRjb2x1bW5zLCAkYmFzZSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBDYWxjdWxhdGVzIHRoZSBgZmxleGAgcHJvcGVydHkgZm9yIGEgZmxleCBncmlkIGNvbHVtbi4gSXQgYWNjZXB0cyBhbGwgb2YgdGhlIHNhbWUgdmFsdWVzIGFzIHRoZSBiYXNpYyBgZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24sIGFsb25nIHdpdGggdHdvIGV4dHJhczpcbi8vLyAgIC0gYGV4cGFuZGAgKHRoZSBkZWZhdWx0KSB3aWxsIG1ha2UgdGhlIGNvbHVtbiBleHBhbmQgdG8gZmlsbCBzcGFjZS5cbi8vLyAgIC0gYHNocmlua2Agd2lsbCBtYWtlIHRoZSBjb2x1bW4gY29udHJhY3QsIHNvIGl0IG9ubHkgdGFrZXMgdXAgdGhlIGhvcml6b250YWwgc3BhY2UgaXQgbmVlZHMuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uXG5AZnVuY3Rpb24gZmxleC1ncmlkLWNvbHVtbigkY29sdW1uczogZXhwYW5kKSB7XG4gICRmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuXG4gIEBpZiAkY29sdW1ucyA9PSBzaHJpbmsge1xuICAgICRmbGV4OiAwIDAgYXV0bztcbiAgfVxuICBAZWxzZSBpZiAkY29sdW1ucyAhPSBleHBhbmQge1xuICAgICRmbGV4OiAwIDAgZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG5cbiAgQHJldHVybiAkZmxleDtcbn1cblxuLy8vIENyZWF0ZXMgYSBjb2x1bW4gZm9yIGEgZmxleCBncmlkLiBCeSBkZWZhdWx0LCB0aGUgY29sdW1uIHdpbGwgc3RyZXRjaCB0byB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLCBidXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHNpemluZyBjbGFzc2VzLCBvciBieSB1c2luZyB0aGUgYHVuc3RhY2tgIGNsYXNzIG9uIHRoZSBwYXJlbnQgZmxleCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge01peGVkfSAkY29sdW1ucyBbZXhwYW5kXSAtIFdpZHRoIG9mIHRoZSBjb2x1bW4uIFJlZmVyIHRvIHRoZSBgZmxleC1ncmlkLWNvbHVtbigpYCBmdW5jdGlvbiB0byBzZWUgcG9zc2libGUgdmFsdWVzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLWNvbHVtbi1ndXR0ZXJdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycyB3aWR0aC4gU2VlIHRoZSBgZ3JpZC1jb2x1bW4tZ3V0dGVyYCBtaXhpbi5cbkBtaXhpbiBmbGV4LWdyaWQtY29sdW1uKFxuICAkY29sdW1uczogZXhwYW5kLFxuICAkZ3V0dGVyczogJGdyaWQtY29sdW1uLWd1dHRlclxuKSB7XG4gIC8vIEJhc2UgcHJvcGVydGllc1xuICBAaW5jbHVkZSBmbGV4LWdyaWQtc2l6ZSgkY29sdW1ucyk7XG5cbiAgLy8gR3V0dGVyc1xuICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ndXR0ZXIoJGd1dHRlcnM6ICRndXR0ZXJzKTtcblxuICAvLyBmaXhlcyByZWNlbnQgQ2hyb21lIHZlcnNpb24gbm90IGxpbWl0aW5nIGNoaWxkIHdpZHRoXG4gIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0OTM0NTg2L3doaXRlLXNwYWNlLW5vd3JhcC1hbmQtZmxleGJveC1kaWQtbm90LXdvcmstaW4tY2hyb21lXG4gIEBpZiAkY29sdW1ucyA9PSBleHBhbmQge1xuICAgIG1pbi13aWR0aDogMDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGJsb2NrIGdyaWQgZm9yIGEgZmxleCBncmlkIHJvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIE51bWJlciBvZiBjb2x1bW5zIHRvIGRpc3BsYXkgb24gZWFjaCByb3cuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciAtIFNlbGVjdG9yIHRvIHVzZSB0byB0YXJnZXQgY29sdW1ucyB3aXRoaW4gdGhlIHJvdy5cbkBtaXhpbiBmbGV4LWdyaWQtbGF5b3V0KFxuICAkbixcbiAgJHNlbGVjdG9yOiAnLmNvbHVtbidcbikge1xuICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICRwY3Q6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgICBmbGV4OiAwIDAgJHBjdDtcbiAgICBtYXgtd2lkdGg6ICRwY3Q7XG4gIH1cbn1cblxuLy8vIENoYW5nZXMgdGhlIHdpZHRoIGZsZXggZ3JpZCBjb2x1bW4uXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGNvbHVtbnMgW2V4cGFuZF0gLSBXaWR0aCBvZiB0aGUgY29sdW1uLiBSZWZlciB0byB0aGUgYGZsZXgtZ3JpZC1jb2x1bW4oKWAgZnVuY3Rpb24gdG8gc2VlIHBvc3NpYmxlIHZhbHVlcy5cbkBtaXhpbiBmbGV4LWdyaWQtc2l6ZSgkY29sdW1uczogbnVsbCkge1xuICAkY29sdW1uczogJGNvbHVtbnMgb3IgZXhwYW5kO1xuXG4gIGZsZXg6IGZsZXgtZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuXG4gIC8vIG1heC13aWR0aCBmaXhlcyBJRSAxMC8xMSBub3QgcmVzcGVjdGluZyB0aGUgZmxleC1iYXNpcyBwcm9wZXJ0eVxuICBAaWYgJGNvbHVtbnMgIT0gZXhwYW5kIGFuZCAkY29sdW1ucyAhPSBzaHJpbmsge1xuICAgIG1heC13aWR0aDogZ3JpZC1jb2x1bW4oJGNvbHVtbnMpO1xuICB9XG59XG5cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC1ncmlkIHtcbiAgLy8gUm93XG4gIC5yb3cge1xuICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3c7XG5cbiAgICAvLyBOZXN0aW5nIGJlaGF2aW9yXG4gICAgJiAucm93IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1yb3cobmVzdCwgJGJhc2U6IGZhbHNlKTtcblxuICAgICAgJi5jb2xsYXBzZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgcm93XG4gICAgJi5leHBhbmRlZCB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG5cbiAgICAgIC5yb3cge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5leHBhbmRlZCkgLnJvdyB7XG4gICAgICBAaW5jbHVkZSBncmlkLXJvdy1zaXplKGV4cGFuZCk7XG4gICAgfVxuXG4gICAgJi5jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4ge1xuICAgICAgICBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbmRvIG5lZ2F0aXZlIG1hcmdpbnNcbiAgICAvLyBGcm9tIGNvbGxhcHNlZCBjaGlsZFxuICAgICYuaXMtY29sbGFwc2UtY2hpbGQsXG4gICAgJi5jb2xsYXBzZSA+IC5jb2x1bW4gPiAucm93IHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbHVtblxuICAuY29sdW1uIHtcbiAgICBAaW5jbHVkZSBmbGV4LWdyaWQtY29sdW1uO1xuICB9XG5cbiAgLy8gQ29sdW1uIHJvd1xuICAvLyBUaGUgZG91YmxlIC5yb3cgY2xhc3MgaXMgbmVlZGVkIHRvIGJ1bXAgdXAgdGhlIHNwZWNpZmljaXR5XG4gIC5jb2x1bW4ucm93LnJvdyB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAvLyBUbyBwcm9wZXJseSBuZXN0IGEgY29sdW1uIHJvdywgcGFkZGluZyBhbmQgbWFyZ2luIGlzIHJlbW92ZWRcbiAgLnJvdyAuY29sdW1uLnJvdy5yb3cge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1uLWNvdW50IHtcbiAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgIC4jeyQtemYtc2l6ZX0tI3skaX0ge1xuICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCRpKTtcbiAgICAgICAgbWF4LXdpZHRoOiBncmlkLWNvbHVtbigkaSk7XG4gICAgICB9XG5cbiAgICAgIC8vIE9mZnNldHNcbiAgICAgICRvOiAkaSAtIDE7XG5cbiAgICAgIC4jeyQtemYtc2l6ZX0tb2Zmc2V0LSN7JG99IHtcbiAgICAgICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tb2Zmc2V0KCRvKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCbG9jayBncmlkXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkYmxvY2stZ3JpZC1tYXgge1xuICAgICAgLiN7JC16Zi1zaXplfS11cC0jeyRpfSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZ3JpZC1sYXlvdXQoJGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkLXpmLXNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgLy8gU2l6aW5nIChleHBhbmQpXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAuI3skLXpmLXNpemV9LWV4cGFuZCB7XG4gICAgICAgICAgZmxleDogZmxleC1ncmlkLWNvbHVtbigpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEF1dG8tc3RhY2tpbmcvdW5zdGFja2luZ1xuICAgICAgQGF0LXJvb3QgKHdpdGhvdXQ6IG1lZGlhKSB7XG4gICAgICAgIC5yb3cuI3skLXpmLXNpemV9LXVuc3RhY2sge1xuICAgICAgICAgID4gLmNvbHVtbiB7XG4gICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKDEwMCUpO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCQtemYtc2l6ZSkge1xuICAgICAgICAgICAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBjb2xsYXBzaW5nXG4gICAgLiN7JC16Zi1zaXplfS1jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1jb2xsYXBzZTsgfVxuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tdW5jb2xsYXBzZSB7XG4gICAgICA+IC5jb2x1bW4geyBAaW5jbHVkZSBncmlkLWNvbC1ndXR0ZXIoJC16Zi1zaXplKTsgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNpemluZyAoc2hyaW5rKVxuICAuc2hyaW5rIHtcbiAgICBmbGV4OiBmbGV4LWdyaWQtY29sdW1uKHNocmluayk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZCBjb2x1bW5zXG4gIC5jb2x1bW4tYmxvY2sge1xuICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLW1hcmdpbjtcbiAgfVxuXG4gIC5jb2x1bW5zIHtcbiAgICBAZXh0ZW5kIC5jb2x1bW47IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgcGxhY2Vob2xkZXItaW4tZXh0ZW5kXG5cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIEVuYWJsZXMgdGhlIFhZIGdyaWQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHh5LWdyaWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbWF4aW11bSB3aWR0aCBvZiBhIGdyaWQgY29udGFpbmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJGdyaWQtY29udGFpbmVyOiAkZ2xvYmFsLXdpZHRoICFkZWZhdWx0O1xuXG4vLy8gVGhlIG51bWJlciBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGdyaWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZ3JpZC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcblxuLy8vIFRoZSBhbW91bnQgb2YgbWFyZ2luIGJldHdlZW4gY2VsbHMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcyB3aGVuIHVzaW5nIHRoZSBtYXJnaW4gZ3JpZC4gVG8gdXNlIGp1c3Qgb25lIHNpemUsIHNldCB0aGUgdmFyaWFibGUgdG8gYSBudW1iZXIgaW5zdGVhZCBvZiBhIG1hcC5cbi8vLyBAdHlwZSBNYXAgfCBMZW5ndGhcbiRncmlkLW1hcmdpbi1ndXR0ZXJzOiAoXG4gIHNtYWxsOiAyMHB4LFxuICBtZWRpdW06IDMwcHhcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgYW1vdW50IG9mIHBhZGRpbmcgaW4gY2VsbHMgYXQgZGlmZmVyZW50IHNjcmVlbiBzaXplcyB3aGVuIHVzaW5nIHRoZSBwYWRkaW5nIGdyaWQuIFRvIHVzZSBqdXN0IG9uZSBzaXplLCBzZXQgdGhlIHZhcmlhYmxlIHRvIGEgbnVtYmVyIGluc3RlYWQgb2YgYSBtYXAuXG4vLy8gQHR5cGUgTWFwIHwgTGVuZ3RoXG4kZ3JpZC1wYWRkaW5nLWd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzICFkZWZhdWx0O1xuXG4vLy8gVGhlIGFtb3VudCBvZiBwYWRkaW5nIHRvIHVzZSB3aGVuIHBhZGRpbmcgdGhlIGdyaWQtY29udGFpbmVyLlxuLy8vIEB0eXBlIE1hcCB8IExlbmd0aFxuJGdyaWQtY29udGFpbmVyLXBhZGRpbmc6ICRncmlkLXBhZGRpbmctZ3V0dGVycyAhZGVmYXVsdDtcblxuLy8vIFRoZSBtYXhpbXVtIHdpZHRoIHRvIGFwcGx5IHRvIGEgZ3JpZCBjb250YWluZXJcbi8vLyBAdHlwZSBOdW1iZXJcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGggIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2VsbHMgaW4gYW4gWFkgYmxvY2sgZ3JpZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiR4eS1ibG9jay1ncmlkLW1heDogOCAhZGVmYXVsdDtcblxuQGltcG9ydCAnZ3V0dGVycyc7XG5AaW1wb3J0ICdncmlkJztcbkBpbXBvcnQgJ2NlbGwnO1xuQGltcG9ydCAnZnJhbWUnO1xuQGltcG9ydCAncG9zaXRpb24nO1xuQGltcG9ydCAnbGF5b3V0JztcbkBpbXBvcnQgJ2NvbGxhcHNlJztcbkBpbXBvcnQgJ2NsYXNzZXMnO1xuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZSBndXR0ZXJzIGZvciBhIGNlbGwvY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBlaXRoZXIgbWFyZ2luIG9yIHBhZGRpbmcuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZWdhdGl2ZSBbZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgZ3V0dGVyIGFzIGEgbmVnYXRpdmUgdmFsdWUuIENvbW1vbmx5IHVzZWQgZm9yIG5lc3RlZCBncmlkcy5cbkBtaXhpbiB4eS1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkbmVnYXRpdmU6IGZhbHNlXG4pIHtcbiAgJG9wZXJhdG9yOiBpZigkbmVnYXRpdmUsICctJywgJycpO1xuXG4gIC8vIElmIHdlIGhhdmUgZGVjbGFyZWQgbmVnYXRpdmUgZ3V0dGVycywgZm9yY2UgdHlwZSB0byBgbWFyZ2luLlxuICAkZ3V0dGVyLXR5cGU6IGlmKCRuZWdhdGl2ZSwgJ21hcmdpbicsICRndXR0ZXItdHlwZSk7XG5cbiAgLy8gT3V0cHV0IG91ciBtYXJnaW4gZ3V0dGVycy5cbiAgQGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRndXR0ZXJzKSB7XG4gICAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAvIDI7XG5cbiAgICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGd1dHRlciBwb3NpdGlvblxuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgKHR5cGUtb2YoJGd1dHRlcnMpID09ICdudW1iZXInKSB7XG4gICAgJGd1dHRlcjogcmVtLWNhbGMoJGd1dHRlcnMpIC8gMjtcblxuICAgIC8vIExvb3AgdGhyb3VnaCBlYWNoIGd1dHRlciBwb3NpdGlvblxuICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICN7JGd1dHRlci10eXBlfS0jeyR2YWx1ZX06IHVucXVvdGUoXCIjeyRvcGVyYXRvcn0jeyRndXR0ZXJ9XCIpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZXMgYSBtYXggd2lkdGggY29udGFpbmVyLCBkZXNpZ25lZCB0byBob3VzZSB5b3VyIGdyaWQgY29udGVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWyRncmlkLWNvbnRhaW5lcl0gLSBhIHdpZHRoIHRvIGxpbWl0IHRoZSBjb250YWluZXIgdG8uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkaW5nIFskZ3JpZC1jb250YWluZXItcGFkZGluZ10gLSBwYWRkaW5ncyBvZiB0aGUgY29udGFpbmVyLlxuQG1peGluIHh5LWdyaWQtY29udGFpbmVyKFxuICAkd2lkdGg6ICRncmlkLWNvbnRhaW5lcixcbiAgJHBhZGRpbmc6ICRncmlkLWNvbnRhaW5lci1wYWRkaW5nXG4pIHtcbiAgQGluY2x1ZGUgeHktZ3V0dGVycygkZ3V0dGVyczogJHBhZGRpbmcsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG5cbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8vLyBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB5b3VyIGZsZXggY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXJlY3Rpb24gW2hvcml6b250YWxdIC0gRWl0aGVyIGhvcml6b250YWwgb3IgdmVydGljYWwgZGlyZWN0aW9uIG9mIGNlbGxzIHdpdGhpbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR3cmFwIFt0cnVlXSAtIElmIHRoZSBjZWxscyB3aXRoaW4gc2hvdWxkIHdyYXAgb3Igbm90LlxuQG1peGluIHh5LWdyaWQoXG4gICRkaXJlY3Rpb246IGhvcml6b250YWwsXG4gICR3cmFwOiB0cnVlXG4pIHtcbiAgJGRpcmVjdGlvbjogaWYoJGRpcmVjdGlvbiA9PSAnaG9yaXpvbnRhbCcsIHJvdywgY29sdW1uKTtcbiAgJHdyYXA6IGlmKCR3cmFwLCB3cmFwLCBub3dyYXApO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogJGRpcmVjdGlvbiAkd3JhcDtcbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgZmxleCB2YWx1ZSBmb3IgYSBjZWxsIGJhc2UuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQWNjZXB0cyBgZnVsbGAsIGBhdXRvYCwgYHNocmlua2AsIGBncm93YCwgb3IgYW55IG90aGVyIHZhbHVlIHJlcHJlc2VudGluZyBhIGNlbGwgc2l6ZSAoaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGBzaHJpbmtgKS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBUaGUgY2VsbCBmbGV4IHByb3BlcnR5IHZhbHVlLlxuQGZ1bmN0aW9uIHh5LWNlbGwtYmFzZSgkc2l6ZTogZnVsbCkge1xuICBAaWYgKCRzaXplID09ICdhdXRvJykge1xuICAgIEByZXR1cm4gMSAxIDBweDtcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ2dyb3cnKSB7XG4gICAgQHJldHVybiAxIDAgYXV0bztcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ3Nocmluaycgb3IgJHNpemUgPT0gJ2Z1bGwnIG9yIHpmLWlzLWZyYWN0aW9uKCRzaXplLCAkYWxsb3ctbm8tZGVub21pbmF0b3I6IHRydWUpKSB7XG4gICAgQHJldHVybiAwIDAgYXV0bztcbiAgfVxuICBAcmV0dXJuIG51bGw7XG59XG5cbi8vLyBDYWxjdWxhdGUgdGhlIHNpemUgb2YgYSBjZWxsIGd1dHRlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgcmV0dXJucyB0aGUgcmVzcG9uc2l2ZSBndXR0ZXJzIG1hcCBgJGd1dHRlcnNgLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfE1hcH0gVGhlIGNlbGwgZ3V0dGVyIHNpemUgb3IgdGhlIHJlc3BvbnNpdmUgZ3V0dGVycyBtYXAuXG5AZnVuY3Rpb24geHktY2VsbC1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgLy8gRm9yIGBhdXRvYCwgcmV0dXJucyB0aGUgcmVzcG9uc2l2ZSBtYXAgYCRndXR0ZXJzYC5cbiAgQGlmICgkYnJlYWtwb2ludCA9PSAnYXV0bycpIHtcbiAgICBAcmV0dXJuICRndXR0ZXJzO1xuICB9XG5cbiAgLy8gVXNlIHRoZSBjb250ZXh0dWFsIGJyZWFrcG9pbnQgYnkgZGVmYXVsdC5cbiAgJGJyZWFrcG9pbnQ6IC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpO1xuXG4gIEBpZiAoJGJyZWFrcG9pbnQpIHtcbiAgICBAcmV0dXJuIC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICQtemYtemVyby1icmVha3BvaW50KSBvciAwO1xuICB9XG59XG5cbi8vLyBSZXR1cm5zIHRoZSBwZXJjZW50YWdlIHNpemUgb2YgYSBjZWxsLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHNpemUgWyRncmlkLWNvbHVtbnNdIC0gU2l6ZSB0byBtYWtlIHRoZSBjZWxsLiBZb3UgY2FuIHBhc3MgYSB2YWx1ZSBpbiBtdWx0aXBsZSBmb3JtYXRzLCBzdWNoIGFzIGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzNgLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gU2l6ZSBvZiB0aGUgY2VsbCAoaW4gcGVyY2VudCkuXG5AZnVuY3Rpb24geHktY2VsbC1zaXplKFxuICAkc2l6ZTogJGdyaWQtY29sdW1uc1xuKSB7XG4gIEByZXR1cm4gZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgkc2l6ZSwgJGRlbm9taW5hdG9yOiAkZ3JpZC1jb2x1bW5zKTtcbn1cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyB2YWx1ZSBmb3IgYSBjZWxsIHNpemUuXG4vLy9cbi8vLyBHdXR0ZXJzLXJlbGF0ZWQgYXJndW1lbnRzIGFyZSByZXF1aXJlZCBmb3IgY2VsbHMgd2l0aCBtYXJnaW4gZ3V0dGVycyAoYnkgZGVmYXVsdCkgYXMgdGhlIGd1dHRlciBpcyBpbmNsdWRlZCBpbiB0aGUgd2lkdGguXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAsIGBhdXRvYCwgYHNocmlua2Agb3IgYW55IGZyYWN0aW9uIGxpa2UgYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIHJldHVybnMgYSBtYXAgb2Ygc2l6ZXMgYWRhcHRlZCB0byByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ8U3RyaW5nfE1hcH0gVGhlIGNlbGwgc2l6aW5nIHByb3BlcnR5IHZhbHVlLCBvciBhIHJlc3BvbnNpdmUgbWFwIG9mIHRoZW0uXG5AZnVuY3Rpb24geHktY2VsbC1zaXplLWNzcyhcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgJG1hcmdpbi1ndXR0ZXI6IDA7XG5cbiAgQGlmICgkc2l6ZSA9PSAnYXV0bycgb3IgJHNpemUgPT0gJ3NocmluaycpIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cblxuICAvLyBGb3IgY2VsbHMgd2l0aCBtYXJnaW4gZ3V0dGVycywgdGhlIGd1dHRlciBpcyBpbmNsdWRlZCBpbiB0aGUgd2lkdGguXG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG4gICAgJG1hcmdpbi1ndXR0ZXI6IHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAgIEBpZiAoJG1hcmdpbi1ndXR0ZXIgPT0gbnVsbCkge1xuICAgICAgQGVycm9yICd4eS1jZWxsLXNpemU6IG5vIGd1dHRlcnMgd2VyZSBmb3VuZCBpbiBgJGd1dHRlcnNgIGZvciBcIiRicmVha3BvaW50OiAjeyRicmVha3BvaW50fVwiJztcbiAgICB9XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgdGhlIGNlbGwgc2l6ZSAobnVtYmVyKVxuICAkc2l6ZS1yYXc6IGlmKCRzaXplID09ICdmdWxsJywgMTAwJSwgeHktY2VsbC1zaXplKCRzaXplKSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBjZWxsIENTUyBzaXplIGluY2x1ZGluZyBndXR0ZXJzIChzdHJpbmcpXG4gIC8vIElmIHRoZSBjZWxsIGhhcyByZXNwb25zaXZlIG1hcmdpbiBndXR0ZXJzLCByZXR1cm4gYSByZXNwb25zaXZlIG1hcCBvZiBzaXplcy5cbiAgQGlmIHR5cGUtb2YoJG1hcmdpbi1ndXR0ZXIpID09ICdtYXAnIHtcbiAgICAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGJwLCAkbWcgaW4gJG1hcmdpbi1ndXR0ZXIge1xuICAgICAgJHNpemUtY3NzOiBpZigkbWcgPT0gMCwgJHNpemUtcmF3LCBjYWxjKCN7JHNpemUtcmF3fSAtICN7cmVtLWNhbGMoJG1nKX0pKTtcbiAgICAgICRyZXNwb25zaXZlLWNzcy1zaXplczogbWFwLW1lcmdlKCRyZXNwb25zaXZlLWNzcy1zaXplcywgKCRicDogJHNpemUtY3NzKSk7XG4gICAgfVxuXG4gICAgQHJldHVybiAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYSBzaW5nbGUgQ1NTIHNpemUuXG4gIEBlbHNlIHtcbiAgICAkY3NzLXNpemU6IGlmKCRtYXJnaW4tZ3V0dGVyID09IDAsICRzaXplLXJhdywgY2FsYygjeyRzaXplLXJhd30gLSAje3JlbS1jYWxjKCRtYXJnaW4tZ3V0dGVyKX0pKTtcbiAgICBAcmV0dXJuICRjc3Mtc2l6ZTtcbiAgfVxufVxuXG4vLy8gU2V0cyBiYXNlIGZsZXggcHJvcGVydGllcyBmb3IgY2VsbHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQWNjZXB0cyBgZnVsbGAsIGBhdXRvYCwgYHNocmlua2AsIGBncm93YCwgb3IgYW55IG90aGVyIHZhbHVlIHJlcHJlc2VudGluZyBhIGNlbGwgc2l6ZSAoaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGBzaHJpbmtgKS5cbkBtaXhpbiB4eS1jZWxsLWJhc2UoJHNpemU6IGZ1bGwpIHtcbiAgJGJhc2U6IHh5LWNlbGwtYmFzZSgkc2l6ZSk7XG5cbiAgZmxleDogI3skYmFzZX07XG5cbiAgLy8gU2V0IGJhc2Ugc3R5bGVzIGZvciBcImZ1bGxcIiBvbmx5XG4gIEBpZigkc2l6ZSA9PSAnZnVsbCcpIHtcbiAgICBtaW4taGVpZ2h0OiAwcHg7XG4gICAgbWluLXdpZHRoOiAwcHg7XG4gIH1cbn1cblxuLy8vIFJlc2V0cyBhIGNlbGxzIHdpZHRoIChvciBoZWlnaHQgaWYgdmVydGljYWwgaXMgdHJ1ZSkgYXMgd2VsbCBhcyBzdHJpcHMgaXRzIGd1dHRlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1yZXNldCgkdmVydGljYWw6IHRydWUpIHtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIGhlaWdodCwgd2lkdGgpO1xuICAjeyRkaXJlY3Rpb259OiBhdXRvO1xuICBtYXgtI3skZGlyZWN0aW9ufTogbm9uZTtcbn1cblxuLy8vIFNldHMgc2l6aW5nIHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gR3V0dGVycy1yZWxhdGVkIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgZm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMgKGJ5IGRlZmF1bHQpIGFzIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgICgxMDAlIHdpZHRoKSwgYGF1dG9gICh1c2UgYWxsIGF2YWlsYWJsZSBzcGFjZSksIGBzaHJpbmtgICh1c2Ugb25seSB0aGUgcmVxdWlyZWQgc3BhY2UpIG9yIGFueSBmcmFjdGlvbiAoYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuLi4pLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgc2l6ZXMgYWRhcHRlZCBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtc2l6ZShcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJHNpemVzOiB4eS1jZWxsLXNpemUtY3NzKCRzaXplLCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkYnJlYWtwb2ludCk7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCBoZWlnaHQsIHdpZHRoKTtcblxuICBAaWYgKHR5cGUtb2YoJHNpemVzKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRzaXplcykge1xuICAgICAgI3skZGlyZWN0aW9ufTogJC16Zi1icC12YWx1ZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICN7JGRpcmVjdGlvbn06ICRzaXplcztcbiAgfVxufVxuXG4vLy8gU2V0cyBndXR0ZXJzIHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gRGlyZWN0aW9uIG9mIHRoZSBndXR0ZXJzIHRvIG91dHB1dC4gU2VlIGAkZ3V0dGVyLXBvc2l0aW9uYC5cbkBtaXhpbiB4eS1jZWxsLWd1dHRlcnMoXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgLy8gR2V0IHRoZSBkZWZhdWx0IGd1dHRlciBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gY2VsbCBkaXJlY3Rpb25cbiAgQGlmKCRndXR0ZXItcG9zaXRpb24gPT0gbnVsbCkge1xuICAgICRndXR0ZXItcG9zaXRpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB0b3AgYm90dG9tLCBsZWZ0IHJpZ2h0KTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgZ3V0dGVyIHdpZHRoIGZvciB0aGlzIGJyZWFrcG9pbnRcbiAgJGd1dHRlci13aWR0aDogeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gIEBpZiAoJGd1dHRlci13aWR0aCA9PSBudWxsKSB7XG4gICAgQGVycm9yICd4eS1jZWxsLWd1dHRlcnM6IG5vIGd1dHRlcnMgd2VyZSBmb3VuZCBpbiBgJGd1dHRlcnNgIGZvciBcIiRicmVha3BvaW50OiAjeyRicmVha3BvaW50fVwiJztcbiAgfVxuXG4gIEBpZiAoJGd1dHRlci10eXBlIGFuZCAkZ3V0dGVyLXR5cGUgIT0gbm9uZSkge1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlci13aWR0aCwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGNlbGwgZm9yIHlvdXIgZ3JpZC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFtudWxsXSAtIFtERVBSRUNBVEVEXSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbbnVsbF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uIEJ5IGRlZmF1bHQgYHJpZ2h0IGxlZnRgIGZvciBob3Jpem9udGFsIGNlbGxzIGFuZCBgdG9wIGJvdHRvbWAgZm9yIHZlcnRpY2FsIGNlbGxzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbi8vLyBAcGFyYW0ge0xpc3R9ICRvdXRwdXQgWyhiYXNlIHNpemUgZ3V0dGVycyldIC0gQ2VsbCBwYXJ0cyB0byBvdXRwdXQuIFlvdSB3aWxsIG5lZWQgdG8gZ2VuZXJhdGUgb3RoZXJzIHBhcnRzIG9mIHRoZSBjZWxsIHNlcGVyYXRlbHksIGl0IG1heSBub3Qgd29yayBwcm9wZXJseSBvdGhlcndpc2UuXG5AbWl4aW4geHktY2VsbChcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXItb3V0cHV0OiBudWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG91dHB1dDogKGJhc2Ugc2l6ZSBndXR0ZXJzKVxuKSB7XG4gIC8vIERlZmF1bHQgZm9yICRndXR0ZXItb3V0cHV0XG4gIEBpZiAoJGd1dHRlci1vdXRwdXQgIT0gbnVsbCkge1xuICAgIEB3YXJuICd4eS1jZWxsOiAkZ3V0dGVyLW91dHB1dCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFNlZSBtaWdyYXRpb24gbm90ZXMgYXQgaHR0cHM6Ly9naXQuaW8vZm91bmRhdGlvbi02LTYtMCc7XG4gICAgQGlmICgkZ3V0dGVyLW91dHB1dCA9PSBmYWxzZSkge1xuICAgICAgJG91dHB1dDogc2wtcmVtb3ZlKCRvdXRwdXQsIGd1dHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoaW5kZXgoJG91dHB1dCwgYmFzZSkpIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoJHNpemUpO1xuICB9XG4gIEBpZiAoaW5kZXgoJG91dHB1dCwgc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJHNpemUsICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRicmVha3BvaW50LCAkdmVydGljYWwpO1xuICB9XG4gIEBpZiAoaW5kZXgoJG91dHB1dCwgZ3V0dGVycykpIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbiwgJGJyZWFrcG9pbnQsICR2ZXJ0aWNhbCk7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCBzaXplZCBncmlkLiBVc2VkIHRvIGdlbmVyYXRlIG91ciBncmlkIGNsYXNzZXMuXG4vLy9cbi8vLyBgeHktY2VsbC1zdGF0aWMoKWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLlxuLy8vIFVzZSBgeHktY2VsbCgpYCBpbnN0ZWFkIHdpdGggYCRvdXRwdXQ6IChzaXplIGd1dHRlcnMpYCB0byBub3QgZ2VuZXJhdGUgdGhlIGNlbGwgYmFzZS5cbi8vLyBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTBcbi8vL1xuLy8vIEBkZXByZWNhdGVkIHY2LjYuMFxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgICgxMDAlIHdpZHRoKSwgYGF1dG9gICh1c2UgYWxsIGF2YWlsYWJsZSBzcGFjZSksIGBzaHJpbmtgICh1c2Ugb25seSB0aGUgcmVxdWlyZWQgc3BhY2UpIG9yIGFueSBmcmFjdGlvbiAoYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuLi4pLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuIEFsd2F5cyBgdHJ1ZWAgZm9yIG1hcmdpbiBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1zdGF0aWMoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyLW91dHB1dDogdHJ1ZSxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50LFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgQHdhcm4gJ3h5LWNlbGwtc3RhdGljKCkgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgXCJ4eS1jZWxsKClcIiBpbnN0ZWFkLiBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTAnO1xuXG4gICRndXR0ZXI6IC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gICRndXR0ZXItcG9zaXRpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB0b3AgYm90dG9tLCBsZWZ0IHJpZ2h0KTtcblxuICAkLWd1dHRlci1vdXRwdXQ6IGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJywgdHJ1ZSwgJGd1dHRlci1vdXRwdXQpO1xuICAkLWd1dHRlci1tYXJnaW46IGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJywgJGd1dHRlciwgMCk7XG5cbiAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJC1ndXR0ZXItbWFyZ2luLCAkdmVydGljYWwpO1xuICBAaWYgKCQtZ3V0dGVyLW91dHB1dCkge1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlciwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgfVxufVxuIiwiLy8vIE1vZGlmaWVzIGEgZ3JpZCB0byBnaXZlIGl0IFwiZnJhbWVcIiBiZWhhdmlvciAobm8gb3ZlcmZsb3csIG5vIHdyYXAsIHN0cmV0Y2ggYmVoYXZpb3IpXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gSXMgZ3JpZCB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiBTaG91bGQgbWF0Y2ggZ3JpZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZXN0ZWQgW2ZhbHNlXSAtIElzIGdyaWQgbmVzdGVkIG9yIG5vdC4gSWYgbmVzdGVkIGlzIHRydWUgdGhpcyBzZXRzIHRoZSBmcmFtZSB0byAxMDAlIGhlaWdodCwgb3RoZXJ3aXNlIHdpbGwgYmUgMTAwdmguXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbbnVsbF0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaW5jbHVkZS1iYXNlIFt0cnVlXSAtIEluY2x1ZGUgdGhlIGJhc2Ugc3R5bGVzIHRoYXQgZG9uJ3QgdmFyeSBwZXIgYnJlYWtwb2ludC5cbkBtaXhpbiB4eS1ncmlkLWZyYW1lKFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkbmVzdGVkOiBmYWxzZSxcbiAgJGd1dHRlcnM6IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkaW5jbHVkZS1iYXNlOiB0cnVlXG4pIHtcblxuICBAaWYgJGluY2x1ZGUtYmFzZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cblxuICBAaWYgJGJyZWFrcG9pbnQgPT0gbnVsbCBhbmQgdHlwZS1vZigkZ3V0dGVycykgPT0gJ21hcCcge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKCR2ZXJ0aWNhbCwgJG5lc3RlZCwgJGd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgLy8gR2V0IG91ciBndXR0ZXJzIGlmIGFwcGxpY2FibGVcbiAgICAkZ3V0dGVyOiAtemYtZ2V0LWJwLXZhbCgkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBhIGd1dHRlciwgYWRkIGl0IHRvIHRoZSB3aWR0aC9oZWlnaHRcbiAgICBAaWYgJGd1dHRlciB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2aCk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoI3skdW5pdH0gKyAjeyRndXR0ZXJ9KTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdW5pdDogaWYoJG5lc3RlZCA9PSB0cnVlLCAxMDAlLCAxMDB2dyk7XG4gICAgICAgICRndXR0ZXI6IHJlbS1jYWxjKCRndXR0ZXIpO1xuICAgICAgICB3aWR0aDogY2FsYygjeyR1bml0fSArICN7JGd1dHRlcn0pO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgICAgICBoZWlnaHQ6IGlmKCRuZXN0ZWQgPT0gdHJ1ZSwgMTAwJSwgMTAwdmgpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHdpZHRoOiBpZigkbmVzdGVkID09IHRydWUsIDEwMCUsIDEwMHZ3KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIE1vZGlmaWVzIGEgY2VsbCB0byBnaXZlIGl0IFwiYmxvY2tcIiBiZWhhdmlvciAob3ZlcmZsb3cgYXV0bywgaW5lcnRpYWwgc2Nyb2xsaW5nKVxuLy8vXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIElzIGdyaWQgdmVydGljYWwgb3IgaG9yaXpvbnRhbC4gU2hvdWxkIG1hdGNoIGdyaWQuXG5AbWl4aW4geHktY2VsbC1ibG9jayhcbiAgJHZlcnRpY2FsOiBmYWxzZVxuKSB7XG4gICRwcm9wZXJ0eTogaWYoJHZlcnRpY2FsID09IHRydWUsICdvdmVyZmxvdy15JywgJ292ZXJmbG93LXgnKTtcblxuICBAaWYgJHZlcnRpY2FsID09IHRydWUge1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICB9IEBlbHNlIHtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7XG59XG5cbi8vLyBDb250YWluZXIgZm9yIGluc2lkZSBhIGdyaWQgZnJhbWUgY29udGFpbmluZyBtdWx0aXBsZSBibG9ja3MuIFR5cGljYWxseSB1c2VkXG4vLy8gYXMgYSBtb2RpZmllciBmb3IgYSBgLmNlbGxgIHRvIGFsbG93IHRoZSBjZWxsIHRvIHBhc3MgYWxvbmcgZmxleCBzaXppbmdcbi8vLyBjb25zdHJhaW50cyAvIGZyb20gcGFyZW50cyB0byBjaGlsZHJlbi5cbkBtaXhpbiB4eS1jZWxsLWJsb2NrLWNvbnRhaW5lcigpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWF4LWhlaWdodDogMTAwJTtcblxuICA+IC5ncmlkLXgge1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBDU1MgdmFsdWUgdG8gb2Zmc2V0IGEgY2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRuIC0gU2l6ZSB0byBvZmZzZXQgYnkuIFlvdSBjYW4gcGFzcyBpbiBhbnkgdmFsdWUgYWNjZXB0ZWQgYnkgdGhlIGB4eS1jZWxsKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSBNYXAgb2YgZ3V0dGVycyBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIGZvciByZXNwb25zaXZlIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gVGhlIHR5cGUgb2YgZ3V0dGVyIHRvIHVzZS4gQ2FuIGJlIGBtYXJnaW5gIG9yIGBwYWRkaW5nYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ8U3RyaW5nfSBUaGUgY2VsbCBvZmZzZXQgcHJvcGVydHkgdmFsdWUuXG5AZnVuY3Rpb24geHktY2VsbC1vZmZzZXQoXG4gICRuLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkYnJlYWtwb2ludDogbnVsbFxuKSB7XG4gICRicmVha3BvaW50OiAtemYtY3VycmVudC1icmVha3BvaW50KCRicmVha3BvaW50LCAkZGVmYXVsdDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpO1xuICAkc2l6ZTogeHktY2VsbC1zaXplKCRuKTtcblxuICAkb2Zmc2V0OiAkc2l6ZTtcbiAgQGlmICgkZ3V0dGVyLXR5cGUgPT0gJ21hcmdpbicpIHtcbiAgICAkZ3V0dGVyOiByZW0tY2FsYyh4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRicmVha3BvaW50KSAvIDIpO1xuICAgICRvZmZzZXQ6IGlmKCRndXR0ZXIgPT0gMCwgJHNpemUsIGNhbGMoI3skc2l6ZX0gKyAjeyRndXR0ZXJ9KSk7XG4gIH1cbiAgQHJldHVybiAkb2Zmc2V0O1xufVxuXG4vLy8gT2Zmc2V0cyBhIGNvbHVtbiB0byB0aGUgcmlnaHQvYm90dG9tIGJ5IGAkbmAgY29sdW1ucy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfExpc3R9ICRuIC0gU2l6ZSB0byBvZmZzZXQgYnkuIFlvdSBjYW4gcGFzcyBpbiBhbnkgdmFsdWUgYWNjZXB0ZWQgYnkgdGhlIGB4eS1jZWxsKClgIG1peGluLCBzdWNoIGFzIGA2YCwgYDUwJWAsIG9yIGAxIG9mIDJgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSBNYXAgb2YgZ3V0dGVycyBvciBzaW5nbGUgdmFsdWUgdG8gdXNlIGZvciByZXNwb25zaXZlIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gVGhlIHR5cGUgb2YgZ3V0dGVyIHRvIHVzZS4gQ2FuIGJlIGBtYXJnaW5gIG9yIGBwYWRkaW5nYFxuLy8vIEBwYXJhbSB7TnVtYmVyfEFycmF5fEtleXdvcmR9ICRicmVha3BvaW50IFtudWxsXSAtIEJyZWFrcG9pbnQgdG8gdXNlIGZvciBgJGd1dHRlcnNgLiBJdCBjYW4gYmUgYSBicmVha3BvaW50IG5hbWUsIGxpc3Qgb2YgYnJlYWtwb2ludHMgb3IgYGF1dG9gIGZvciBhbGwgYnJlYWtwb2ludHMuIElmIGEgbGlzdCBpcyBnaXZlbiwgbWVkaWEtcXVlcmllcyB3aWxsIGJlIGdlbmVyYXRlZC4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gU2V0cyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBvZmZzZXQuIElmIHNldCB0byB0cnVlIHdpbGwgYXBwbHkgbWFyZ2luLXRvcCBpbnN0ZWFkLlxuQG1peGluIHh5LWNlbGwtb2Zmc2V0KFxuICRuLFxuICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAkYnJlYWtwb2ludDogbnVsbCxcbiAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJGJyZWFrcG9pbnQ6IC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQsICRkZWZhdWx0OiAkLXpmLXplcm8tYnJlYWtwb2ludCk7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCwgJ3RvcCcsICRnbG9iYWwtbGVmdCk7XG5cbiAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludC1pbigkYnJlYWtwb2ludCwgJG1lZGlhLXF1ZXJpZXM6ICdmb3ItbGlzdHMnKSB7XG4gICAgJG9mZnNldDogeHktY2VsbC1vZmZzZXQoJG4sICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUpO1xuICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAjeyRvZmZzZXR9O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gU2l6ZXMgY2hpbGQgZWxlbWVudHMgc28gdGhhdCBgJG5gIG51bWJlciBvZiBpdGVtcyBhcHBlYXIgb24gZWFjaCByb3cuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG4gLSBOdW1iZXIgb2YgZWxlbWVudHMgdG8gZGlzcGxheSBwZXIgcm93LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWycuY2VsbCddIC0gU2VsZWN0b3IocykgdG8gdXNlIGZvciBjaGlsZCBlbGVtZW50cy5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFtudWxsXSAtIFtERVBSRUNBVEVEXSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbbnVsbF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uIEJ5IGRlZmF1bHQgYHJpZ2h0IGxlZnRgIGZvciBob3Jpem9udGFsIGNlbGxzIGFuZCBgdG9wIGJvdHRvbWAgZm9yIHZlcnRpY2FsIGNlbGxzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgYnJlYWtwb2ludCB0byB1c2UgZm9yIHRoZSBjZWxsIGdlbmVyYXRpb24uIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG4vLy8gQHBhcmFtIHtMaXN0fSAkb3V0cHV0IFsoYmFzZSBzaXplIGd1dHRlcnMpXSAtIENlbGwgcGFydHMgdG8gb3V0cHV0LiBZb3Ugd2lsbCBuZWVkIHRvIGdlbmVyYXRlIG90aGVycyBwYXJ0cyBvZiB0aGUgY2VsbCBzZXBlcmF0ZWx5LCBpdCBtYXkgbm90IHdvcmsgY29ycmVjdGx5IG90aGVyd2lzZS5cbkBtaXhpbiB4eS1ncmlkLWxheW91dChcbiAgJG4sXG4gICRzZWxlY3RvcjogJy5jZWxsJyxcbiAgJGd1dHRlci1vdXRwdXQ6IG51bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkb3V0cHV0OiAoYmFzZSBzaXplIGd1dHRlcnMpXG4pIHtcbiAgJHNpemU6IHBlcmNlbnRhZ2UoMS8kbik7XG5cbiAgJiA+ICN7JHNlbGVjdG9yfSB7XG4gICAgQGluY2x1ZGUgeHktY2VsbCgkc2l6ZSwgJGd1dHRlci1vdXRwdXQsICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRndXR0ZXItcG9zaXRpb24sICRicmVha3BvaW50LCAkdmVydGljYWwsICRvdXRwdXQpO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgeHktZ3JpZFxuLy8vL1xuXG4vLy8gQ29sbGFwc2VzIHRoZSBncmlkIGEgY2VsbHMgd2l0aGluIGl0LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbLmNlbGxdIC0gVGhlIGNoaWxkIGVsZW1lbnQgdG8gcmVtb3ZlIHRoZSBndXR0ZXIgZnJvbS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFRoZSB0eXBlIG9mIGd1dHRlciB0byByZW1vdmUuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbnMgdG8gcmVtb3ZlIGd1dHRlcnMgZnJvbS4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkbWluLWJyZWFrcG9pbnQgWyQtemYtemVyby1icmVha3BvaW50XSAtIE1pbmltdW0gYnJlYWtwb2ludCBpbiBgJGJyZWFrcG9pbnQtY2xhc3Nlc2AgZm9yIHdoaWNoIHRvIGNvbGxhcHNlIHRoZSBndXR0ZXIuXG5AbWl4aW4geHktZ3JpZC1jb2xsYXBzZShcbiAgJHNlbGVjdG9yOiAnLmNlbGwnLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGd1dHRlci1wb3NpdGlvbjogcmlnaHQgbGVmdCxcbiAgJG1pbi1icmVha3BvaW50OiAkLXpmLXplcm8tYnJlYWtwb2ludFxuKSB7XG4gIC8vIEZpcnN0LCBsZXRzIG5lZ2F0ZSBhbnkgbWFyZ2lucyBvbiB0aGUgdG9wIGxldmVsXG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtaW4tYnJlYWtwb2ludCkge1xuICAgICAgQGVhY2ggJHZhbHVlIGluICRndXR0ZXItcG9zaXRpb24ge1xuICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgfVxuXG4gICAgICA+ICN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgICBtYXJnaW4tI3skdmFsdWV9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGV4Y2x1ZGVkLWJwczogLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkbWluLWJyZWFrcG9pbnQpO1xuXG4gICAgLy8gT3V0cHV0IG5ldyB3aWR0aHMgdG8gbm90IGluY2x1ZGUgZ3V0dGVyc1xuICAgIEBlYWNoICRicCBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZihzbC1jb250YWluKCRleGNsdWRlZC1icHMsICRicCkpIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAgICAgLy8gU2l6aW5nIChwZXJjZW50YWdlKVxuICAgICAgICAgICAgPiAuI3skYnB9LSN7JGl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGJwKSB7XG4gICAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgICAgID4gLiN7JGJwfS0jeyRpfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbWluLWJyZWFrcG9pbnQpIHtcbiAgICAgIEBlYWNoICR2YWx1ZSBpbiAkZ3V0dGVyLXBvc2l0aW9uIHtcbiAgICAgICAgbWFyZ2luLSN7JHZhbHVlfTogMDtcbiAgICAgIH1cblxuICAgICAgPiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgICAgcGFkZGluZy0jeyR2YWx1ZX06IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vIE1hcmdpbiBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS1iYXNlLWdyaWQtY2xhc3NlcyB7XG5cbiAgLy8gR3JpZCBDb250YWluZXJcbiAgLmdyaWQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcjtcblxuICAgICYuZmx1aWQge1xuICAgICAgQGluY2x1ZGUgeHktZ3JpZC1jb250YWluZXIoMTAwJSk7XG4gICAgfVxuXG4gICAgJi5mdWxsIHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29udGFpbmVyKDEwMCUsIDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEJhc2UgZ3JpZCBzdHlsZXNcbiAgLmdyaWQteCB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZDtcbiAgfVxuXG4gIC5jZWxsIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsKGZ1bGwsICRndXR0ZXItdHlwZTogbm9uZSk7XG5cbiAgICAmLmF1dG8ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKGF1dG8pO1xuICAgIH1cblxuICAgICYuc2hyaW5rIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgIH1cblxuICB9XG4gIC5ncmlkLXgge1xuICAgID4gLmF1dG8ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKGF1dG8sICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgfVxuXG4gICAgPiAuc2hyaW5rIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShzaHJpbmssICRndXR0ZXItdHlwZTogbm9uZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXV0byB3aWR0aFxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgIC8vIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrL3dvcmthcm91bmQsIHNlZSB0aGVzZSBpc3N1ZXMgJiBQUnMgZm9yIHRoZSBiYWNrc3Rvcnk6XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTAyNDRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAyMjIgYW5kXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9wdWxsLzEwMTY0XG4gICAgLmdyaWQteCB7XG4gICAgICAkc3RyOiBcIj4gLiN7JC16Zi1zaXplfS1zaHJpbmssID4gLiN7JC16Zi1zaXplfS1mdWxsXCI7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgICAkc3RyOiAkc3RyICsgXCIsID4gLiN7JC16Zi1zaXplfS0jeyRpfVwiXG4gICAgICB9XG4gICAgICAjeyRzdHJ9IHtcbiAgICAgICAgZmxleC1iYXNpczogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCkge1xuICAgIC8vIFJlc3BvbnNpdmUgXCJhdXRvXCIgbW9kaWZpZXJcbiAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgLmdyaWQteCA+IC4jeyQtemYtc2l6ZX0tYXV0byB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwoYXV0bywgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAlLXh5LWNlbGwtYmFzZS1zaHJpbmstaG9yaXpvbnRhbC0jeyQtemYtc2l6ZX0ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1iYXNlKHNocmluayk7XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBcInNocmlua1wiIG1vZGlmaWVyXG4gICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LXNocmluayB7XG4gICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLWhvcml6b250YWwtI3skLXpmLXNpemV9O1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgd2lkdGggbW9kaWZpZXJzXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkZ3JpZC1jb2x1bW5zIHtcbiAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgIC5ncmlkLXggPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgQGV4dGVuZCAlLXh5LWNlbGwtYmFzZS1zaHJpbmstaG9yaXpvbnRhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZSgkaSwgJGd1dHRlci10eXBlOiBub25lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCB3aWR0aCB3aGVuIHVzaW5nIGAuZ3JpZC1tYXJnaW4teGAgbm90IG9uIGAuZ3JpZC14YFxuICAuZ3JpZC1tYXJnaW4teDpub3QoLmdyaWQteCkgPiAuY2VsbCB7XG4gICAgd2lkdGg6IGF1dG87XG4gIH1cblxuICAvLyBSZXNldCBoZWlnaHQgd2hlbiB1c2luZyBgLmdyaWQtbWFyZ2luLXlgIG5vdCBvbiBgLmdyaWQteWBcbiAgLmdyaWQtbWFyZ2luLXk6bm90KC5ncmlkLXkpID4gLmNlbGwge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCRjbGFzcy1icmVha3BvaW50LCAkZ3V0dGVyLWJyZWFrcG9pbnQsICR2ZXJ0aWNhbCkge1xuICAkcHJlZml4OiBpZigkY2xhc3MtYnJlYWtwb2ludCA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCwgJycsICcjeyRjbGFzcy1icmVha3BvaW50fS0nKTtcbiAgPiAuI3skcHJlZml4fWF1dG8ge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtc2l6ZShhdXRvLCAkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XG4gIH1cblxuICA+IC4jeyRwcmVmaXh9c2hyaW5rIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAkY2xhc3NuYW1lOiBpZigkdmVydGljYWwsICcuI3skY2xhc3MtYnJlYWtwb2ludH0tI3skaX0nLCAnLiN7JGNsYXNzLWJyZWFrcG9pbnR9LSN7JGl9Jyk7XG5cbiAgICA+ICN7JGNsYXNzbmFtZX0ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkdmVydGljYWw6ICR2ZXJ0aWNhbCk7XG4gICAgfVxuICB9XG59XG5cbi8vIE1hcmdpbiBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBsZWZ0IHJpZ2h0LFxuICAkdmVydGljYWw6IGZhbHNlLFxuICAkd3JhcHBpbmctc2VsZWN0b3I6ICcuZ3JpZC1tYXJnaW4teCdcbil7XG4gICN7JHdyYXBwaW5nLXNlbGVjdG9yfSB7XG4gICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUsICRndXR0ZXItcG9zaXRpb246ICRndXR0ZXItcG9zaXRpb24pO1xuXG4gICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xuICAgID4gLmNlbGwge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbCgkdmVydGljYWw6ICR2ZXJ0aWNhbCwgJG91dHB1dDogKHNpemUgZ3V0dGVycykpO1xuICAgIH1cblxuICAgIC8vIGJhc2Ugc3R5bGVzIG5lZWQgdG8gYWxsIGJlIGJlZm9yZSB0aGUgYXV0byBhbmQgc2hyaW5rIHN0eWxlc1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICBAaWYodHlwZS1vZigkZ3JpZC1tYXJnaW4tZ3V0dGVycykgPT0gJ21hcCcgYW5kIG1hcC1oYXMta2V5KCRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkLXpmLXNpemUpIGFuZCAkLXpmLXNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICAgICAgPiAuY2VsbCB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbCgkdmVydGljYWw6ICR2ZXJ0aWNhbCwgJG91dHB1dDogKHNpemUgZ3V0dGVycykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcblxuICAgICAgLy8gVGhpcyBpcyBwdXJlbHkgZm9yIHJlc3BvbnNpdmUgZ3V0dGVycyAtIHRoZSBtYXJnaW4gZ3JpZCBoYXMgdG8gZ28gYmFjayBhbmQgYWRqdXN0IHdpZHRocyAob3IgaGVpZ2h0cylcbiAgICAgIC8vIGZvciBhbGwgcHJpb3IgYnJlYWtwb2ludHMuXG4gICAgICAvLyBBcyB0aGVpciBndXR0ZXIgaXMgZGVmaW5lZCB3aXRoIHRoZWlyIHdpZHRoL2hlaWdodCwgZXZlbiBicmVha3BvaW50IHdpdGhvdXQgYSBuZXcgbWFyZ2luIG11c3QgYmVcbiAgICAgIC8vIGdlbmVyYXRlZCB0byBub3QgaGF2aW5nIHRoZWlyIHdpZHRoL2hlaWdodCBvdmVycmlkZWQgYnkgcmUtYWRqdXN0ZWQgc21hbGxlciBicmVha3BvaW50cy5cbiAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkpIHtcbiAgICAgICAgQGVhY2ggJGJwIGluIC16Zi1icmVha3BvaW50cy1sZXNzLXRoYW4oJC16Zi1zaXplKSB7XG4gICAgICAgICAgQGluY2x1ZGUgLXh5LWJyZWFrcG9pbnQtY2VsbC1jbGFzc2VzKCRicCwgJC16Zi1zaXplLCAkdmVydGljYWwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIC14eS1icmVha3BvaW50LWNlbGwtY2xhc3NlcygkLXpmLXNpemUsICQtemYtc2l6ZSwgJHZlcnRpY2FsKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUGFkZGluZyBHcmlkIGNsYXNzZXNcbkBtaXhpbiB4eS1wYWRkaW5nLWdyaWQtY2xhc3NlcyB7XG4gIC5ncmlkLXBhZGRpbmcteCB7XG5cbiAgICAvLyBOZWdhdGl2ZSBtYXJnaW4gZm9yIG5lc3RlZCBncmlkc1xuICAgIC5ncmlkLXBhZGRpbmcteCB7XG4gICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRuZWdhdGl2ZTogdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBncmlkcyB3aXRoaW4gYGdyaWQtY29udGFpbmVyL2dyaWQtY29udGFpbmVyLmZsdWlkYFxuICAgIC8vIFRoaXMgYWxsb3dzIG1hcmdpbiBhbmQgcGFkZGluZyBncmlkcyB0byBsaW5lIHVwIHdpdGggZWFjaG90aGVyXG4gICAgLmdyaWQtY29udGFpbmVyOm5vdCguZnVsbCkgPiAmIHtcbiAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBCYXNlIGNlbGwgc3R5bGVzXG4gICAgPiAuY2VsbCB7XG4gICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXJzOiAkZ3JpZC1wYWRkaW5nLWd1dHRlcnMsICRndXR0ZXItdHlwZTogcGFkZGluZyk7XG4gICAgfVxuICB9XG59XG5cbi8vIEJsb2NrIEdyaWQgY2xhc3Nlc1xuQG1peGluIHh5LWJsb2NrLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQ6IHRydWUsICRwYWRkaW5nLWdyaWQ6IHRydWUpIHtcbiAgQGlmICRwYWRkaW5nLWdyaWQge1xuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQge1xuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkeHktYmxvY2stZ3JpZC1tYXgge1xuICAgICAgICAuI3skLXpmLXNpemV9LXVwLSN7JGl9IHtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWxheW91dCgkbjogJGksICRzZWxlY3RvcjogJy5jZWxsJywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkb3V0cHV0OiAoc2l6ZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCB7XG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICR4eS1ibG9jay1ncmlkLW1heCB7XG4gICAgICAgIC8vIFRoaXMgaXMgcHVyZWx5IGZvciByZXNwb25zaXZlIGd1dHRlcnMgLSB0aGUgbWFyZ2luIGdyaWQgaGFzIHRvIGdvIGJhY2sgYW5kIGFkanVzdCB3aWR0aHMgKG9yIGhlaWdodHMpXG4gICAgICAgIC8vIGZvciBwcmlvciBicmVha3BvaW50cyBiYXNlZCBvbiB0aGUgcmVzcG9uc2l2ZSBndXR0ZXIuXG4gICAgICAgIEBpZih0eXBlLW9mKCRncmlkLW1hcmdpbi1ndXR0ZXJzKSA9PSAnbWFwJyBhbmQgbWFwLWhhcy1rZXkoJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSkpIHtcbiAgICAgICAgICBAZWFjaCAkYnAgaW4gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigkLXpmLXNpemUpIHtcbiAgICAgICAgICAgIEBpZihtYXAtaGFzLWtleSgkZ3JpZC1tYXJnaW4tZ3V0dGVycywgJGJwKSkge1xuICAgICAgICAgICAgICAuZ3JpZC1tYXJnaW4teC4jeyRicH0tdXAtI3skaX0ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG91dHB1dDogKHNpemUpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkeHktYmxvY2stZ3JpZC1tYXgge1xuICAgICAgICAuZ3JpZC1tYXJnaW4teC4jeyQtemYtc2l6ZX0tdXAtI3skaX0ge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtbGF5b3V0KCRuOiAkaSwgJHNlbGVjdG9yOiAnLmNlbGwnLCAkZ3V0dGVyLXR5cGU6IG1hcmdpbiwgJG91dHB1dDogKHNpemUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBDb2xsYXBzZSBjbGFzc2VzXG5AbWl4aW4geHktY29sbGFwc2UtZ3JpZC1jbGFzc2VzKCRtYXJnaW4tZ3JpZDogdHJ1ZSwgJHBhZGRpbmctZ3JpZDogdHJ1ZSkge1xuICBAZWFjaCAkYnAgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgICAuI3skYnB9LW1hcmdpbi1jb2xsYXBzZSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQtY29sbGFwc2UoJGd1dHRlci10eXBlOiBtYXJnaW4sICRtaW4tYnJlYWtwb2ludDogJGJwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJHBhZGRpbmctZ3JpZCB7XG4gICAgICAuI3skYnB9LXBhZGRpbmctY29sbGFwc2Uge1xuICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWNvbGxhcHNlKCRndXR0ZXItdHlwZTogcGFkZGluZywgJG1pbi1icmVha3BvaW50OiAkYnApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBPZmZzZXQgY2xhc3Nlc1xuQG1peGluIHh5LW9mZnNldC1jZWxsLWNsYXNzZXMge1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xuICAgICAgLy8gT2Zmc2V0c1xuICAgICAgJG86ICRpIC0gMTtcblxuICAgICAgLiN7JC16Zi1zaXplfS1vZmZzZXQtI3skb30ge1xuICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLW9mZnNldCgkbywgJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nKTtcbiAgICAgIH1cblxuICAgICAgLmdyaWQtbWFyZ2luLXggPiAuI3skLXpmLXNpemV9LW9mZnNldC0jeyRvfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtb2Zmc2V0KCRvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVmVydGljYWwgR3JpZCBjbGFzc2VzXG5AbWl4aW4geHktdmVydGljYWwtZ3JpZC1jbGFzc2VzKFxuICAkbWFyZ2luLWdyaWQ6IHRydWUsXG4gICRwYWRkaW5nLWdyaWQ6IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgQGlmIG5vdCgkLXpmLXNpemUgPT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgICB9XG4gIH1cblxuICAuZ3JpZC15IHtcbiAgICBAaW5jbHVkZSB4eS1ncmlkKHZlcnRpY2FsLCBmYWxzZSk7XG5cblxuICAgID4gLmNlbGwge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1yZXNldCgpO1xuICAgIH1cblxuICAgID4gLmF1dG8ge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKGF1dG8sICRndXR0ZXItdHlwZTogbm9uZSwgJHZlcnRpY2FsOiB0cnVlKTtcbiAgICB9XG5cbiAgICA+IC5zaHJpbmsge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKHNocmluaywgJGd1dHRlci10eXBlOiBub25lLCAkdmVydGljYWw6IHRydWUpO1xuICAgIH1cblxuXG4gICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludCgpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrL3dvcmthcm91bmQsIHNlZSB0aGVzZSBpc3N1ZXMgYW5kIFBScyBmb3IgdGhlIGJhY2tzdG9yeTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzEwMjQ0XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAyMjIgYW5kXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL3B1bGwvMTAxNjRcbiAgICAgICRzdHI6IFwiPiAuI3skLXpmLXNpemV9LXNocmluaywgPiAuI3skLXpmLXNpemV9LWZ1bGxcIjtcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgICRzdHI6ICRzdHIgKyBcIiwgPiAuI3skLXpmLXNpemV9LSN7JGl9XCJcbiAgICAgIH1cbiAgICAgICN7JHN0cn0ge1xuICAgICAgICBmbGV4LWJhc2lzOiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoKSB7XG4gICAgICAvLyBSZXNwb25zaXZlIFwiYXV0b1wiIG1vZGlmaWVyXG4gICAgICBAaWYgbm90KCQtemYtc2l6ZSA9PSAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAgICAgICA+IC4jeyQtemYtc2l6ZX0tYXV0byB7XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbChhdXRvLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWNlbGwtYmFzZShzaHJpbmspO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXNwb25zaXZlIFwic2hyaW5rXCIgbW9kaWZpZXJcbiAgICAgIEBpZiBub3QoJC16Zi1zaXplID09ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gICAgICAgID4gLiN7JC16Zi1zaXplfS1zaHJpbmsge1xuICAgICAgICAgIEBleHRlbmQgJS14eS1jZWxsLWJhc2Utc2hyaW5rLXZlcnRpY2FsLSN7JC16Zi1zaXplfTtcbiAgICAgICAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoc2hyaW5rLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBtb2RpZmllcnNcbiAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XG4gICAgICAgIC8vIFNpemluZyAocGVyY2VudGFnZSlcbiAgICAgICAgPiAuI3skLXpmLXNpemV9LSN7JGl9IHtcbiAgICAgICAgICBAZXh0ZW5kICUteHktY2VsbC1iYXNlLXNocmluay12ZXJ0aWNhbC0jeyQtemYtc2l6ZX07XG4gICAgICAgICAgQGluY2x1ZGUgeHktY2VsbC1zaXplKCRpLCAkZ3V0dGVyLXR5cGU6IG5vbmUsICR2ZXJ0aWNhbDogdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFkZGluZy1ncmlkIHtcbiAgICAuZ3JpZC1wYWRkaW5nLXkge1xuICAgICAgLy8gTmVnYXRpdmUgbWFyZ2luIGZvciBuZXN0ZWQgZ3JpZHNcbiAgICAgIC5ncmlkLXBhZGRpbmcteSB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFzZSBjZWxsIHN0eWxlc1xuICAgICAgPiAuY2VsbCB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRncmlkLXBhZGRpbmctZ3V0dGVycywgJGd1dHRlci10eXBlOiBwYWRkaW5nLCAkZ3V0dGVyLXBvc2l0aW9uOiB0b3AgYm90dG9tKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJG1hcmdpbi1ncmlkIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKHRvcCBib3R0b20sIHRydWUsICcuZ3JpZC1tYXJnaW4teScpO1xuICB9XG5cbn1cblxuQG1peGluIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZDogdHJ1ZSwgJG1hcmdpbi1ncmlkOiB0cnVlKSB7XG4gIC8vIEZyYW1lZCBncmlkIHN0eWxlc1xuICAuZ3JpZC1mcmFtZSB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZTtcbiAgfVxuXG4gIC5jZWxsIC5ncmlkLWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgfVxuXG4gIC5jZWxsLWJsb2NrIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKCk7XG4gIH1cblxuICAuY2VsbC1ibG9jay15IHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICB9XG5cblxuICAuY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHh5LWNlbGwtYmxvY2stY29udGFpbmVyKCk7XG4gIH1cblxuXG4gIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcblxuICAgIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lO1xuICAgIH1cblxuICAgIC5jZWxsIC4jeyQtemYtc2l6ZX0tZ3JpZC1mcmFtZSB7XG4gICAgICB3aWR0aDogMTAwJTsgLy8gU2FtZSBhcyBpbmNsdWRlIHdpdGggJG5lc3RlZCwgYnV0IHdpdGggbGVzcyBjc3NcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2sge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jaygpO1xuICAgIH1cblxuICAgIC4jeyQtemYtc2l6ZX0tY2VsbC1ibG9jay1jb250YWluZXIge1xuICAgICAgQGluY2x1ZGUgeHktY2VsbC1ibG9jay1jb250YWluZXIoKTtcbiAgICB9XG5cbiAgICAuI3skLXpmLXNpemV9LWNlbGwtYmxvY2steSB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsLWJsb2NrKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdmVydGljYWwtZ3JpZCB7XG4gICAgLmdyaWQteSB7XG4gICAgICAmLmdyaWQtZnJhbWUge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAmLiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBAaW5jbHVkZSB4eS1ncmlkLWZyYW1lKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG4gICAgLmNlbGwge1xuICAgICAgLmdyaWQteS5ncmlkLWZyYW1lIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlOyAvLyBTYW1lIGFzIGluY2x1ZGUgd2l0aCAkbmVzdGVkLCBidXQgd2l0aCBsZXNzIGNzc1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgLXpmLWVhY2gtYnJlYWtwb2ludChmYWxzZSkge1xuICAgICAgICAuZ3JpZC15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7IC8vIFNhbWUgYXMgaW5jbHVkZSB3aXRoICRuZXN0ZWQsIGJ1dCB3aXRoIGxlc3MgY3NzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGlmICRtYXJnaW4tZ3JpZCB7XG4gICAgQGluY2x1ZGUgeHktbWFyZ2luLWdyaWQtY2xhc3Nlcyh0b3AgYm90dG9tLCB0cnVlLCAnLmdyaWQtbWFyZ2luLXknKTtcbiAgICAuZ3JpZC1mcmFtZS5ncmlkLW1hcmdpbi15IHtcbiAgICAgIEBpbmNsdWRlIHh5LWdyaWQtZnJhbWUodHJ1ZSwgZmFsc2UsICRncmlkLW1hcmdpbi1ndXR0ZXJzLCAkaW5jbHVkZS1iYXNlOiBmYWxzZSk7XG4gICAgfVxuICAgIEBpbmNsdWRlIC16Zi1lYWNoLWJyZWFrcG9pbnQoZmFsc2UpIHtcbiAgICAgIC5ncmlkLW1hcmdpbi15LiN7JC16Zi1zaXplfS1ncmlkLWZyYW1lIHtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3JpZC1mcmFtZSh0cnVlLCBmYWxzZSwgJGdyaWQtbWFyZ2luLWd1dHRlcnMsICQtemYtc2l6ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBGaW5hbCBjbGFzc2VzXG5AbWl4aW4gZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXMoXG4gICRiYXNlLWdyaWQ6IHRydWUsXG4gICRtYXJnaW4tZ3JpZDogdHJ1ZSxcbiAgJHBhZGRpbmctZ3JpZDogdHJ1ZSxcbiAgJGJsb2NrLWdyaWQ6IHRydWUsXG4gICRjb2xsYXBzZTogdHJ1ZSxcbiAgJG9mZnNldDogdHJ1ZSxcbiAgJHZlcnRpY2FsLWdyaWQ6IHRydWUsXG4gICRmcmFtZS1ncmlkOiB0cnVlXG4pIHtcblxuICAvLyBCYXNlIGdyaWQgc3R5bGVzXG4gIEBpZigkYmFzZS1ncmlkKSB7XG4gICAgQGluY2x1ZGUgeHktYmFzZS1ncmlkLWNsYXNzZXMoKTtcbiAgfVxuXG4gIC8vIE1hcmdpbiBncmlkXG4gIEBpZigkbWFyZ2luLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1tYXJnaW4tZ3JpZC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBQYWRkaW5nIGdyaWRcbiAgQGlmKCRwYWRkaW5nLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1wYWRkaW5nLWdyaWQtY2xhc3NlcygpO1xuICB9XG5cbiAgLy8gQmxvY2sgZ3JpZFxuICBAaWYoJGJsb2NrLWdyaWQpIHtcbiAgICBAaW5jbHVkZSB4eS1ibG9jay1ncmlkLWNsYXNzZXMoJG1hcmdpbi1ncmlkLCAkcGFkZGluZy1ncmlkKTtcbiAgfVxuXG4gIC8vIENvbGxhcHNlIGd1dHRlcnNcbiAgQGlmKCRjb2xsYXBzZSkge1xuICAgIEBpbmNsdWRlIHh5LWNvbGxhcHNlLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgLy8gT2Zmc2V0IGd1dHRlcnNcbiAgQGlmKCRvZmZzZXQpIHtcbiAgICBAaW5jbHVkZSB4eS1vZmZzZXQtY2VsbC1jbGFzc2VzKCk7XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBncmlkXG4gIEBpZigkdmVydGljYWwtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LXZlcnRpY2FsLWdyaWQtY2xhc3NlcygkbWFyZ2luLWdyaWQsICRwYWRkaW5nLWdyaWQpO1xuICB9XG5cbiAgQGlmICgkZnJhbWUtZ3JpZCkge1xuICAgIEBpbmNsdWRlIHh5LWZyYW1lLWdyaWQtY2xhc3NlcygkdmVydGljYWwtZ3JpZCwgJG1hcmdpbi1ncmlkKVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnV0dG9uXG4vLy8vXG5cbi8vLyBGb250IGZhbWlseSBmb3IgYnV0dG9uIGVsZW1lbnRzLlxuLy8vIEB0eXBlIEZvbnRcbiRidXR0b24tZm9udC1mYW1pbHk6IGluaGVyaXQgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBmb3IgYnV0dG9uIGVsZW1lbnRzLlxuLy8vIElnbm9yZWQgaWYgbnVsbCAoZGVmYXVsdClcbi8vLyBAdHlwZSBGb250LVdlaWdodFxuJGJ1dHRvbi1mb250LXdlaWdodDogbnVsbCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgaW5zaWRlIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tbWFyZ2luOiAwIDAgJGdsb2JhbC1tYXJnaW4gMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZmlsbCBmb3IgYnV0dG9ucy4gQ2FuIGVpdGhlciBiZSBgc29saWRgIG9yIGBob2xsb3dgLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRidXR0b24tZmlsbDogc29saWQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIENvbG9yXG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRidXR0b24tYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IGNvbG9yIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIEFsdGVybmF0aXZlIGZvbnQgY29sb3IgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1jb2xvci1hbHQ6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciByYWRpdXMgZm9yIGJ1dHRvbnMsIGRlZmF1bHRlZCB0byBnbG9iYWwtcmFkaXVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGZvciBidXR0b25zLCB0cmFuc3BhcmVudCBieSBkZWZhdWx0XG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi1ib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudCAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciB3aWR0aCBmb3IgaG9sbG93IG91dGxpbmUgYnV0dG9uc1xuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7XG5cbi8vLyBTaXplcyBmb3IgYnV0dG9ucy5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tc2l6ZXM6IChcbiAgdGlueTogMC42cmVtLFxuICBzbWFsbDogMC43NXJlbSxcbiAgZGVmYXVsdDogMC45cmVtLFxuICBsYXJnZTogMS4yNXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvcmluZyBjbGFzc2VzLiBBIG1hcCBvZiBjbGFzc2VzIHRvIG91dHB1dCBpbiB5b3VyIENTUywgbGlrZSBgLnNlY29uZGFyeWAsIGAuc3VjY2Vzc2AsIGFuZCBzbyBvbi5cbi8vLyBAdHlwZSBNYXBcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIG9wYWNpdHkgZm9yIGEgZGlzYWJsZWQgYnV0dG9uLlxuLy8vIEB0eXBlIExpc3RcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgbGlnaHRuZXNzIG9uIGhvdmVyIGZvciBidXR0b25zLlxuLy8vIEB0eXBlIE51bWJlclxuJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyLWxpZ2h0bmVzczogLTIwJSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIGxpZ2h0bmVzcyBvbiBob3ZlciBmb3IgaG9sbG93IGJ1dHRvbnMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCUgIWRlZmF1bHQ7XG5cbi8vIEludGVybmFsOiBmbGlwIGZyb20gbWFyZ2luLXJpZ2h0IHRvIG1hcmdpbi1sZWZ0IGZvciBkZWZhdWx0c1xuQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xuICAkYnV0dG9uLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xufVxuXG4vLy8gdHJhbnNpdGlvbnMgZm9yIGJ1dHRvbnMuXG4vLy8gQHR5cGUgTGlzdFxuJGJ1dHRvbi10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzIGVhc2Utb3V0LCBjb2xvciAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIEFkZGl0aW9uYWwgcmVzcG9uc2l2ZSBjbGFzc2VzIGZvciAuZXhwYW5kZWRcbi8vLyBAdHlwZSBCb29sZWFuXG4kYnV0dG9uLXJlc3BvbnNpdmUtZXhwYW5kZWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUT0RPOiBEb2N1bWVudCBidXR0b24tYmFzZSgpIG1peGluXG5AbWl4aW4gYnV0dG9uLWJhc2Uge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAkYnV0dG9uLW1hcmdpbjtcblxuICBAaWYgKHR5cGUtb2YoJGJ1dHRvbi1wYWRkaW5nKSA9PSAnbWFwJykge1xuICAgIEBlYWNoICRzaXplLCAkcGFkZGluZyBpbiAkYnV0dG9uLXBhZGRpbmcge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBhZGRpbmc6ICRidXR0b24tcGFkZGluZztcbiAgfVxuXG4gIGJvcmRlcjogJGJ1dHRvbi1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICB0cmFuc2l0aW9uOiAkYnV0dG9uLXRyYW5zaXRpb247XG4gIGZvbnQtZmFtaWx5OiAkYnV0dG9uLWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG4gIGZvbnQtd2VpZ2h0OiAkYnV0dG9uLWZvbnQtd2VpZ2h0O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tdmVuZG9yLXByZWZpeGVzXG4gIGxpbmUtaGVpZ2h0OiAxO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLy8vIEV4cGFuZHMgYSBidXR0b24gdG8gbWFrZSBpdCBmdWxsLXdpZHRoLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbdHJ1ZV0gLSBTZXQgdG8gYHRydWVgIHRvIGVuYWJsZSB0aGUgZXhwYW5kIGJlaGF2aW9yLiBTZXQgdG8gYGZhbHNlYCB0byByZXZlcnNlIHRoaXMgYmVoYXZpb3IuXG5AbWl4aW4gYnV0dG9uLWV4cGFuZCgkZXhwYW5kOiB0cnVlKSB7XG4gIEBpZiAkZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW46ICRidXR0b24tbWFyZ2luO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlIHN0eWxlcyBvZiBhIGhvbGxvdyBvciBjbGVhciBidXR0b24gZmlsbGluZyBhY2NvcmRpbmcgdG8gYCRmaWxsYC5cbi8vLyBTZWUgbWl4aW4gYGJ1dHRvbi1maWxsLXN0eWxlYCBmb3IgdGhlIGZpbGxpbmcgc3R5bGVzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGZpbGwgWyRidXR0b24tZmlsbF0gLSBUeXBlIG9mIGZpbGxpbmcgYmV0d2VlbiBgaG9sbG93YCBhbmQgYGNsZWFyYC4gYHNvbGlkYCBoYXMgbm8gZWZmZWN0cy5cbkBtaXhpbiBidXR0b24tZmlsbChcbiAgJGZpbGw6ICRidXR0b24tZmlsbFxuKSB7XG4gIEBpZiAkZmlsbCA9PSBob2xsb3cge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3c7XG4gIH1cbiAgQGVsc2UgaWYgJGZpbGwgPT0gY2xlYXIge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1jbGVhcjtcbiAgfVxufVxuXG4vLy8gU2V0cyB0aGUgdmlzdWFsIHN0eWxlcyBvZiBhIHNvbGlkL2hvbGxvdy9jbGVhciBidXR0b24gZmlsbGluZyBhY2NvcmRpbmcgdG8gYCRmaWxsYC5cbi8vLyBTZWUgbWl4aW5zIGBidXR0b24tc3R5bGVgLCBgYnV0dG9uLWhvbGxvdy1zdHlsZWAgYW5kIGBidXR0b24tY2xlYXItc3R5bGVgIGZvciBlZmZlY3RzIG9mIHZpc3VhbCBzdHlsaW5nIHBhcmFtZXRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZmlsbCBbJGJ1dHRvbi1maWxsXSAtIFR5cGUgb2YgZmlsbGluZyBiZXR3ZWVuIGBob2xsb3dgIGFuZCBgY2xlYXJgLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kIFskYnV0dG9uLWJhY2tncm91bmRdIC0gLVxuLy8vIEBwYXJhbSB7Q29sb3J9ICRiYWNrZ3JvdW5kLWhvdmVyIFskYnV0dG9uLWJhY2tncm91bmQtaG92ZXJdIC0gLVxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSAtXG5AbWl4aW4gYnV0dG9uLWZpbGwtc3R5bGUoXG4gICRmaWxsOiAkYnV0dG9uLWZpbGwsXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvclxuKSB7XG4gIEBpZiAkZmlsbCA9PSBzb2xpZCB7XG4gICAgQGluY2x1ZGUgYnV0dG9uLXN0eWxlKCRiYWNrZ3JvdW5kLCAkYmFja2dyb3VuZC1ob3ZlciwgJGNvbG9yKTtcbiAgfVxuICBAZWxzZSBpZiAkZmlsbCA9PSBob2xsb3cge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1ob2xsb3ctc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG4gIEBlbHNlIGlmICRmaWxsID09IGNsZWFyIHtcbiAgICBAaW5jbHVkZSBidXR0b24tY2xlYXItc3R5bGUoJGJhY2tncm91bmQpO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQgWyRidXR0b24tYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhY2tncm91bmQtaG92ZXIgWyRidXR0b24tYmFja2dyb3VuZC1ob3Zlcl0gLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBidXR0b24gb24gaG92ZXIuIFNldCB0byBgYXV0b2AgdG8gaGF2ZSB0aGUgbWl4aW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGhvdmVyIGNvbG9yLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGJ1dHRvbi1jb2xvcl0gLSBUZXh0IGNvbG9yIG9mIHRoZSBidXR0b24uIFNldCB0byBgYXV0b2AgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhIGNvbG9yIGJhc2VkIG9uIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuQG1peGluIGJ1dHRvbi1zdHlsZShcbiAgJGJhY2tncm91bmQ6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGJhY2tncm91bmQtaG92ZXI6ICRidXR0b24tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGNvbG9yOiAkYnV0dG9uLWNvbG9yLFxuICAkYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6ICRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3Ncbikge1xuICBAaWYgJGNvbG9yID09IGF1dG8ge1xuICAgICRjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRidXR0b24tY29sb3IsICRidXR0b24tY29sb3ItYWx0KSk7XG4gIH1cblxuICBAaWYgJGJhY2tncm91bmQtaG92ZXIgPT0gYXV0byB7XG4gICAgJGJhY2tncm91bmQtaG92ZXI6IHNjYWxlLWNvbG9yKCRiYWNrZ3JvdW5kLCAkbGlnaHRuZXNzOiAkYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3MpO1xuICB9XG5cbiAgLy8gRGVmYXVsdCBhbmQgZGlzYWJsZWQgc3RhdGVzXG4gICYsXG4gICYuZGlzYWJsZWQsICZbZGlzYWJsZWRdLFxuICAmLmRpc2FibGVkOmhvdmVyLCAmW2Rpc2FibGVkXTpob3ZlcixcbiAgJi5kaXNhYmxlZDpmb2N1cywgJltkaXNhYmxlZF06Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlIHN0eWxlcyBvZiBhIGhvbGxvdyBidXR0b24uXG4vLy8gU2VlIG1peGluIGBidXR0b24taG9sbG93LXN0eWxlYCBmb3IgdGhlIGZpbGxpbmcgc3R5bGVzLlxuQG1peGluIGJ1dHRvbi1ob2xsb3cge1xuICAmLCAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFNldHMgdGhlIHZpc3VhbCBzdHlsZSBvZiBhIGhvbGxvdyBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWJhY2tncm91bmRdIC0gVGV4dCBhbmQgYm9yZGVyIGNvbG9yIG9mIHRoZSBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGhvdmVyLWxpZ2h0bmVzcyBbJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXSAtIENvbG9yIGxpZ2h0bmVzcyBvbiBob3Zlci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYm9yZGVyLXdpZHRoIFskYnV0dG9uLWhvbGxvdy1ib3JkZXItd2lkdGhdIC0gQm9yZGVyIHdpZHRoIG9mIHRoZSBidXR0b24uXG5AbWl4aW4gYnV0dG9uLWhvbGxvdy1zdHlsZShcbiAgJGNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRob3Zlci1saWdodG5lc3M6ICRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzcyxcbiAgJGJvcmRlci13aWR0aDogJGJ1dHRvbi1ob2xsb3ctYm9yZGVyLXdpZHRoXG4pIHtcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRob3Zlci1saWdodG5lc3MpO1xuXG4gIC8vIERlZmF1bHQgYW5kIGRpc2FibGVkIHN0YXRlc1xuICAmLFxuICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSxcbiAgJi5kaXNhYmxlZDpob3ZlciwgJltkaXNhYmxlZF06aG92ZXIsXG4gICYuZGlzYWJsZWQ6Zm9jdXMsICZbZGlzYWJsZWRdOmZvY3VzIHtcbiAgICBib3JkZXI6ICRib3JkZXItd2lkdGggc29saWQgJGNvbG9yO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgICBjb2xvcjogJGNvbG9yLWhvdmVyO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBiYXNlIHN0eWxlcyBvZiBhIGNsZWFyIGJ1dHRvbi5cbi8vLyBTZWUgbWl4aW4gYGJ1dHRvbi1jbGVhci1zdHlsZWAgZm9yIHRoZSBmaWxsaW5nIHN0eWxlcy5cbkBtaXhpbiBidXR0b24tY2xlYXIge1xuICAmLCAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgc3R5bGUgb2YgYSBjbGVhciBidXR0b24uXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWJhY2tncm91bmRdIC0gVGV4dCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRob3Zlci1saWdodG5lc3MgWyRidXR0b24taG9sbG93LWhvdmVyLWxpZ2h0bmVzc10gLSBDb2xvciBsaWdodG5lc3Mgb24gaG92ZXIuXG5AbWl4aW4gYnV0dG9uLWNsZWFyLXN0eWxlKFxuICAkY29sb3I6ICRidXR0b24tYmFja2dyb3VuZCxcbiAgJGhvdmVyLWxpZ2h0bmVzczogJGJ1dHRvbi1ob2xsb3ctaG92ZXItbGlnaHRuZXNzXG4pIHtcbiAgJGNvbG9yLWhvdmVyOiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRob3Zlci1saWdodG5lc3MpO1xuXG4gIC8vIERlZmF1bHQgYW5kIGRpc2FibGVkIHN0YXRlc1xuICAmLFxuICAmLmRpc2FibGVkLCAmW2Rpc2FibGVkXSxcbiAgJi5kaXNhYmxlZDpob3ZlciwgJltkaXNhYmxlZF06aG92ZXIsXG4gICYuZGlzYWJsZWQ6Zm9jdXMsICZbZGlzYWJsZWRdOmZvY3VzIHtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG5cbiAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgY29sb3I6ICRjb2xvci1ob3ZlcjtcbiAgfVxufVxuXG4vLy8gQWRkcyBkaXNhYmxlZCBzdHlsZXMgdG8gYSBidXR0b24gYnkgZmFkaW5nIHRoZSBlbGVtZW50IGFuZCByZXNldGluZyB0aGUgY3Vyc29yLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb3BhY2l0eSBbJGJ1dHRvbi1vcGFjaXR5LWRpc2FibGVkXSAtIE9wYWNpdHkgb2YgdGhlIGRpc2FibGVkIGJ1dHRvbi5cbkBtaXhpbiBidXR0b24tZGlzYWJsZWQoXG4gICRvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWRcbikge1xuICBvcGFjaXR5OiAkYnV0dG9uLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi8vLyBBZGRzIGEgZHJvcGRvd24gYXJyb3cgdG8gYSBidXR0b24uXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaXplIFswLjRlbV0gLSBTaXplIG9mIHRoZSBhcnJvdy4gV2UgcmVjb21tZW5kIHVzaW5nIGFuIGBlbWAgdmFsdWUgc28gdGhlIHRyaWFuZ2xlIHNjYWxlcyB3aGVuIHVzZWQgaW5zaWRlIGRpZmZlcmVudCBzaXplcyBvZiBidXR0b25zLlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbd2hpdGVdIC0gQ29sb3Igb2YgdGhlIGFycm93LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkb2Zmc2V0IFskYnV0dG9uLXBhZGRpbmddIC0gRGlzdGFuY2UgYmV0d2VlbiB0aGUgYXJyb3cgYW5kIHRoZSB0ZXh0IG9mIHRoZSBidXR0b24uIERlZmF1bHRzIHRvIHdoYXRldmVyIHRoZSByaWdodCBwYWRkaW5nIG9mIGEgYnV0dG9uIGlzLlxuQG1peGluIGJ1dHRvbi1kcm9wZG93bihcbiAgJHNpemU6IDAuNGVtLFxuICAkY29sb3I6ICR3aGl0ZSxcbiAgJG9mZnNldDogZ2V0LXNpZGUoJGJ1dHRvbi1wYWRkaW5nLCByaWdodClcbikge1xuICAmOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRzaXplLCAkY29sb3IsIGRvd24pO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDAuNGVtOyAvLyBBbGlnbnMgdGhlIGFycm93IHdpdGggdGhlIHRleHQgb2YgdGhlIGJ1dHRvblxuXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtcmlnaHR9O1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICRvZmZzZXQ7XG4gIH1cbn1cblxuLy8vIEFkZHMgYWxsIHN0eWxlcyBmb3IgYSBidXR0b24uIEZvciBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciBzdHlsZXMsIHVzZSB0aGUgaW5kaXZpZHVhbCBidXR0b24gbWl4aW5zLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGV4cGFuZCBbZmFsc2VdIC0gU2V0IHRvIGB0cnVlYCB0byBtYWtlIHRoZSBidXR0b24gZnVsbC13aWR0aC5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJGJ1dHRvbi1iYWNrZ3JvdW5kXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZC1ob3ZlciBbJGJ1dHRvbi1iYWNrZ3JvdW5kLWhvdmVyXSAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci4gU2V0IHRvIGBhdXRvYCB0byBoYXZlIHRoZSBtaXhpbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgaG92ZXIgY29sb3IuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskYnV0dG9uLWNvbG9yXSAtIFRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbi4gU2V0IHRvIGBhdXRvYCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgY29sb3IgYmFzZWQgb24gdGhlIGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3R5bGUgW3NvbGlkXSAtIFNldCB0byBgaG9sbG93YCB0byBjcmVhdGUgYSBob2xsb3cgYnV0dG9uLiBUaGUgY29sb3IgZGVmaW5lZCBpbiBgJGJhY2tncm91bmRgIHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJpbWFyeSBjb2xvciBvZiB0aGUgYnV0dG9uLlxuQG1peGluIGJ1dHRvbihcbiAgJGV4cGFuZDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kOiAkYnV0dG9uLWJhY2tncm91bmQsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkYnV0dG9uLWJhY2tncm91bmQtaG92ZXIsXG4gICRjb2xvcjogJGJ1dHRvbi1jb2xvcixcbiAgJHN0eWxlOiAkYnV0dG9uLWZpbGxcbikge1xuICBAaW5jbHVkZSBidXR0b24tYmFzZTtcbiAgQGluY2x1ZGUgYnV0dG9uLWZpbGwoJHN0eWxlKTtcbiAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJHN0eWxlLCAkYmFja2dyb3VuZCwgJGJhY2tncm91bmQtaG92ZXIsICRjb2xvcik7XG5cbiAgQGlmICRleHBhbmQge1xuICAgIEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tYnV0dG9uIHtcbiAgLmJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgYnV0dG9uKCRzdHlsZTogbm9uZSk7XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9IHtcbiAgICAgICAgZm9udC1zaXplOiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5leHBhbmRlZCB7IEBpbmNsdWRlIGJ1dHRvbi1leHBhbmQ7IH1cblxuICAgIEBpZiAkYnV0dG9uLXJlc3BvbnNpdmUtZXhwYW5kZWQge1xuICAgICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoI3skc2l6ZX0gb25seSkge1xuICAgICAgICAgICYuI3skc2l6ZX0tb25seS1leHBhbmRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZXhwYW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoI3skc2l6ZX0gZG93bikge1xuICAgICAgICAgICAgJi4jeyRzaXplfS1kb3duLWV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCN7JHNpemV9KSB7XG4gICAgICAgICAgICAmLiN7JHNpemV9LWV4cGFuZGVkIHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWV4cGFuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTb2xpZCwgaG9sbG93ICYgY2xlYXIgc3R5bGVzXG4gICAgQGVhY2ggJGZpbGxpbmcgaW4gKHNvbGlkIGhvbGxvdyBjbGVhcikge1xuICAgICAgJHNlbGVjdG9yOiBpZigkYnV0dG9uLWZpbGwgPT0gJGZpbGxpbmcsIG51bGwsICcuI3skZmlsbGluZ30nKTtcblxuICAgICAgJiN7JHNlbGVjdG9yfSB7XG4gICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsKCRmaWxsaW5nKTtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWZpbGwtc3R5bGUoJGZpbGxpbmcpO1xuXG4gICAgICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGJ1dHRvbi1wYWxldHRlIHtcbiAgICAgICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRmaWxsaW5nLCAkY29sb3IsIGF1dG8sIGF1dG8pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgJi5kaXNhYmxlZCwgJltkaXNhYmxlZF0ge1xuICAgICAgQGluY2x1ZGUgYnV0dG9uLWRpc2FibGVkO1xuICAgIH1cblxuICAgIC8vIERyb3Bkb3duIGFycm93XG4gICAgJi5kcm9wZG93biB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZHJvcGRvd247XG5cbiAgICAgIEBpZiAkYnV0dG9uLWZpbGwgPT0gaG9sbG93IHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRidXR0b24tYmFja2dyb3VuZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmhvbGxvdywgJi5jbGVhciB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiAkYnV0dG9uLWJhY2tncm91bmQ7XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBCdXR0b24gd2l0aCBkcm9wZG93biBhcnJvdyBvbmx5XG4gICAgJi5hcnJvdy1vbmx5OjphZnRlciB7XG4gICAgICB0b3A6IC0wLjFlbTtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgbWFyZ2luLSN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICB9XG4gIH1cblxuICBhLmJ1dHRvbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnV0dG9uLWdyb3VwXG4vLy8vXG5cbi8vLyBNYXJnaW4gZm9yIGJ1dHRvbiBncm91cHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnV0dG9uZ3JvdXAtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1zcGFjaW5nOiAxcHggIWRlZmF1bHQ7XG5cbi8vLyBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEB0eXBlIFN0cmluZ1xuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbicgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIG51bWJlciBvZiBidXR0b25zIHRoYXQgY2FuIGJlIGluIGFuIGV2ZW4td2lkdGggYnV0dG9uIGdyb3VwLiAoT25seSBuZWVkZWQgd2hlbiAkZ2xvYmFsLWZsZXhib3g6IGZhbHNlOylcbi8vLyBAdHlwZSBOdW1iZXJcbiRidXR0b25ncm91cC1leHBhbmQtbWF4OiA2ICFkZWZhdWx0O1xuXG4vLy8gRGV0ZXJtaW5lcyBpZiAkYnV0dG9uLXJhZGl1cyBpcyBhcHBsaWVkIHRvIGVhY2ggYnV0dG9uIG9yIHRoZSBidXR0b24gZ3JvdXAgYXMgYSB3aG9sZS4gVXNlICRnbG9iYWwtcmFkaXVzIGluIF9zZXR0aW5ncy5zY3NzIHRvIGNoYW5nZSByYWRpdXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQWRkIHN0eWxlcyBmb3IgYSBidXR0b24gZ3JvdXAgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkY2hpbGQtc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2luZyBbJGJ1dHRvbmdyb3VwLXNwYWNpbmddIC0gU3BhY2luZyBiZXR3ZWVuIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwKFxuICAkY2hpbGQtc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJHNwYWNpbmc6ICRidXR0b25ncm91cC1zcGFjaW5nXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi1ib3R0b206ICRidXR0b25ncm91cC1tYXJnaW47XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIERpc2FibGUgY2xlYXJmaXhcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc2l6ZTogMDtcbiAgfVxuXG4gICN7JGNoaWxkLXNlbGVjdG9yfSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkc3BhY2luZztcbiAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICBmb250LXNpemU6IG1hcC1nZXQoJGJ1dHRvbi1zaXplcywgZGVmYXVsdCk7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkYnV0dG9uLXJhZGl1cztcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRidXR0b24tcmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gTWFrZSBidXR0b25zIGJvbmRlZCB3aXRob3V0IGdhcCBiZXR3ZWVuIHRoZW0uIEJvcmRlcnMgYmV0d2VlbiBidXR0b25zIGFyZSBtZXJnZWRcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIFskYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3JdIC0gU2VsZWN0b3IgZm9yIHRoZSBidXR0b25zIGluc2lkZSBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtbm8tZ2FwcyhcbiAgJHNlbGVjdG9yOiAkYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3IsXG4gICRib3JkZXItd2lkdGg6ICRidXR0b24taG9sbG93LWJvcmRlci13aWR0aFxuKSB7XG4gICN7JHNlbGVjdG9yfSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IHJlbS1jYWxjKC0kYm9yZGVyLXdpZHRoKTtcblxuICAgICsgI3skc2VsZWN0b3J9IHtcbiAgICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH0tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGZ1bGwtd2lkdGggYnV0dG9uIGdyb3VwLCBtYWtpbmcgZWFjaCBidXR0b24gZXF1YWwgd2lkdGguXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzcGFjaW5nIFskYnV0dG9uZ3JvdXAtc3BhY2luZ10gLSBTcGFjaW5nIGJldHdlZW4gYnV0dG9ucyBpbiBhIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtZXhwYW5kKFxuICAkc2VsZWN0b3I6ICRidXR0b25ncm91cC1jaGlsZC1zZWxlY3RvcixcbiAgJHNwYWNpbmc6ICRidXR0b25ncm91cC1zcGFjaW5nLFxuICAkY291bnQ6IG51bGxcbikge1xuICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IC0kc3BhY2luZztcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyAvLyBEaXNhYmxlIGNsZWFyZml4XG4gICAgfVxuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIE9uZSBjaGlsZFxuICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtICN7JHNwYWNpbmd9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUd28gb3IgbW9yZSBjaGlsZHJlZW5cbiAgICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXgge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOm50aC1sYXN0LWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgJiwgJjpmaXJzdC1jaGlsZDpudGgtbGFzdC1jaGlsZCgjeyRpfSkgfiAjeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoI3twZXJjZW50YWdlKDEgLyAkaSl9IC0gI3skc3BhY2luZ30pO1xuICAgICAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHNwYWNpbmcgKiAtJGJ1dHRvbmdyb3VwLWV4cGFuZC1tYXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTdGFja3MgdGhlIGJ1dHRvbnMgaW4gYSBidXR0b24gZ3JvdXAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBbJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXSAtIFNlbGVjdG9yIGZvciB0aGUgYnV0dG9ucyBpbnNpZGUgdGhlIGJ1dHRvbiBncm91cC5cbkBtaXhpbiBidXR0b24tZ3JvdXAtc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICBAaWYgbm90ICRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaCB7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtbGVmdH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLXRvcC0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICB9XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLXJpZ2h0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLy8gVW4tc3RhY2tzIHRoZSBidXR0b25zIGluIGEgYnV0dG9uIGdyb3VwLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc2VsZWN0b3IgWyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcl0gLSBTZWxlY3RvciBmb3IgdGhlIGJ1dHRvbnMgaW5zaWRlIHRoZSBidXR0b24gZ3JvdXAuXG5AbWl4aW4gYnV0dG9uLWdyb3VwLXVuc3RhY2soXG4gICRzZWxlY3RvcjogJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yXG4pIHtcbiAgI3skc2VsZWN0b3J9IHtcbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIEBpZiBub3QgJGJ1dHRvbmdyb3VwLXJhZGl1cy1vbi1lYWNoIHtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLSN7JGdsb2JhbC1sZWZ0fS1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItdG9wLSN7JGdsb2JhbC1yaWdodH0tcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS0jeyRnbG9iYWwtcmlnaHR9LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgICAgIGJvcmRlci1ib3R0b20tI3skZ2xvYmFsLWxlZnR9LXJhZGl1czogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1idXR0b24tZ3JvdXAge1xuICAuYnV0dG9uLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXA7XG5cbiAgICAvLyBTaXplc1xuICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gbWFwLXJlbW92ZSgkYnV0dG9uLXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9ICN7JGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yfSB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV2ZW4td2lkdGggR3JvdXBcbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJ1dHRvbi1ncm91cC1leHBhbmQ7XG4gICAgfVxuXG4gICAgLy8gU29saWQsIGhvbGxvdyAmIGNsZWFyIHN0eWxlc1xuICAgIEBlYWNoICRmaWxsaW5nIGluIChzb2xpZCBob2xsb3cgY2xlYXIpIHtcbiAgICAgICRiYXNlLXNlbGVjdG9yOiBpZigkYnV0dG9uLWZpbGwgPT0gJGZpbGxpbmcsIG51bGwsICcuI3skZmlsbGluZ30nKTtcblxuICAgICAgJiN7JGJhc2Utc2VsZWN0b3J9IHtcbiAgICAgICAgLy8gRG8gbm90IGdlbmVyYXRlIGJ1dHRvbiBiYXNlIHN0eWxlcyBmb3IgdGhlIGRlZmF1bHQgZmlsbGluZ1xuICAgICAgICBAaWYoJGJ1dHRvbi1maWxsICE9ICRmaWxsaW5nKSB7XG4gICAgICAgICAgI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsKCRmaWxsaW5nKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJ1dHRvbi1maWxsLXN0eWxlKCRmaWxsaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICRidXR0b24tcGFsZXR0ZSB7XG4gICAgICAgICAgJGluZGl2aWR1YWwtc2VsZWN0b3I6IGlmKCRidXR0b24tZmlsbCA9PSAkZmlsbGluZywgbnVsbCwgJyAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0uI3skbmFtZX0nKTtcblxuICAgICAgICAgICYuI3skbmFtZX0gI3skYnV0dG9uZ3JvdXAtY2hpbGQtc2VsZWN0b3J9LCAjeyRpbmRpdmlkdWFsLXNlbGVjdG9yfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBidXR0b24tZmlsbC1zdHlsZSgkZmlsbGluZywgJGNvbG9yLCBhdXRvLCBhdXRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cblxuICAgICYubm8tZ2FwcyB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtbm8tZ2FwcztcbiAgICB9XG5cbiAgICAmLnN0YWNrZWQsXG4gICAgJi5zdGFja2VkLWZvci1zbWFsbCxcbiAgICAmLnN0YWNrZWQtZm9yLW1lZGl1bSB7XG4gICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtc3RhY2s7XG5cbiAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtZXhwYW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuc3RhY2tlZC1mb3Itc21hbGwge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgQGluY2x1ZGUgYnV0dG9uLWdyb3VwLXVuc3RhY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBAaW5jbHVkZSBidXR0b24tZ3JvdXAtdW5zdGFjaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnN0YWNrZWQtZm9yLXNtYWxsLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zdGFja2VkLWZvci1tZWRpdW0uZXhwYW5kZWQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAjeyRidXR0b25ncm91cC1jaGlsZC1zZWxlY3Rvcn0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2xvc2UtYnV0dG9uXG4vLy8vXG5cbi8vLyBEZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSBjbG9zZSBidXR0b24uIFRoZSBmaXJzdCB2YWx1ZSBzaG91bGQgYmUgYHJpZ2h0YCBvciBgbGVmdGAsIGFuZCB0aGUgc2Vjb25kIHZhbHVlIHNob3VsZCBiZSBgdG9wYCBvciBgYm90dG9tYC5cbi8vLyBAdHlwZSBMaXN0XG4kY2xvc2VidXR0b24tcG9zaXRpb246IHJpZ2h0IHRvcCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgei1pbmRleCBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2xvc2VidXR0b24tei1pbmRleDogMTAgIWRlZmF1bHQ7XG5cbi8vLyBCdXR0b24gc2l6ZSB0byB1c2UgYXMgZGVmYXVsdFxuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBzZWUgJGNsb3NlYnV0dG9uLXNpemVcbi8vLyBAc2VlICRjbG9zZWJ1dHRvbi1vZmZzZXQtaG9yaXpvbnRhbFxuLy8vIEBzZWUgJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbFxuJGNsb3NlYnV0dG9uLWRlZmF1bHQtc2l6ZTogbWVkaXVtICFkZWZhdWx0O1xuXG4vLy8gUmlnaHQgKG9yIGxlZnQpIG9mZnNldChzKSBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsOiAoXG4gIHNtYWxsOiAwLjY2cmVtLFxuICBtZWRpdW06IDFyZW0sXG4pICFkZWZhdWx0O1xuXG4vLy8gVG9wIChvciBib3R0b20pIG9mZnNldChzKSBmb3IgYSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgTnVtYmVyfE1hcFxuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogKFxuICBzbWFsbDogMC4zM2VtLFxuICBtZWRpdW06IDAuNXJlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBTaXplKHMpIG9mIHRoZSBjbG9zZSBidXR0b24uIFVzZWQgdG8gZ2VuZXJhdGUgc2l6aW5nIG1vZGlmaWVycy5cbi8vLyBAdHlwZSBOdW1iZXJ8TWFwXG4kY2xvc2VidXR0b24tc2l6ZTogKFxuICBzbWFsbDogMS41ZW0sXG4gIG1lZGl1bTogMmVtLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsaW5lLWhlaWdodCBvZiB0aGUgY2xvc2UgYnV0dG9uLiBJdCBhZmZlY3RzIHRoZSBzcGFjaW5nIG9mIHRoZSBlbGVtZW50LlxuLy8vIEB0eXBlIE51bWJlclxuJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQ6IDEgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSBjbG9zZSBidXR0b24uXG4vLy8gQHR5cGUgQ29sb3JcbiRjbG9zZWJ1dHRvbi1jb2xvcjogJGRhcmstZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIGNsb3NlIGJ1dHRvbiB3aGVuIGJlaW5nIGhvdmVyZWQgb24uXG4vLy8gQHR5cGUgQ29sb3JcbiRjbG9zZWJ1dHRvbi1jb2xvci1ob3ZlcjogJGJsYWNrICFkZWZhdWx0O1xuXG5cbi8vLyBHZXQgdGhlIHNpemUgYW5kIHBvc2l0aW9uIGZvciBhIGNsb3NlIGJ1dHRvbi4gSWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgbnVtYmVyLCB0aGUgbnVtYmVyIGlzIHJldHVybmVkLiBJZiB0aGUgaW5wdXQgdmFsdWUgaXMgYSBjb25maWcgbWFwIGFuZCB0aGUgbWFwIGhhcyB0aGUga2V5IGAkc2l6ZWAsIHRoZSB2YWx1ZSBpcyByZXR1cm5lZC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJHZhbHVlIC0gQSBudW1iZXIgb3IgbWFwIHRoYXQgcmVwcmVzZW50cyB0aGUgc2l6ZSBvciBwb3NpdGlvbiB2YWx1ZShzKSBvZiB0aGUgY2xvc2UgYnV0dG9uLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgY2xvc2UgYnV0dG9uIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gVGhlIGdpdmVuIG51bWJlciBvciB0aGUgdmFsdWUgZm91bmQgaW4gdGhlIG1hcC5cbkBmdW5jdGlvbiAtemYtZ2V0LXNpemUtdmFsKCR2YWx1ZSwgJHNpemUpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIC8vIElmIGl0IGlzLCBqdXN0IHJldHVybiB0aGUgbnVtYmVyXG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgc2l6ZSBuYW1lIGV4aXN0cyBpbiB0aGUgdmFsdWUgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCR2YWx1ZSwgJHNpemUpIHtcbiAgICAvLyBJZiBpdCBkb2VzLCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCR2YWx1ZSwgJHNpemUpO1xuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBzaXplIGFuZCBwb3NpdGlvbiBvZiBhIGNsb3NlIGJ1dHRvbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRzaXplIFttZWRpdW1dIC0gVGhlIHNpemUgdG8gdXNlLiBTZXQgdG8gYHNtYWxsYCB0byBjcmVhdGUgYSBzbWFsbCBjbG9zZSBidXR0b24uIFRoZSAnbWVkaXVtJyB2YWx1ZXMgZGVmaW5lZCBpbiBgJGNsb3NlYnV0dG9uLSpgIHZhcmlhYmxlcyB3aWxsIGJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgc2l6ZSBhbmQgcG9zaXRpb24gb2YgdGhlIGNsb3NlIGJ1dHRvbi5cbkBtaXhpbiBjbG9zZS1idXR0b24tc2l6ZSgkc2l6ZSkge1xuICAkeDogbnRoKCRjbG9zZWJ1dHRvbi1wb3NpdGlvbiwgMSk7XG4gICR5OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAyKTtcblxuICAjeyR4fTogLXpmLWdldC1zaXplLXZhbCgkY2xvc2VidXR0b24tb2Zmc2V0LWhvcml6b250YWwsICRzaXplKTtcbiAgI3skeX06IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbCwgJHNpemUpO1xuICBmb250LXNpemU6IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLXNpemUsICRzaXplKTtcbiAgbGluZS1oZWlnaHQ6IC16Zi1nZXQtc2l6ZS12YWwoJGNsb3NlYnV0dG9uLWxpbmVoZWlnaHQsICRzaXplKTtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGNsb3NlIGJ1dHRvbiwgdXNpbmcgdGhlIHN0eWxlcyBpbiB0aGUgc2V0dGluZ3MgdmFyaWFibGVzLlxuQG1peGluIGNsb3NlLWJ1dHRvbiB7XG4gICR4OiBudGgoJGNsb3NlYnV0dG9uLXBvc2l0aW9uLCAxKTtcbiAgJHk6IG50aCgkY2xvc2VidXR0b24tcG9zaXRpb24sIDIpO1xuXG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAkY2xvc2VidXR0b24tei1pbmRleDtcbiAgY29sb3I6ICRjbG9zZWJ1dHRvbi1jb2xvcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkY2xvc2VidXR0b24tY29sb3ItaG92ZXI7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uIHtcbiAgLmNsb3NlLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgY2xvc2UtYnV0dG9uO1xuXG4gICAgLy8gR2VuZXJhdGUgYSBwbGFjZWhvbGRlciBhbmQgYSBjbGFzcyBmb3IgZWFjaCBzaXplXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRjbG9zZWJ1dHRvbi1zaXplIHtcbiAgICAgIEBhdC1yb290IHtcbiAgICAgICAgJXpmLWNsb3NlLWJ1dHRvbi0tI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGNsb3NlLWJ1dHRvbi1zaXplKCRuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGV4dGVuZCAlemYtY2xvc2UtYnV0dG9uLS0jeyRuYW1lfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2UgYnkgZGVmYXVsdCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGRlZmF1bHQgc2l6ZVxuICAgIEBleHRlbmQgJXpmLWNsb3NlLWJ1dHRvbi0tI3skY2xvc2VidXR0b24tZGVmYXVsdC1zaXplfTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGxhYmVsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRsYWJlbC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRlIHRleHQgY29sb3IgZm9yIGxhYmVscy5cbi8vLyBAdHlwZSBDb2xvclxuJGxhYmVsLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXG4vLy8gQHR5cGUgTWFwXG4kbGFiZWwtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBsYWJlbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbGFiZWwtZm9udC1zaXplOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgaW5zaWRlIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1wYWRkaW5nOiAwLjMzMzMzcmVtIDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIG9mIGxhYmVscy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRsYWJlbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGJhc2Ugc3R5bGVzIGZvciBhIGxhYmVsLlxuQG1peGluIGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAkbGFiZWwtcGFkZGluZztcblxuICBib3JkZXItcmFkaXVzOiAkbGFiZWwtcmFkaXVzO1xuXG4gIGZvbnQtc2l6ZTogJGxhYmVsLWZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tbGFiZWwge1xuICAubGFiZWwge1xuICAgIEBpbmNsdWRlIGxhYmVsO1xuXG4gICAgYmFja2dyb3VuZDogJGxhYmVsLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGxhYmVsLXBhbGV0dGUge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvcjtcbiAgICAgICAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJGNvbG9yLCAoJGxhYmVsLWNvbG9yLCAkbGFiZWwtY29sb3ItYWx0KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBwcm9ncmVzcyBiYXIgY29udGFpbmVyLlxuQG1peGluIHByb2dyZXNzLWNvbnRhaW5lciB7XG4gIGhlaWdodDogJHByb2dyZXNzLWhlaWdodDtcbiAgbWFyZ2luLWJvdHRvbTogJHByb2dyZXNzLW1hcmdpbi1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6ICRwcm9ncmVzcy1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1iYWNrZ3JvdW5kO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBpbm5lciBtZXRlciBvZiBhIHByb2dyZXNzIGJhci5cbkBtaXhpbiBwcm9ncmVzcy1tZXRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJvZ3Jlc3MtbWV0ZXItYmFja2dyb3VuZDtcblxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRleHQgaW4gdGhlIHByb2dyZXNzIG1ldGVyLlxuQG1peGluIHByb2dyZXNzLW1ldGVyLXRleHQge1xuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXI7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgaGFzLXZhbHVlKCRwcm9ncmVzcy1yYWRpdXMpIHtcbiAgICBib3JkZXItcmFkaXVzOiAkcHJvZ3Jlc3MtcmFkaXVzO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb2dyZXNzLWJhciB7XG4gIC8vIFByb2dyZXNzIGJhclxuICAucHJvZ3Jlc3Mge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLWNvbnRhaW5lcjtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgLnByb2dyZXNzLW1ldGVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJbm5lciBtZXRlclxuICAucHJvZ3Jlc3MtbWV0ZXIge1xuICAgIEBpbmNsdWRlIHByb2dyZXNzLW1ldGVyO1xuICB9XG5cbiAgLy8gSW5uZXIgbWV0ZXIgdGV4dFxuICAucHJvZ3Jlc3MtbWV0ZXItdGV4dCB7XG4gICAgQGluY2x1ZGUgcHJvZ3Jlc3MtbWV0ZXItdGV4dDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLyBbVE9ET10gQ2hlY2sgaG93IHBsdWdpbiBjb25maXJtcyBkaXNhYmxlZCBvciB2ZXJ0aWNhbCBzdGF0dXNcbi8vIFtUT0RPXSBDaGVjayBpZiB0cmFuc2l0aW9uOiBhbGw7IGlzIG5lY2Vzc2FyeVxuXG4vLy8vXG4vLy8gQGdyb3VwIHNsaWRlclxuLy8vL1xuXG4vLy8gRGVmYXVsdCBzbGlkZXIgd2lkdGggb2YgYSB2ZXJ0aWNhbCBzbGlkZXIuIChEb2Vzbid0IGFwcGx5IHRvIHRoZSBuYXRpdmUgc2xpZGVyLilcbi8vLyBAdHlwZSBOdW1iZXJcbiRzbGlkZXItd2lkdGgtdmVydGljYWw6IDAuNXJlbSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcGVydGllcyB0byBhcHBseSB0byB0aGUgc2xpZGVyIGhhbmRsZSBhbmQgZmlsbC4gKERvZXNuJ3QgYXBwbHkgdG8gdGhlIG5hdGl2ZSBzbGlkZXIuKVxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiRzbGlkZXItdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3Igc2xpZGVycy5cbkBtaXhpbiBzbGlkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6ICRzbGlkZXItaGVpZ2h0O1xuICBtYXJnaW4tdG9wOiAxLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItYmFja2dyb3VuZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuXG4vLy8gQWRkcyB0aGUgZ2VuZXJhbCBzdHlsZXMgZm9yIGFjdGl2ZSBmaWxsIGZvciBzbGlkZXJzLlxuQG1peGluIHNsaWRlci1maWxsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHNsaWRlci1oZWlnaHQ7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJHNsaWRlci1maWxsLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbi8vLyBBZGRzIHRoZSBnZW5lcmFsIHN0eWxlcyBmb3IgdGhlIHNsaWRlciBoYW5kbGVzLlxuQG1peGluIHNsaWRlci1oYW5kbGUge1xuICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlcjtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG5cbiAgYm9yZGVyLXJhZGl1czogJHNsaWRlci1yYWRpdXM7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzbGlkZXItaGFuZGxlLWJhY2tncm91bmQ7XG4gIHRyYW5zaXRpb246ICRzbGlkZXItdHJhbnNpdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogc2NhbGUtY29sb3IoJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZCwgJGxpZ2h0bmVzczogLTE1JSk7XG4gIH1cblxuICAmLmlzLWRyYWdnaW5nIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMHMgbGluZWFyO1xuICB9XG59XG5cbkBtaXhpbiBzbGlkZXItZGlzYWJsZWQge1xuICBvcGFjaXR5OiAkc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbkBtaXhpbiBzbGlkZXItdmVydGljYWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAkc2xpZGVyLXdpZHRoLXZlcnRpY2FsO1xuICBoZWlnaHQ6IDEyLjVyZW07XG4gIG1hcmdpbjogMCAxLjI1cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEsIC0xKTtcblxuICAuc2xpZGVyLWZpbGwge1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogJHNsaWRlci13aWR0aC12ZXJ0aWNhbDtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICB9XG5cbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAkc2xpZGVyLWhhbmRsZS1oZWlnaHQ7XG4gICAgaGVpZ2h0OiAkc2xpZGVyLWhhbmRsZS13aWR0aDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc2xpZGVyIHtcbiAgLy8gQ29udGFpbmVyXG4gIC5zbGlkZXIge1xuICAgIEBpbmNsdWRlIHNsaWRlci1jb250YWluZXI7XG4gIH1cblxuICAvLyBGaWxsIGFyZWFcbiAgLnNsaWRlci1maWxsIHtcbiAgICBAaW5jbHVkZSBzbGlkZXItZmlsbDtcbiAgfVxuXG4gIC8vIERyYWdnYWJsZSBoYW5kbGVcbiAgLnNsaWRlci1oYW5kbGUge1xuICAgIEBpbmNsdWRlIHNsaWRlci1oYW5kbGU7XG4gIH1cblxuICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAuc2xpZGVyLmRpc2FibGVkLFxuICAuc2xpZGVyW2Rpc2FibGVkXSB7XG4gICAgQGluY2x1ZGUgc2xpZGVyLWRpc2FibGVkO1xuICB9XG5cbiAgLy8gVmVydGljYWwgc2xpZGVyXG4gIC5zbGlkZXIudmVydGljYWwge1xuICAgIEBpbmNsdWRlIHNsaWRlci12ZXJ0aWNhbDtcbiAgfVxuXG4gIC8vIFJUTCBzdXBwb3J0XG4gIEBpZiAkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IHJ0bCB7XG4gICAgLnNsaWRlcjpub3QoLnZlcnRpY2FsKSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBzd2l0Y2hcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSBzd2l0Y2guXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBhY3RpdmUgY29sb3Igb2YgYSBzd2l0Y2guXG4vLy8gQHR5cGUgQ29sb3JcbiRzd2l0Y2gtYmFja2dyb3VuZC1hY3RpdmU6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoLCB3aXRoIG5vIGNsYXNzIGFwcGxpZWQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodDogMnJlbSAhZGVmYXVsdDtcblxuLy8vIEhlaWdodCBvZiBhIHN3aXRjaCB3aXRoIC50aW55IGNsYXNzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQtdGlueTogMS41cmVtICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG9mIGEgc3dpdGNoIHdpdGggLnNtYWxsIGNsYXNzLlxuLy8vIEB0eXBlIE51bWJlclxuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzd2l0Y2ggd2l0aCAubGFyZ2UgY2xhc3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBvZiB0aGUgc3dpdGNoXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLW1hcmdpbjogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgc3dpdGNoIGNvbnRhaW5lciBhbmQgcGFkZGxlLlxuLy8vIEB0eXBlIENvbG9yXG4kc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGJldHdlZW4gYSBzd2l0Y2ggcGFkZGxlIGFuZCB0aGUgZWRnZSBvZiB0aGUgYm9keS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcGFkZGxlLW9mZnNldDogMC4yNXJlbSAhZGVmYXVsdDtcblxuLy8vIGJvcmRlciByYWRpdXMgb2YgdGhlIHN3aXRjaCBwYWRkbGVcbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcGFkZGxlLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBzd2l0Y2ggdHJhbnNpdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIE9wYWNpdHkgb2YgYSBkaXNhYmxlZCBzd2l0Y2guXG4vLy8gQHR5cGUgTnVtYmVyXG4kc3dpdGNoLW9wYWNpdHktZGlzYWJsZWQ6IC41ICFkZWZhdWx0O1xuXG4vLy8gQ3Vyc29yIGZvciBhIGRpc2FibGVkIHN3aXRjaC5cbi8vLyBAdHlwZSBDdXJzb3JcbiRzd2l0Y2gtY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZCAhZGVmYXVsdDtcblxuLy8gbWFrZSB0aGVtIHZhcmlhYmxlc1xuLy8gYXNrIGFib3V0IGFjY2Vzc2liaWxpdHkgb24gbGFiZWxcbi8vIGNoYW5nZSBjbGFzcyBuYW1lIGZvciB0ZXh0XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIGEgY29udGFpbmVyIGNsYXNzLlxuQG1peGluIHN3aXRjaC1jb250YWluZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206ICRzd2l0Y2gtbWFyZ2luO1xuICBvdXRsaW5lOiAwO1xuXG4gIC8vIFRoZXNlIHByb3BlcnRpZXMgY2FzY2FkZSBkb3duIHRvIHRoZSBzd2l0Y2ggdGV4dFxuICBmb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBzd2l0Y2ggaW5wdXQuIEFwcGx5IHRoaXMgdG8gYW4gYDxpbnB1dD5gIHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtaW5wdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGJhY2tncm91bmQgYW5kIHBhZGRsZSBvZiBhIHN3aXRjaC4gQXBwbHkgdGhpcyB0byBhIGA8bGFiZWw+YCB3aXRoaW4gYSBzd2l0Y2guXG5AbWl4aW4gc3dpdGNoLXBhZGRsZSB7XG4gICRzd2l0Y2gtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0ICogMjtcbiAgJHBhZGRsZS1oZWlnaHQ6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRzd2l0Y2gtcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAtICgkc3dpdGNoLXBhZGRsZS1vZmZzZXQgKiAyKTtcbiAgJHBhZGRsZS1hY3RpdmUtb2ZmZXN0OiAkc3dpdGNoLXdpZHRoIC0gJHBhZGRsZS13aWR0aCAtICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogJHN3aXRjaC13aWR0aDtcbiAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcblxuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXJhZGl1cztcbiAgYmFja2dyb3VuZDogJHN3aXRjaC1iYWNrZ3JvdW5kO1xuICB0cmFuc2l0aW9uOiAkc3dpdGNoLXBhZGRsZS10cmFuc2l0aW9uO1xuXG4gIC8vIFJlc2V0dGluZyB0aGVzZSA8bGFiZWw+IHByZXNldHMgc28gdHlwZSBzdHlsZXMgY2FzY2FkZSBkb3duXG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gTmVlZGVkIHRvIG92ZXJyaWRlIHNwZWNpZmljaXR5XG4gIGlucHV0ICsgJiB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLy8gVGhlIHBhZGRsZSBpdHNlbGZcbiAgJjo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcbiAgICAjeyRnbG9iYWwtbGVmdH06ICRzd2l0Y2gtcGFkZGxlLW9mZnNldDtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAkcGFkZGxlLXdpZHRoO1xuICAgIGhlaWdodDogJHBhZGRsZS1oZWlnaHQ7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAgIGJvcmRlci1yYWRpdXM6ICRzd2l0Y2gtcGFkZGxlLXJhZGl1cztcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLXBhZGRsZS1iYWNrZ3JvdW5kO1xuICAgIHRyYW5zaXRpb246ICRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb247XG4gICAgY29udGVudDogJyc7XG4gIH1cblxuICAvLyBDaGFuZ2UgdGhlIHZpc3VhbCBzdHlsZSB3aGVuIHRoZSBzd2l0Y2ggaXMgYWN0aXZlXG4gIGlucHV0OmNoZWNrZWQgfiAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5kaWNhdGUgYSBkaXNhYmxlZCBzd2l0Y2hcbiAgaW5wdXQ6ZGlzYWJsZWQgfiAmIHtcbiAgICBjdXJzb3I6ICRzd2l0Y2gtY3Vyc29yLWRpc2FibGVkO1xuICAgIG9wYWNpdHk6ICRzd2l0Y2gtb3BhY2l0eS1kaXNhYmxlZDtcbiAgfVxuXG4gIGlucHV0OmZvY3VzIH4gJiB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuICB9XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciBhY3RpdmUvaW5hY3RpdmUgdGV4dCBpbnNpZGUgYSBzd2l0Y2guIEFwcGx5IHRoaXMgdG8gdGV4dCBlbGVtZW50cyBpbnNpZGUgdGhlIHN3aXRjaCBgPGxhYmVsPmAuXG5AbWl4aW4gc3dpdGNoLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSB0ZXh0IHdpdGhpbiBhIHN3aXRjaC5cbkBtaXhpbiBzd2l0Y2gtdGV4dC1hY3RpdmUge1xuICAjeyRnbG9iYWwtbGVmdH06IDglO1xuICBkaXNwbGF5OiBub25lO1xuXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluYWN0aXZlIHN0YXRlIHRleHQgd2l0aGluIGEgc3dpdGNoLlxuQG1peGluIHN3aXRjaC10ZXh0LWluYWN0aXZlIHtcbiAgI3skZ2xvYmFsLXJpZ2h0fTogMTUlO1xuXG4gIGlucHV0OmNoZWNrZWQgKyBsYWJlbCA+ICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8vIENoYW5nZXMgdGhlIHNpemUgb2YgYSBzd2l0Y2ggYnkgbW9kaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSBib2R5IGFuZCBwYWRkbGUuIEFwcGx5IHRoaXMgdG8gYSBzd2l0Y2ggY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZm9udC1zaXplIFsxcmVtXSAtIEZvbnQgc2l6ZSBvZiBsYWJlbCB0ZXh0IHdpdGhpbiB0aGUgc3dpdGNoLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3dpdGNoLWhlaWdodCBbMnJlbV0gLSBIZWlnaHQgb2YgdGhlIHN3aXRjaCBib2R5LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGxlLW9mZnNldCBbMC4yNXJlbV0gLSBTcGFjaW5nIGJldHdlZW4gdGhlIHN3aXRjaCBwYWRkbGUgYW5kIHRoZSBlZGdlIG9mIHRoZSBzd2l0Y2ggYm9keS5cbkBtaXhpbiBzd2l0Y2gtc2l6ZShcbiAgJGZvbnQtc2l6ZTogMXJlbSxcbiAgJHN3aXRjaC1oZWlnaHQ6IDJyZW0sXG4gICRwYWRkbGUtb2Zmc2V0OiAwLjI1cmVtXG4pIHtcblxuICAkc3dpdGNoLXdpZHRoOiAkc3dpdGNoLWhlaWdodCAqIDI7XG4gICRwYWRkbGUtd2lkdGg6ICRzd2l0Y2gtaGVpZ2h0IC0gKCRwYWRkbGUtb2Zmc2V0ICogMik7XG4gICRwYWRkbGUtaGVpZ2h0OiAkc3dpdGNoLWhlaWdodCAtICgkcGFkZGxlLW9mZnNldCAqIDIpO1xuICAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q6ICRzd2l0Y2gtd2lkdGggLSAkcGFkZGxlLXdpZHRoIC0gJHBhZGRsZS1vZmZzZXQ7XG5cbiAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcblxuICAuc3dpdGNoLXBhZGRsZSB7XG4gICAgd2lkdGg6ICRzd2l0Y2gtd2lkdGg7XG4gICAgaGVpZ2h0OiAkc3dpdGNoLWhlaWdodDtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gIH1cblxuICAuc3dpdGNoLXBhZGRsZTo6YWZ0ZXIge1xuICAgIHRvcDogJHBhZGRsZS1vZmZzZXQ7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLW9mZnNldDtcbiAgICB3aWR0aDogJHBhZGRsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRwYWRkbGUtaGVpZ2h0O1xuICB9XG5cbiAgaW5wdXQ6Y2hlY2tlZCB+IC5zd2l0Y2gtcGFkZGxlOjphZnRlciB7XG4gICAgI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGxlLWFjdGl2ZS1vZmZlc3Q7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tc3dpdGNoIHtcbiAgLy8gQ29udGFpbmVyIGNsYXNzXG4gIC5zd2l0Y2gge1xuICAgIGhlaWdodDogJHN3aXRjaC1oZWlnaHQ7XG4gICAgQGluY2x1ZGUgc3dpdGNoLWNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIDxpbnB1dD4gZWxlbWVudFxuICAuc3dpdGNoLWlucHV0IHtcbiAgICBAaW5jbHVkZSBzd2l0Y2gtaW5wdXQ7XG4gIH1cblxuICAvLyA8bGFiZWw+IGVsZW1lbnRcbiAgLnN3aXRjaC1wYWRkbGUge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1wYWRkbGU7XG4gIH1cblxuICAvLyBCYXNlIGxhYmVsIHRleHQgc3R5bGVzXG4gICVzd2l0Y2gtdGV4dCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXRleHQ7XG4gIH1cblxuICAvLyBBY3RpdmUgbGFiZWwgdGV4dCBzdHlsZXNcbiAgLnN3aXRjaC1hY3RpdmUge1xuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0LWFjdGl2ZTtcbiAgfVxuXG4gIC8vIEluYWN0aXZlIGxhYmVsIHRleHQgc3R5bGVzXG4gIC5zd2l0Y2gtaW5hY3RpdmUge1xuICAgIEBleHRlbmQgJXN3aXRjaC10ZXh0O1xuICAgIEBpbmNsdWRlIHN3aXRjaC10ZXh0LWluYWN0aXZlO1xuICB9XG5cbiAgLy8gU3dpdGNoIHNpemVzXG4gIC5zd2l0Y2gudGlueSB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTApLCAkc3dpdGNoLWhlaWdodC10aW55LCAkc3dpdGNoLXBhZGRsZS1vZmZzZXQpO1xuICB9XG5cbiAgLnN3aXRjaC5zbWFsbCB7XG4gICAgQGluY2x1ZGUgc3dpdGNoLXNpemUocmVtLWNhbGMoMTIpLCAkc3dpdGNoLWhlaWdodC1zbWFsbCwgJHN3aXRjaC1wYWRkbGUtb2Zmc2V0KTtcbiAgfVxuXG4gIC5zd2l0Y2gubGFyZ2Uge1xuICAgIEBpbmNsdWRlIHN3aXRjaC1zaXplKHJlbS1jYWxjKDE2KSwgJHN3aXRjaC1oZWlnaHQtbGFyZ2UsICRzd2l0Y2gtcGFkZGxlLW9mZnNldCk7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8gc2Fzcy1saW50OmRpc2FibGUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuXG4vLy8vXG4vLy8gQGdyb3VwIHRhYmxlXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGNvbG9yIGZvciB0YWJsZSBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtYmFja2dyb3VuZDogJHdoaXRlICAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc2NhbGUgZm9yIGRhcmtlbmluZyB0aGUgc3RyaXBlZCB0YWJsZSByb3dzIGFuZCB0aGUgdGFibGUgYm9yZGVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWNvbG9yLXNjYWxlOiA1JSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgc3R5bGUgZm9yIHRhYmxlIGJvcmRlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtYm9yZGVyOiAxcHggc29saWQgc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIHRhYmxlLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDggMTAgMTApICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBzY2FsZSBmb3IgZGFya2VuaW5nIHRoZSB0YWJsZSByb3dzIG9uIGhvdmVyLlxuLy8vIEB0eXBlIE51bWJlclxuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2Ygc3RhbmRhcmQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHN0cmlwZWQgcm93cyBvbiBob3Zlci5cbi8vLyBAdHlwZSBMaXN0XG4kdGFibGUtcm93LXN0cmlwZS1ob3ZlcjogZGFya2VuKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgKyAkdGFibGUtaG92ZXItc2NhbGUpICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCB0YWJsZXMgYXJlIHN0cmlwZWQgYnkgZGVmYXVsdCBhbmQgYW4gLnVuc3RyaXBlZCBjbGFzcyBpcyBjcmVhdGVkLiBJZiBgZmFsc2VgLCBhIC5zdHJpcGVkIGNsYXNzIGlzIGNyZWF0ZWQuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHRhYmxlLWlzLXN0cmlwZWQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIHN0cmlwZWQgcm93cy5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYmxlLXN0cmlwZWQtYmFja2dyb3VuZDogc21hcnQtc2NhbGUoJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBzdHJpcGUgb24gcm93cyBvZiB0aGUgdGFibGVzLCBleGNsdWRpbmcgdGhlIGhlYWRlciBhbmQgZm9vdGVyLiBJZiBldmVuLCB0aGUgZXZlbiByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIG9kZCwgdGhlIG9kZCByb3dzIHdpbGwgaGF2ZSBhIGJhY2tncm91bmQgY29sb3IuIElmIGVtcHR5LCBvciBhbnkgb3RoZXIgdmFsdWUsIHRoZSB0YWJsZSByb3dzIHdpbGwgaGF2ZSBubyBzdHJpcGluZy5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kdGFibGUtc3RyaXBlOiBldmVuICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgaGVhZGVyIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6IHNtYXJ0LXNjYWxlKCR0YWJsZS1iYWNrZ3JvdW5kLCAkdGFibGUtY29sb3Itc2NhbGUgLyAyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgaGVhZGVyIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWhlYWQtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWhlYWQtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3IgZm9yIGZvb3RlciBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtZm9vdC1iYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWNvbG9yLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgZm9vdGVyIHJvd3Mgb24gaG92ZXIuXG4vLy8gQHR5cGUgTGlzdFxuJHRhYmxlLWZvb3Qtcm93LWhvdmVyOiBkYXJrZW4oJHRhYmxlLWZvb3QtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgaGVhZGVyLlxuLy8vIEB0eXBlIENvbG9yXG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBmb290ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWJsZS1mb290LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBzaG93aW5nIHRoZSBoZWFkZXIgd2hlbiB1c2luZyBzdGFja2VkIHRhYmxlcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBhdCB3aGljaCBzdGFja2VkIHRhYmxlIHN3aXRjaGVzIGZyb20gbW9iaWxlIHRvIGRlc2t0b3Agdmlldy5cbi8vLyBAdHlwZSBCcmVha3BvaW50XG4kdGFibGUtc3RhY2stYnJlYWtwb2ludDogbWVkaXVtICFkZWZhdWx0O1xuXG5AbWl4aW4gLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlOiAkdGFibGUtc3RyaXBlKSB7XG4gIHRyIHtcbiAgICAvLyBJZiBzdHJpcGUgaXMgc2V0IHRvIGV2ZW4sIGRhcmtlbiB0aGUgZXZlbiByb3dzLlxuICAgIEBpZiAkc3RyaXBlID09IGV2ZW4ge1xuICAgICAgJjpudGgtY2hpbGQoZXZlbikge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHN0cmlwZSBpcyBzZXQgdG8gb2RkLCBkYXJrZW4gdGhlIG9kZCByb3dzLlxuICAgIEBlbHNlIGlmICRzdHJpcGUgPT0gb2RkIHtcbiAgICAgICY6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtc3RyaXBlZC1iYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gLXpmLXRhYmxlLXVuc3RyaXBlKCkge1xuICB0ciB7XG4gICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICBib3JkZXItYm90dG9tOiAkdGFibGUtYm9yZGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1iYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGU6ICR0YWJsZS1zdHJpcGUsICRpcy1zdHJpcGVkOiAkdGFibGUtaXMtc3RyaXBlZCkge1xuICB0aGVhZCxcbiAgdGJvZHksXG4gIHRmb290IHtcbiAgICBib3JkZXI6ICR0YWJsZS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gIH1cblxuICAvLyBDYXB0aW9uXG4gIGNhcHRpb24ge1xuICAgIHBhZGRpbmc6ICR0YWJsZS1wYWRkaW5nO1xuICAgIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICB9XG5cbiAgLy8gVGFibGUgaGVhZFxuICB0aGVhZCB7XG4gICAgYmFja2dyb3VuZDogJHRhYmxlLWhlYWQtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJHRhYmxlLWhlYWQtZm9udC1jb2xvcjtcbiAgfVxuXG4gIC8vIFRhYmxlIGZvb3RcbiAgdGZvb3Qge1xuICAgIGJhY2tncm91bmQ6ICR0YWJsZS1mb290LWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICR0YWJsZS1mb290LWZvbnQtY29sb3I7XG4gIH1cblxuICAvLyBUYWJsZSBoZWFkIGFuZCBmb290XG4gIHRoZWFkLFxuICB0Zm9vdCB7XG4gICAgLy8gUm93cyB3aXRoaW4gaGVhZCBhbmQgZm9vdFxuICAgIHRyIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC8vIENlbGxzIHdpdGhpbiBoZWFkIGFuZCBmb290XG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogJHRhYmxlLXBhZGRpbmc7XG4gICAgICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgICAgIHRleHQtYWxpZ246ICN7JGdsb2JhbC1sZWZ0fTtcbiAgICB9XG4gIH1cblxuICAvLyBUYWJsZSByb3dzXG4gIHRib2R5IHtcbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICBwYWRkaW5nOiAkdGFibGUtcGFkZGluZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0YWJsZXMgYXJlIHN0cmlwZWRcbiAgQGlmICRpcy1zdHJpcGVkID09IHRydWUge1xuICAgIHRib2R5IHtcbiAgICAgIEBpbmNsdWRlIC16Zi10YWJsZS1zdHJpcGUoJHN0cmlwZSk7XG4gICAgfVxuXG4gICAgJi51bnN0cmlwZWQge1xuICAgICAgdGJvZHkge1xuICAgICAgICBAaW5jbHVkZSAtemYtdGFibGUtdW5zdHJpcGUoKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJhY2tncm91bmQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGFibGVzIGFyZSBub3Qgc3RyaXBlZFxuICBAZWxzZSBpZiAkaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgdGJvZHkge1xuICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXVuc3RyaXBlKCk7XG4gICAgfVxuXG4gICAgJi5zdHJpcGVkIHtcbiAgICAgIHRib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgLXpmLXRhYmxlLXN0cmlwZSgkc3RyaXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgdGhlIGdlbmVyYWwgc3R5bGVzIGZvciB0YWJsZXMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc3RyaXBlIFskdGFibGUtc3RyaXBlXSAtIFVzZXMga2V5d29yZHMgZXZlbiwgb2RkLCBvciBub25lIHRvIGRhcmtlbiByb3dzIG9mIHRoZSB0YWJsZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZXZlbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZXN0IFtmYWxzZV0gLSBOZWVkZWQgaWYgeW91IG9ubHkgd2FudCB0byBhcHBseSB0aGlzIHRvIGEgc3BlY2lmaWMgdGFibGUuXG5AbWl4aW4gdGFibGUoXG4gICRzdHJpcGU6ICR0YWJsZS1zdHJpcGUsXG4gICRuZXN0OiBmYWxzZVxuKSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbiAgQGlmICRuZXN0IHtcbiAgICBAaW5jbHVkZSAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGUpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBAaW5jbHVkZSAtemYtdGFibGUtY2hpbGRyZW4tc3R5bGVzKCRzdHJpcGUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyB0aGUgYWJpbGl0eSB0byBob3Jpem9udGFsbHkgc2Nyb2xsIHRoZSB0YWJsZSB3aGVuIHRoZSBjb250ZW50IG92ZXJmbG93cyBob3Jpem9udGFsbHkuXG5AbWl4aW4gdGFibGUtc2Nyb2xsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4vLy8gU2xpZ2h0bHkgZGFya2VucyB0aGUgdGFibGUgcm93cyBvbiBob3Zlci5cbkBtaXhpbiB0YWJsZS1ob3ZlciB7XG4gIHRoZWFkIHRyIHtcbiAgICAvL0RhcmtlbnMgdGhlIHRhYmxlIGhlYWRlciByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWhlYWQtcm93LWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIHRmb290IHRyIHtcbiAgICAvL0RhcmtlbnMgdGhlIHRhYmxlIGZvb3RlciByb3dzIG9uIGhvdmVyLlxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWZvb3Qtcm93LWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIHRib2R5IHRyIHtcbiAgICAvL0RhcmtlbnMgdGhlIG5vbi1zdHJpcGVkIHRhYmxlIHJvd3Mgb24gaG92ZXIuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSB0cnVlIHtcbiAgICAvLyBEYXJrZW5zIHRoZSBldmVuIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAaWYoJHRhYmxlLXN0cmlwZSA9PSBldmVuKSB7XG4gICAgICAmOm5vdCgudW5zdHJpcGVkKSB0cjpudGgtb2YtdHlwZShldmVuKTpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERhcmtlbnMgdGhlIG9kZCBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGVsc2UgaWYoJHRhYmxlLXN0cmlwZSA9PSBvZGQpIHtcbiAgICAgICY6bm90KC51bnN0cmlwZWQpIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAkdGFibGUtaXMtc3RyaXBlZCA9PSBmYWxzZSB7XG4gICAgLy8gRGFya2VucyB0aGUgZXZlbiBzdHJpcGVkIHRhYmxlIHJvd3MuXG4gICAgQGlmKCR0YWJsZS1zdHJpcGUgPT0gZXZlbikge1xuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKGV2ZW4pOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLXJvdy1zdHJpcGUtaG92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGFya2VucyB0aGUgb2RkIHN0cmlwZWQgdGFibGUgcm93cy5cbiAgICBAZWxzZSBpZigkdGFibGUtc3RyaXBlID09IG9kZCkge1xuICAgICAgJi5zdHJpcGVkIHRyOm50aC1vZi10eXBlKG9kZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtcm93LXN0cmlwZS1ob3ZlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHN0YWNrZWQgdGFibGUuIFVzZWZ1bCBmb3Igc21hbGwtc2NyZWVuIGxheW91dHMuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkaGVhZGVyIFskc2hvdy1oZWFkZXItZm9yLXN0YWNrZWRdIC0gU2hvdyB0aGUgZmlyc3QgdGggb2YgaGVhZGVyIHdoZW4gc3RhY2tlZC5cbkBtaXhpbiB0YWJsZS1zdGFjaygkaGVhZGVyOiAkc2hvdy1oZWFkZXItZm9yLXN0YWNrZWQpIHtcbiAgQGlmICRoZWFkZXIge1xuICAgIHRoZWFkIHtcbiAgICAgIHRoIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0aGVhZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIHRmb290IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgdHIsXG4gIHRoLFxuICB0ZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICB0ZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi10YWJsZSgkbmVzdDogZmFsc2UpIHtcbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHRhYmxlKCRuZXN0OiAkbmVzdCk7XG4gIH1cblxuICB0YWJsZS5zdGFjayB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkdGFibGUtc3RhY2stYnJlYWtwb2ludCBkb3duKSB7XG4gICAgICBAaW5jbHVkZSB0YWJsZS1zdGFjaztcbiAgICB9XG4gIH1cblxuICB0YWJsZS5zY3JvbGwge1xuICAgIEBpbmNsdWRlIHRhYmxlLXNjcm9sbDtcbiAgfVxuXG4gIHRhYmxlLmhvdmVyIHtcbiAgICBAaW5jbHVkZSB0YWJsZS1ob3ZlcjtcbiAgfVxuXG4gIC50YWJsZS1zY3JvbGwge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJhZGdlXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB0ZXh0IGNvbG9yIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRiYWRnZS1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRlIHRleHQgY29sb3IgZm9yIGJhZGdlcy5cbi8vLyBAdHlwZSBDb2xvclxuJGJhZGdlLWNvbG9yLWFsdDogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gQ29sb3JpbmcgY2xhc3Nlcy4gQSBtYXAgb2YgY2xhc3NlcyB0byBvdXRwdXQgaW4geW91ciBDU1MsIGxpa2UgYC5zZWNvbmRhcnlgLCBgLnN1Y2Nlc3NgLCBhbmQgc28gb24uXG4vLy8gQHR5cGUgTWFwXG4kYmFkZ2UtcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYmFkZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLXBhZGRpbmc6IDAuM2VtICFkZWZhdWx0O1xuXG4vLy8gTWluaW11bSB3aWR0aCBvZiBhIGJhZGdlLlxuLy8vIEB0eXBlIE51bWJlclxuJGJhZGdlLW1pbndpZHRoOiAyLjFlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBzaXplIGZvciBiYWRnZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYmFkZ2UtZm9udC1zaXplOiAwLjZyZW0gIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgdGhlIGJhc2Ugc3R5bGVzIGZvciBhIGJhZGdlLlxuQG1peGluIGJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtaW4td2lkdGg6ICRiYWRnZS1taW53aWR0aDtcbiAgcGFkZGluZzogJGJhZGdlLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1iYWRnZSB7XG4gIC5iYWRnZSB7XG4gICAgQGluY2x1ZGUgYmFkZ2U7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYmFkZ2UtYmFja2dyb3VuZDtcbiAgICBjb2xvcjogJGJhZGdlLWNvbG9yO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkYmFkZ2UtcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yO1xuICAgICAgICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkY29sb3IsICgkYmFkZ2UtY29sb3IsICRiYWRnZS1jb2xvci1hbHQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBicmVhZGNydW1ic1xuLy8vL1xuXG4vLy8gTWFyZ2luIGFyb3VuZCBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwICFkZWZhdWx0O1xuXG4vLy8gRm9udCBzaXplIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgQ29sb3JcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBhY3RpdmUgYnJlYWRjcnVtYiBsaW5rLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1jdXJyZW50OiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBPcGFjaXR5IG9mIGRpc2FibGVkIGJyZWFkY3J1bWIgbGlua3MuXG4vLy8gQHR5cGUgTnVtYmVyXG4kYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gTWFyZ2luIGJldHdlZW4gYnJlYWRjcnVtYiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRicmVhZGNydW1icy1pdGVtLW1hcmdpbjogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgbWFrZXMgYnJlYWRjcnVtYiBsaW5rcyB1cHBlcmNhc2UuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gSWYgYHRydWVgLCBhZGRzIGEgc2VwZXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYiBsaW5rcy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIElmIGl0IGV4aXN0cyAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaCBpcyB1c2VkIHRvIGJ1aWxkICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci4gU2VlIHRoZSBkb2N1bWVudGF0aW9uLlxuQGlmIHZhcmlhYmxlLWV4aXN0cyhicmVhZGNydW1icy1pdGVtLXNsYXNoKSB7XG4gICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2g7XG59XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtOiAnLycgIWRlZmF1bHQ7XG5cbi8vLyBVc2VkIGNoYXJhY3RlciBmb3IgdGhlIGJyZWFkY3J1bWIgc2VwYXJhdG9yIGluIHJ0bCBtb2RlLlxuLy8vIEB0eXBlIENvbnRlbnRcbiRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvci1pdGVtLXJ0bDogJ1xcXFwnICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgYnJlYWRjcnVtYiBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8gSWYgaXQgZXhpc3RzICRicmVhZGNydW1icy1pdGVtLXNsYXNoLWNvbG9yIGlzIHVzZWQgdG8gYnVpbGQgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yLiBTZWUgdGhlIGRvY3VtZW50YXRpb24uXG5AaWYgdmFyaWFibGUtZXhpc3RzKGJyZWFkY3J1bWJzLWl0ZW0tc2xhc2gtY29sb3IpIHtcbiAgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1zbGFzaC1jb2xvcjtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIGJyZWFkY3J1bWJzIGNvbnRhaW5lciwgYWxvbmcgd2l0aCB0aGUgc3R5bGVzIGZvciB0aGUgYDxsaT5gIGFuZCBgPGE+YCBlbGVtZW50cyBpbnNpZGUgb2YgaXQuXG5AbWl4aW4gYnJlYWRjcnVtYnMtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbjogJGJyZWFkY3J1bWJzLW1hcmdpbjtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAvLyBJdGVtIHdyYXBwZXJcbiAgbGkge1xuICAgIGZsb2F0OiAjeyRnbG9iYWwtbGVmdH07XG5cbiAgICBmb250LXNpemU6ICRicmVhZGNydW1icy1pdGVtLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3ItY3VycmVudDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICBAaWYgJGJyZWFkY3J1bWJzLWl0ZW0tdXBwZXJjYXNlIHtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgQGlmICRicmVhZGNydW1icy1pdGVtLXNlcGFyYXRvciB7XG4gICAgICAvLyBOZWVkIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoXG4gICAgICAkc2VwYXJhdG9yOiBpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09ICdsdHInLCAkYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbSwgJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsKTtcblxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBtYXJnaW46IDAgJGJyZWFkY3J1bWJzLWl0ZW0tbWFyZ2luO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgY29udGVudDogJHNlcGFyYXRvcjtcbiAgICAgICAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAkYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW47XG4gICAgfVxuICB9XG5cbiAgLy8gUGFnZSBsaW5rc1xuICBhIHtcbiAgICBjb2xvcjogJGJyZWFkY3J1bWJzLWl0ZW0tY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1icmVhZGNydW1icyB7XG4gIC5icmVhZGNydW1icyB7XG4gICAgQGluY2x1ZGUgYnJlYWRjcnVtYnMtY29udGFpbmVyO1xuXG4gICAgLmRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiAkYnJlYWRjcnVtYnMtaXRlbS1jb2xvci1kaXNhYmxlZDtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgY2FsbG91dFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZhZGUgdmFsdWUgZm9yIGNhbGxvdXQgYmFja2dyb3VuZHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGU6IDg1JSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHN0eWxlIGZvciBjYWxsb3V0cy5cbi8vLyBAdHlwZSBMaXN0XG4kY2FsbG91dC1ib3JkZXI6IDFweCBzb2xpZCByZ2JhKCRibGFjaywgMC4yNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvdHRvbSBtYXJnaW4gZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhbGxvdXQtbWFyZ2luOiAwIDAgMXJlbSAwICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIENhbGxvdXQgcGFkZGluZ3MuXG4vLy8gQHR5cGUgTWFwXG4kY2FsbG91dC1zaXplczogKFxuICBzbWFsbDogMC41cmVtLFxuICBkZWZhdWx0OiAxcmVtLFxuICBsYXJnZTogM3JlbSxcbikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgY29sb3IgZm9yIGNhbGxvdXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBmb250IGNvbG9yIGZvciBjYWxsb3V0cywgaWYgdGhlIGNhbGxvdXQgaGFzIGEgZGFyayBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIENvbG9yXG4kY2FsbG91dC1mb250LWNvbG9yLWFsdDogJGJvZHktYmFja2dyb3VuZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIHJhZGl1cyBmb3IgY2FsbG91dHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBBbW91bnQgdG8gdGludCBsaW5rcyB1c2VkIHdpdGhpbiBjb2xvcmVkIHBhbmVscy4gU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuXG4vLy8gQHR5cGUgTnVtYmVyIHwgQm9vbGVhblxuJGNhbGxvdXQtbGluay10aW50OiAzMCUgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGJhc2ljIHN0eWxlcyBmb3IgYSBjYWxsb3V0LCBpbmNsdWRpbmcgcGFkZGluZyBhbmQgbWFyZ2luLlxuQG1peGluIGNhbGxvdXQtYmFzZSgpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46ICRjYWxsb3V0LW1hcmdpbjtcbiAgcGFkZGluZzogbWFwLWdldCgkY2FsbG91dC1zaXplcywgZGVmYXVsdCk7XG5cbiAgYm9yZGVyOiAkY2FsbG91dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRjYWxsb3V0LXJhZGl1cztcblxuICAvLyBSZXNwZWN0IHRoZSBwYWRkaW5nLCBmb29sLlxuICA+IDpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLy8vIEdlbmVyYXRlIHF1aWNrIHN0eWxlcyBmb3IgYSBjYWxsb3V0IHVzaW5nIGEgc2luZ2xlIGNvbG9yIGFzIGEgYmFzZWxpbmUuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIFskY2FsbG91dC1iYWNrZ3JvdW5kXSAtIENvbG9yIHRvIHVzZS5cbkBtaXhpbiBjYWxsb3V0LXN0eWxlKCRjb2xvcjogJGNhbGxvdXQtYmFja2dyb3VuZCkge1xuICAkYmFja2dyb3VuZDogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkY2FsbG91dC1iYWNrZ3JvdW5kLWZhZGUpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogY29sb3ItcGljay1jb250cmFzdCgkYmFja2dyb3VuZCwgKCRjYWxsb3V0LWZvbnQtY29sb3IsICRjYWxsb3V0LWZvbnQtY29sb3ItYWx0KSk7XG59XG5cbkBtaXhpbiBjYWxsb3V0LXNpemUoJHBhZGRpbmcpIHtcbiAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xufVxuXG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYWxsb3V0LlxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJGNhbGxvdXQtYmFja2dyb3VuZF0gLSBDb2xvciB0byB1c2UuXG5AbWl4aW4gY2FsbG91dCgkY29sb3I6ICRjYWxsb3V0LWJhY2tncm91bmQpIHtcbiAgQGluY2x1ZGUgY2FsbG91dC1iYXNlO1xuICBAaW5jbHVkZSBjYWxsb3V0LXN0eWxlKCRjb2xvcik7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhbGxvdXQge1xuICAuY2FsbG91dCB7XG4gICAgQGluY2x1ZGUgY2FsbG91dDtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJGZvdW5kYXRpb24tcGFsZXR0ZSB7XG4gICAgICAmLiN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgY2FsbG91dC1zdHlsZSgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRzaXplLCAkcGFkZGluZyBpbiBtYXAtcmVtb3ZlKCRjYWxsb3V0LXNpemVzLCBkZWZhdWx0KSB7XG4gICAgICAmLiN7JHNpemV9IHtcbiAgICAgICAgQGluY2x1ZGUgY2FsbG91dC1zaXplKCRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBjYXJkXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgZm9udCBjb2xvciBmb3IgY2FyZHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiRjYXJkLWRpdmlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBzdHlsZS5cbi8vLyBAdHlwZSBMaXN0XG4kY2FyZC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY2FyZCBzaGFkb3cuXG4vLy8gQHR5cGUgTGlzdFxuJGNhcmQtc2hhZG93OiBub25lICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgcmFkaXVzLlxuLy8vIEB0eXBlIExpc3RcbiRjYXJkLWJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGNhcmQtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3R0b20gbWFyZ2luLlxuLy8vIEB0eXBlIG51bWJlclxuJGNhcmQtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGNvbnRhaW5lci5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gZm9udCBjb2xvciBvZiB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiAtIEJvdHRvbSBtYXJnaW4gb2YgdGhlIGNhcmQuXG4vLy8gQHBhcmFtIHtMaXN0fSAkYm9yZGVyIC0gQm9yZGVyIGFyb3VuZCB0aGUgY2FyZC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRyYWRpdXMgLSBib3JkZXIgcmFkaXVzIG9mIHRoZSBjYXJkLlxuLy8vIEBwYXJhbSB7TGlzdH0gJHNoYWRvdyAtIGJveCBzaGFkb3cgb2YgdGhlIGNhcmQuXG5AbWl4aW4gY2FyZC1jb250YWluZXIoXG4gICRiYWNrZ3JvdW5kOiAkY2FyZC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRjYXJkLWZvbnQtY29sb3IsXG4gICRtYXJnaW46ICRjYXJkLW1hcmdpbi1ib3R0b20sXG4gICRib3JkZXI6ICRjYXJkLWJvcmRlcixcbiAgJHJhZGl1czogJGNhcmQtYm9yZGVyLXJhZGl1cyxcbiAgJHNoYWRvdzogJGNhcmQtc2hhZG93XG4pIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuXG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG5cbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBib3gtc2hhZG93OiAkc2hhZG93O1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNvbG9yOiAkY29sb3I7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIGRpdmlkZXIuXG5AbWl4aW4gY2FyZC1kaXZpZGVyKFxuICAkYmFja2dyb3VuZDogJGNhcmQtZGl2aWRlci1iYWNrZ3JvdW5kLFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cblxuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjYXJkIHNlY3Rpb24uXG5AbWl4aW4gY2FyZC1zZWN0aW9uKFxuICAkcGFkZGluZzogJGNhcmQtcGFkZGluZ1xuKSB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJiA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWNhcmQge1xuICAuY2FyZCB7XG4gICAgQGluY2x1ZGUgY2FyZC1jb250YWluZXI7XG4gIH1cblxuICAuY2FyZC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBjYXJkLWRpdmlkZXI7XG4gIH1cblxuICAuY2FyZC1zZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBjYXJkLXNlY3Rpb247XG4gIH1cblxuICAvLyBGb3IgSUUgMTEgLSBGbGV4YnVnXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MvaXNzdWVzLzc1XG4gIC5jYXJkLWltYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93blxuLy8vL1xuXG4vLy8gUGFkZGluZyBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTGlzdFxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGZvciBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLWJhY2tncm91bmQ6ICRib2R5LWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBGb250IHNpemUgZm9yIGRyb3Bkb3duIHBhbmVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBXaWR0aCBmb3IgZHJvcGRvd24gcGFuZXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd24td2lkdGg6IDMwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIHJhZGl1cyBkcm9wZG93biBwYW5lcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gU2l6ZXMgZm9yIGRyb3Bkb3duIHBhbmVzLiBFYWNoIHNpemUgaXMgYSBDU1MgY2xhc3MgeW91IGNhbiBhcHBseS5cbi8vLyBAdHlwZSBNYXBcbiRkcm9wZG93bi1zaXplczogKFxuICB0aW55OiAxMDBweCxcbiAgc21hbGw6IDIwMHB4LFxuICBsYXJnZTogNDAwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQXBwbGllcyBzdHlsZXMgZm9yIGEgYmFzaWMgZHJvcGRvd24uXG5AbWl4aW4gZHJvcGRvd24tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcblxuICBkaXNwbGF5OiBub25lO1xuXG4gIHdpZHRoOiAkZHJvcGRvd24td2lkdGg7XG4gIHBhZGRpbmc6ICRkcm9wZG93bi1wYWRkaW5nO1xuXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgYm9yZGVyOiAkZHJvcGRvd24tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkZHJvcGRvd24tcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJvcGRvd24tYmFja2dyb3VuZDtcblxuICBmb250LXNpemU6ICRkcm9wZG93bi1mb250LXNpemU7XG5cblxuICAvLyBBbGxvdyBhbiBpbnRlcm1pdHRlbnQgc3RhdGUgdG8gZG8gcG9zaXRpb25pbmcgYmVmb3JlIG1ha2luZyB2aXNpYmxlLlxuICAmLmlzLW9wZW5pbmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJi5pcy1vcGVuIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLWRyb3Bkb3duIHtcbiAgLmRyb3Bkb3duLXBhbmUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLWNvbnRhaW5lcjtcbiAgfVxuXG4gIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkZHJvcGRvd24tc2l6ZXMge1xuICAgIC5kcm9wZG93bi1wYW5lIHtcbiAgICAgICYuI3skbmFtZX0ge1xuICAgICAgICB3aWR0aDogJHNpemU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcGFnaW5hdGlvblxuLy8vL1xuXG4vLy8gRm9udCBzaXplIG9mIHBhZ2luYXRpb24gaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBvZiB0aGUgcGFnaW5hdGlvbiBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrICFkZWZhdWx0O1xuXG4vLy8gUGFkZGluZyBpbnNpZGUgb2YgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZzogcmVtLWNhbGMoMyAxMCkgIWRlZmF1bHQ7XG5cbi8vLyBSaWdodCBtYXJnaW4gdG8gc2VwYXJhdGUgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHJhZGl1cyBmb3IgcGFnaW5hdGlvbiBpdGVtcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwYWdpbmF0aW9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbXMgb24gaG92ZXIuXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHBhZ2luYXRpb24gaXRlbSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiB0aGUgcGFnaW5hdGlvbiBpdGVtIGZvciB0aGUgY3VycmVudCBwYWdlLlxuLy8vIEB0eXBlIENvbG9yXG4kcGFnaW5hdGlvbi1pdGVtLWNvbG9yLWN1cnJlbnQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIFRleHQgY29sb3Igb2YgYSBkaXNhYmxlZCBwYWdpbmF0aW9uIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItZGlzYWJsZWQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIENvbG9yIG9mIHRoZSBlbGxpcHNpcyBpbiBhIHBhZ2luYXRpb24gbWVudS5cbi8vLyBAdHlwZSBDb2xvclxuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIElmIGBmYWxzZWAsIGRvbid0IGRpc3BsYXkgcGFnZSBudW1iZXIgbGlua3Mgb24gbW9iaWxlLCBvbmx5IG5leHQvcHJldmlvdXMgbGlua3Ncbi8vLyBhbmQgb3B0aW9uYWxseSBjdXJyZW50IHBhZ2UgbnVtYmVyLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGRpc3BsYXkgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgb24gbW9iaWxlIGV2ZW4gaWYgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtc2AgaXMgc2V0IHRvIGBmYWxzZWAuXG4vLy8gVGhpcyBwYXJhbWV0ZXIgd2lsbCBvbmx5IG92ZXJyaWRlIHRoZSB2aXNpYmlsaXR5IHNldHRpbmcgb2YgdGhlIGN1cnJlbnQgaXRlbSBmb3IgYCRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7YCxcbi8vLyBpdCB3aWxsIG5vdCBhZmZlY3QgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgdmlzaWJpbGl0eSB3aGVuIGAkcGFnaW5hdGlvbi1tb2JpbGUtaXRlbXNgIGlzIHNldCB0byBgdHJ1ZWAuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tbW9iaWxlLWN1cnJlbnQtaXRlbTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGFycm93cyBhcmUgYWRkZWQgdG8gdGhlIG5leHQgYW5kIHByZXZpb3VzIGxpbmtzIG9mIHBhZ2luYXRpb24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJHBhZ2luYXRpb24tYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIHByZXZpb3VzIGFycm93IHdoZW4gYCRwYWdpbmF0aW9uLWFycm93c2AgaXMgYHRydWVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kcGFnaW5hdGlvbi1hcnJvdy1wcmV2aW91czogJ1xcMDBBQicgIWRlZmF1bHQ7XG5cbi8vLyBDb250ZW50IGZvciB0aGUgbmV4dCBhcnJvdyB3aGVuIGAkcGFnaW5hdGlvbi1hcnJvd3NgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJHBhZ2luYXRpb24tYXJyb3ctbmV4dDogJ1xcMDBCQicgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBwYWdpbmF0aW9uIGNvbnRhaW5lci4gQXBwbHkgdGhpcyB0byBhIGA8dWw+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWNvbnRhaW5lciAoXG4gICRtYXJnaW4tYm90dG9tOiAkcGFnaW5hdGlvbi1tYXJnaW4tYm90dG9tLFxuICAkZm9udC1zaXplOiAkcGFnaW5hdGlvbi1mb250LXNpemUsXG4gICRzcGFjaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXNwYWNpbmcsXG4gICRyYWRpdXM6ICRwYWdpbmF0aW9uLXJhZGl1cyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1pdGVtLWNvbG9yLFxuICAkcGFkZGluZzogJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyXG4pIHtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDA7XG4gIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuXG4gIC8vIExpc3QgaXRlbVxuICBsaSB7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuXG4gICAgQGlmICRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtcyB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICY6bGFzdC1jaGlsZCxcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG5cbiAgICAgIEBpZiAkcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtIHtcbiAgICAgICAgJi5jdXJyZW50IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgbGlua3NcbiAgYSxcbiAgYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICAgIGNvbG9yOiAkY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBjdXJyZW50IHBhZ2luYXRpb24gaXRlbS4gQXBwbHkgdGhpcyB0byBhbiBgPGE+YC5cbkBtaXhpbiBwYWdpbmF0aW9uLWl0ZW0tY3VycmVudCAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRiYWNrZ3JvdW5kLWN1cnJlbnQ6ICRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50LFxuICAkY29sb3ItY3VycmVudDogJHBhZ2luYXRpb24taXRlbS1jb2xvci1jdXJyZW50XG4pIHtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWN1cnJlbnQ7XG4gIGNvbG9yOiAkY29sb3ItY3VycmVudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgZGlzYWJsZWQgcGFnaW5hdGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIGFuIGA8YT5gLlxuQG1peGluIHBhZ2luYXRpb24taXRlbS1kaXNhYmxlZCAoXG4gICRwYWRkaW5nOiAkcGFnaW5hdGlvbi1pdGVtLXBhZGRpbmcsXG4gICRjb2xvcjogJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZFxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBjb2xvcjogJGNvbG9yO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gZWxsaXBzaXMgZm9yIHVzZSBpbiBhIHBhZ2luYXRpb24gbGlzdC5cbkBtaXhpbiBwYWdpbmF0aW9uLWVsbGlwc2lzIChcbiAgJHBhZGRpbmc6ICRwYWdpbmF0aW9uLWl0ZW0tcGFkZGluZyxcbiAgJGNvbG9yOiAkcGFnaW5hdGlvbi1lbGxpcHNpcy1jb2xvclxuKSB7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICBjb250ZW50OiAnXFwyMDI2JztcbiAgY29sb3I6ICRjb2xvcjtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcGFnaW5hdGlvbiB7XG4gIC5wYWdpbmF0aW9uIHtcbiAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWNvbnRhaW5lcjtcblxuICAgIC5jdXJyZW50IHtcbiAgICAgIEBpbmNsdWRlIHBhZ2luYXRpb24taXRlbS1jdXJyZW50O1xuICAgIH1cblxuICAgIC5kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWl0ZW0tZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLmVsbGlwc2lzOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBwYWdpbmF0aW9uLWVsbGlwc2lzO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkcGFnaW5hdGlvbi1hcnJvd3Mge1xuICAgIC5wYWdpbmF0aW9uLXByZXZpb3VzIGE6OmJlZm9yZSxcbiAgICAucGFnaW5hdGlvbi1wcmV2aW91cy5kaXNhYmxlZDo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtcmlnaHR9OiAwLjVyZW07XG4gICAgICBjb250ZW50OiAkcGFnaW5hdGlvbi1hcnJvdy1wcmV2aW91cztcbiAgICB9XG5cbiAgICAucGFnaW5hdGlvbi1uZXh0IGE6OmFmdGVyLFxuICAgIC5wYWdpbmF0aW9uLW5leHQuZGlzYWJsZWQ6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06IDAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICRwYWdpbmF0aW9uLWFycm93LW5leHQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdG9vbHRpcFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjdXJzb3Igb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBLZXl3b3JkXG4kaGFzLXRpcC1jdXJzb3I6IGhlbHAgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgd2VpZ2h0IG9mIHRoZSBkZWZpbmVkIHRlcm0uXG4vLy8gQHR5cGUgS2V5d29yZCB8IE51bWJlclxuJGhhcy10aXAtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJvcmRlciBib3R0b20gb2YgdGhlIGRlZmluZWQgdGVybS5cbi8vLyBAdHlwZSBMaXN0XG4kaGFzLXRpcC1ib3JkZXItYm90dG9tOiBkb3R0ZWQgMXB4ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGNvbG9yIG9mIHRoZSB0b29sdGlwIGJhY2tncm91bmQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6ICRibGFjayAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgdGhlIHRvb2x0aXAgZm9udC5cbi8vLyBAdHlwZSBDb2xvclxuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiB0aGUgdG9vbHRpcCBiYWNrZ3JvdW5kLlxuLy8vIEB0eXBlIE51bWJlclxuJHRvb2x0aXAtcGFkZGluZzogMC43NXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbWF4IHdpZHRoIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLW1heC13aWR0aDogMTByZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGZvbnQgc2l6ZSBvZiB0aGUgdG9vbHRpcCB0ZXh0LiBCeSBkZWZhdWx0LCB3ZSByZWNvbW1lbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZSB0aGFuIHRoZSBib2R5IGNvcHkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1mb250LXNpemU6ICRzbWFsbC1mb250LXNpemUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCB3aWR0aCBmb3IgdG9vbHRpcHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtd2lkdGg6IDAuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBpcCBoZWlnaHQgZm9yIHRvb2x0aXBzLiBUaGlzIGlzIGhlbHBmdWwgZm9yIGNhbGN1bGF0aW5nIHRoZSBkaXN0YW5jZSBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b29sdGlwIHdvcmQuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9vbHRpcC1waXAtaGVpZ2h0OiAkdG9vbHRpcC1waXAtd2lkdGggKiAwLjg2NiAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0b29sdGlwcy5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b29sdGlwLXJhZGl1czogJGdsb2JhbC1yYWRpdXMgIWRlZmF1bHQ7XG5cbkBtaXhpbiBoYXMtdGlwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm9yZGVyLWJvdHRvbTogJGhhcy10aXAtYm9yZGVyLWJvdHRvbTtcbiAgZm9udC13ZWlnaHQ6ICRoYXMtdGlwLWZvbnQtd2VpZ2h0O1xuICBjdXJzb3I6ICRoYXMtdGlwLWN1cnNvcjtcbn1cblxuQG1peGluIHRvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYygxMDAlICsgI3skdG9vbHRpcC1waXAtaGVpZ2h0fSk7XG4gIHotaW5kZXg6IDEyMDA7XG5cbiAgbWF4LXdpZHRoOiAkdG9vbHRpcC1tYXgtd2lkdGg7XG4gIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmc7XG5cbiAgYm9yZGVyLXJhZGl1czogJHRvb2x0aXAtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yO1xuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgJi5ib3R0b20ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCB1cCk7XG4gICAgICBib3R0b206IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hbGlnbi1jZW50ZXI6OmJlZm9yZSB7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi50b3Age1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCBkb3duKTtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICB9XG5cbiAgICAmLmFsaWduLWNlbnRlcjo6YmVmb3JlIHtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICB9XG4gIH1cblxuICAmLmxlZnQge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJHRvb2x0aXAtcGlwLXdpZHRoLCAkdG9vbHRpcC1iYWNrZ3JvdW5kLWNvbG9yLCByaWdodCk7XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5yaWdodCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkdG9vbHRpcC1waXAtd2lkdGgsICR0b29sdGlwLWJhY2tncm91bmQtY29sb3IsIGxlZnQpO1xuICAgICAgcmlnaHQ6IDEwMCU7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgIH1cblxuICAgICYuYWxpZ24tY2VudGVyOjpiZWZvcmUge1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi10b3A6OmJlZm9yZSB7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIHRvcDogMTAlO1xuICB9XG5cbiAgJi5hbGlnbi1ib3R0b206OmJlZm9yZSB7XG4gICAgYm90dG9tOiAxMCU7XG4gICAgdG9wOiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1sZWZ0OjpiZWZvcmUge1xuICAgIGxlZnQ6IDEwJTtcbiAgICByaWdodDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQ6OmJlZm9yZSB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogMTAlO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRvb2x0aXAge1xuICAuaGFzLXRpcCB7XG4gICAgQGluY2x1ZGUgaGFzLXRpcDtcbiAgfVxuXG4gIC50b29sdGlwIHtcbiAgICBAaW5jbHVkZSB0b29sdGlwO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYWNjb3JkaW9uXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYW4gYWNjb3JkaW9uIGdyb3VwLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIElmIGB0cnVlYCwgYWRkcyBwbHVzIGFuZCBtaW51cyBpY29ucyB0byB0aGUgc2lkZSBvZiBlYWNoIGFjY29yZGlvbiB0aXRsZS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kYWNjb3JkaW9uLXBsdXNtaW51czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIENvbnRlbnQgZm9yIHRoZSBwbHVzIGljb24gd2hlbiBgJGFjY29yZGlvbi1wbHVzbWludXNgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJGFjY29yZGlvbi1wbHVzLWNvbnRlbnQ6ICdcXDAwMkInICFkZWZhdWx0O1xuXG4vLy8gQ29udGVudCBmb3IgdGhlIG1pbnVzIGljb24gd2hlbiBgJGFjY29yZGlvbi1wbHVzbWludXNgIGlzIGB0cnVlYFxuLy8vIEB0eXBlIFN0cmluZ1xuJGFjY29yZGlvbi1taW51cy1jb250ZW50OiAnXFwyMDEzJyAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiBhY2NvcmRpb24gdGl0bGVzLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbi10aXRsZS1mb250LXNpemU6IHJlbS1jYWxjKDEyKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBmb3IgaXRlbXMgaW4gYSBNZW51LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWl0ZW0tY29sb3I6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9uIGhvdmVyIGZvciBpdGVtcyBpbiBhIE1lbnUuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBvZiBhbiBhY2NvcmRpb24gaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYWNjb3JkaW9uLWl0ZW0tcGFkZGluZzogMS4yNXJlbSAxcmVtICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgY29sb3Igb2YgdGFiIGNvbnRlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb24tY29udGVudC1ib3JkZXI6IDFweCBzb2xpZCAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhbiBhY2NvcmRpb24gY29udGFpbmVyLiBBcHBseSB0aGlzIHRvIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCBnZXRzIGBkYXRhLWFjY29yZGlvbmAuXG5AbWl4aW4gYWNjb3JkaW9uLWNvbnRhaW5lciAoXG4gICRiYWNrZ3JvdW5kOiAkYWNjb3JkaW9uLWJhY2tncm91bmRcbikge1xuICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gICZbZGlzYWJsZWRdIHtcbiAgICAuYWNjb3JkaW9uLXRpdGxlIHtcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGFjY29yZGlvbiBpdGVtLiBBcHBseSB0aGlzIHRvIHRoZSBsaXN0IGl0ZW0gd2l0aGluIGFuIGFjY29yZGlvbiB1bC5cbkBtaXhpbiBhY2NvcmRpb24taXRlbSB7XG4gICY6Zmlyc3QtY2hpbGQgPiA6Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICRnbG9iYWwtcmFkaXVzIDAgMDtcbiAgfVxuXG4gICY6bGFzdC1jaGlsZCA+IDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXM7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgdGl0bGUgb2YgYW4gYWNjb3JkaW9uIGl0ZW0uIEFwcGx5IHRoaXMgdG8gdGhlIGxpbmsgd2l0aGluIGFuIGFjY29yZGlvbiBpdGVtLlxuQG1peGluIGFjY29yZGlvbi10aXRsZSAoXG4gICRwYWRkaW5nOiAkYWNjb3JkaW9uLWl0ZW0tcGFkZGluZyxcbiAgJGZvbnQtc2l6ZTogJGFjY29yZGlvbi10aXRsZS1mb250LXNpemUsXG4gICRjb2xvcjogJGFjY29yZGlvbi1pdGVtLWNvbG9yLFxuICAkYm9yZGVyOiAkYWNjb3JkaW9uLWNvbnRlbnQtYm9yZGVyLFxuICAkYmFja2dyb3VuZC1ob3ZlcjogJGFjY29yZGlvbi1pdGVtLWJhY2tncm91bmQtaG92ZXJcbikge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAkcGFkZGluZztcblxuICBib3JkZXI6ICRib3JkZXI7XG4gIGJvcmRlci1ib3R0b206IDA7XG5cbiAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6ICRjb2xvcjtcblxuICA6bGFzdC1jaGlsZDpub3QoLmlzLWFjdGl2ZSkgPiAmIHtcbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkZ2xvYmFsLXJhZGl1cyAkZ2xvYmFsLXJhZGl1cztcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWhvdmVyO1xuICB9XG5cbiAgQGlmICRhY2NvcmRpb24tcGx1c21pbnVzIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICAgICAgbWFyZ2luLXRvcDogLTAuNXJlbTtcbiAgICAgIGNvbnRlbnQ6ICRhY2NvcmRpb24tcGx1cy1jb250ZW50O1xuICAgIH1cblxuICAgIC5pcy1hY3RpdmUgPiAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGFjY29yZGlvbi1taW51cy1jb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGFjY29yZGlvbiBjb250ZW50LiBBcHBseSB0aGlzIHRvIHRoZSBjb250ZW50IHBhbmUgYmVsb3cgYW4gYWNjb3JkaW9uIGl0ZW0ncyB0aXRsZS5cbkBtaXhpbiBhY2NvcmRpb24tY29udGVudCAoXG4gICRwYWRkaW5nOiAkYWNjb3JkaW9uLWNvbnRlbnQtcGFkZGluZyxcbiAgJGJvcmRlcjogJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcixcbiAgJGJhY2tncm91bmQ6ICRhY2NvcmRpb24tY29udGVudC1iYWNrZ3JvdW5kLFxuICAkY29sb3I6ICRhY2NvcmRpb24tY29udGVudC1jb2xvclxuKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuXG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG5cbiAgY29sb3I6ICRjb2xvcjtcblxuICA6bGFzdC1jaGlsZCA+ICY6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1hY2NvcmRpb24ge1xuICAuYWNjb3JkaW9uIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24tY29udGFpbmVyO1xuICB9XG5cbiAgLmFjY29yZGlvbi1pdGVtIHtcbiAgICBAaW5jbHVkZSBhY2NvcmRpb24taXRlbTtcbiAgfVxuXG4gIC5hY2NvcmRpb24tdGl0bGUge1xuICAgIEBpbmNsdWRlIGFjY29yZGlvbi10aXRsZTtcbiAgfVxuXG4gIC5hY2NvcmRpb24tY29udGVudCB7XG4gICAgQGluY2x1ZGUgYWNjb3JkaW9uLWNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBtZWRpYS1vYmplY3Rcbi8vLy9cblxuLy8vIEJvdHRvbSBtYXJnaW4gb2YgYSBtZWRpYSBvYmplY3QuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW4gIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9uIHNlY3Rpb25zIHdpdGhpbiBhIG1lZGlhIG9iamVjdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIGltYWdlcyB3aXRoaW4gYSBtZWRpYSBvYmplY3QsIHdoZW4gdGhlIG9iamVjdCBpcyBzdGFja2VkIHZlcnRpY2FsbHkuIFNldCB0byAnYXV0bycgdG8gdXNlIHRoZSBpbWFnZSdzIG5hdHVyYWwgd2lkdGguXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIG1lZGlhIG9iamVjdCBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlmKCRnbG9iYWwtZmxleGJveCwgZmxleCwgYmxvY2spO1xuICBtYXJnaW4tYm90dG9tOiAkbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTtcblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgfVxuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICB9XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgJi5zdGFjay1mb3ItI3skLXpmLXplcm8tYnJlYWtwb2ludH0ge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkLXpmLXplcm8tYnJlYWtwb2ludCBvbmx5KSB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBzZWN0aW9ucyB3aXRoaW4gYSBtZWRpYSBvYmplY3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRwYWRkaW5nIFskbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nXSAtIFBhZGRpbmcgYmV0d2VlbiBzZWN0aW9ucy5cbkBtaXhpbiBtZWRpYS1vYmplY3Qtc2VjdGlvbigkcGFkZGluZzogJG1lZGlhb2JqZWN0LXNlY3Rpb24tcGFkZGluZykge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy0jeyRnbG9iYWwtcmlnaHR9OiAkcGFkZGluZztcbiAgfVxuXG4gICY6bGFzdC1jaGlsZDpub3QoOm50aC1jaGlsZCgyKSkge1xuICAgIHBhZGRpbmctI3skZ2xvYmFsLWxlZnR9OiAkcGFkZGluZztcbiAgfVxuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAuc3RhY2stZm9yLSN7JC16Zi16ZXJvLWJyZWFrcG9pbnR9ICYge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXN0YWNrO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICYubWFpbi1zZWN0aW9uIHtcbiAgICAgIGZsZXg6IDEgMSAwcHg7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgemVyby11bml0XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmLm1pZGRsZSB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgICYuYm90dG9tIHtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgfVxuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0byBzdGFjayBzZWN0aW9ucyBvZiBhIG1lZGlhIG9iamVjdC4gQXBwbHkgdGhpcyB0byB0aGUgc2VjdGlvbiBlbGVtZW50cywgbm90IHRoZSBjb250YWluZXIuXG5AbWl4aW4gbWVkaWEtb2JqZWN0LXN0YWNrIHtcbiAgcGFkZGluZzogMDtcbiAgcGFkZGluZy1ib3R0b206ICRtZWRpYW9iamVjdC1zZWN0aW9uLXBhZGRpbmc7XG5cbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogJG1lZGlhb2JqZWN0LWltYWdlLXdpZHRoLXN0YWNrZWQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tbWVkaWEtb2JqZWN0IHtcbiAgLm1lZGlhLW9iamVjdCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LWNvbnRhaW5lcjtcbiAgfVxuXG4gIC5tZWRpYS1vYmplY3Qtc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgbWVkaWEtb2JqZWN0LXNlY3Rpb247XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBvcmJpdFxuLy8vL1xuXG4vLy8gRGVmYXVsdCBjb2xvciBmb3IgT3JiaXQncyBidWxsZXRzLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYWN0aXZlIGNvbG9yIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgQ29sb3JcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpYW1ldGVyIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IG1hcmdpbiBiZXR3ZWVuIE9yYml0J3MgYnVsbGV0cy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1idWxsZXQtbWFyZ2luOiAwLjFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGRpc3RhbmNlIGZyb20gc2xpZGUgcmVnaW9uIGZvciBPcmJpdCdzIGJ1bGxldHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A6IDAuOHJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm90dG9tIG1hcmdpbiBmcm9tIE9yYml0J3MgYnVsbGV0cyB0byB3aGF0ZXZlciBjb250ZW50IG1heSBsdXJrIGJlbG93IGl0LlxuLy8vIEB0eXBlIE51bWJlclxuJG9yYml0LWJ1bGxldC1tYXJnaW4tYm90dG9tOiAwLjhyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDogcmdiYSgkYmxhY2ssIDAuNSkgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgZm9yIE9yYml0J3MgY2FwdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jYXB0aW9uLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIE9yYml0J3MgY29udHJvbHMgd2hlbiBob3ZlcmVkLlxuLy8vIEB0eXBlIENvbG9yXG4kb3JiaXQtY29udHJvbC1iYWNrZ3JvdW5kLWhvdmVyOiByZ2JhKCRibGFjaywgMC41KSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBmb3IgT3JiaXQncyBjb250cm9scy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvcmJpdC1jb250cm9sLXBhZGRpbmc6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHotaW5kZXggZm9yIE9yYml0J3MgY29udHJvbHMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb3JiaXQtY29udHJvbC16aW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBvdXRlciBPcmJpdCB3cmFwcGVyLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXRgIGNsYXNzLlxuQG1peGluIG9yYml0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGlubmVyIE9yYml0IHNsaWRlIGNvbnRhaW5lci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNvbnRhaW5lcmAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7IC8vIFByZXZlbnQgRk9VQyBieSBub3Qgc2hvd2luZyB1bnRpbCBKUyBzZXRzIGhlaWdodFxuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGluZGl2aWR1YWwgc2xpZGVzIG9mIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LXNsaWRlYCBjbGFzcy5cbkBtaXhpbiBvcmJpdC1zbGlkZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgJi5uby1tb3Rpb251aSB7XG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG9yYml0LWZpZ3VyZSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHNsaWRlIGNvbnRhaW5pbmcgYW4gaW1hZ2UuIFRoZXNlIHN0eWxlcyBhcmUgdXNlZCBvbiB0aGUgYC5vcmJpdC1pbWFnZWAgY2xhc3MuXG5AbWl4aW4gb3JiaXQtaW1hZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gb3JiaXQgc2xpZGUgY2FwdGlvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LWNhcHRpb25gIGNsYXNzLlxuQG1peGluIG9yYml0LWNhcHRpb24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206IDA7XG4gIHBhZGRpbmc6ICRvcmJpdC1jYXB0aW9uLXBhZGRpbmc7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZDtcbiAgY29sb3I6IGNvbG9yLXBpY2stY29udHJhc3QoJG9yYml0LWNhcHRpb24tYmFja2dyb3VuZCk7XG59XG5cbi8vLyBBZGRzIGJhc2Ugc3R5bGVzIGZvciB0aGUgbmV4dC9wcmV2aW91cyBidXR0b25zIGluIGFuIE9yYml0IHNsaWRlci4gVGhlc2Ugc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGUgYC5vcmJpdC1uZXh0YCBhbmQgYC5vcmJpdC1wcmV2aW91c2AgY2xhc3NlcyBpbiB0aGUgZGVmYXVsdCBDU1MuXG5AbWl4aW4gb3JiaXQtY29udHJvbCB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyO1xuICB6LWluZGV4OiAkb3JiaXQtY29udHJvbC16aW5kZXg7XG4gIHBhZGRpbmc6ICRvcmJpdC1jb250cm9sLXBhZGRpbmc7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgJjpob3ZlcixcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtcHJldmlvdXNgIGNsYXNzLlxuQG1peGluIG9yYml0LXByZXZpb3VzIHtcbiAgI3skZ2xvYmFsLWxlZnR9OiAwO1xufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSBPcmJpdCBuZXh0IGJ1dHRvbi4gVGhlc2Ugc3R5bGVzIGFyZSB1c2VkIG9uIHRoZSBgLm9yYml0LW5leHRgIGNsYXNzLlxuQG1peGluIG9yYml0LW5leHQge1xuICAjeyRnbG9iYWwtbGVmdH06IGF1dG87XG4gICN7JGdsb2JhbC1yaWdodH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBjb250YWluZXIgb2YgT3JiaXQgYnVsbGV0cy4gLy8vIEFkZHMgc3R5bGVzIGZvciB0aGUgT3JiaXQgcHJldmlvdXMgYnV0dG9uLiBUaGVzZSBzdHlsZXMgYXJlIHVzZWQgb24gdGhlIGAub3JiaXQtYnVsbGV0c2AgY2xhc3MuXG5AbWl4aW4gb3JiaXQtYnVsbGV0cyB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tdG9wOiAkb3JiaXQtYnVsbGV0LW1hcmdpbi10b3A7XG4gIG1hcmdpbi1ib3R0b206ICRvcmJpdC1idWxsZXQtbWFyZ2luLWJvdHRvbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gIGJ1dHRvbiB7XG4gICAgd2lkdGg6ICRvcmJpdC1idWxsZXQtZGlhbWV0ZXI7XG4gICAgaGVpZ2h0OiAkb3JiaXQtYnVsbGV0LWRpYW1ldGVyO1xuICAgIG1hcmdpbjogJG9yYml0LWJ1bGxldC1tYXJnaW47XG5cbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYml0LWJ1bGxldC1iYWNrZ3JvdW5kO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb3JiaXQtYnVsbGV0LWJhY2tncm91bmQtYWN0aXZlO1xuICAgIH1cblxuICAgICYuaXMtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW9yYml0IHtcbiAgLm9yYml0IHtcbiAgICBAaW5jbHVkZSBvcmJpdC13cmFwcGVyO1xuICB9XG5cbiAgLm9yYml0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY29udGFpbmVyO1xuICB9XG5cbiAgLm9yYml0LXNsaWRlIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1zbGlkZTtcbiAgfVxuXG4gIC5vcmJpdC1maWd1cmUge1xuICAgIEBpbmNsdWRlIG9yYml0LWZpZ3VyZTtcbiAgfVxuXG4gIC5vcmJpdC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgb3JiaXQtaW1hZ2U7XG4gIH1cblxuICAub3JiaXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgb3JiaXQtY2FwdGlvbjtcbiAgfVxuXG4gICVvcmJpdC1jb250cm9sIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1jb250cm9sO1xuICB9XG5cbiAgLm9yYml0LXByZXZpb3VzIHtcbiAgICBAZXh0ZW5kICVvcmJpdC1jb250cm9sO1xuICAgIEBpbmNsdWRlIG9yYml0LXByZXZpb3VzO1xuICB9XG5cbiAgLm9yYml0LW5leHQge1xuICAgIEBleHRlbmQgJW9yYml0LWNvbnRyb2w7XG4gICAgQGluY2x1ZGUgb3JiaXQtbmV4dDtcbiAgfVxuXG4gIC5vcmJpdC1idWxsZXRzIHtcbiAgICBAaW5jbHVkZSBvcmJpdC1idWxsZXRzO1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmVzcG9uc2l2ZS1lbWJlZFxuLy8vL1xuXG4vLy8gTWFyZ2luIGJlbG93IGEgcmVzcG9uc2l2ZSBlbWJlZCBjb250YWluZXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmVzcG9uc2l2ZS1lbWJlZC1tYXJnaW4tYm90dG9tOiByZW0tY2FsYygxNikgIWRlZmF1bHQ7XG5cbi8vLyBBc3BlY3QgcmF0aW9zIHVzZWQgdG8gZGV0ZXJtaW5lIHBhZGRpbmctYm90dG9tIG9mIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVycy5cbi8vLyBAdHlwZSBNYXBcbiRyZXNwb25zaXZlLWVtYmVkLXJhdGlvczogKFxuICBkZWZhdWx0OiA0IGJ5IDMsXG4gIHdpZGVzY3JlZW46IDE2IGJ5IDksXG4pICFkZWZhdWx0O1xuXG4vLy8gQ3JlYXRlcyBhIHJlc3BvbnNpdmUgZW1iZWQgY29udGFpbmVyLlxuLy8vIEBwYXJhbSB7U3RyaW5nfExpc3R9ICRyYXRpbyBbZGVmYXVsdF0gLSBSYXRpbyBvZiB0aGUgY29udGFpbmVyLiBDYW4gYmUgYSBrZXkgZnJvbSB0aGUgYCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvc2AgbWFwIG9yIGEgbGlzdCBmb3JtYXR0ZWQgYXMgYHggYnkgeWAuXG5AbWl4aW4gcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpIHtcbiAgQGlmIHR5cGUtb2YoJHJhdGlvKSA9PSAnc3RyaW5nJyB7XG4gICAgJHJhdGlvOiBtYXAtZ2V0KCRyZXNwb25zaXZlLWVtYmVkLXJhdGlvcywgJHJhdGlvKTtcbiAgfVxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMDtcbiAgbWFyZ2luLWJvdHRvbTogJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTtcbiAgcGFkZGluZy1ib3R0b206IHJhdGlvLXRvLXBlcmNlbnRhZ2UoJHJhdGlvKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBpZnJhbWUsXG4gIG9iamVjdCxcbiAgZW1iZWQsXG4gIHZpZGVvIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgICN7JGdsb2JhbC1sZWZ0fTogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcmVzcG9uc2l2ZS1lbWJlZCB7XG4gIC5yZXNwb25zaXZlLWVtYmVkLFxuICAuZmxleC12aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzcG9uc2l2ZS1lbWJlZCgkcmF0aW86IGRlZmF1bHQpO1xuXG4gICAgJHJhdGlvczogbWFwLXJlbW92ZSgkcmVzcG9uc2l2ZS1lbWJlZC1yYXRpb3MsZGVmYXVsdCk7XG5cbiAgICBAZWFjaCAkbmFtZSwgJHJhdGlvIGluICRyYXRpb3Mge1xuICAgICAgJi4jeyRuYW1lfSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiByYXRpby10by1wZXJjZW50YWdlKCRyYXRpbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgdGFic1xuLy8vL1xuXG4vLy8gRGVmYXVsdCBtYXJnaW4gb2YgdGhlIHRhYiBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gRm9udCBjb2xvciBvZiB0YWIgaXRlbS5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBBY3RpdmUgYmFja2dyb3VuZCBjb2xvciBvZiBhIHRhYiBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYmFja2dyb3VuZC1hY3RpdmU6ICRsaWdodC1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQWN0aXZlIGZvbnQgY29sb3Igb2YgdGFiIGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiR0YWItYWN0aXZlLWNvbG9yOiAkcHJpbWFyeS1jb2xvciAhZGVmYXVsdDtcblxuLy8vIEZvbnQgc2l6ZSBvZiB0YWIgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdGFiLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMikgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb24gaG92ZXIgZm9yIGl0ZW1zIGluIGEgTWVudS5cbiR0YWItaXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHBhZGRpbmcgb2YgYSB0YWIgaXRlbS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0YWItaXRlbS1wYWRkaW5nOiAxLjI1cmVtIDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgYm9yZGVyIGNvbG9yIG9mIHRhYiBjb250ZW50LlxuLy8vIEB0eXBlIENvbG9yXG4kdGFiLWNvbnRlbnQtYm9yZGVyOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdGV4dCBjb2xvciBvZiB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBDb2xvclxuJHRhYi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBwYWRkaW5nIGZvciB0YWIgY29udGVudC5cbi8vLyBAdHlwZSBOdW1iZXIgfCBMaXN0XG4kdGFiLWNvbnRlbnQtcGFkZGluZzogMXJlbSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHRhYiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gYSBgPHVsPmAuXG5AbWl4aW4gdGFicy1jb250YWluZXIgKFxuICAkbWFyZ2luOiAkdGFiLW1hcmdpbixcbiAgJGJhY2tncm91bmQ6ICR0YWItYmFja2dyb3VuZCxcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXJnaW46ICRtYXJnaW47XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG5cbi8vLyBBdWdtZW50cyBhIHRhYiBjb250YWluZXIgdG8gaGF2ZSB2ZXJ0aWNhbCB0YWJzLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRhaW5lcigpYC5cbkBtaXhpbiB0YWJzLWNvbnRhaW5lci12ZXJ0aWNhbCB7XG4gID4gbGkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZsb2F0OiBub25lO1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgdGhlIGxpbmtzIHdpdGhpbiBhIHRhYiBjb250YWluZXIuIEFwcGx5IHRoaXMgdG8gdGhlIGA8bGk+YCBlbGVtZW50cyBpbnNpZGUgYSB0YWIgY29udGFpbmVyLlxuQG1peGluIHRhYnMtdGl0bGUgKFxuICAkcGFkZGluZzogJHRhYi1pdGVtLXBhZGRpbmcsXG4gICRmb250LXNpemU6ICR0YWItaXRlbS1mb250LXNpemUsXG4gICRjb2xvcjogJHRhYi1jb2xvcixcbiAgJGNvbG9yLWFjdGl2ZTogJHRhYi1hY3RpdmUtY29sb3IsXG4gICRiYWNrZ3JvdW5kLWhvdmVyOiAkdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcixcbiAgJGJhY2tncm91bmQtYWN0aXZlOiAkdGFiLWJhY2tncm91bmQtYWN0aXZlXG4pIHtcbiAgZmxvYXQ6ICN7JGdsb2JhbC1sZWZ0fTtcblxuICA+IGEge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkcGFkZGluZztcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICRjb2xvcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtaG92ZXI7XG4gICAgICBjb2xvcjogc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAtMTQlKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLFxuICAgICZbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLWFjdGl2ZTtcbiAgICAgIGNvbG9yOiAkY29sb3ItYWN0aXZlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIHRoZSB3cmFwcGVyIHRoYXQgc3Vycm91bmRzIGEgdGFiIGdyb3VwJ3MgY29udGVudCBwYW5lcy5cbkBtaXhpbiB0YWJzLWNvbnRlbnQgKFxuICAkYmFja2dyb3VuZDogJHRhYi1jb250ZW50LWJhY2tncm91bmQsXG4gICRjb2xvcjogJHRhYi1jb250ZW50LWNvbG9yLFxuICAkYm9yZGVyLWNvbG9yOiAkdGFiLWNvbnRlbnQtYm9yZGVyXG4pIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1jb2xvcjtcbiAgYm9yZGVyLXRvcDogMDtcbiAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiAkY29sb3I7XG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2U7XG59XG5cbi8vLyBBdWdtZW50cyBhIHRhYiBjb250ZW50IGNvbnRhaW5lciB0byBoYXZlIGEgdmVydGljYWwgc3R5bGUsIGJ5IHNoaWZ0aW5nIHRoZSBib3JkZXIgYXJvdW5kLiBVc2UgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YWJzLWNvbnRlbnQoKWAuXG5AbWl4aW4gdGFicy1jb250ZW50LXZlcnRpY2FsIChcbiAgJGJvcmRlci1jb2xvcjogJHRhYi1jb250ZW50LWJvcmRlclxuKSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06IDA7XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYW4gaW5kaXZpZHVhbCB0YWIgY29udGVudCBwYW5lbCB3aXRoaW4gdGhlIHRhYiBjb250ZW50IGNvbnRhaW5lci5cbkBtaXhpbiB0YWJzLXBhbmVsIChcbiAgJHBhZGRpbmc6ICR0YWItY29udGVudC1wYWRkaW5nXG4pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHBhZGRpbmc7XG5cbiAgJi5pcy1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRhYnMge1xuICAudGFicyB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXI7XG4gIH1cblxuICAvLyBWZXJ0aWNhbFxuICAudGFicy52ZXJ0aWNhbCB7XG4gICAgQGluY2x1ZGUgdGFicy1jb250YWluZXItdmVydGljYWw7XG4gIH1cblxuICAvLyBTaW1wbGVcbiAgLnRhYnMuc2ltcGxlIHtcbiAgICA+IGxpID4gYSB7XG4gICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJpbWFyeSBjb2xvclxuICAudGFicy5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcblxuICAgID4gbGkgPiBhIHtcbiAgICAgIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRwcmltYXJ5LWNvbG9yKTtcblxuICAgICAgJjpob3ZlcixcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiBzbWFydC1zY2FsZSgkcHJpbWFyeS1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhYnMtdGl0bGUge1xuICAgIEBpbmNsdWRlIHRhYnMtdGl0bGU7XG4gIH1cblxuICAudGFicy1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQ7XG4gIH1cblxuICAudGFicy1jb250ZW50LnZlcnRpY2FsIHtcbiAgICBAaW5jbHVkZSB0YWJzLWNvbnRlbnQtdmVydGljYWw7XG4gIH1cblxuICAudGFicy1wYW5lbCB7XG4gICAgQGluY2x1ZGUgdGFicy1wYW5lbDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHRodW1ibmFpbFxuLy8vL1xuXG4vLy8gQm9yZGVyIGFyb3VuZCB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIEJvcmRlclxuJHRodW1ibmFpbC1ib3JkZXI6IDRweCBzb2xpZCAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBCb3R0b20gbWFyZ2luIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIExlbmd0aFxuJHRodW1ibmFpbC1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgdW5kZXIgdGh1bWJuYWlsIGltYWdlcy5cbi8vLyBAdHlwZSBTaGFkb3dcbiR0aHVtYm5haWwtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgkYmxhY2ssIDAuMikgIWRlZmF1bHQ7XG5cbi8vLyBCb3ggc2hhZG93IHVuZGVyIHRodW1ibmFpbCBpbWFnZXMuXG4vLy8gQHR5cGUgU2hhZG93XG4kdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjogMCAwIDZweCAxcHggcmdiYSgkcHJpbWFyeS1jb2xvciwgMC41KSAhZGVmYXVsdDtcblxuLy8vIFRyYW5zaXRpb24gcHJvcHJ0aWVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIFRyYW5zaXRpb25cbiR0aHVtYm5haWwtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAyMDBtcyBlYXNlLW91dCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciB0aHVtYm5haWwgaW1hZ2VzLlxuLy8vIEB0eXBlIE51bWJlclxuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzICFkZWZhdWx0O1xuXG4vLy8gQWRkcyB0aHVtYm5haWwgc3R5bGVzIHRvIGFuIGVsZW1lbnQuXG5AbWl4aW4gdGh1bWJuYWlsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1ib3R0b206ICR0aHVtYm5haWwtbWFyZ2luLWJvdHRvbTtcblxuICBib3JkZXI6ICR0aHVtYm5haWwtYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkdGh1bWJuYWlsLXJhZGl1cztcbiAgYm94LXNoYWRvdzogJHRodW1ibmFpbC1zaGFkb3c7XG5cbiAgbGluZS1oZWlnaHQ6IDA7XG59XG5cbkBtaXhpbiB0aHVtYm5haWwtbGluayB7XG4gIHRyYW5zaXRpb246ICR0aHVtYm5haWwtdHJhbnNpdGlvbjtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAkdGh1bWJuYWlsLXNoYWRvdy1ob3ZlcjtcbiAgfVxuXG4gIGltYWdlIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRodW1ibmFpbCB7XG4gIC50aHVtYm5haWwge1xuICAgIEBpbmNsdWRlIHRodW1ibmFpbDtcbiAgfVxuXG4gIGEudGh1bWJuYWlsIHtcbiAgICBAaW5jbHVkZSB0aHVtYm5haWwtbGluaztcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIG1lbnVcbi8vLy9cblxuLy8vIE1hcmdpbiBvZiBhIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1tYXJnaW46IDAgIWRlZmF1bHQ7XG5cbi8vLyBMZWZ0LWhhbmQgbWFyZ2luIG9mIGEgbmVzdGVkIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIGl0ZW1zIGluIGEgcGlsbCBtZW51LlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaXRlbXMtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBtYXJnaW4gZm9yIGl0ZW1zIGluIGEgc2ltcGxlIG1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kbWVudS1zaW1wbGUtbWFyZ2luOiAxcmVtICFkZWZhdWx0O1xuXG4vLy8gVGV4dCBjb2xvciBvZiBhbiBhY3RpdmUgbWVudSBpdGVtLlxuLy8vIEB0eXBlIENvbG9yXG4kbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gQWx0ZXJuYXRpdmUgdGV4dCBjb2xvciBvZiBhbiBhY3RpdmUgbWVudSBpdGVtLi5cbi8vLyBAdHlwZSBDb2xvclxuJG1lbnUtaXRlbS1jb2xvci1hbHQtYWN0aXZlOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIG9mIGFuIGFjdGl2ZSBtZW51IGl0ZW0uXG4vLy8gQHR5cGUgQ29sb3JcbiRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiBhbiBpY29uIGFuZCB0ZXh0IGluIGEgbWVudSBpdGVtLlxuLy8vIEB0eXBlIE51bWJlclxuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBzdGF0ZS4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYGFjdGl2ZWAgd2l0aCBgaXMtYWN0aXZlYC4gXG4vLy8gQnV0IHBsZWFzZSBub3RlIHRoYXQgYGFjdGl2ZWAgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIHZlcnNpb25zLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRtZW51LXN0YXRlLWJhY2stY29tcGF0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgbWVudSBjZW50ZXJlZC4gSWYgdHJ1ZSwgdGhpcyBkdXBsaWNhdGUgYC5tZW51LWNlbnRlcmVkID4gLm1lbnVgIHdpdGggYC5tZW51LmFsaWduLWNlbnRlcmAuIFxuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IGBtZW51LWNlbnRlcmVkYCB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtY2VudGVyZWQtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciB1c2luZyBgaWNvbi0qYCBjbGFzc2VzIHdpdGhvdXQgYC5pY29uc2AgY2xhc3Nlc1xuLy8vIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoaXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aWxsIGJlIHJlbW92ZWQgaW4gdXBjb21pbmcgdmVyc2lvbnMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJG1lbnUtaWNvbnMtYmFjay1jb21wYXQ6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBDcmVhdGVzIHRoZSBiYXNlIHN0eWxlcyBmb3IgYSBNZW51LlxuQG1peGluIG1lbnUtYmFzZSB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG5cbiAgbGkge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgfVxuXG4gIGEsXG4gIC5idXR0b24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAkbWVudS1pdGVtcy1wYWRkaW5nO1xuICB9XG5cbiAgLy8gUmVzZXQgc3R5bGVzIG9mIGlubmVyIGVsZW1lbnRzXG4gIGlucHV0LFxuICBzZWxlY3QsXG4gIGEsXG4gIGJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLy8vIEV4cGFuZHMgdGhlIGl0ZW1zIG9mIGEgTWVudSwgc28gZWFjaCBpdGVtIGlzIHRoZSBzYW1lIHdpZHRoLlxuQG1peGluIG1lbnUtZXhwYW5kIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgbGkge1xuICAgICAgZmxleDogMSAxIDBweDsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSB6ZXJvLXVuaXRcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgPiBsaSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vIEFsaWduIG1lbnUgaXRlbXMuXG5AbWl4aW4gbWVudS1hbGlnbigkYWxpZ25tZW50KSB7XG4gIEBpZiAkYWxpZ25tZW50ID09IGxlZnQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRhbGlnbm1lbnQgPT0gcmlnaHQge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi52ZXJ0aWNhbCBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuXG4gICAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLXJpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG5cbiAgICAgIC5zdWJtZW51IGxpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogJGdsb2JhbC1sZWZ0O1xuICAgICAgfVxuXG4gICAgICAmLnZlcnRpY2FsIHtcbiAgICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICAgIHRleHQtYWxpZ246ICRnbG9iYWwtcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGFsaWdubWVudCA9PSBjZW50ZXIge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAuc3VibWVudSBsaSB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLnN1Ym1lbnUgbGkge1xuICAgICAgICB0ZXh0LWFsaWduOiAkZ2xvYmFsLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vLyBTZXRzIHRoZSBkaXJlY3Rpb24gb2YgYSBNZW51LlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRpciBbaG9yaXpvbnRhbF0gLSBEaXJlY3Rpb24gb2YgdGhlIE1lbnUuIENhbiBiZSBgaG9yaXpvbnRhbGAgb3IgYHZlcnRpY2FsYC5cbkBtaXhpbiBtZW51LWRpcmVjdGlvbigkZGlyOiBob3Jpem9udGFsKSB7XG4gIEBpZiAkZGlyID09IGhvcml6b250YWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIHNpbXBsZSBNZW51LCB3aGljaCBoYXMgbm8gcGFkZGluZyBvciBob3ZlciBzdGF0ZS5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRkaXIgWyRnbG9iYWwtbGVmdF0gLSBEaXJlY3Rpb24gb2YgdGhlIG1lbnUuIFRoaXMgZWZmZWN0cyB0aGUgc2lkZSBvZiB0aGUgYDxsaT5gIHRoYXQgcmVjZWl2ZXMgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1hcmdpbiBbJG1lbnUtc2ltcGxlLW1hcmdpbl0gLSBUaGUgbWFyZ2luIHRvIGFwcGx5IHRvIGVhY2ggYDxsaT5gLlxuQG1peGluIG1lbnUtc2ltcGxlKCRkaXI6ICRnbG9iYWwtbGVmdCwgJG1hcmdpbjogJG1lbnUtc2ltcGxlLW1hcmdpbikge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgbGkgKyBsaSB7XG4gICAgbWFyZ2luLSN7JGRpcn06ICRtYXJnaW47XG4gIH1cblxuICBhIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyBmb3IgYSBuZXN0ZWQgTWVudSwgYnkgYWRkaW5nIGBtYXJnaW4tbGVmdGAgdG8gdGhlIG1lbnUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJG1hcmdpbiBbJG1lbnUtbmVzdGVkLW1hcmdpbl0gLSBMZW5ndGggb2YgdGhlIG1hcmdpbi5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRuZXN0ZWQtYWxpZ25tZW50IFtsZWZ0XSAtIEFsaWdubWVudCBvZiB0aGUgbmVzdGVkIGNsYXNzXG5AbWl4aW4gbWVudS1uZXN0ZWQoXG4gICRtYXJnaW46ICRtZW51LW5lc3RlZC1tYXJnaW4sXG4gICRuZXN0ZWQtYWxpZ25tZW50OiBsZWZ0XG4pIHtcbiAgQGlmICRuZXN0ZWQtYWxpZ25tZW50ID09IHJpZ2h0IHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJG1hcmdpbjtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkbWFyZ2luO1xuICB9XG5cbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBpY29ucyBpbiBtZW51cy5cbkBtaXhpbiBtZW51LWljb25zKCkge1xuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICBhIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBpbWcsXG4gICAgaSxcbiAgICBzdmcge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICAgKyBzcGFuIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8vIEFkZHMgcG9zaXRpb24gY2xhc3NlcyBmb3IgaWNvbnMgd2l0aGluIGEgbWVudS5cbkBtaXhpbiBtZW51LWljb24tcG9zaXRpb24oJHBvc2l0aW9uOiBsZWZ0LCAkc3BhY2luZzogJG1lbnUtaWNvbi1zcGFjaW5nKSB7XG4gIEBpZiAkcG9zaXRpb24gPT0gbGVmdCB7XG4gICAgbGkgYSB7XG4gICAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06ICRzcGFjaW5nO1xuXG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgICB9XG5cbiAgICAgIGltZyxcbiAgICAgIGksXG4gICAgICBzdmcge1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLWxlZnR9OiAkc3BhY2luZztcblxuICAgICAgICBAaWYgbm90ICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgIGxpIGEge1xuICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBpbWcsXG4gICAgICBpLFxuICAgICAgc3ZnIHtcbiAgICAgICAgQGlmIG5vdCAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1hcmdpbjogMCBhdXRvICRzcGFjaW5nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkcG9zaXRpb24gPT0gYm90dG9tIHtcbiAgICBsaSBhIHtcbiAgICAgIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgaW1nLFxuICAgICAgaSxcbiAgICAgIHN2ZyB7XG4gICAgICAgIEBpZiBub3QgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBtYXJnaW46ICRzcGFjaW5nIGF1dG8gMDtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1lbnUtdGV4dCB7XG4gIHBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nO1xuXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbkBtaXhpbiBtZW51LXN0YXRlLWFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gIGNvbG9yOiBjb2xvci1waWNrLWNvbnRyYXN0KCRtZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmUsICgkbWVudS1pdGVtLWNvbG9yLWFjdGl2ZSwgJG1lbnUtaXRlbS1jb2xvci1hbHQtYWN0aXZlKSk7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLW1lbnUge1xuICAubWVudSB7XG4gICAgQGluY2x1ZGUgbWVudS1iYXNlO1xuXG4gICAgLy8gRGVmYXVsdCBvcmllbnRhdGlvbjogaG9yaXpvbnRhbFxuICAgICYsICYuaG9yaXpvbnRhbCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICB9XG5cbiAgICAvLyBWZXJ0aWNhbCBvcmllbnRhdGlvbiBtb2RpZmllclxuICAgICYudmVydGljYWwge1xuICAgICAgQGluY2x1ZGUgbWVudS1kaXJlY3Rpb24odmVydGljYWwpO1xuICAgIH1cblxuICAgIC8vIEV2ZW4td2lkdGggbW9kaWZpZXIgZm9yIGhvcml6b250YWwgb3JpZW50YXRpb25cbiAgICAmLmV4cGFuZGVkIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xuICAgIH1cblxuICAgIC8vIFNpbXBsZVxuICAgICYuc2ltcGxlIHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtc2ltcGxlO1xuICAgIH1cblxuICAgIC8vIEJyZWFrcG9pbnQgc3BlY2lmaWMgdmVyc2lvbnNcbiAgICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50KCRzbWFsbDogZmFsc2UpIHtcbiAgICAgICYuI3skLXpmLXNpemV9LWhvcml6b250YWwge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbihob3Jpem9udGFsKTtcbiAgICAgIH1cblxuICAgICAgJi4jeyQtemYtc2l6ZX0tdmVydGljYWwge1xuICAgICAgICBAaW5jbHVkZSBtZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LWV4cGFuZGVkIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1leHBhbmQ7XG4gICAgICB9XG5cbiAgICAgICYuI3skLXpmLXNpemV9LXNpbXBsZSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtZXhwYW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5lc3RpbmdcbiAgICAmLm5lc3RlZCB7XG4gICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZDtcbiAgICB9XG5cbiAgICAvLyBJY29uIEJhc2UgU3R5bGVzXG4gICAgJi5pY29ucyB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb25zO1xuICAgIH1cblxuICAgIC8vIEJhY2t3YXJkIENvbXBhdGliaWxpdHkgZm9yIGFjdGl2ZSBzdGF0ZVxuICAgIEBpZiAkbWVudS1pY29ucy1iYWNrLWNvbXBhdCB7XG4gICAgICAmLmljb24tdG9wLFxuICAgICAgJi5pY29uLXJpZ2h0LFxuICAgICAgJi5pY29uLWJvdHRvbSxcbiAgICAgICYuaWNvbi1sZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1pY29ucztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJY29uIExlZnRcbiAgICAmLmljb24tbGVmdCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24obGVmdCk7XG4gICAgfVxuXG4gICAgLy8gSWNvbiBSaWdodFxuICAgICYuaWNvbi1yaWdodCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24ocmlnaHQpO1xuICAgIH1cblxuICAgIC8vIEljb24gVG9wXG4gICAgJi5pY29uLXRvcCB7XG4gICAgICBAaW5jbHVkZSBtZW51LWljb24tcG9zaXRpb24odG9wKTtcbiAgICB9XG5cbiAgICAvLyBJY29uIEJvdHRvbVxuICAgICYuaWNvbi1ib3R0b20ge1xuICAgICAgQGluY2x1ZGUgbWVudS1pY29uLXBvc2l0aW9uKGJvdHRvbSk7XG4gICAgfVxuXG4gICAgLy8gQWN0aXZlIHN0YXRlXG4gICAgLmlzLWFjdGl2ZSA+IGEge1xuICAgICAgQGluY2x1ZGUgbWVudS1zdGF0ZS1hY3RpdmU7XG4gICAgfVxuICAgIFxuICAgIC8vIEJhY2t3YXJkIENvbXBhdGliaWxpdHkgZm9yIGFjdGl2ZSBzdGF0ZVxuICAgIEBpZiAkbWVudS1zdGF0ZS1iYWNrLWNvbXBhdCB7XG4gICAgICAuYWN0aXZlID4gYSB7XG4gICAgICAgIEBpbmNsdWRlIG1lbnUtc3RhdGUtYWN0aXZlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsaWduIGxlZnRcbiAgICAmLmFsaWduLSN7JGdsb2JhbC1sZWZ0fSB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGxlZnQpO1xuICAgIH1cblxuICAgIC8vIEFsaWduIHJpZ2h0XG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtcmlnaHR9IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24ocmlnaHQpO1xuXG4gICAgICAubmVzdGVkIHtcbiAgICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJG5lc3RlZC1hbGlnbm1lbnQ6IHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGlnbiBjZW50ZXJcbiAgICAmLmFsaWduLWNlbnRlciB7XG4gICAgICBAaW5jbHVkZSBtZW51LWFsaWduKGNlbnRlcik7XG4gICAgfVxuXG4gICAgLm1lbnUtdGV4dCB7XG4gICAgICBAaW5jbHVkZSBtZW51LXRleHQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRtZW51LWNlbnRlcmVkLWJhY2stY29tcGF0IHtcbiAgICAubWVudS1jZW50ZXJlZCB7XG4gICAgICA+IC5tZW51IHtcbiAgICAgICAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIEBpbmNsdWRlIG1lbnUtYWxpZ24oY2VudGVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQcmV2ZW50IEZPVUMgd2hlbiB1c2luZyB0aGUgUmVzcG9uc2l2ZSBNZW51IHBsdWdpblxuICAubm8tanMgW2RhdGEtcmVzcG9uc2l2ZS1tZW51XSB1bCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiQG1peGluIGZvdW5kYXRpb24tbWVudS1pY29uIHtcbiAgLm1lbnUtaWNvbiB7XG4gICAgQGluY2x1ZGUgaGFtYnVyZ2VyKCRjb2xvcjogJHRpdGxlYmFyLWljb24tY29sb3IsICRjb2xvci1ob3ZlcjogJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXIpO1xuICB9XG5cbiAgLm1lbnUtaWNvbi5kYXJrIHtcbiAgICBAaW5jbHVkZSBoYW1idXJnZXI7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBAZ3JvdXAgYWNjb3JkaW9uLW1lbnVcbi8vLy9cblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRhY2NvcmRpb25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBuZXN0ZWQgbWFyZ2luXG4vLy8gQHR5cGUgTnVtYmVyXG4kYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luOiAkZ2xvYmFsLW1lbnUtbmVzdGVkLW1hcmdpbiAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgc3VibWVudSBwYWRkaW5nLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBpZiBhY2NvcmRpb24gbWVudXMgaGF2ZSB0aGUgZGVmYXVsdCBhcnJvdyBzdHlsZXMuXG4vLy8gQHR5cGUgQm9vbGVhblxuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIGJvcmRlci5cbi8vLyBAdHlwZSBDb2xvclxuJGFjY29yZGlvbm1lbnUtYm9yZGVyOiBudWxsICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBpdGVtIHBhZGRpbmcuXG4vLy8gQHR5cGUgQ29sb3JcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBMaXN0XG4kYWNjb3JkaW9uLXN1Ym1lbnUtdG9nZ2xlLWJvcmRlcjogJGFjY29yZGlvbm1lbnUtYm9yZGVyICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBhY2NvcmRpb24gbWVudSBzdWJtZW51IHRvZ2dsZSBiYWNrZ3JvdW5kIHdpZHRoLlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg6IDQwcHggIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGFjY29yZGlvbiBtZW51IHN1Ym1lbnUgdG9nZ2xlIGJhY2tncm91bmQgaGVpZ2h0LlxuLy8vIEB0eXBlIE51bWJlclxuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtaGVpZ2h0OiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aCAhZGVmYXVsdDtcblxuLy8vIFNldHMgYWNjb3JkaW9uIG1lbnUgYXJyb3cgc2l6ZSBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIExlbmd0aFxuJGFjY29yZGlvbm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gemYtYWNjb3JkaW9uLW1lbnUtbGVmdC1yaWdodC1hcnJvd3Mge1xuICAuaXMtYWNjb3JkaW9uLXN1Ym1lbnUtcGFyZW50Om5vdCguaGFzLXN1Ym1lbnUtdG9nZ2xlKSA+IGEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplLCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIG1hcmdpbi10b3A6IC0xICogKCRhY2NvcmRpb25tZW51LWFycm93LXNpemUgLyAyKTtcbiAgICAgICN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gICAgfVxuICB9XG5cbiAgJi5hbGlnbi1sZWZ0IC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQgPiBhOjphZnRlciB7XG4gICAgcmlnaHQ6IDFyZW07XG4gICAgbGVmdDogYXV0bztcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAxcmVtO1xuICB9XG59XG5AbWl4aW4gZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudSB7XG5cbiAgLmFjY29yZGlvbi1tZW51IHtcbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcbiAgICAgICAgYm9yZGVyLXRvcDogJGFjY29yZGlvbm1lbnUtYm9yZGVyO1xuICAgICAgICBib3JkZXItcmlnaHQ6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLWxlZnQ6ICRhY2NvcmRpb25tZW51LWJvcmRlcjtcbiAgICAgIH1cbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgQGlmICRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRhY2NvcmRpb25tZW51LWl0ZW0tYmFja2dyb3VuZDtcbiAgICAgIH1cbiAgICAgIHBhZGRpbmc6ICRhY2NvcmRpb25tZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLmlzLWFjY29yZGlvbi1zdWJtZW51IGEge1xuICAgICAgcGFkZGluZzogJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5uZXN0ZWQuaXMtYWNjb3JkaW9uLXN1Ym1lbnUge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGFjY29yZGlvbm1lbnUtbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgJi5hbGlnbi0jeyRnbG9iYWwtcmlnaHR9IHtcbiAgICAgIC5uZXN0ZWQuaXMtYWNjb3JkaW9uLXN1Ym1lbnUge1xuICAgICAgICBAaW5jbHVkZSBtZW51LW5lc3RlZCgkYWNjb3JkaW9ubWVudS1uZXN0ZWQtbWFyZ2luLCByaWdodCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRhY2NvcmRpb25tZW51LWFycm93cyB7XG4gICAgICBAaW5jbHVkZSB6Zi1hY2NvcmRpb24tbWVudS1sZWZ0LXJpZ2h0LWFycm93cztcblxuICAgICAgLmlzLWFjY29yZGlvbi1zdWJtZW51LXBhcmVudFthcmlhLWV4cGFuZGVkPSd0cnVlJ10gPiBhOjphZnRlciB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmlzLWFjY29yZGlvbi1zdWJtZW51IGxpIHtcbiAgICBAaWYgJGFjY29yZGlvbm1lbnUtYm9yZGVyIHtcbiAgICAgIGJvcmRlci1yaWdodDogMDtcbiAgICAgIGJvcmRlci1sZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC5pcy1hY2NvcmRpb24tc3VibWVudS1wYXJlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5oYXMtc3VibWVudS10b2dnbGUgPiBhIHtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg7XG4gIH1cblxuICAvLyBTdWJtZW51IHRvZ2dsZVxuICAuc3VibWVudS10b2dnbGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgI3skZ2xvYmFsLXJpZ2h0fTogMDtcblxuICAgIHdpZHRoOiAkYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDtcbiAgICBoZWlnaHQ6ICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgIGJvcmRlci0jeyRnbG9iYWwtbGVmdH06ICRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyO1xuXG4gICAgQGlmICRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGFycm93IHRvIHRoZSB0b2dnbGVcbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoNnB4LCAkYWNjb3JkaW9ubWVudS1hcnJvdy1jb2xvciwgZG93bik7XG5cbiAgICAgIHRvcDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cblxuICAvLyBSb3RhdGUgdGhlIGFycm93IHdoZW4gbWVudSBpcyBvcGVuXG4gIC5zdWJtZW51LXRvZ2dsZVthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgtMSk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTtcbiAgfVxuXG4gIC5zdWJtZW51LXRvZ2dsZS10ZXh0IHtcbiAgICBAaW5jbHVkZSBlbGVtZW50LWludmlzaWJsZTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGRyaWxsZG93blxuLy8vL1xuXG4vLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eSB0byB1c2UgZm9yIGFuaW1hdGluZyBtZW51cy5cbi8vLyBAdHlwZSBUcmFuc2l0aW9uXG4kZHJpbGxkb3duLXRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBsaW5lYXIgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGFycm93cyB0byBkcmlsbGRvd24gaXRlbXMgd2l0aCBzdWJtZW51cywgYXMgd2VsbCBhcyB0aGUgYmFjayBidXR0b24uXG4vLy8gQHR5cGUgQm9vbGVhblxuJGRyaWxsZG93bi1hcnJvd3M6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IGl0ZW0gcGFkZGluZy5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmcgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIGRyaWxsZG93biB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcmlsbGRvd24tYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gbWVudSBpdGVtIHBhZGRpbmcgaW4gdGhlIHN1Ym1lbnUuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZzogJGRyaWxsZG93bi1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgZHJpbGxkb3duIHN1Ym1lbnVzLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcmlsbGRvd24gYXJyb3cgY29sb3IgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBDb2xvclxuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIGRyaWxsZG93biBhcnJvdyBzaXplIGlmIGFycm93IGlzIHVzZWQuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJpbGxkb3duLWFycm93LXNpemU6IDZweCAhZGVmYXVsdDtcblxuQG1peGluIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gIC5pcy1kcmlsbGRvd24tc3VibWVudS1wYXJlbnQgPiBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyaWxsZG93bi1hcnJvdy1zaXplLCAkZHJpbGxkb3duLWFycm93LWNvbG9yLCAkZ2xvYmFsLXJpZ2h0KTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJpbGxkb3duLWFycm93LXNpemU7XG4gICAgICAjeyRnbG9iYWwtcmlnaHR9OiAxcmVtO1xuICAgIH1cbiAgfVxuXG4gICYuYWxpZ24tbGVmdCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIHJpZ2h0KTtcbiAgICByaWdodDogMXJlbTtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgJi5hbGlnbi1yaWdodCAuaXMtZHJpbGxkb3duLXN1Ym1lbnUtcGFyZW50ID4gYTo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGxlZnQpO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IDFyZW07XG4gIH1cblxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudSB7XG4gIC8vIEFwcGxpZWQgdG8gdGhlIE1lbnUgY29udGFpbmVyXG4gIC5pcy1kcmlsbGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi5hbmltYXRlLWhlaWdodCB7XG4gICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC41cztcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgdG9wIGxldmVsIDx1bD5cbiAgLmRyaWxsZG93biB7XG4gICAgYSB7XG4gICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmc7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJpbGxkb3duLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgLy8gQXBwbGllZCB0byBzdWJtZW51IDx1bD5zXG4gICAgLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgICN7JGdsb2JhbC1sZWZ0fTogMTAwJTtcbiAgICAgIHotaW5kZXg6IC0xO1xuXG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6ICRkcmlsbGRvd24tc3VibWVudS1iYWNrZ3JvdW5kO1xuICAgICAgdHJhbnNpdGlvbjogJGRyaWxsZG93bi10cmFuc2l0aW9uO1xuXG4gICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoaWYoJGdsb2JhbC10ZXh0LWRpcmVjdGlvbiA9PSBsdHIsIC0xMDAlLCAxMDAlKSk7XG4gICAgICB9XG5cbiAgICAgICYuaXMtY2xvc2luZyB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChpZigkZ2xvYmFsLXRleHQtZGlyZWN0aW9uID09IGx0ciwgMTAwJSwgLTEwMCUpKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3VibWVudSBpdGVtIHBhZGRpbmdcbiAgICAgIGEge1xuICAgICAgICBwYWRkaW5nOiAkZHJpbGxkb3duLXN1Ym1lbnUtcGFkZGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWRyaWxsZG93bi1zdWJtZW51IHtcbiAgICAgIEBpbmNsdWRlIG1lbnUtbmVzdGVkKCRkcmlsbGRvd24tbmVzdGVkLW1hcmdpbik7XG4gICAgfVxuXG4gICAgLmRyaWxsZG93bi1zdWJtZW51LWNvdmVyLXByZXZpb3VzIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgQGlmICRkcmlsbGRvd24tYXJyb3dzIHtcbiAgICAgIEBpbmNsdWRlIHpmLWRyaWxsZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcblxuICAgICAgLmpzLWRyaWxsZG93bi1iYWNrID4gYTo6YmVmb3JlIHtcbiAgICAgICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcmlsbGRvd24tYXJyb3ctc2l6ZSwgJGRyaWxsZG93bi1hcnJvdy1jb2xvciwgJGdsb2JhbC1sZWZ0KTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMC43NXJlbTsgLy8gQ3JlYXRlcyBzcGFjZSBiZXR3ZWVuIHRoZSBhcnJvdyBhbmQgdGhlIHRleHRcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBkcm9wZG93bi1tZW51XG4vLy8vXG5cbi8vLyBFbmFibGVzIGFycm93cyBmb3IgaXRlbXMgd2l0aCBkcm9wZG93biBtZW51cy5cbi8vLyBAdHlwZSBCb29sZWFuXG4kZHJvcGRvd25tZW51LWFycm93czogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFNldHMgZHJvcGRvd24gbWVudSBhcnJvdyBjb2xvciBpZiBhcnJvdyBpcyB1c2VkLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWFycm93LWNvbG9yOiAkYW5jaG9yLWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHNpemUgaWYgYXJyb3cgaXMgdXNlZC5cbi8vLyBAdHlwZSBMZW5ndGhcbiRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZTogNnB4ICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IGFycm93IHBhZGRpbmcgZm9yIGFsaWduaW5nIHRoZSBhcnJvdyBjb3JyZWN0bHkuXG4vLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWFycm93LXBhZGRpbmc6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8vIE1pbmltdW0gd2lkdGggb2YgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExlbmd0aFxuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdG9wIGxldmVsIGl0ZW1zLlxuLy8vIEB0eXBlIENvbG9yXG4kZHJvcGRvd25tZW51LWJhY2tncm91bmQ6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBkcm9wZG93bnMuXG4vLy8gQHR5cGUgQ29sb3JcbiRkcm9wZG93bm1lbnUtc3VibWVudS1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGZvciB0b3AgbGV2ZWwgaXRlbXMuXG4vLy8gQHR5cGUgTnVtYmVyXG4kZHJvcGRvd25tZW51LXBhZGRpbmc6ICRnbG9iYWwtbWVudS1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gU2V0cyBkcm9wZG93biBtZW51IG5lc3RlZCBtYXJnaW5cbi8vLyBAdHlwZSBOdW1iZXJcbiRkcm9wZG93bm1lbnUtbmVzdGVkLW1hcmdpbjogMCAhZGVmYXVsdDtcblxuLy8vIFBhZGRpbmcgZm9yIHN1Yi1tZW51IGl0ZW1zLlxuLy8vIEB0eXBlIE51bWJlclxuJGRyb3Bkb3dubWVudS1zdWJtZW51LXBhZGRpbmc6ICRkcm9wZG93bm1lbnUtcGFkZGluZyAhZGVmYXVsdDtcblxuLy8vIEJvcmRlciBmb3IgZHJvcGRvd24gc3ViLW1lbnVzLlxuLy8vIEB0eXBlIExpc3RcbiRkcm9wZG93bm1lbnUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLyBCb3JkZXIgd2lkdGggZm9yIGRyb3Bkb3duIHN1Yi1tZW51cy5cbi8vIFVzZWQgdG8gYWRqdXN0IHRvcCBtYXJnaW4gb2YgYSBzdWItbWVudSBpZiBhIGJvcmRlciBpcyB1c2VkLlxuLy8gQHR5cGUgTGVuZ3RoXG4kZHJvcGRvd25tZW51LWJvcmRlci13aWR0aDogbnRoKCRkcm9wZG93bm1lbnUtYm9yZGVyLCAxKTtcblxuLy8vIFRleHQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU6IGdldC1jb2xvcihwcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gYWN0aXZlIGRyb3Bkb3duIG1lbnUgaXRlbS4gRXhwbGljaXQgb3ZlcnJpZGUgZm9yIG1lbnUgZGVmYXVsdHNcbi8vLyBAdHlwZSBDb2xvclxuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG5cbkBtaXhpbiB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cyB7XG4gID4gYTo6YWZ0ZXIge1xuICAgICN7JGdsb2JhbC1yaWdodH06IDE0cHg7XG4gIH1cblxuICAmLm9wZW5zLWxlZnQgPiBhOjphZnRlciB7XG4gICAgQGluY2x1ZGUgY3NzLXRyaWFuZ2xlKCRkcm9wZG93bm1lbnUtYXJyb3ctc2l6ZSwgJGRyb3Bkb3dubWVudS1hcnJvdy1jb2xvciwgbGVmdCk7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogNXB4O1xuICB9XG5cbiAgJi5vcGVucy1yaWdodCA+IGE6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBjc3MtdHJpYW5nbGUoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplLCAkZHJvcGRvd25tZW51LWFycm93LWNvbG9yLCByaWdodCk7XG4gIH1cbn1cblxuQG1peGluIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKCRkaXI6IGhvcml6b250YWwpIHtcbiAgQGlmICRkaXIgPT0gaG9yaXpvbnRhbCB7XG4gICAgPiBsaS5vcGVucy1sZWZ0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IGxpLm9wZW5zLXJpZ2h0IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGEgeyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIG5vLXF1YWxpZnlpbmctZWxlbWVudHNcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLSN7JGdsb2JhbC1yaWdodH06ICRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZztcbiAgICAgIH1cblxuICAgICAgPiBsaS5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCA+IGE6OmFmdGVyIHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZSgkZHJvcGRvd25tZW51LWFycm93LXNpemUsICRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3IsIGRvd24pO1xuICAgICAgICAjeyRnbG9iYWwtcmlnaHR9OiA1cHg7XG4gICAgICAgICN7JGdsb2JhbC1sZWZ0fTogYXV0bztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiAoJGRyb3Bkb3dubWVudS1hcnJvdy1zaXplIC8gMik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRkaXIgPT0gdmVydGljYWwge1xuICAgID4gbGkge1xuICAgICAgLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICB0b3A6IDA7XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtbGVmdCB7XG4gICAgICAgID4gLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICByaWdodDogMTAwJTtcbiAgICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYub3BlbnMtcmlnaHQge1xuICAgICAgICA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgICBsZWZ0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAkZHJvcGRvd25tZW51LWFycm93cyB7XG4gICAgICAgIEBpbmNsdWRlIHpmLWRyb3Bkb3duLWxlZnQtcmlnaHQtYXJyb3dzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gJ1RoZSBkaXJlY3Rpb24gdXNlZCBmb3IgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oKSBtdXN0IGJlIGhvcml6b250YWwgb3IgdmVydGljYWwuJztcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1kcm9wZG93bi1tZW51IHtcbiAgLmRyb3Bkb3duLm1lbnUge1xuICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKGhvcml6b250YWwpO1xuXG4gICAgYSB7XG4gICAgICBAaW5jbHVkZSBkaXNhYmxlLW1vdXNlLW91dGxpbmU7XG4gICAgfVxuXG4gICAgLy8gVG9wLWxldmVsIGl0ZW1cbiAgICA+IGxpID4gYSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZHJvcGRvd25tZW51LWJhY2tncm91bmQ7XG4gICAgICBwYWRkaW5nOiAkZHJvcGRvd25tZW51LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLy8gVG9wLWxldmVsIGl0ZW0gYWN0aXZlIHN0YXRlXG4gICAgPiBsaS5pcy1hY3RpdmUgPiBhIHtcbiAgICAgIGJhY2tncm91bmQ6ICRkcm9wZG93bi1tZW51LWl0ZW0tYmFja2dyb3VuZC1hY3RpdmU7XG4gICAgICBjb2xvcjogJGRyb3Bkb3duLW1lbnUtaXRlbS1jb2xvci1hY3RpdmU7XG4gICAgfVxuXG4gICAgLm5vLWpzICYgdWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAubmVzdGVkLmlzLWRyb3Bkb3duLXN1Ym1lbnUge1xuICAgICAgQGluY2x1ZGUgbWVudS1uZXN0ZWQoJGRyb3Bkb3dubWVudS1uZXN0ZWQtbWFyZ2luKTtcbiAgICB9XG5cbiAgICAmLnZlcnRpY2FsIHtcbiAgICAgIEBpbmNsdWRlIGRyb3Bkb3duLW1lbnUtZGlyZWN0aW9uKHZlcnRpY2FsKTtcbiAgICB9XG5cbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgICAmLiN7JHNpemV9LWhvcml6b250YWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZHJvcGRvd24tbWVudS1kaXJlY3Rpb24oaG9yaXpvbnRhbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgJi4jeyRzaXplfS12ZXJ0aWNhbCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBkcm9wZG93bi1tZW51LWRpcmVjdGlvbih2ZXJ0aWNhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5hbGlnbi1yaWdodCB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudS5maXJzdC1zdWIge1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pcy1kcm9wZG93bi1tZW51LnZlcnRpY2FsIHtcbiAgICB3aWR0aDogMTAwcHg7XG5cbiAgICAmLmFsaWduLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cblxuICAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIGE6OmFmdGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgI3skZ2xvYmFsLXJpZ2h0fTogNXB4O1xuICAgICAgI3skZ2xvYmFsLWxlZnR9OiBhdXRvO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiAkZHJvcGRvd25tZW51LWFycm93LXNpemU7XG4gICAgfVxuXG4gICAgJi5vcGVucy1pbm5lciA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcblxuICAgICAgdG9wOiAxMDAlO1xuICAgICAgQGlmICRnbG9iYWwtdGV4dC1kaXJlY3Rpb24gPT0gJ3J0bCcge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm9wZW5zLWxlZnQgPiAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICByaWdodDogMTAwJTtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxuXG4gICAgJi5vcGVucy1yaWdodCA+IC5pcy1kcm9wZG93bi1zdWJtZW51IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICAjeyRnbG9iYWwtbGVmdH06IDEwMCU7XG4gICAgei1pbmRleDogMTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgbWluLXdpZHRoOiAkZHJvcGRvd25tZW51LW1pbi13aWR0aDtcblxuICAgIGJvcmRlcjogJGRyb3Bkb3dubWVudS1ib3JkZXI7XG4gICAgYmFja2dyb3VuZDogJGRyb3Bkb3dubWVudS1zdWJtZW51LWJhY2tncm91bmQ7XG5cbiAgICAuZHJvcGRvd24gJiBhIHtcbiAgICAgIHBhZGRpbmc6ICRkcm9wZG93bm1lbnUtc3VibWVudS1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5pcy1kcm9wZG93bi1zdWJtZW51LXBhcmVudCB7XG4gICAgICBAaWYgJGRyb3Bkb3dubWVudS1hcnJvd3Mge1xuICAgICAgICBAaW5jbHVkZSB6Zi1kcm9wZG93bi1sZWZ0LXJpZ2h0LWFycm93cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKHR5cGUtb2YoJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpID09ICdudW1iZXInKSB7XG4gICAgICAuaXMtZHJvcGRvd24tc3VibWVudSB7XG4gICAgICAgIG1hcmdpbi10b3A6ICgtJGRyb3Bkb3dubWVudS1ib3JkZXItd2lkdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgID4gbGkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gW1RPRE9dIEN1dCBiYWNrIHNwZWNpZmljaXR5XG4gICAgLy8mOm5vdCguanMtZHJvcGRvd24tbm9ob3ZlcikgPiAuaXMtZHJvcGRvd24tc3VibWVudS1wYXJlbnQ6aG92ZXIgPiAmLCAvLyB3aHkgaXMgdGhpcyBsaW5lIG5lZWRlZD8gT3BlbmluZyBpcyBoYW5kbGVkIGJ5IEpTIGFuZCB0aGlzIGNhdXNlcyBzb21lIHVnbHkgZmxpY2tlcmluZyB3aGVuIHRoZSBzdWIgaXMgcmUtcG9zaXRpb25lZCBhdXRvbWF0aWNhbGx5Li4uXG4gICAgJi5qcy1kcm9wZG93bi1hY3RpdmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgb2ZmLWNhbnZhc1xuLy8vL1xuXG4vLy8gV2lkdGggbWFwIG9mIGEgbGVmdC9yaWdodCBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIE1hcFxuJG9mZmNhbnZhcy1zaXplczogKFxuICBzbWFsbDogMjUwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gSGVpZ2h0IG1hcCBvZiBhIHRvcC9ib3R0b20gb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBNYXBcbiRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXM6IChcbiAgc21hbGw6IDI1MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBDb2xvclxuJG9mZmNhbnZhcy1iYWNrZ3JvdW5kOiAkbGlnaHQtZ3JheSAhZGVmYXVsdDtcblxuLy8vIEJveCBzaGFkb3cgZm9yIHRoZSBvZmYtY2FudmFzIG92ZXJsYXAgcGFuZWwuXG4vLy8gQHR5cGUgU2hhZG93XG4kb2ZmY2FudmFzLXNoYWRvdzogMCAwIDEwcHggcmdiYSgkYmxhY2ssIDAuNykgIWRlZmF1bHQ7XG5cbi8vLyBJbm5lciBib3ggc2hhZG93IHNpemUgZm9yIHRoZSBvZmYtY2FudmFzIHB1c2ggcGFuZWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplOiAyMHB4ICFkZWZhdWx0O1xuXG4vLy8gSW5uZXIgYm94IHNoYWRvdyBjb2xvciBmb3IgdGhlIG9mZi1jYW52YXMgcHVzaCBwYW5lbC5cbi8vLyBAdHlwZSBDb2xvclxuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctY29sb3I6IHJnYmEoJGJsYWNrLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBjb250ZW50IG92ZXJsYXkuXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLW92ZXJsYXktemluZGV4OiAxMSAhZGVmYXVsdDtcblxuLy8vIFotaW5kZXggb2YgYW4gb2ZmLWNhbnZhcyBwYW5lbCB3aXRoIHRoZSBgcHVzaGAgdHJhbnNpdGlvbi5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDEyICFkZWZhdWx0O1xuXG4vLy8gWi1pbmRleCBvZiBhbiBvZmYtY2FudmFzIHBhbmVsIHdpdGggdGhlIGBvdmVybGFwYCB0cmFuc2l0aW9uLlxuLy8vIEB0eXBlIE51bWJlclxuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTMgIWRlZmF1bHQ7XG5cbi8vLyBaLWluZGV4IG9mIGFuIG9mZi1jYW52YXMgcGFuZWwgdXNpbmcgdGhlIGByZXZlYWwtZm9yLSpgIGNsYXNzZXMgb3IgbWl4aW4uXG4vLy8gQHR5cGUgTnVtYmVyXG4kb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6IDEyICFkZWZhdWx0O1xuXG4vLy8gTGVuZ3RoIG9mIHRoZSBhbmltYXRpb24gb24gYW4gb2ZmLWNhbnZhcyBwYW5lbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGg6IDAuNXMgIWRlZmF1bHQ7XG5cbi8vLyBUaW1pbmcgZnVuY3Rpb24gb2YgdGhlIGFuaW1hdGlvbiBvbiBhbiBvZmYtY2FudmFzIHBhbmVsLlxuLy8vIEB0eXBlIEtleXdvcmRcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2UgIWRlZmF1bHQ7XG5cbi8vLyBJZiBgdHJ1ZWAsIGEgcmV2ZWFsZWQgb2ZmLWNhbnZhcyB3aWxsIGJlIGZpeGVkLXBvc2l0aW9uLCBhbmQgc2Nyb2xsIHdpdGggdGhlIHNjcmVlbi5cbi8vLyBAdHlwZSBCb29sXG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIEJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBvdmVybGF5IHRoYXQgYXBwZWFycyB3aGVuIGFuIG9mZi1jYW52YXMgcGFuZWwgaXMgb3Blbi5cbi8vLyBAdHlwZSBDb2xvclxuJG9mZmNhbnZhcy1leGl0LWJhY2tncm91bmQ6IHJnYmEoJHdoaXRlLCAwLjI1KSAhZGVmYXVsdDtcblxuLy8vIENTUyBjbGFzcyB1c2VkIGZvciB0aGUgbWFpbiBjb250ZW50IGFyZWEuIFRoZSBvZmYtY2FudmFzIG1peGlucyB1c2UgdGhpcyB0byB0YXJnZXQgdGhlIHBhZ2UgY29udGVudC5cbiRtYWluY29udGVudC1jbGFzczogJ29mZi1jYW52YXMtY29udGVudCcgIWRlZmF1bHQ7XG5cbi8vLyBBZGRzIGJhc2VsaW5lIHN0eWxlcyBmb3Igb2ZmLWNhbnZhcy4gVGhpcyBDU1MgaXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgb3RoZXIgcGllY2VzIHdvcmsuXG5AbWl4aW4gb2ZmLWNhbnZhcy1iYXNpY3Mge1xuXG4gIC8vLyBUcmFuc2Zvcm0gZGVwcmVjYXRlZCBzaXplIHNldHRpbmdzIGludG8gbWFwICYgc2hvdyB3YXJuaW5nXG4gIEBpZiB2YXJpYWJsZS1leGlzdHMob2ZmY2FudmFzLXNpemUpIHtcbiAgICAkb2ZmY2FudmFzLXNpemVzOiAoc21hbGw6ICRvZmZjYW52YXMtc2l6ZSwgbWVkaXVtOiAkb2ZmY2FudmFzLXNpemUpICFnbG9iYWw7XG4gICAgQHdhcm4gJyRvZmZjYW52YXMtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBub3QgdXNlZCBhbnltb3JlISBQbGVhc2UgdXBkYXRlIHlvdXIgc2V0dGluZ3MgYW5kIHVzZSB0aGUgbWFwICRvZmZjYW52YXMtc2l6ZXMgaW5zdGVhZCc7XG4gIH1cbiAgQGlmIHZhcmlhYmxlLWV4aXN0cyhvZmZjYW52YXMtdmVydGljYWwtc2l6ZSkge1xuICAgICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZXM6IChzbWFsbDogJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplLCBtZWRpdW06ICRvZmZjYW52YXMtdmVydGljYWwtc2l6ZSkgIWdsb2JhbDtcbiAgICBAd2FybiAnJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplIGlzIGRlcHJlY2F0ZWQgYW5kIG5vdCB1c2VkIGFueW1vcmUhIFBsZWFzZSB1cGRhdGUgeW91ciBzZXR0aW5ncyBhbmQgdXNlIHRoZSBtYXAgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplcyBpbnN0ZWFkJztcbiAgfVxuXG4gIC8vIENoZWNrcyB0aGUgei1pbmRleGVzIGFuZCBpbmNyZWFzZSB0aGVtIGR1ZSB0byBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgb3ZlcmxheSdzIHotaW5kZXggaXMgbmV3IHNpbmNlIHY2LjQgYW5kIG1heSBiZSBpZGVudGljYWwgdG8gdGhlIHVzZXIgY3VzdG9tIHNldHRpbmdzIG9mIHRoZSBwdXNoIHotaW5kZXguXG4gIEBpZiAkb2ZmY2FudmFzLXB1c2gtemluZGV4IDw9ICRvZmZjYW52YXMtb3ZlcmxheS16aW5kZXggeyAkb2ZmY2FudmFzLXB1c2gtemluZGV4OiAkb2ZmY2FudmFzLW92ZXJsYXktemluZGV4ICsgMSAhZ2xvYmFsOyB9XG4gIEBpZiAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4IDw9ICRvZmZjYW52YXMtcHVzaC16aW5kZXggeyAkb2ZmY2FudmFzLW92ZXJsYXAtemluZGV4OiAkb2ZmY2FudmFzLXB1c2gtemluZGV4ICsgMSAhZ2xvYmFsOyB9XG4gIEBpZiAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXggPD0gJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCB7ICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleDogJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleCArIDEgIWdsb2JhbDsgfVxuXG4gIC8vIEhpZGVzIG92ZXJmbG93IG9uIGJvZHkgd2hlbiBhbiBvZmYtY2FudmFzIHBhbmVsIGlzIG9wZW4uXG4gIC5pcy1vZmYtY2FudmFzLW9wZW4ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAvLyBPZmYtY2FudmFzIG92ZXJsYXkgKGdlbmVyYXRlZCBieSBKYXZhU2NyaXB0KVxuICAuanMtb2ZmLWNhbnZhcy1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogJG9mZmNhbnZhcy1vdmVybGF5LXppbmRleDtcblxuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aCAkb2ZmY2FudmFzLXRyYW5zaXRpb24tdGltaW5nLCB2aXNpYmlsaXR5ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcblxuICAgIGJhY2tncm91bmQ6ICRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kO1xuXG4gICAgb3BhY2l0eTogMDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJi5pcy12aXNpYmxlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cblxuICAgICYuaXMtY2xvc2FibGUge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgICYuaXMtb3ZlcmxheS1hYnNvbHV0ZSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgfVxuXG4gICAgJi5pcy1vdmVybGF5LWZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gQWRkcyBiYXNpYyBzdHlsZXMgZm9yIGFuIG9mZi1jYW52YXMgd3JhcHBlci5cbkBtaXhpbiBvZmYtY2FudmFzLXdyYXBwZXIoKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8vIEFkZHMgYmFzaWMgc3R5bGVzIGZvciBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtYmFzZShcbiAgJGJhY2tncm91bmQ6ICRvZmZjYW52YXMtYmFja2dyb3VuZCxcbiAgJHRyYW5zaXRpb246ICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZyxcbiAgJGZpeGVkOiB0cnVlXG4pIHtcbiAgQGluY2x1ZGUgZGlzYWJsZS1tb3VzZS1vdXRsaW5lO1xuXG4gIEBpZiAkZml4ZWQgPT0gdHJ1ZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAvLyBTZXQgdGhlIG9mZi1jYW52YXMgei1pbmRleC5cbiAgei1pbmRleDogJG9mZmNhbnZhcy1wdXNoLXppbmRleDtcblxuICAvLyBJbmNyZWFzZSBDU1Mgc3BlY2lmaWNpdHlcbiAgJi5pcy10cmFuc2l0aW9uLXB1c2gge1xuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtcHVzaC16aW5kZXg7XG4gIH1cblxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHRyYW5zaXRpb247XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcblxuICAvLyBIaWRlIGluYWN0aXZlIG9mZi1jYW52YXMgd2l0aGluIHRoZSBjb250ZW50IHRoYXQgaGF2ZSB0aGUgc2FtZSBwb3NpdGlvblxuICAmLmlzLWNsb3NlZCB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLy8gT3ZlcmxhcCBvbmx5IHN0eWxlcy5cbiAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAge1xuICAgIHotaW5kZXg6ICRvZmZjYW52YXMtb3ZlcmxhcC16aW5kZXg7XG5cbiAgICAmLmlzLW9wZW4ge1xuICAgICAgYm94LXNoYWRvdzogJG9mZmNhbnZhcy1zaGFkb3c7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0cyB0cmFuc2Zvcm0gdG8gMCB0byBzaG93IGFuIG9mZi1jYW52YXMgcGFuZWwuXG4gICYuaXMtb3BlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIH1cbn1cblxuLy8vIEFkZHMgc3R5bGVzIHRvIHBvc2l0aW9uIGFuIG9mZi1jYW52YXMgcGFuZWwgdG8gdGhlIGxlZnQvcmlnaHQvdG9wL2JvdHRvbS5cbkBtaXhpbiBvZmYtY2FudmFzLXBvc2l0aW9uKFxuICAkcG9zaXRpb246IGxlZnQsXG4gICRvcmllbnRhdGlvbjogaG9yaXpvbnRhbCxcbiAgJHNpemVzOiBpZigkb3JpZW50YXRpb24gPT0gaG9yaXpvbnRhbCwgJG9mZmNhbnZhcy1zaXplcywgJG9mZmNhbnZhcy12ZXJ0aWNhbC1zaXplcylcbikge1xuICBAaWYgJHBvc2l0aW9uID09IGxlZnQge1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIHdpZHRoOiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG5cbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKCRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHBvc2l0aW9uID09IHJpZ2h0IHtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgd2lkdGg6ICRzaXplO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoJHNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIHBvc2l0aW9uIGZvciBuZXN0ZWQgb2ZmLWNhbnZhcyBlbGVtZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAub2ZmLWNhbnZhcy5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuXG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgkc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuaXMtdHJhbnNpdGlvbi1vdmVybGFwLmlzLW9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBvcGVuIHBvc2l0aW9uIGZvciB0aGUgY29udGVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30uaXMtb3Blbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICAgICAgQGVhY2ggJG5hbWUsICRzaXplIGluICRzaXplcyB7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0kc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kc2l6ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgcG9zaXRpb24gZm9yIG5lc3RlZCBvZmYtY2FudmFzIGVsZW1lbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9IC5vZmYtY2FudmFzLnBvc2l0aW9uLSN7JHBvc2l0aW9ufSB7XG4gICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJHNpemUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmlzLXRyYW5zaXRpb24tb3ZlcmxhcC5pcy1vcGVuIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0cyB0aGUgb3BlbiBwb3NpdGlvbiBmb3IgdGhlIGNvbnRlbnRcbiAgICBAYXQtcm9vdCAuI3skbWFpbmNvbnRlbnQtY2xhc3N9LmlzLW9wZW4tI3skcG9zaXRpb259IHtcbiAgICAgICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG5cbiAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG5hbWUpIHtcbiAgICAgICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXRzIHRoZSBwb3NpdGlvbiBmb3IgbmVzdGVkIG9mZi1jYW52YXMgZWxlbWVudFxuICAgIEBhdC1yb290IC4jeyRtYWluY29udGVudC1jbGFzc30gLm9mZi1jYW52YXMucG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgIEBlYWNoICRuYW1lLCAkc2l6ZSBpbiAkc2l6ZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRzaXplKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5pcy10cmFuc2l0aW9uLW92ZXJsYXAuaXMtb3BlbiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldHMgdGhlIG9wZW4gcG9zaXRpb24gZm9yIHRoZSBjb250ZW50XG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfS5pcy1vcGVuLSN7JHBvc2l0aW9ufSB7XG4gICAgICAmLmhhcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgICBAZWFjaCAkbmFtZSwgJHNpemUgaW4gJHNpemVzIHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRzaXplKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiAkb2ZmY2FudmFzLWlubmVyLXNoYWRvdy1zaXplIGlzIHNldCwgYWRkIGlubmVyIGJveC1zaGFkb3cuXG4gIC8vIFRoaXMgbWltaWNzIHRoZSBvZmYtY2FudmFzIHBhbmVsIGhhdmluZyBhIGxvd2VyIHotaW5kZXgsIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgb25lLlxuICBAaWYgJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZSB7XG4gICAgJi5pcy10cmFuc2l0aW9uLXB1c2gge1xuICAgICAgQGlmICRwb3NpdGlvbiA9PSBsZWZ0IHtcbiAgICAgICAgQGluY2x1ZGUgaW5uZXItc2lkZS1zaGFkb3cocmlnaHQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSByaWdodCB7XG4gICAgICAgIEBpbmNsdWRlIGlubmVyLXNpZGUtc2hhZG93KGxlZnQsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSB0b3Age1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyhib3R0b20sICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRwb3NpdGlvbiA9PSBib3R0b20ge1xuICAgICAgICBAaW5jbHVkZSBpbm5lci1zaWRlLXNoYWRvdyh0b3AsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LXNpemUsICRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuXG4vLy8gU2V0cyB0aGUgc3R5bGVzIGZvciB0aGUgY29udGVudCBjb250YWluZXIuXG5AbWl4aW4gb2ZmLWNhbnZhcy1jb250ZW50KCkge1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAvLyBCaW5kIHRvIGhhcy10cmFuc2l0aW9uLVggY2xhc3MgdG8gcHJldmVudCB0cmFuc2l0aW9uIGZvciB0cmFuc2Zvcm06bm9uZVxuICAmLmhhcy10cmFuc2l0aW9uLW92ZXJsYXAsXG4gICYuaGFzLXRyYW5zaXRpb24tcHVzaCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtICRvZmZjYW52YXMtdHJhbnNpdGlvbi1sZW5ndGggJG9mZmNhbnZhcy10cmFuc2l0aW9uLXRpbWluZztcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBzY29wZSB1bnRpbCB0aGUgZWxlbWVudCBpcyBjbG9zZWQgKG1ha2VzIHN1cmUgdHJhbnNpdGlvbmVuZCBnZXRzIHRyaWdnZXJlZClcbiAgJi5oYXMtdHJhbnNpdGlvbi1wdXNoIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgfVxuXG4gIC8vIENvbnNpZGVyIGVsZW1lbnQgJiBjb250ZW50LCBuZXN0ZWQgaW4gYW5vdGhlciBjb250ZW50XG4gIC5vZmYtY2FudmFzLmlzLW9wZW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuICB9XG59XG5cbi8vLyBBZGRzIHN0eWxlcyB0aGF0IHJldmVhbCBhbiBvZmYtY2FudmFzIHBhbmVsLlxuQG1peGluIG9mZi1jYW52YXMtcmV2ZWFsKFxuJHBvc2l0aW9uOiBsZWZ0LFxuJHppbmRleDogJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LFxuJGNvbnRlbnQ6ICRtYWluY29udGVudC1jbGFzcyxcbiRicmVha3BvaW50OiBzbWFsbFxuKSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgei1pbmRleDogJHppbmRleDtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcblxuICBAaWYgbm90ICRvZmZjYW52YXMtZml4ZWQtcmV2ZWFsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICAuY2xvc2UtYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLy8gQ29uc2lkZXIgcmV2ZWFsZWQgZWxlbWVudCBpcyBuZXN0ZWQgaW4gY29udGVudFxuICAuI3skbWFpbmNvbnRlbnQtY2xhc3N9ICYge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIEBhdC1yb290IC4jeyRjb250ZW50fS5oYXMtcmV2ZWFsLSN7JHBvc2l0aW9ufSB7XG4gICAgbWFyZ2luLSN7JHBvc2l0aW9ufTogLXpmLWdldC1icC12YWwoJG9mZmNhbnZhcy1zaXplcywgJGJyZWFrcG9pbnQpO1xuICB9XG5cbiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKHByaW9yIHRvIHY2LjQpXG4gICYgfiAuI3skY29udGVudH0ge1xuICAgIG1hcmdpbi0jeyRwb3NpdGlvbn06IC16Zi1nZXQtYnAtdmFsKCRvZmZjYW52YXMtc2l6ZXMsICRicmVha3BvaW50KTtcbiAgfVxufVxuXG4vLy8gT3ZlcnJpZGVzIHRoZSBvZmYtY2FudmFzIHN0eWxlc1xuQG1peGluIGluLWNhbnZhcygpIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB3aWR0aDogYXV0bztcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIHRyYW5zaXRpb246IG5vbmU7XG5cbiAgLy8gSW5jcmVhc2UgQ1NTIHNwZWNpZmljaXR5XG4gICYucG9zaXRpb24tbGVmdCxcbiAgJi5wb3NpdGlvbi1yaWdodCxcbiAgJi5wb3NpdGlvbi10b3AsXG4gICYucG9zaXRpb24tYm90dG9tIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5jbG9zZS1idXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tb2ZmLWNhbnZhcyB7XG4gIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzaWNzO1xuXG4gIC8vIE9mZi1jYW52YXMgd3JhcHBlclxuICAub2ZmLWNhbnZhcy13cmFwcGVyIHtcbiAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXdyYXBwZXI7XG4gIH1cblxuICAvLyBPZmYtY2FudmFzIGNvbnRhaW5lclxuICAub2ZmLWNhbnZhcyB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1iYXNlO1xuXG4gICAgLy8gRm9yY2UgcG9zaXRpb24gYWJzb2x1dGUgZm9yIG5lc3RlZCBvZmYtY2FudmFzIGJlY2F1c2UgZml4ZWQgZG9lc24ndCB3b3JrIGZvciBwdXNoIHRyYW5zaXRpb24gd2l0aGluIHRoZSB0cmFuc2Zvcm0gc2NvcGUuXG4gICAgQGF0LXJvb3QgLiN7JG1haW5jb250ZW50LWNsYXNzfSAmIHtcbiAgICAgIC8vIE5PVEU6IHNpbmNlIG92ZXJsYXAgdHJhbnNpdGlvbiBpcyBjdXJyZW50bHkgZm9yY2VkIGlmIG5lc3RlZCwgdGhlcmUncyBubyBuZWVkIHRvIGZvcmNlIHBvc2l0aW9uIGFic29sdXRlIHVudGlsIG5lc3RlZCBwdXNoIHRyYW5zaXRpb24gaXMgc3VwcG9ydGVkLlxuICAgICAgLy8gcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgY29udGFpbmVyIHdpdGggYWJzb2x1dGUgcG9zaXRpb25cbiAgLm9mZi1jYW52YXMtYWJzb2x1dGUge1xuICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtYmFzZSgkZml4ZWQ6IGZhbHNlKTtcbiAgfVxuXG4gIC8vIE9mZi1jYW52YXMgcG9zaXRpb24gY2xhc3Nlc1xuICAucG9zaXRpb24tbGVmdCAgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24obGVmdCwgICBob3Jpem9udGFsKTsgfVxuICAucG9zaXRpb24tcmlnaHQgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24ocmlnaHQsICBob3Jpem9udGFsKTsgfVxuICAucG9zaXRpb24tdG9wICAgICB7IEBpbmNsdWRlIG9mZi1jYW52YXMtcG9zaXRpb24odG9wLCAgICB2ZXJ0aWNhbCk7IH1cbiAgLnBvc2l0aW9uLWJvdHRvbSAgeyBAaW5jbHVkZSBvZmYtY2FudmFzLXBvc2l0aW9uKGJvdHRvbSwgdmVydGljYWwpOyB9XG5cbiAgLm9mZi1jYW52YXMtY29udGVudCB7XG4gICAgQGluY2x1ZGUgb2ZmLWNhbnZhcy1jb250ZW50O1xuICB9XG5cbiAgLy8gUmV2ZWFsIG9mZi1jYW52YXMgcGFuZWwgb24gbGFyZ2VyIHNjcmVlbnNcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICBAaWYgJG5hbWUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbmFtZSkge1xuICAgICAgICAucG9zaXRpb24tbGVmdC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbChsZWZ0LCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLXJpZ2h0LnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKHJpZ2h0LCAkb2ZmY2FudmFzLXJldmVhbC16aW5kZXgsICRtYWluY29udGVudC1jbGFzcywgJG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBvc2l0aW9uLXRvcC5yZXZlYWwtZm9yLSN7JG5hbWV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBvZmYtY2FudmFzLXJldmVhbCh0b3AsICRvZmZjYW52YXMtcmV2ZWFsLXppbmRleCwgJG1haW5jb250ZW50LWNsYXNzLCAkbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAucG9zaXRpb24tYm90dG9tLnJldmVhbC1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIG9mZi1jYW52YXMtcmV2ZWFsKGJvdHRvbSwgJG9mZmNhbnZhcy1yZXZlYWwtemluZGV4LCAkbWFpbmNvbnRlbnQtY2xhc3MsICRuYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1vdmUgaW4tY2FudmFzIGZvciBsYXJnZXIgc2NyZWVuc1xuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkbmFtZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRuYW1lKSB7XG4gICAgICAgIC5vZmYtY2FudmFzLmluLWNhbnZhcy1mb3ItI3skbmFtZX0ge1xuICAgICAgICAgIEBpbmNsdWRlIGluLWNhbnZhcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcmV2ZWFsXG4vLy8vXG5cbi8vLyBEZWZhdWx0IGJhY2tncm91bmQgY29sb3Igb2YgYSBtb2RhbC5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHdpZHRoIG9mIGEgbW9kYWwsIHdpdGggbm8gY2xhc3MgYXBwbGllZC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtd2lkdGg6IDYwMHB4ICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBtYXhpbXVtIHdpZHRoIG9mIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLW1heC13aWR0aDogJGdsb2JhbC13aWR0aCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcGFkZGluZyBpbnNpZGUgYSBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcGFkZGluZzogJGdsb2JhbC1wYWRkaW5nICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBib3JkZXIgYXJvdW5kIGEgbW9kYWwuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgcmFkaXVzIGZvciBtb2RhbC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cyAhZGVmYXVsdDtcblxuLy8vIHotaW5kZXggZm9yIG1vZGFscy4gVGhlIG92ZXJsYXkgdXNlcyB0aGlzIHZhbHVlLCB3aGlsZSB0aGUgbW9kYWwgaXRzZWxmIHVzZXMgdGhpcyB2YWx1ZSBwbHVzIG9uZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiRyZXZlYWwtemluZGV4OiAxMDA1ICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBvZiBtb2RhbCBvdmVybGF5cy5cbi8vLyBAdHlwZSBDb2xvclxuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KSAhZGVmYXVsdDtcblxuXG4vLyBQbGFjZWhvbGRlciBzZWxlY3RvciBmb3IgbWVkaXVtLWFuZC11cCBtb2RhbHNcbi8vIFByZXZlbnRzIGR1cGxpY2F0ZSBDU1Mgd2hlbiBkZWZpbmluZyBtdWx0aXBsZSBSZXZlYWwgc2l6ZXNcbi8vIFRoaXMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIGJyZWFrcG9pbnQgdGhlbiBgQG1peGluIHJldmVhbC1tb2RhbC13aWR0aGBcbkBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICVyZXZlYWwtY2VudGVyZWQge1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbn1cblxuXG4vLy8gQWRkcyBzdHlsZXMgZm9yIGEgbW9kYWwgb3ZlcmxheS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmRdIC0gQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgb3ZlcmxheS5cbkBtaXhpbiByZXZlYWwtb3ZlcmxheSgkYmFja2dyb3VuZDogJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQpIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6ICRyZXZlYWwtemluZGV4O1xuXG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4vLy8gQWRkcyBiYXNlIHN0eWxlcyBmb3IgYSBtb2RhbC5cbkBtaXhpbiByZXZlYWwtbW9kYWwtYmFzZSB7XG4gIEBpbmNsdWRlIGRpc2FibGUtbW91c2Utb3V0bGluZTtcbiAgei1pbmRleDogJHJldmVhbC16aW5kZXggKyAxO1xuICAvLyBXb3JrYXJvdW5kIGFuZHJvaWQgYnJvd3NlciB6LWluZGV4IGJ1Z1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogJHJldmVhbC1wYWRkaW5nO1xuXG4gIGJvcmRlcjogJHJldmVhbC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRyZXZlYWwtcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmV2ZWFsLWJhY2tncm91bmQ7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHJvd3MgZG9uJ3QgaGF2ZSBhIG1pbi13aWR0aCBvbiB0aGVtXG4gIC5jb2x1bW4ge1xuICAgIG1pbi13aWR0aDogMDtcbiAgfVxuXG4gIC8vIFN0cmlwIG1hcmdpbnMgZnJvbSB0aGUgbGFzdCBpdGVtIGluIHRoZSBtb2RhbFxuICA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8vLyBBZGp1c3RzIHRoZSB3aWR0aCBvZiBhIG1vZGFsLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgbW9kYWwuIEdlbmVyYWxseSBhIHBlcmNlbnRhZ2UuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXgtd2lkdGggWyRyZXZlYWwtbWF4LXdpZHRoXSAtIE1heGltdW0gd2lkdGggb2YgdGhlIG1vZGFsLlxuQG1peGluIHJldmVhbC1tb2RhbC13aWR0aChcbiAgJHdpZHRoOiAkcmV2ZWFsLXdpZHRoLFxuICAkbWF4LXdpZHRoOiAkcmV2ZWFsLW1heC13aWR0aFxuKSB7XG4gIC8vIEV4dGVuZHMgbXVzdCBiZSBtYWRlIG91dHNpZGUgb2YgYnJlYWtwb2ludHMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBuZXdlciBTYXNzIHZlcnNpb25zIChsaWJzYXNzIHYzLjUpXG4gIEBleHRlbmQgJXJldmVhbC1jZW50ZXJlZDtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGZ1bGwtc2NyZWVuIG1vZGFsLCB3aGljaCBzdHJldGNoZXMgdGhlIGZ1bGwgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgd2luZG93LlxuQG1peGluIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuIHtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuXG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IG5vbmU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgYm9yZGVyOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1yZXZlYWwge1xuXG4gIC8vLyBEaXNhYmxlcyB0aGUgc2Nyb2xsIHdoZW4gUmV2ZWFsIGlzIHNob3duIHRvIHByZXZlbnQgdGhlIGJhY2tncm91bmQgZnJvbSBzaGlmdGluZ1xuICBodG1sLmlzLXJldmVhbC1vcGVuIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuXG4gICAgJi56Zi1oYXMtc2Nyb2xsIHtcbiAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICB9XG5cbiAgICBib2R5IHsgLy8gc2Fzcy1saW50OmRpc2FibGUtbGluZSBuby1xdWFsaWZ5aW5nLWVsZW1lbnRzXG4gICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheVxuICAucmV2ZWFsLW92ZXJsYXkge1xuICAgIEBpbmNsdWRlIHJldmVhbC1vdmVybGF5O1xuICB9XG5cbiAgLy8gTW9kYWwgY29udGFpbmVyXG4gIC5yZXZlYWwge1xuICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1iYXNlO1xuICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCgkcmV2ZWFsLXdpZHRoKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAxMDBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIC8vIFJlbW92ZSBwYWRkaW5nXG4gICAgJi5jb2xsYXBzZSB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC8vIFNpemluZyBjbGFzc2VzXG4gICAgJi50aW55ICB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCgzMCUpOyB9XG4gICAgJi5zbWFsbCB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCg1MCUpOyB9XG4gICAgJi5sYXJnZSB7IEBpbmNsdWRlIHJldmVhbC1tb2RhbC13aWR0aCg5MCUpOyB9XG5cbiAgICAvLyBGdWxsLXNjcmVlbiBtb2RlXG4gICAgJi5mdWxsIHtcbiAgICAgIEBpbmNsdWRlIHJldmVhbC1tb2RhbC1mdWxsc2NyZWVuO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJC16Zi16ZXJvLWJyZWFrcG9pbnQgb25seSkge1xuICAgICAgQGluY2x1ZGUgcmV2ZWFsLW1vZGFsLWZ1bGxzY3JlZW47XG4gICAgfVxuXG4gICAgJi53aXRob3V0LW92ZXJsYXkge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG5AbWl4aW4gZm91bmRhdGlvbi1zdGlja3kge1xuICAuc3RpY2t5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLnN0aWNreSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIC5zdGlja3kuaXMtc3R1Y2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA1O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgJi5pcy1hdC10b3Age1xuICAgICAgdG9wOiAwO1xuICAgIH1cblxuICAgICYuaXMtYXQtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICAuc3RpY2t5LmlzLWFuY2hvcmVkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgbGVmdDogYXV0bztcblxuICAgICYuaXMtYXQtYm90dG9tIHtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0aXRsZS1iYXJcbi8vLy9cblxuLy8vIEJhY2tncm91bmQgY29sb3Igb2YgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBQYWRkaW5nIGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBMZW5ndGhcbiR0aXRsZWJhci1wYWRkaW5nOiAwLjVyZW0gIWRlZmF1bHQ7XG5cbi8vLyBGb250IHdlaWdodCBvZiB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBXZWlnaHRcbiR0aXRsZWJhci10ZXh0LWZvbnQtd2VpZ2h0OiBib2xkICFkZWZhdWx0O1xuXG4vLy8gQ29sb3Igb2YgbWVudSBpY29ucyBpbnNpZGUgYSB0aXRsZSBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLyBDb2xvciBvZiBtZW51IGljb25zIGluc2lkZSBhIHRpdGxlIGJhciBvbiBob3Zlci5cbi8vLyBAdHlwZSBDb2xvclxuJHRpdGxlYmFyLWljb24tY29sb3ItaG92ZXI6ICRtZWRpdW0tZ3JheSAhZGVmYXVsdDtcblxuLy8vIFNwYWNpbmcgYmV0d2VlbiB0aGUgbWVudSBpY29uIGFuZCB0ZXh0IGluc2lkZSBhIHRpdGxlIGJhci5cbi8vLyBAdHlwZSBMZW5ndGhcbiR0aXRsZWJhci1pY29uLXNwYWNpbmc6IDAuMjVyZW0gIWRlZmF1bHQ7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXRpdGxlLWJhciB7XG4gIC50aXRsZS1iYXIge1xuICAgIHBhZGRpbmc6ICR0aXRsZWJhci1wYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6ICR0aXRsZWJhci1iYWNrZ3JvdW5kO1xuICAgIGNvbG9yOiAkdGl0bGViYXItY29sb3I7XG5cbiAgICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgICB9XG5cbiAgICAubWVudS1pY29uIHtcbiAgICAgIG1hcmdpbi0jeyRnbG9iYWwtbGVmdH06ICR0aXRsZWJhci1pY29uLXNwYWNpbmc7XG4gICAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogJHRpdGxlYmFyLWljb24tc3BhY2luZztcbiAgICB9XG4gIH1cblxuICBAaWYgJGdsb2JhbC1mbGV4Ym94IHtcbiAgICAudGl0bGUtYmFyLWxlZnQsXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAxIDEgMHB4OyAvLyBzYXNzLWxpbnQ6ZGlzYWJsZS1saW5lIHplcm8tdW5pdFxuICAgIH1cblxuICAgIC50aXRsZS1iYXItcmlnaHQge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAudGl0bGUtYmFyLWxlZnQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLnRpdGxlLWJhci1yaWdodCB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAudGl0bGUtYmFyLXRpdGxlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXdlaWdodDogJHRpdGxlYmFyLXRleHQtZm9udC13ZWlnaHQ7XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB0b3AtYmFyXG4vLy8vXG5cbi8vLyBQYWRkaW5nIGZvciB0aGUgdG9wIGJhci5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItcGFkZGluZzogMC41cmVtICFkZWZhdWx0O1xuXG4vLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHRvcCBiYXIuIFRoaXMgY29sb3IgYWxzbyBjYXNjYWRlcyB0byBtZW51cyB3aXRoaW4gdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b3BiYXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXkgIWRlZmF1bHQ7XG5cbi8vLyBCYWNrZ3JvdW5kIGNvbG9yIHN1Ym1lbnVzIHdpdGhpbiB0aGUgdG9wIGJhci4gVXNlZnVsbCBpZiAkdG9wYmFyLWJhY2tncm91bmQgaXMgdHJhbnNwYXJlbnQuXG4vLy8gQHR5cGUgQ29sb3JcbiR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQgIWRlZmF1bHQ7XG5cbi8vLyBTcGFjaW5nIGZvciB0aGUgdG9wIGJhciB0aXRsZS5cbi8vLyBAdHlwZSBOdW1iZXJcbiR0b3BiYXItdGl0bGUtc3BhY2luZzogMC41cmVtIDFyZW0gMC41cmVtIDAgIWRlZmF1bHQ7XG5cbi8vLyBNYXhpbXVtIHdpZHRoIG9mIGA8aW5wdXQ+YCBlbGVtZW50cyBpbnNpZGUgdGhlIHRvcCBiYXIuXG4vLy8gQHR5cGUgTnVtYmVyXG4kdG9wYmFyLWlucHV0LXdpZHRoOiAyMDBweCAhZGVmYXVsdDtcblxuLy8vIEJyZWFrcG9pbnQgYXQgd2hpY2ggdG9wIGJhciBzd2l0Y2hlcyBmcm9tIG1vYmlsZSB0byBkZXNrdG9wIHZpZXcuXG4vLy8gQHR5cGUgQnJlYWtwb2ludFxuJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQ6IG1lZGl1bSAhZGVmYXVsdDtcblxuLy8vIEFkZHMgc3R5bGVzIGZvciBhIHRvcCBiYXIgY29udGFpbmVyLlxuQG1peGluIHRvcC1iYXItY29udGFpbmVyIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH1cblxuICBwYWRkaW5nOiAkdG9wYmFyLXBhZGRpbmc7XG5cbiAgJixcbiAgdWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR0b3BiYXItYmFja2dyb3VuZDtcbiAgfVxuXG4gIC8vIENoZWNrIGlmICR0b3BiYXItYmFja2dyb3VuZCBpcyBkaWZmZXJudCBmcm9tICR0b3BiYXItYmFja2dyb3VuZC1zdWJtZW51XG4gIEBpZiAoJHRvcGJhci1iYWNrZ3JvdW5kICE9ICR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kKSB7XG4gICAgdWwgdWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHRvcGJhci1zdWJtZW51LWJhY2tncm91bmQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdHJhaW4gd2lkdGggb2YgaW5wdXRzIGJ5IGRlZmF1bHQgdG8gbWFrZSB0aGVtIGVhc2llciB0byBhcnJhbmdlXG4gIGlucHV0IHtcbiAgICBtYXgtd2lkdGg6ICR0b3BiYXItaW5wdXQtd2lkdGg7XG4gICAgbWFyZ2luLSN7JGdsb2JhbC1yaWdodH06IDFyZW07XG4gIH1cblxuICAvLyBUaGUgYWJvdmUgc3R5bGVzIHNob3VsZG4ndCBhcHBseSB0byBpbnB1dCBncm91cCBmaWVsZHNcbiAgLmlucHV0LWdyb3VwLWZpZWxkIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tI3skZ2xvYmFsLXJpZ2h0fTogMDtcbiAgfVxuXG4gIGlucHV0LmJ1dHRvbiB7IC8vIHNhc3MtbGludDpkaXNhYmxlLWxpbmUgbm8tcXVhbGlmeWluZy1lbGVtZW50c1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi8vLyBNYWtlcyBzZWN0aW9ucyBvZiBhIHRvcCBiYXIgc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG5AbWl4aW4gdG9wLWJhci1zdGFja2VkIHtcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLy8gU3ViLXNlY3Rpb25zXG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFN1Yi1zZWN0aW9uc1xuICAgIC50b3AtYmFyLWxlZnQsXG4gICAgLnRvcC1iYXItcmlnaHQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG59XG5cbi8vLyBVbmRvZXMgdGhlIENTUyBhcHBsaWVkIGJ5IHRoZSBgdG9wLWJhci1zdGFja2VkKClgIG1peGluLlxuQG1peGluIHRvcC1iYXItdW5zdGFjayB7XG4gIEBpZiAkZ2xvYmFsLWZsZXhib3gge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgLnRvcC1iYXItbGVmdCB7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICB9XG5cbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICBmbGV4OiAwIDEgYXV0bztcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRvcC1iYXItbGVmdCxcbiAgICAudG9wLWJhci1yaWdodCB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdG9wLWJhciB7XG4gIC8vIFRvcCBiYXIgY29udGFpbmVyXG4gIC50b3AtYmFyIHtcbiAgICBAaW5jbHVkZSB0b3AtYmFyLWNvbnRhaW5lcjtcblxuICAgIC8vIFN0YWNrIG9uIHNtYWxsIHNjcmVlbnMgYnkgZGVmYXVsdFxuICAgIEBpbmNsdWRlIHRvcC1iYXItc3RhY2tlZDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHRvcGJhci11bnN0YWNrLWJyZWFrcG9pbnQpIHtcbiAgICAgIEBpbmNsdWRlIHRvcC1iYXItdW5zdGFjaztcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBjbGFzc2VzIGZvciBzdGFja2luZyBvbiBlYWNoIHNjcmVlbiBzaXplIChkZWZpbmVkIGluICRicmVha3BvaW50LWNsYXNzZXMpXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAmLnN0YWNrZWQtZm9yLSN7JHNpemV9IHtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIGRvd24pIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRvcC1iYXItc3RhY2tlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTdWItc2VjdGlvbnNcbiAgQGlmICRnbG9iYWwtZmxleGJveCB7XG4gICAgLnRvcC1iYXItdGl0bGUge1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBtYXJnaW46ICR0b3BiYXItdGl0bGUtc3BhY2luZztcbiAgICB9XG5cbiAgICAudG9wLWJhci1sZWZ0LFxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLnRvcC1iYXItdGl0bGUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBwYWRkaW5nOiAkdG9wYmFyLXRpdGxlLXNwYWNpbmc7XG5cbiAgICAgIC5tZW51LWljb24ge1xuICAgICAgICBib3R0b206IDJweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAudG9wLWJhci1sZWZ0IHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC50b3AtYmFyLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmbG9hdFxuLy8vL1xuXG5AbWl4aW4gZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzIHtcbiAgLmZsb2F0LWxlZnQge1xuICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuZmxvYXQtcmlnaHQge1xuICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmZsb2F0LWNlbnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG5cbiAgLmNsZWFyZml4IHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIEZsZXhib3ggVXRpbGl0aWVzXG4vLy8vXG4vL1xuLy8vIERlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb3VudCBvZiBzb3VyY2Ugb3JkZXJpbmdgXG4vLy8gQHR5cGUgTnVtYmVyXG4kZmxleC1zb3VyY2Utb3JkZXJpbmctY291bnQ6IDYgIWRlZmF1bHQ7XG5cbi8vLyBRdWlja2x5IGRpc2FibGUvZW5hYmxlIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIFZhbmlsbGEgRmxleCBIZWxwZXJzLlxuLy8vIEB0eXBlIEJvb2xlYW5cbiRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHM6IHRydWUgIWRlZmF1bHQ7XG5cbkBtaXhpbiBmbGV4LWhlbHBlcnMge1xuICAuZmxleC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGZsZXg7XG4gIH1cblxuICAuZmxleC1jaGlsZC1hdXRvIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuXG4gIC5mbGV4LWNoaWxkLWdyb3cge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICB9XG5cbiAgLmZsZXgtY2hpbGQtc2hyaW5rIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgfVxuXG4gIEBlYWNoICRkaXIsICRwcm9wIGluICQtemYtZmxleC1kaXJlY3Rpb24ge1xuICAgIC5mbGV4LWRpci0jeyRkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS1mbGV4LWNoaWxkLWF1dG8ge1xuICAgICAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZsZXgtY2hpbGQtZ3JvdyB7XG4gICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZmxleC1jaGlsZC1zaHJpbmsge1xuICAgICAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGVhY2ggJGRpciwgJHByb3AgaW4gJC16Zi1mbGV4LWRpcmVjdGlvbiB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tZmxleC1kaXItI3skZGlyfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZGlyZWN0aW9uKCRwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tZmxleC1jbGFzc2VzIHtcbiAgLy8gSG9yaXpvbnRhbCBhbGlnbm1lbnQgdXNpbmcganVzdGlmeS1jb250ZW50XG4gIEBlYWNoICRoZGlyLCAkcHJvcCBpbiAkLXpmLWZsZXgtanVzdGlmeSB7XG4gICAgLmFsaWduLSN7JGhkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHg6ICRoZGlyKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8vIEhvcml6b250YWwgYWxpZ25tZW50IFNwZWNpZmljYWxseSBmb3IgVmVydGljYWwgTWVudVxuICBAZWFjaCAkaGRpciwgJHByb3AgaW4gbWFwLXJlbW92ZSgkLXpmLWZsZXgtanVzdGlmeSwgJ2p1c3RpZnknLCAnc3BhY2VkJykge1xuICAgIC5hbGlnbi0jeyRoZGlyfSB7XG4gICAgICAmLnZlcnRpY2FsIHtcbiAgICAgICAgJi5tZW51ID4gbGkgPiBhIHtcbiAgICAgICAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiAkaGRpcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWZXJ0aWNhbCBhbGlnbm1lbnQgdXNpbmcgYWxpZ24taXRlbXMgYW5kIGFsaWduLXNlbGZcbiAgQGVhY2ggJHZkaXIsICRwcm9wIGluICQtemYtZmxleC1hbGlnbiB7XG4gICAgLmFsaWduLSN7JHZkaXJ9IHtcbiAgICAgIEBpbmNsdWRlIGZsZXgtYWxpZ24oJHk6ICR2ZGlyKTtcbiAgICB9XG5cbiAgICAuYWxpZ24tc2VsZi0jeyR2ZGlyfSB7XG4gICAgICBAaW5jbHVkZSBmbGV4LWFsaWduLXNlbGYoJHk6ICR2ZGlyKTtcbiAgICB9XG4gIH1cblxuICAvLyBDZW50cmFsIGFsaWdubWVudCBvZiBjb250ZW50XG4gIC5hbGlnbi1jZW50ZXItbWlkZGxlIHtcbiAgICBAaW5jbHVkZSBmbGV4LWFsaWduKCR4OiBjZW50ZXIsICR5OiBtaWRkbGUpO1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIC8vIFNvdXJjZSBvcmRlcmluZ1xuICBAaW5jbHVkZSAtemYtZWFjaC1icmVha3BvaW50IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudCB7XG4gICAgICAuI3skLXpmLXNpemV9LW9yZGVyLSN7JGl9IHtcbiAgICAgICAgQGluY2x1ZGUgZmxleC1vcmRlcigkaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmFuaWxsYSBGbGV4Ym94IEhlbHBlcnNcbiAgQGluY2x1ZGUgZmxleC1oZWxwZXJzO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvcigkc2l6ZSkge1xuICAkc2l6ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICRzaXplKTtcbiAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZGF0aW9uL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gICRzaXplOiAtemYtYnAtdG8tZW0oJHNpemUpIC0gLjAwMTI1O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUgZG93bikge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4vLy8gSGlkZSBhbiBlbGVtZW50IGJ5IGRlZmF1bHQsIG9ubHkgZGlzcGxheWluZyBpdCB3aXRoaW4gYSBjZXJ0YWluIGJyZWFrcG9pbnQuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBzaG93LWZvci1vbmx5KCRzaXplKSB7XG4gICRsb3dlci1ib3VuZC1zaXplOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpO1xuICAkdXBwZXItYm91bmQtc2l6ZTogLXpmLW1hcC1uZXh0KCRicmVha3BvaW50cywgJHNpemUpO1xuXG4gIC8vIG1vcmUgb2Z0ZW4gdGhhbiBub3QgdGhpcyB3aWxsIGJlIGNvcnJlY3QsIGp1c3Qgb25lIHRpbWUgcm91bmQgdGhlIGxvb3AgaXQgd29uJ3Qgc28gc2V0IGluIHNjb3BlIGhlcmVcbiAgJGxvd2VyLWJvdW5kOiAtemYtYnAtdG8tZW0oJGxvd2VyLWJvdW5kLXNpemUpIC0gLjAwMTI1O1xuICAvLyB0ZXN0IGFjdHVhbCBsb3dlci1ib3VuZC1zaXplLCBpZiAwIHNldCBpdCB0byAwZW1cbiAgQGlmIHN0cmlwLXVuaXQoJGxvd2VyLWJvdW5kLXNpemUpID09IDAge1xuICAgICRsb3dlci1ib3VuZDogLXpmLWJwLXRvLWVtKCRsb3dlci1ib3VuZC1zaXplKTtcbiAgfVxuXG4gIEBpZiAkdXBwZXItYm91bmQtc2l6ZSA9PSBudWxsIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbG93ZXItYm91bmQpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICR1cHBlci1ib3VuZDogLXpmLWJwLXRvLWVtKCR1cHBlci1ib3VuZC1zaXplKTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsb3dlci1ib3VuZCksIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHVwcGVyLWJvdW5kKSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8vIFNob3cgYW4gZWxlbWVudCBieSBkZWZhdWx0LCBhbmQgaGlkZSBpdCBhYm92ZSBhIGNlcnRhaW4gc2NyZWVuIHNpemUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSAtIEJyZWFrcG9pbnQgdG8gdXNlLiAqKk11c3QgYmUgYSBicmVha3BvaW50IGRlZmluZWQgaW4gYCRicmVha3BvaW50c2AuKipcbkBtaXhpbiBoaWRlLWZvcigkc2l6ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBTaG93IGFuIGVsZW1lbnQgYnkgZGVmYXVsdCwgYW5kIGhpZGUgaXQgYWJvdmUgYSBjZXJ0YWluIHNjcmVlbiBzaXplLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgLSBCcmVha3BvaW50IHRvIHVzZS4gKipNdXN0IGJlIGEgYnJlYWtwb2ludCBkZWZpbmVkIGluIGAkYnJlYWtwb2ludHNgLioqXG5AbWl4aW4gaGlkZS1mb3Itb25seSgkc2l6ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplIG9ubHkpIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tdmlzaWJpbGl0eS1jbGFzc2VzIHtcbiAgLy8gQmFzaWMgaGlkaW5nIGNsYXNzZXNcbiAgLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5pbnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgfVxuXG4gIC8vIFJlc3BvbnNpdmUgdmlzaWJpbGl0eSBjbGFzc2VzXG4gIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAuaGlkZS1mb3ItI3skc2l6ZX0ge1xuICAgICAgICBAaW5jbHVkZSBoaWRlLWZvcigkc2l6ZSk7XG4gICAgICB9XG5cbiAgICAgIC5zaG93LWZvci0jeyRzaXplfSB7XG4gICAgICAgIEBpbmNsdWRlIHNob3ctZm9yKCRzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaGlkZS1mb3ItI3skc2l6ZX0tb25seSB7XG4gICAgICBAaW5jbHVkZSBoaWRlLWZvci1vbmx5KCRzaXplKTtcbiAgICB9XG5cbiAgICAuc2hvdy1mb3ItI3skc2l6ZX0tb25seSB7XG4gICAgICBAaW5jbHVkZSBzaG93LWZvci1vbmx5KCRzaXplKTtcbiAgICB9XG4gIH1cblxuICAvLyBTY3JlZW4gcmVhZGVyIHZpc2liaWxpdHkgY2xhc3Nlc1xuICAvLyBOZWVkIGEgXCJoaWRlLWZvci1zclwiIGNsYXNzPyBBZGQgYXJpYS1oaWRkZW49J3RydWUnIHRvIHRoZSBlbGVtZW50XG4gIC5zaG93LWZvci1zcixcbiAgLnNob3ctb24tZm9jdXMge1xuICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlO1xuICB9XG5cbiAgLy8gT25seSBkaXNwbGF5IHRoZSBlbGVtZW50IHdoZW4gaXQncyBmb2N1c2VkXG4gIC5zaG93LW9uLWZvY3VzIHtcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBpbmNsdWRlIGVsZW1lbnQtaW52aXNpYmxlLW9mZjtcbiAgICB9XG4gIH1cblxuICAvLyBMYW5kc2NhcGUgYW5kIHBvcnRyYWl0IHZpc2liaWxpdHlcbiAgLnNob3ctZm9yLWxhbmRzY2FwZSxcbiAgLmhpZGUtZm9yLXBvcnRyYWl0IHtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gIC5oaWRlLWZvci1sYW5kc2NhcGUsXG4gIC5zaG93LWZvci1wb3J0cmFpdCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHBvcnRyYWl0KSB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZVxuLy8vL1xuXG4vLyBSZWxhdGlvbmFsIE1peGluc1xuQGltcG9ydCAncmVsYXRpb24nO1xuXG4vLyBCb3ggTWl4aW5cbkBpbXBvcnQgJ2JveCc7XG5cbi8vIFJvdGF0ZSBNaXhpblxuQGltcG9ydCAncm90YXRlJztcblxuLy8gVGV4dCB1dGlsaXRpZXNcbkBpbXBvcnQgJ3RleHQtdXRpbGl0aWVzJztcblxuLy8gVGV4dCB0cmFuc2Zvcm1hdGlvbiBjbGFzc2VzXG5AaW1wb3J0ICd0ZXh0LXRyYW5zZm9ybWF0aW9uJztcblxuLy8gVGV4dCBEZWNvcmF0aW9uIGNsYXNzZXNcbkBpbXBvcnQgJ3RleHQtZGVjb3JhdGlvbic7XG5cbi8vIEZvbnQgU3R5bGluZ1xuQGltcG9ydCAnZm9udC1zdHlsaW5nJztcblxuLy8gTGlzdCBTdHlsZSB0eXBlXG5AaW1wb3J0ICdsaXN0LXN0eWxlLXR5cGUnO1xuXG4vLyBSb3VuZGVkIFV0aWxpdHlcbkBpbXBvcnQgJ3JvdW5kZWQnO1xuXG4vLyBCb3JkZXJlZCBVdGlsaXR5XG5AaW1wb3J0ICdib3JkZXJlZCc7XG5cbi8vIFNoYWRvdyBVdGlsaXR5XG5AaW1wb3J0ICdzaGFkb3cnO1xuXG4vLyBBcnJvdyBVdGlsaXR5XG5AaW1wb3J0ICdhcnJvdyc7XG5cbi8vIFNlcGFyYXRvciBVdGlsaXR5XG5AaW1wb3J0ICdzZXBhcmF0b3InO1xuXG4vLyBPdmVyZmxvdyBoZWxwZXIgY2xhc3Nlc1xuQGltcG9ydCAnb3ZlcmZsb3cnO1xuXG4vLyBEaXNwbGF5IGNsYXNzZXNcbkBpbXBvcnQgJ2Rpc3BsYXknO1xuXG4vLyBQb3NpdGlvbiBIZWxwZXJzXG5AaW1wb3J0ICdwb3NpdGlvbic7XG5cbi8vIEJvcmRlciBib3hcbkBpbXBvcnQgJ2JvcmRlci1ib3gnO1xuXG4vLyBCb3JkZXIgbm9uZSBVdGlsdHlcbkBpbXBvcnQgJ2JvcmRlci1ub25lJztcblxuLy8gU2l6aW5nIFV0aWxpdGllc1xuQGltcG9ydCAnc2l6aW5nJztcblxuLy8gU3BhY2luZyBVdGlsaXRpZXNcbkBpbXBvcnQgJ3NwYWNpbmcnO1xuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtY2xhc3NlcyB7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXRleHQtdXRpbGl0aWVzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWZvbnQtc3R5bGluZztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtbGlzdC1zdHlsZS10eXBlO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1yb3VuZGVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXJlZDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2hhZG93O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1hcnJvdztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtc2VwYXJhdG9yO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1vdmVyZmxvdztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtZGlzcGxheTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1wcm90b3R5cGUtcG9zaXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ib3g7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ub25lO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1zaXppbmc7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tcHJvdG90eXBlLXNwYWNpbmc7XG59XG4iLCIvLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBmaXJzdCB0byBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBGaXJzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBmaXJzdCgkbnVtKSB7XG4gIEBpZiAkbnVtID09IDEge1xuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAmOm50aC1jaGlsZCgtbiArICN7JG51bX0pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gU2VsZWN0IHRoZSBmaXJzdCBleGFjdCBjaGlsZFxuQG1peGluIGZpcnN0LWNoaWxkIHtcbiAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBsYXN0IHRvIGAkbnVtYC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIExhc3QgYG5gIG51bWJlcnMgb2YgdG90YWwgY2hpbGRyZW4gXG5AbWl4aW4gbGFzdCgkbnVtKSB7XG4gICY6bnRoLWxhc3QtY2hpbGQoLW4gKyAjeyRudW19KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCB0aGUgbGFzdCBleGFjdCBjaGlsZFxuQG1peGluIGxhc3QtY2hpbGQge1xuICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBjaGlsZHJlbiBldmVyeSBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBFdmVyeSBgbmAgbnVtYmVyIG9mIGFsbCBjaGlsZHJlblxuQG1peGluIGV2ZXJ5KCRudW0pIHtcbiAgJjpudGgtY2hpbGQoI3skbnVtfW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IG9ubHkgdGhlIGZpcnN0IGFuZCBsYXN0IGNoaWxkLlxuQG1peGluIGZpcnN0LWxhc3Qge1xuICAmOmZpcnN0LWNoaWxkLFxuICAmOmxhc3QtY2hpbGQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGFmdGVyIHRoZSBmaXJzdCB0byBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBBZnRlciBGaXJzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBhZnRlci1maXJzdCgkbnVtKSB7XG4gICY6bnRoLWNoaWxkKG4gKyAjeyRudW0gKyAxfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJlZm9yZSBgJG51bWAgZnJvbSB0aGUgbGFzdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEZyb20gTGFzdCBgbmAgbnVtYmVycyBvZiB0b3RhbCBjaGlsZHJlbiBcbkBtaXhpbiBmcm9tLWxhc3QoJG51bSkge1xuICAmOm50aC1sYXN0LWNoaWxkKCN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IHRoZSBgJG51bWAgY2hpbGQgZnJvbSB0aGUgZmlyc3QgYW5kIHRoZSBgJG51bWAgY2hpbGQgZnJvbSB0aGUgbGFzdC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIGBuYCBudW1iZXIgY2FsbGVkIGZyb20gZmlyc3QgYW5kIGxhc3QgXG5AbWl4aW4gZnJvbS1maXJzdC1sYXN0KCRudW0pIHtcbiAgJjpudGgtY2hpbGQoI3skbnVtfSksXG4gICY6bnRoLWxhc3QtY2hpbGQoI3skbnVtfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGNoaWxkcmVuIGJ1dCBgJG51bWAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gYWxsIG90aGVyIGNoaWxkcmVuIFxuQG1peGluIGFsbC1idXQoJG51bSkge1xuICAmOm5vdCg6bnRoLWNoaWxkKCN7JG51bX0pKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgY2hpbGRyZW4gYmV0d2VlbiB0aGUgYCRudW1gIGZpcnN0IGFuZCB0aGUgYCRudW1gIGxhc3QuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRudW1bXSBgbmAgbnVtYmVyIGV4Y2x1ZGVkIGZyb20gZmlyc3QgYW5kIGxhc3QgZnJvbSBhbGwgb3RoZXIgY2hpbGRyZW5cbkBtaXhpbiBhbGwtYnV0LWZpcnN0LWxhc3QoJG51bSkge1xuICAmOm50aC1jaGlsZChuICsgI3skbnVtfSk6bnRoLWxhc3QtY2hpbGQobiArICN7JG51bX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gV2lsbCBvbmx5IHNlbGVjdCB0aGUgY2hpbGQgaWYgaXQncyB1bmlxdWUuIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGVyZSBhcmUgYXQgbGVhc3QgMiBjaGlsZHJlbiwgdGhlIHN0eWxlIHdpbGwgbm90IGJlIGFwcGxpZWQuXG5AbWl4aW4gdW5pcXVlIHtcbiAgJjpvbmx5LWNoaWxkIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gV2lsbCBvbmx5IHNlbGVjdCBjaGlsZHJlbiBpZiB0aGV5IGFyZSBub3QgdW5pcXVlLiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDIgY2hpbGRyZW4sIHRoZSBzdHlsZSB3aWxsIGJlIGFwcGxpZWQuXG5AbWl4aW4gbm90LXVuaXF1ZSgpIHtcbiAgJjpub3QoOm9ubHktY2hpbGQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIGJldHdlZW4oJGZpcnN0LCAkbGFzdCkge1xuICAmOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIGV2ZW4gY2hpbGRyZW4uXG5AbWl4aW4gZXZlbiB7XG4gICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBldmVuIGNoaWxkcmVuIGJldHdlZW4gYCRmaXJzdGAgYW5kIGAkbGFzdGAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRmaXJzdFtdIEZpcnN0IGBudGhgIG51bWJlclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG50aGAgbnVtYmVyXG5AbWl4aW4gZXZlbi1iZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQoZXZlbik6bnRoLWNoaWxkKG4gKyAjeyRmaXJzdH0pOm50aC1jaGlsZCgtbiArICN7JGxhc3R9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vIFNlbGVjdCBhbGwgb2RkIGNoaWxkcmVuLlxuQG1peGluIG9kZCB7XG4gICY6bnRoLWNoaWxkKG9kZCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLyBTZWxlY3QgYWxsIG9kZCBjaGlsZHJlbiBiZXR3ZWVuIGAkZmlyc3RgIGFuZCBgJGxhc3RgLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZmlyc3RbXSBGaXJzdCBgbnRoYCBudW1iZXJcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxhc3RbXSBMYXN0IGBudGhgIG51bWJlclxuQG1peGluIG9kZC1iZXR3ZWVuKCRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQob2RkKTpudGgtY2hpbGQobiArICN7JGZpcnN0fSk6bnRoLWNoaWxkKC1uICsgI3skbGFzdH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8gU2VsZWN0IGFsbCBgJG51bWAgY2hpbGRyZW4gYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bVtdIEV2ZXJ5IGBuYCBudW1iZXIgYmV0d2VlbiBgJGZpcnN0YCBhbmQgYCRsYXN0YC5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGZpcnN0W10gRmlyc3QgYG5gIG51bWJlclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbGFzdFtdIExhc3QgYG5gIG51bWJlclxuQG1peGluIG51bWJlci1iZXR3ZWVuKCRudW0sICRmaXJzdCwgJGxhc3QpIHtcbiAgJjpudGgtY2hpbGQoI3skbnVtfW4pOm50aC1jaGlsZChuICsgI3skZmlyc3R9KTpudGgtY2hpbGQoLW4gKyAjeyRsYXN0fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWJveFxuLy8vL1xuXG4vLy8gQm94IE1peGluOiBFYXNpbHkgY3JlYXRlIGEgc3F1YXJlLCByZWN0YW5nbGUgb3IgYSBjaXJjbGVcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoW10gV2lkdGggb2YgdGhlIGJveFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0WyR3aWR0aF0gSGVpZ2h0IG9mIHRoZSBib3gsIGRlZmF1bHRzIHRvIGAkd2lkdGhgIHRvIGVhc2lseSBtYWtlIGEgc3F1YXJlXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkY2lyY2xlW2ZhbHNlXSBNYWtlcyB0aGUgYm94IGEgY2lyY2xlLCBieSBkZWZhdWx0IGBmYWxzZWAuXG5AbWl4aW4gYm94KFxuICAkd2lkdGgsIFxuICAkaGVpZ2h0OiAkd2lkdGgsIFxuICAkY2lyY2xlOiBmYWxzZVxuKSB7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgQGlmICRjaXJjbGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXJvdGF0ZVxuLy8vL1xuXG4vLy8gUm90YXRlIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGUoJGRlZykge1xuXHR0cmFuc2Zvcm06cm90YXRlKCRkZWcgKyBkZWcpO1xufVxuXG4vLy8gUm90YXRlWCBNaXhpbjogUm90YXRlIGFuIGVsZW1lbnQgdG8gYSBjZXJ0YWluIGRlZyBvbiBYLUF4aXNcbi8vLyBAcGFyYW0ge051bWJlcn0gJGRlZ1tdIERlZ3JlZSBvZiByb3RhdGlvblxuQG1peGluIHJvdGF0ZVgoJGRlZykge1xuXHR0cmFuc2Zvcm06cm90YXRlWCgkZGVnICsgZGVnKTtcbn1cblxuLy8vIFJvdGF0ZVkgTWl4aW46IFJvdGF0ZSBhbiBlbGVtZW50IHRvIGEgY2VydGFpbiBkZWcgb24gWS1BeGlzXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRkZWdbXSBEZWdyZWUgb2Ygcm90YXRpb25cbkBtaXhpbiByb3RhdGVZKCRkZWcpIHtcblx0dHJhbnNmb3JtOnJvdGF0ZVkoJGRlZyArIGRlZyk7XG59XG5cbi8vLyBSb3RhdGVaIE1peGluOiBSb3RhdGUgYW4gZWxlbWVudCB0byBhIGNlcnRhaW4gZGVnIG9uIFotQXhpc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkZGVnW10gRGVncmVlIG9mIHJvdGF0aW9uXG5AbWl4aW4gcm90YXRlWigkZGVnKSB7XG5cdHRyYW5zZm9ybTpyb3RhdGVaKCRkZWcgKyBkZWcpO1xufSIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtdGV4dC11dGlsaXRpZXNcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgdXRpbGl0aWVzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCBWYWx1ZSBmb3IgYHRleHQtb3ZlcmZsb3dgIHZhcmlhYmxlXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFkZWZhdWx0O1xuXG4vLy8gSW1hZ2UgUmVwbGFjZW1lbnQgdXRpbGl0eS4gYHRleHQtaGlkZWBcbkBtaXhpbiB0ZXh0LWhpZGUge1xuICBmb250OiAwLzAgYSAhaW1wb3J0YW50O1xuICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBUcnVuY2F0aW5nIHRoZSB0ZXh0LCBlbGlwc2lzIGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbJHByb3RvdHlwZS10ZXh0LW92ZXJmbG93XSBUZXh0IFRydW5jYXRlXG5AbWl4aW4gdGV4dC10cnVuY2F0ZShcbiAgJG92ZXJmbG93OiAkcHJvdG90eXBlLXRleHQtb3ZlcmZsb3dcbikge1xuICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICB0ZXh0LW92ZXJmbG93OiAkb3ZlcmZsb3c7IFxuICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBObyB3cmFwcGluZyBvZiB0aGUgdGV4dC4gYHRleHQtbm93cmFwYFxuQG1peGluIHRleHQtbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xufVxuXG4vLy8gV3JhcHBpbmcgb2YgdGhlIHRleHQuIGB0ZXh0LXdyYXBgXG5AbWl4aW4gdGV4dC13cmFwIHtcbiAgd29yZC13cmFwOiBicmVhay13b3JkICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LXV0aWxpdGllcyB7XG4gIC50ZXh0LWhpZGUge1xuICAgIEBpbmNsdWRlIHRleHQtaGlkZTtcbiAgfVxuXG4gIC50ZXh0LXRydW5jYXRlIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXRydW5jYXRlO1xuICB9XG5cbiAgLnRleHQtbm93cmFwIHtcbiAgICBAaW5jbHVkZSB0ZXh0LW5vd3JhcDtcbiAgfVxuXG4gIC50ZXh0LXdyYXAge1xuICAgIEBpbmNsdWRlIHRleHQtd3JhcDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS11dGlsaXRpZXMtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LWhpZGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1oaWRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LXRydW5jYXRlIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LXRleHQtbm93cmFwIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtbm93cmFwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC4jeyRzaXplfS10ZXh0LXdyYXAge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC13cmFwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LXRyYW5zZm9ybWF0aW9uXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciB0ZXh0IHRyYW5zZm9ybWF0aW9uIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXRyYW5zZm9ybWF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtdHJhbnNmb3JtYXRpb25gIGNsYXNzZXNcbi8vLyBAdHlwZSBNYXBcbiRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjogKFxuICBsb3dlcmNhc2UsXG4gIHVwcGVyY2FzZSxcbiAgY2FwaXRhbGl6ZVxuKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgVHJhbnNmb3JtYXRpb24sIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbmBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHRyYW5zZm9ybWF0aW9uIFtdIFRleHQgVHJhbnNmb3JtYXRpb25cbkBtaXhpbiB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pIHtcbiAgdGV4dC10cmFuc2Zvcm06ICR0cmFuc2Zvcm1hdGlvbiAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbiB7XG4gIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICAgIC50ZXh0LSN7JHRyYW5zZm9ybWF0aW9ufSB7XG4gICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS10cmFuc2Zvcm1hdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gIFx0QGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICR0cmFuc2Zvcm1hdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtdHJhbnNmb3JtYXRpb24ge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tdGV4dC0jeyR0cmFuc2Zvcm1hdGlvbn0ge1xuICBcdFx0XHQgICAgICBAaW5jbHVkZSB0ZXh0LXRyYW5zZm9ybSgkdHJhbnNmb3JtYXRpb24pO1xuICBcdFx0XHQgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25cbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHRleHQgZGVjb3JhdGlvbiBjbGFzc2VzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1kZWNvcmF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHRleHQtZGVjb3JhdGlvbmAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb246IChcbiAgb3ZlcmxpbmUsXG4gIHVuZGVybGluZSxcbiAgbGluZS10aHJvdWdoLFxuKSAhZGVmYXVsdDtcblxuLy8vIFRleHQgRGVjb3JhdGlvbiwgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS10ZXh0LWRlY29yYXRpb25gXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWNvcmF0aW9uIFtdIFRleHQgRGVjb3JhdGlvblxuQG1peGluIHRleHQtZGVjb3JhdGlvbigkZGVjb3JhdGlvbikge1xuICB0ZXh0LWRlY29yYXRpb246ICRkZWNvcmF0aW9uICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS10ZXh0LWRlY29yYXRpb24ge1xuICBAZWFjaCAkZGVjb3JhdGlvbiBpbiAkcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbiB7XG4gICAgLnRleHQtI3skZGVjb3JhdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgdGV4dC1kZWNvcmF0aW9uKCRkZWNvcmF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRkZWNvcmF0aW9uIGluICRwcm90b3R5cGUtdGV4dC1kZWNvcmF0aW9uIHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LXRleHQtI3skZGVjb3JhdGlvbn0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LWRlY29yYXRpb24oJGRlY29yYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1mb250LXN0eWxpbmdcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGZvbnQgc3R5bGluZyB0eXBlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtZm9udC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBMZXR0ZXIgc3BhY2luZyBmb3IgYC5mb250LXdpZGVgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDQpICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3ZWlnaHQgZm9yIGAuZm9udC1ub3JtYWxgLCBkZWZhdWx0ZWQgdG8gYGdsb2JhbC13ZWlnaHQtbm9ybWFsYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1mb250LW5vcm1hbDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB3ZWlnaHQgZm9yIGAuZm9udC1ib2xkYCwgZGVmYXVsdGVkIHRvIGBnbG9iYWwtd2VpZ2h0LWJvbGRgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWZvbnQtYm9sZDogJGdsb2JhbC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcblxuLy8vIEZvbnQgd2lkZSBsZXR0ZXIgc3BhY2luZyFcbi8vLyBAcGFyYW0ge051bWJlcn0gJGxldHRlci1zcGFjaW5nIFskcHJvdG90eXBlLXdpZGUtbGV0dGVyLXNwYWNpbmddIFdpZGUgbGV0dGVyIHNwYWNpbmcgZm9yIHRoZSBmb250XG5AbWl4aW4gZm9udC13aWRlKFxuICAkbGV0dGVyLXNwYWNpbmc6ICRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZ1xuKSB7XG4gIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmc7XG59XG5cbi8vLyBGb250IFdlaWdodCBOb3JtYWwsIGRlZmF1bHQgdmFsdWUgY29taW5nIHRocm91Z2ggYGdsb2JhbC13ZWlnaHQtbm9ybWFsYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFskcHJvdG90eXBlLWZvbnQtbm9ybWFsXSBXZWlnaHQgb2YgdGhlIGZvbnQgKG5vcm1hbClcbkBtaXhpbiBmb250LW5vcm1hbChcbiAgJHdlaWdodDogJHByb3RvdHlwZS1mb250LW5vcm1hbFxuKSB7XG4gIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xufVxuXG4vLy8gRm9udCBXZWlnaHQgQm9sZCwgZGVmYXVsdCB2YWx1ZSBjb21pbmcgdGhyb3VnaCBgZ2xvYmFsLXdlaWdodC1ib2xkYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2VpZ2h0IFskcHJvdG90eXBlLWZvbnQtYm9sZF0gV2VpZ2h0IG9mIHRoZSBmb250IChib2xkKVxuQG1peGluIGZvbnQtYm9sZChcbiAgJHdlaWdodDogJHByb3RvdHlwZS1mb250LWJvbGRcbikge1xuICBmb250LXdlaWdodDogJHdlaWdodDtcbn1cblxuLy8vIEZvbnQgU3R5bGUgSXRhbGljXG5AbWl4aW4gZm9udC1pdGFsaWMge1xuICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWZvbnQtc3R5bGluZyB7XG4gIC5mb250LXdpZGV7XG4gICAgQGluY2x1ZGUgZm9udC13aWRlO1xuICB9XG5cbiAgLmZvbnQtbm9ybWFsIHtcbiAgICBAaW5jbHVkZSBmb250LW5vcm1hbDtcbiAgfVxuXG4gIC5mb250LWJvbGQge1xuICAgIEBpbmNsdWRlIGZvbnQtYm9sZDtcbiAgfVxuXG4gIC5mb250LWl0YWxpYyB7XG4gICAgQGluY2x1ZGUgZm9udC1pdGFsaWM7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtZm9udC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtd2lkZXtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtd2lkZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tZm9udC1ub3JtYWwge1xuICAgICAgICAgICAgQGluY2x1ZGUgZm9udC1ub3JtYWw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtYm9sZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmb250LWJvbGQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLiN7JHNpemV9LWZvbnQtaXRhbGljIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtaXRhbGljO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1saXN0LXN0eWxlLXR5cGVcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGxpc3Qgc3R5bGluZyB0eXBlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBzdHlsZS10eXBlLXVub3JkZXJlZGAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zdHlsZS10eXBlLXVub3JkZXJlZDogKFxuICBkaXNjLFxuICBjaXJjbGUsXG4gIHNxdWFyZVxuKSAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHN0eWxlLXR5cGUtb3JkZXJlZGAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcbiAgZGVjaW1hbCxcbiAgbG93ZXItYWxwaGEsXG4gIGxvd2VyLWxhdGluLFxuICBsb3dlci1yb21hbixcbiAgdXBwZXItYWxwaGEsXG4gIHVwcGVyLWxhdGluLFxuICB1cHBlci1yb21hblxuKSAhZGVmYXVsdDtcblxuXG4vLy8gU3R5bGUgdHlwZSBmb3IgdW5vcmRlcmVkIExpc3RzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkYFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3R5bGUtdHlwZS11bm9yZGVyZWQgW10gU3R5bGUgdHlwZSBmb3IgdW5vcmRlcmVkIExpc3RzXG5AbWl4aW4gc3R5bGUtdHlwZS11bm9yZGVyZWQoJHN0eWxlLXR5cGUtdW5vcmRlcmVkKSB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogJHN0eWxlLXR5cGUtdW5vcmRlcmVkICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBTdHlsZSB0eXBlIGZvciBvcmRlcmVkIExpc3RzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZGBcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN0eWxlLXR5cGUtb3JkZXJlZCBbXSBTdHlsZSB0eXBlIGZvciBvcmRlcmVkIExpc3RzXG5AbWl4aW4gc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpIHtcbiAgbGlzdC1zdHlsZS10eXBlOiAkc3R5bGUtdHlwZS1vcmRlcmVkICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBsaXN0LXVub3JkZXJlZCB7XG4gIEBlYWNoICRzdHlsZS10eXBlLXVub3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkIHtcbiAgICB1bC5saXN0LSN7JHN0eWxlLXR5cGUtdW5vcmRlcmVkfSB7XG4gICAgICBAaW5jbHVkZSBzdHlsZS10eXBlLXVub3JkZXJlZCgkc3R5bGUtdHlwZS11bm9yZGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJHN0eWxlLXR5cGUtdW5vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS11bm9yZGVyZWQge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICB1bC4jeyRzaXplfS1saXN0LSN7JHN0eWxlLXR5cGUtdW5vcmRlcmVkfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtdW5vcmRlcmVkKCRzdHlsZS10eXBlLXVub3JkZXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsaXN0LW9yZGVyZWQge1xuICBAZWFjaCAkc3R5bGUtdHlwZS1vcmRlcmVkIGluICRwcm90b3R5cGUtc3R5bGUtdHlwZS1vcmRlcmVkIHtcbiAgICBvbC5saXN0LSN7JHN0eWxlLXR5cGUtb3JkZXJlZH0ge1xuICAgICAgQGluY2x1ZGUgc3R5bGUtdHlwZS1vcmRlcmVkKCRzdHlsZS10eXBlLW9yZGVyZWQpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1saXN0LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGVhY2ggJHN0eWxlLXR5cGUtb3JkZXJlZCBpbiAkcHJvdG90eXBlLXN0eWxlLXR5cGUtb3JkZXJlZCB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIG9sLiN7JHNpemV9LWxpc3QtI3skc3R5bGUtdHlwZS1vcmRlcmVkfSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIHN0eWxlLXR5cGUtb3JkZXJlZCgkc3R5bGUtdHlwZS1vcmRlcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWxpc3Qtc3R5bGUtdHlwZSB7XG4gIEBpbmNsdWRlIGxpc3QtdW5vcmRlcmVkO1xuICBAaW5jbHVkZSBsaXN0LW9yZGVyZWQ7XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXJvdW5kZWRcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHJvdW5kZWQgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gRGVmYXVsdCB2YWx1ZSBmb3IgYHByb3RvdHlwZS1ib3JkZXItcmFkaXVzYFxuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygzKSAhZGVmYXVsdDtcblxuLy8vIFJvdW5kZWQgdXRpbGl0eSAoYWxsIGNvcm5lcnMpOiBBZGRzIHJhZGl1cyBjb3JuZXJzIChhbGwgY29ybmVycykgdG8gYW4gZWxlbWVudCBieSBkZWZhdWx0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaXVzIFskcHJvdG90eXBlLWJvcmRlci1yYWRpdXNdIEJvcmRlciByYWRpdXMgKGFsbCBjb3JuZXJzKVxuQG1peGluIGJvcmRlci1yYWRpdXMoXG4gICRyYWRpdXM6ICRwcm90b3R5cGUtYm9yZGVyLXJhZGl1c1xuKSB7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG59XG5cbi8vLyBSb3VuZGVkIHNxdWFyZSB1dGlsaXR5IG9yIHJlY3RhbmdsZSB1dGlsaXR5IChhbGwgY29ybmVycyk6IFJvdW5kcyBhbGwgY29ybmVycyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQgdG8gbWFrZSBhIHBpbGwgc2hhcGUuXG5AbWl4aW4gYm9yZGVyLXJvdW5kZWQge1xuICBib3JkZXItcmFkaXVzOiA1MDAwcHggIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXJvdW5kZWQge1xuICAucm91bmRlZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJvdW5kZWQ7XG5cbiAgICAuc3dpdGNoLXBhZGRsZSB7XG4gICAgICBAaW5jbHVkZSBib3JkZXItcm91bmRlZDtcbiAgICAgICY6YWZ0ZXIge1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7IC8vIEZvciBzd2l0Y2hlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5yYWRpdXMge1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtcm91bmRlZC1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LXJvdW5kZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJvdW5kZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIC4jeyRzaXplfS1yYWRpdXMge1xuICAgICAgICAgICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyZWRcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGJvcmRlcmVkIHV0aWxpdHkuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1ib3JkZXJlZC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJvcmRlci13aWR0aGBcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtYm9yZGVyLXdpZHRoOiByZW0tY2FsYygxKSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLXR5cGVgXG4vLy8gQHR5cGUgU3RyaW5nXG4kcHJvdG90eXBlLWJvcmRlci10eXBlOiBzb2xpZCAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgdmFsdWUgZm9yIGBwcm90b3R5cGUtYm9yZGVyLWNvbG9yYCBkZWZhdWx0ZWQgdG8gYG1lZGl1bS1ncmF5YFxuLy8vIEB0eXBlIENvbG9yXG4kcHJvdG90eXBlLWJvcmRlci1jb2xvcjogJG1lZGl1bS1ncmF5ICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyZWQgVXRpbGl0eTogQWRkcyBhIGxpZ2h0IGJvcmRlciB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCBbJHByb3RvdHlwZS1ib3JkZXItd2lkdGhdIFdpZHRoIG9mIHRoZSBib3JkZXJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgWyRwcm90b3R5cGUtYm9yZGVyLXR5cGVdIFR5cGUgb2YgdGhlIGJvcmRlclxuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciBbJHByb3RvdHlwZS1ib3JkZXItY29sb3JdIENvbG9yIG9mIHRoZSBib3JkZXJcbkBtaXhpbiBib3JkZXJlZChcbiAgJHdpZHRoOiAkcHJvdG90eXBlLWJvcmRlci13aWR0aCxcbiAgJHR5cGU6ICRwcm90b3R5cGUtYm9yZGVyLXR5cGUsXG4gICRjb2xvcjogJHByb3RvdHlwZS1ib3JkZXItY29sb3Jcbikge1xuICBib3JkZXI6ICR3aWR0aCAkdHlwZSAkY29sb3I7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1ib3JkZXJlZCB7XG4gIC5ib3JkZXJlZCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyZWQ7XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtYm9yZGVyZWQtYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1ib3JkZXJlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXJlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc2hhZG93XG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBzaGFkb3cgdXRpbGl0eS5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNoYWRvdy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IHZhbHVlIGZvciBgcHJvdG90eXBlLWJveC1zaGFkb3dgXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLWJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwwLDAsLjE2KSxcbiAgICAgICAgICAgICAgICAgICAgICAgMCAycHggMTBweCAwIHJnYmEoMCwwLDAsLjEyKSAhZGVmYXVsdDtcblxuLy8vIFNoYWRvdyBVdGlsaXR5OiBBZGRzIGEgbGlnaHQgYm94IHNoYWRvdyB0byBhbiBlbGVtZW50IGJ5IGRlZmF1bHQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRzaGFkb3cgWyRwcm90b3R5cGUtYm94LXNoYWRvd10gQm94IFNoYWRvdyBvZiBhIGNvbXBvbmVudFxuQG1peGluIHNoYWRvdyhcbiAgJHNoYWRvdzogJHByb3RvdHlwZS1ib3gtc2hhZG93XG4pIHtcbiAgYm94LXNoYWRvdzogJHNoYWRvdztcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLXNoYWRvdyB7XG4gIC5zaGFkb3cge1xuICAgIEBpbmNsdWRlIHNoYWRvdztcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIC4jeyRzaXplfS1zaGFkb3cge1xuICAgICAgICAgICAgQGluY2x1ZGUgc2hhZG93O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1hcnJvd1xuLy8vL1xuXG4vLy8gTWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBgYXJyb3dgIGRpcmVjdGlvblxuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb25zOiAoXG4gIGRvd24sXG4gIHVwLFxuICByaWdodCxcbiAgbGVmdFxuKSAhZGVmYXVsdDtcblxuLy8vIFdpZHRoIG9mIHRoZSBBcnJvdywgYDAuNDM3NXJlbWAgYnkgZGVmYXVsdC5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtYXJyb3ctc2l6ZTogMC40Mzc1cmVtO1xuXG4vLy8gQ29sb3Igb2YgdGhlIEFycm93LCBgJGJsYWNrYCBieSBkZWZhdWx0LlxuLy8vIEB0eXBlIENvbG9yXG4kcHJvdG90eXBlLWFycm93LWNvbG9yOiAkYmxhY2s7XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1hcnJvdyB7XG4gIEBlYWNoICRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uIGluICRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9ucyB7XG4gICAgLmFycm93LSN7JHByb3RvdHlwZS1hcnJvdy1kaXJlY3Rpb259IHtcbiAgICAgIEBpbmNsdWRlIGNzcy10cmlhbmdsZShcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1zaXplLCBcbiAgICAgICAgJHByb3RvdHlwZS1hcnJvdy1jb2xvciwgXG4gICAgICAgICRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zZXBhcmF0b3Jcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLXNlcGFyYXRvci1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBEZWZhdWx0IGFsaWdubWVudCBvZiBhIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBTdHJpbmdcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduOiBjZW50ZXIgIWRlZmF1bHQ7XG5cbi8vLyBIZWlnaHQgb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQ6IHJlbS1jYWxjKDIpICFkZWZhdWx0O1xuXG4vLy8gV2lkdGggb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgTnVtYmVyXG4kcHJvdG90eXBlLXNlcGFyYXRvci13aWR0aDogM3JlbSAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgY29sb3Igb2YgYSBzZXBhcmF0b3IuXG4vLy8gQHR5cGUgQ29sb3JcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yICFkZWZhdWx0O1xuXG4vLy8gVG9wIE1hcmdpbiBvZiBhIHNlcGFyYXRvci5cbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3A6ICRnbG9iYWwtbWFyZ2luICFkZWZhdWx0O1xuXG4vLy8gVGl0bGUgc2VwYXJhdG9yIFV0aWxpdHksIG1vc3RseSB1c2VkIHRvIHN0eWxlIHRoZSBtYWluIGhlYWRpbmcgb2YgYSBzZWN0aW9uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRhbGlnbiBbJHByb3RvdHlwZS1zZXBhcmF0b3ItYWxpZ25dIC0gc2VwYXJhdG9yIEFsaWdubWVudFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IFskcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHRdIC0gV2lkdGhcbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskcHJvdG90eXBlLXNlcGFyYXRvci13aWR0aF0gLSBIZWlnaHRcbi8vLyBAcGFyYW0ge0NvbG9yfSAkYmFja2dyb3VuZCBbJHByb3RvdHlwZS1zZXBhcmF0b3ItYmFja2dyb3VuZF0gLSBCYWNrZ3JvdW5kXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR0b3AgWyRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3BdIC0gTWFyZ2luIFRvcFxuQG1peGluIHNlcGFyYXRvciAoXG4gICRhbGlnbjogJHByb3RvdHlwZS1zZXBhcmF0b3ItYWxpZ24sXG4gICRoZWlnaHQ6ICRwcm90b3R5cGUtc2VwYXJhdG9yLWhlaWdodCxcbiAgJHdpZHRoOiAkcHJvdG90eXBlLXNlcGFyYXRvci13aWR0aCxcbiAgJGJhY2tncm91bmQ6ICRwcm90b3R5cGUtc2VwYXJhdG9yLWJhY2tncm91bmQsXG4gICR0b3A6ICRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3Bcbikge1xuICB0ZXh0LWFsaWduOiAkYWxpZ24gIWltcG9ydGFudDtcblx0QGluY2x1ZGUgY2xlYXJmaXg7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uKHJlbGF0aXZlKTtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGJvcmRlci1ib3R0b206ICRoZWlnaHQgc29saWQgJGJhY2tncm91bmQ7XG4gICAgbWFyZ2luOiAkdG9wIGF1dG8gMDtcblxuICAgIEBpZiAkYWxpZ24gPT0gbGVmdCB7XG4gICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIEBpZiAkYWxpZ24gPT0gcmlnaHQge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1zZXBhcmF0b3Ige1xuXHQuc2VwYXJhdG9yLWNlbnRlciB7XG5cdFx0QGluY2x1ZGUgc2VwYXJhdG9yKGNlbnRlcik7XG5cdH1cblxuICAuc2VwYXJhdG9yLWxlZnQge1xuICAgIEBpbmNsdWRlIHNlcGFyYXRvcihsZWZ0KTtcbiAgfVxuXG4gIC5zZXBhcmF0b3ItcmlnaHQge1xuICAgIEBpbmNsdWRlIHNlcGFyYXRvcihyaWdodCk7XG4gIH1cblxuXHRAaWYgKCRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tc2VwYXJhdG9yLWNlbnRlciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IoY2VudGVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1sZWZ0IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNlcGFyYXRvcihsZWZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLiN7JHNpemV9LXNlcGFyYXRvci1yaWdodCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBzZXBhcmF0b3IocmlnaHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1vdmVyZmxvd1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igb3ZlcmZsb3cgaGVscGVyIGNsYXNzZXNcbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYG92ZXJmbG93YCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLW92ZXJmbG93OiAoXG4gIHZpc2libGUsXG4gIGhpZGRlbixcbiAgc2Nyb2xsXG4pICFkZWZhdWx0O1xuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1vdmVyZmxvd2Bcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG92ZXJmbG93IFtdIE92ZXJmbG93IGNsYXNzZXNcbkBtaXhpbiBvdmVyZmxvdygkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3c6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG4vLy8gT3ZlcmZsb3cgY2xhc3NlcyBvbiBob3Jpem9udGFsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzIChob3Jpem9udGFsIGF4aXMpXG5AbWl4aW4gb3ZlcmZsb3cteCgkb3ZlcmZsb3cpIHtcbiAgb3ZlcmZsb3cteDogJG92ZXJmbG93ICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBPdmVyZmxvdyBjbGFzc2VzIG9uIHZlcnRpY2FsIGF4aXMsIGJ5IGRlZmF1bHQgY29taW5nIHRocm91Z2ggYSBtYXAgYCRwcm90b3R5cGUtb3ZlcmZsb3dgXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvdmVyZmxvdyBbXSBPdmVyZmxvdyBjbGFzc2VzICh2ZXJ0aWNhbCBheGlzKVxuQG1peGluIG92ZXJmbG93LXkoJG92ZXJmbG93KSB7XG4gIG92ZXJmbG93LXk6ICRvdmVyZmxvdyAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtb3ZlcmZsb3cge1xuICBAZWFjaCAkb3ZlcmZsb3cgaW4gJHByb3RvdHlwZS1vdmVyZmxvdyB7XG4gICAgLm92ZXJmbG93LSN7JG92ZXJmbG93fSB7XG4gICAgICBAaW5jbHVkZSBvdmVyZmxvdygkb3ZlcmZsb3cpO1xuICAgIH1cbiAgICAub3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteCgkb3ZlcmZsb3cpO1xuICAgIH1cbiAgICAub3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xuICAgICAgQGluY2x1ZGUgb3ZlcmZsb3cteSgkb3ZlcmZsb3cpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1vdmVyZmxvdy1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRvdmVyZmxvdyBpbiAkcHJvdG90eXBlLW92ZXJmbG93IHtcbiAgICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgICAgLiN7JHNpemV9LW92ZXJmbG93LSN7JG92ZXJmbG93fSB7XG4gICAgICAgICAgICAgIEBpbmNsdWRlIG92ZXJmbG93KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3cteC0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy14KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuI3skc2l6ZX0tb3ZlcmZsb3cteS0jeyRvdmVyZmxvd30ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBvdmVyZmxvdy15KCRvdmVyZmxvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLWRpc3BsYXlcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIGRpc3BsYXkgY2xhc3Nlc1xuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtZGlzcGxheS1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBkaXNwbGF5YCBjbGFzc2VzXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLWRpc3BsYXk6IChcbiAgaW5saW5lLFxuICBpbmxpbmUtYmxvY2ssXG4gIGJsb2NrLFxuICB0YWJsZSxcbiAgdGFibGUtY2VsbFxuKSAhZGVmYXVsdDtcblxuLy8vIERpc3BsYXkgY2xhc3NlcywgYnkgZGVmYXVsdCBjb21pbmcgdGhyb3VnaCBhIG1hcCBgJHByb3RvdHlwZS1kaXNwbGF5YFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSBbXSBEaXNwbGF5IGNsYXNzZXNcbkBtaXhpbiBkaXNwbGF5KCRkaXNwbGF5KSB7XG4gIGRpc3BsYXk6ICRkaXNwbGF5ICFpbXBvcnRhbnQ7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1kaXNwbGF5IHtcbiAgQGVhY2ggJGRpc3BsYXkgaW4gJHByb3RvdHlwZS1kaXNwbGF5IHtcbiAgICAuZGlzcGxheS0jeyRkaXNwbGF5fSB7XG4gICAgICBAaW5jbHVkZSBkaXNwbGF5KCRkaXNwbGF5KTtcbiAgICB9XG4gIH1cblxuICBAaWYgKCRwcm90b3R5cGUtZGlzcGxheS1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBlYWNoICRkaXNwbGF5IGluICRwcm90b3R5cGUtZGlzcGxheSB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfS1kaXNwbGF5LSN7JGRpc3BsYXl9IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheSgkZGlzcGxheSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgcHJvdG90eXBlLXBvc2l0aW9uXG4vLy8vXG5cbi8vLyBSZXNwb25zaXZlIGJyZWFrcG9pbnRzIGZvciBwb3NpdGlvbiBoZWxwZXJzXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBNYXAgY29udGFpbmluZyBhbGwgdGhlIGBwb3NpdGlvbmAgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1wb3NpdGlvbjogKFxuICBzdGF0aWMsXG4gIHJlbGF0aXZlLFxuICBhYnNvbHV0ZSxcbiAgZml4ZWRcbikgIWRlZmF1bHQ7XG5cbi8vLyB6LWluZGV4IGZvciBmaXhlZCBwb3NpdGlvbmluZ1xuLy8vIEB0eXBlIE51bWJlclxuJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4OiA5NzUgIWRlZmF1bHQ7XG5cbi8vLyBQb3NpdGlvbiBjbGFzc2VzLCBieSBkZWZhdWx0IGNvbWluZyB0aHJvdWdoIGEgbWFwIGAkcHJvdG90eXBlLXBvc2l0aW9uYCwgd2hlcmVhcyBhbGwgdGhlIG9mZnNldCB2YWx1ZXMgYXJlIG11bHRpcGxpZWQgYnkgYCRnbG9iYWwtcG9zaXRpb25gIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZXF1YWwgdG8gYDFyZW1gLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcG9zaXRpb24gW10gUG9zaXRpb24gY2xhc3NlcywgRWl0aGVyIGBzdGF0aWNgLCBgcmVsYXRpdmVgLCBgYWJzb2x1dGVgIG9yIGBmaXhlZGBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBUb3Agb2Zmc2V0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBSaWdodCBvZmZzZXRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBCb3R0b20gb2Zmc2V0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIExlZnQgb2Zmc2V0XG5AbWl4aW4gcG9zaXRpb24oXG4gICRwb3NpdGlvbixcbiAgJHRvcDogbnVsbCxcbiAgJHJpZ2h0OiBudWxsLFxuICAkYm90dG9tOiBudWxsLFxuICAkbGVmdDogbnVsbFxuKSB7XG4gIHBvc2l0aW9uOiAkcG9zaXRpb24gIWltcG9ydGFudDtcbiAgQGlmICR0b3AgIT0gbnVsbCB7XG4gICAgdG9wOiAkdG9wICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbnVsbCB7XG4gICAgcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtcG9zaXRpb24gIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcbiAgICBib3R0b206ICRib3R0b20gKiAkZ2xvYmFsLXBvc2l0aW9uICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG51bGwge1xuICAgIGxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1wb3NpdGlvbiAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vLyBQb3NpdGlvbiBGaXhlZCBvbiB0b3AgY29ybmVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkei1pbmRleCBbJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XSB6LWluZGV4IGZvciBgcG9zaXRpb24tZml4ZWQtdG9wYFxuQG1peGluIHBvc2l0aW9uLWZpeGVkLXRvcChcbiAgJHotaW5kZXg6ICRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleFxuKSB7XG4gIEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCAwLCAwLCBudWxsLCAwKTtcbiAgei1pbmRleDogJHotaW5kZXg7XG59XG5cbi8vLyBQb3NpdGlvbiBGaXhlZCBvbiBib3R0b20gY29ybmVyc1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkei1pbmRleCBbJHByb3RvdHlwZS1wb3NpdGlvbi16LWluZGV4XSB6LWluZGV4IGZvciBgcG9zaXRpb24tZml4ZWQtYm90dG9tYFxuQG1peGluIHBvc2l0aW9uLWZpeGVkLWJvdHRvbShcbiAgJHotaW5kZXg6ICRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleFxuKSB7XG4gIEBpbmNsdWRlIHBvc2l0aW9uKGZpeGVkLCBudWxsLCAwLCAwLCAwKTtcbiAgei1pbmRleDogJHotaW5kZXg7XG59XG5cbkBtaXhpbiBmb3VuZGF0aW9uLXByb3RvdHlwZS1wb3NpdGlvbiB7XG4gIC8vIFBvc2l0aW9uOiBTdGF0aWMsIFJlbGF0aXZlLCBGaXhlZCwgQWJzb2x1dGVcbiAgQGVhY2ggJHBvc2l0aW9uIGluICRwcm90b3R5cGUtcG9zaXRpb24ge1xuICAgIC5wb3NpdGlvbi0jeyRwb3NpdGlvbn0ge1xuICAgICAgQGluY2x1ZGUgcG9zaXRpb24oJHBvc2l0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvLyBQb3NpdGlvbjogRml4ZWQgVG9wLCBGaXhlZCBCb3R0b21cbiAgLnBvc2l0aW9uLWZpeGVkLXRvcCB7XG4gICAgQGluY2x1ZGUgcG9zaXRpb24tZml4ZWQtdG9wO1xuICB9XG4gIC5wb3NpdGlvbi1maXhlZC1ib3R0b20ge1xuICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLWJvdHRvbTtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIC8vIFBvc2l0aW9uOiBTdGF0aWMsIFJlbGF0aXZlLCBGaXhlZCwgQWJzb2x1dGVcbiAgICAgICAgQGVhY2ggJHBvc2l0aW9uIGluICRwcm90b3R5cGUtcG9zaXRpb24ge1xuICAgICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgICAuI3skc2l6ZX0tcG9zaXRpb24tI3skcG9zaXRpb259IHtcbiAgICAgICAgICAgICAgQGluY2x1ZGUgcG9zaXRpb24oJHBvc2l0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQb3NpdGlvbjogRml4ZWQgVG9wLCBGaXhlZCBCb3R0b21cbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tcG9zaXRpb24tZml4ZWQtdG9wIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLXRvcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuI3skc2l6ZX0tcG9zaXRpb24tZml4ZWQtYm90dG9tIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uLWZpeGVkLWJvdHRvbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtYm9yZGVyLWJveFxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyIGJveC5cbi8vLyBAdHlwZSBCb29sZWFuXG4kcHJvdG90eXBlLWJvcmRlci1ib3gtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzICFkZWZhdWx0O1xuXG4vLy8gQm9yZGVyIGJveCB1dGlsaXR5XG5AbWl4aW4gYm9yZGVyLWJveCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ib3gge1xuICAuYm9yZGVyLWJveCB7XG4gICAgQGluY2x1ZGUgYm9yZGVyLWJveDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzKSB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICBAZWFjaCAkc2l6ZSBpbiAkYnJlYWtwb2ludC1jbGFzc2VzIHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNpemUpIHtcbiAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAuI3skc2l6ZX0tYm9yZGVyLWJveCB7XG4gICAgICAgICAgICBAaW5jbHVkZSBib3JkZXItYm94O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1ib3JkZXItbm9uZVxuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3IgYm9yZGVyIG5vbmUuXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1ib3JkZXItbm9uZS1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHMgIWRlZmF1bHQ7XG5cbi8vLyBCb3JkZXIgbm9uZSB1dGlsaXR5XG5AbWl4aW4gYm9yZGVyLW5vbmUge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuQG1peGluIGZvdW5kYXRpb24tcHJvdG90eXBlLWJvcmRlci1ub25lIHtcbiAgLmJvcmRlci1ub25lIHtcbiAgICBAaW5jbHVkZSBib3JkZXItbm9uZTtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1ib3JkZXItbm9uZS1icmVha3BvaW50cykge1xuICAgIC8vIExvb3AgdGhyb3VnaCBSZXNwb25zaXZlIEJyZWFrcG9pbnRzXG4gICAgQGVhY2ggJHNpemUgaW4gJGJyZWFrcG9pbnQtY2xhc3NlcyB7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgIEBpZiAkc2l6ZSAhPSAkLXpmLXplcm8tYnJlYWtwb2ludCB7XG4gICAgICAgICAgLiN7JHNpemV9LWJvcmRlci1ub25lIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJvcmRlci1ub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHByb3RvdHlwZS1zaXppbmdcbi8vLy9cblxuLy8vIFJlc3BvbnNpdmUgYnJlYWtwb2ludHMgZm9yIHNwYWNpbmcgY2xhc3NlcyAobWFyZ2luIGFuZCBwYWRkaW5nKVxuLy8vIEB0eXBlIEJvb2xlYW5cbiRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgYHNpemluZ2AgY2xhc3Nlc1xuLy8vIEB0eXBlIE1hcFxuJHByb3RvdHlwZS1zaXppbmc6IChcbiAgd2lkdGgsXG4gIGhlaWdodFxuKSAhZGVmYXVsdDtcblxuLy8vIE1hcCBjb250YWluaW5nIGFsbCB0aGUgc2l6ZXMuXG4vLy8gQHR5cGUgTWFwXG4kcHJvdG90eXBlLXNpemVzOiAoXG4gIDI1OiAyNSUsXG4gIDUwOiA1MCUsXG4gIDc1OiA3NSUsXG4gIDEwMDogMTAwJVxuKSAhZGVmYXVsdDtcblxuLy8vIE1heCBXaWR0aCAxMDAgdXRpbGl0eS5cbkBtaXhpbiBtYXgtd2lkdGgtMTAwIHtcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi8vLyBNYXggSGVpZ2h0IDEwMCB1dGlsaXR5LlxuQG1peGluIG1heC1oZWlnaHQtMTAwIHtcbiAgbWF4LWhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc2l6aW5nIHtcbiAgLy8gRWxlbWVudCBTaXppbmdcbiAgQGVhY2ggJHNpemluZyBpbiAkcHJvdG90eXBlLXNpemluZyB7XG4gICAgQGVhY2ggJGxlbmd0aCwgJHBlcmNlbnRhZ2UgaW4gJHByb3RvdHlwZS1zaXplcyB7XG4gICAgICAuI3skc2l6aW5nfS0jeyRsZW5ndGh9IHtcbiAgICAgICAgI3skc2l6aW5nfTogJHBlcmNlbnRhZ2UgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNYXggd2lkdGggJiBoZWlnaHRcbiAgLm1heC13aWR0aC0xMDAge1xuICAgIEBpbmNsdWRlIG1heC13aWR0aC0xMDA7XG4gIH1cbiAgLm1heC1oZWlnaHQtMTAwIHtcbiAgICBAaW5jbHVkZSBtYXgtaGVpZ2h0LTEwMDtcbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1zaXppbmctYnJlYWtwb2ludHMpIHtcbiAgICAvLyBMb29wIHRocm91Z2ggUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc2l6ZSkge1xuICAgICAgICBAaWYgJHNpemUgIT0gJC16Zi16ZXJvLWJyZWFrcG9pbnQge1xuICAgICAgICAgIEBlYWNoICRzaXppbmcgaW4gJHByb3RvdHlwZS1zaXppbmcge1xuICAgICAgICAgICAgQGVhY2ggJGxlbmd0aCwgJHBlcmNlbnRhZ2UgaW4gJHByb3RvdHlwZS1zaXplcyB7XG4gICAgICAgICAgICAgIC4jeyRzaXplfS0jeyRzaXppbmd9LSN7JGxlbmd0aH0ge1xuICAgICAgICAgICAgICAgICN7JHNpemluZ306ICRwZXJjZW50YWdlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBwcm90b3R5cGUtc3BhY2luZ1xuLy8vL1xuXG4vLy8gUmVzcG9uc2l2ZSBicmVha3BvaW50cyBmb3Igc3BhY2luZyBjbGFzc2VzIChtYXJnaW4gYW5kIHBhZGRpbmcpXG4vLy8gQHR5cGUgQm9vbGVhblxuJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cyAhZGVmYXVsdDtcblxuLy8vIERlZmF1bHQgbnVtYmVyIG9mIHNwYWNlcnMgY291bnQgKG1hcmdpbiBhbmQgcGFkZGluZylcbi8vLyBAdHlwZSBOdW1iZXJcbiRwcm90b3R5cGUtc3BhY2Vycy1jb3VudDogMyAhZGVmYXVsdDtcblxuLy8vIE1hcmdpbiBoZWxwZXIgbWl4aW4sIGFsbCB0aGUgdmFsdWVzIGFyZSBtdWx0aXBsaWVkIGJ5IGAkZ2xvYmFsLW1hcmdpbmAgd2hpY2ggYnkgZGVmYXVsdCBpcyBlcXVhbCB0byBgMXJlbWBcbi8vLyBAcGFyYW0ge051bWJlcn0gJHRvcCBbbnVsbF0gLSBNYXJnaW4gVG9wXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBNYXJnaW4gUmlnaHRcbi8vLyBAcGFyYW0ge051bWJlcn0gJGJvdHRvbSBbbnVsbF0gLSBNYXJnaW4gQm90dG9tXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRsZWZ0IFtudWxsXSAtIE1hcmdpbiBMZWZ0XG5AbWl4aW4gbWFyZ2luKFxuICAkdG9wOiBudWxsLFxuICAkcmlnaHQ6IG51bGwsXG4gICRib3R0b206IG51bGwsXG4gICRsZWZ0OiBudWxsXG4pIHtcbiAgQGlmICR0b3AgIT0gbnVsbCB7XG4gICAgbWFyZ2luLXRvcDogJHRvcCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRyaWdodCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbnVsbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG51bGwge1xuICAgIG1hcmdpbi1sZWZ0OiAkbGVmdCAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIFBhZGRpbmcgaGVscGVyIG1peGluLCBhbGwgdGhlIHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSBgJGdsb2JhbC1wYWRkaW5nYCB3aGljaCBieSBkZWZhdWx0IGlzIGVxdWFsIHRvIGAxcmVtYFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9wIFtudWxsXSAtIFBhZGRpbmcgVG9wXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRyaWdodCBbbnVsbF0gLSBQYWRkaW5nIFJpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRib3R0b20gW251bGxdIC0gUGFkZGluZyBCb3R0b21cbi8vLyBAcGFyYW0ge051bWJlcn0gJGxlZnQgW251bGxdIC0gUGFkZGluZyBMZWZ0XG5AbWl4aW4gcGFkZGluZyhcbiAgJHRvcDogbnVsbCxcbiAgJHJpZ2h0OiBudWxsLFxuICAkYm90dG9tOiBudWxsLFxuICAkbGVmdDogbnVsbFxuKSB7XG4gIEBpZiAkdG9wICE9IG51bGwge1xuICAgIHBhZGRpbmctdG9wOiAkdG9wICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcmlnaHQgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBudWxsIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGJvdHRvbSAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICB9XG4gIEBpZiAkbGVmdCAhPSBudWxsIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRsZWZ0ICogJGdsb2JhbC1wYWRkaW5nICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8vIE1hcmdpbiBjbGFzc2VzIGZvciBzcGVjaWZpYyBkaXJlY3Rpb24gcHJvcGVydGllc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlyIFtdIERpcmVjdGlvblxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkc3BhY2VyIFtdIFNwYWNlclxuQG1peGluIG1hcmdpbi1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcikge1xuICBAaWYgKCRkaXIgPT0gdG9wKSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkdG9wOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gcmlnaHQpIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCRyaWdodDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGJvdHRvbSkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJGJvdHRvbTogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IGxlZnQpIHsgXG4gICAgQGluY2x1ZGUgbWFyZ2luKCRsZWZ0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gaG9yaXpvbnRhbCkgeyBcbiAgICBAaW5jbHVkZSBtYXJnaW4oJHJpZ2h0OiAkc3BhY2VyLCAkbGVmdDogJHNwYWNlcik7IFxuICB9XG4gIEBlbHNlIGlmICgkZGlyID09IHZlcnRpY2FsKSB7IFxuICAgIEBpbmNsdWRlIG1hcmdpbigkdG9wOiAkc3BhY2VyLCAkYm90dG9tOiAkc3BhY2VyKTsgXG4gIH1cbn1cblxuLy8vIFBhZGRpbmcgY2xhc3NlcyBmb3Igc3BlY2lmaWMgZGlyZWN0aW9uIHByb3BlcnRpZXNcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpciBbXSBEaXJlY3Rpb25cbi8vLyBAcGFyYW0ge051bWJlcn0gJHNwYWNlciBbXSBTcGFjZXJcbkBtaXhpbiBwYWRkaW5nLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKSB7XG4gIEBpZiAoJGRpciA9PSB0b3ApIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkdG9wOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gcmlnaHQpIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkcmlnaHQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSBib3R0b20pIHsgXG4gICAgQGluY2x1ZGUgcGFkZGluZygkYm90dG9tOiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gbGVmdCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRsZWZ0OiAkc3BhY2VyKTsgXG4gIH1cbiAgQGVsc2UgaWYgKCRkaXIgPT0gaG9yaXpvbnRhbCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCRyaWdodDogJHNwYWNlciwgJGxlZnQ6ICRzcGFjZXIpOyBcbiAgfVxuICBAZWxzZSBpZiAoJGRpciA9PSB2ZXJ0aWNhbCkgeyBcbiAgICBAaW5jbHVkZSBwYWRkaW5nKCR0b3A6ICRzcGFjZXIsICRib3R0b206ICRzcGFjZXIpOyBcbiAgfVxufVxuXG5AbWl4aW4gZm91bmRhdGlvbi1wcm90b3R5cGUtc3BhY2luZyB7XG4gIEBmb3IgJHNwYWNlciBmcm9tIDAgdGhyb3VnaCAkcHJvdG90eXBlLXNwYWNlcnMtY291bnQge1xuICAgIFxuICAgIEBlYWNoICRwcm9wIGluIChtYXJnaW4sIHBhZGRpbmcpIHtcbiAgICAgIC8vIEFsbCBTaWRlc1xuICAgICAgLiN7JHByb3B9LSN7JHNwYWNlcn0ge1xuICAgICAgICBAaWYgKCRwcm9wID09IG1hcmdpbikgeyBcbiAgICAgICAgICBtYXJnaW46ICRzcGFjZXIgKiAkZ2xvYmFsLW1hcmdpbiAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIGlmICgkcHJvcCA9PSBwYWRkaW5nKSB7IFxuICAgICAgICAgIHBhZGRpbmc6ICRzcGFjZXIgKiAkZ2xvYmFsLXBhZGRpbmcgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAZWFjaCAkZGlyIGluICh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGhvcml6b250YWwsIHZlcnRpY2FsKSB7XG4gICAgICAgIC8vIFRvcCBTaWRlXG4gICAgICAgIC4jeyRwcm9wfS0jeyRkaXJ9LSN7JHNwYWNlcn0ge1xuICAgICAgICAgIEBpZiAoJHByb3AgPT0gbWFyZ2luKSB7IFxuICAgICAgICAgICAgQGluY2x1ZGUgbWFyZ2luLWRpcmVjdGlvbigkZGlyLCAkc3BhY2VyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBhZGRpbmctZGlyZWN0aW9uKCRkaXIsICRzcGFjZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAoJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzKSB7XG4gICAgQGZvciAkc3BhY2VyIGZyb20gMCB0aHJvdWdoICRwcm90b3R5cGUtc3BhY2Vycy1jb3VudCB7XG4gICAgLy8gTG9vcCB0aHJvdWdoIFJlc3BvbnNpdmUgQnJlYWtwb2ludHNcbiAgICAgIEBlYWNoICRzaXplIGluICRicmVha3BvaW50LWNsYXNzZXMge1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzaXplKSB7XG4gICAgICAgICAgQGlmICRzaXplICE9ICQtemYtemVyby1icmVha3BvaW50IHtcbiAgICAgICAgICAgIC4jeyRzaXplfSB7XG4gICAgICAgICAgICAgIEBlYWNoICRwcm9wIGluIChtYXJnaW4sIHBhZGRpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyBBbGwgU2lkZXNcbiAgICAgICAgICAgICAgICAmLSN7JHByb3B9LSN7JHNwYWNlcn0ge1xuICAgICAgICAgICAgICAgICAgQGlmICgkcHJvcCA9PSBtYXJnaW4pIHsgXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogJHNwYWNlciAqICRnbG9iYWwtbWFyZ2luICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAZWxzZSBpZiAoJHByb3AgPT0gcGFkZGluZykgeyBcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHNwYWNlciAqICRnbG9iYWwtcGFkZGluZyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBlYWNoICRkaXIgaW4gKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgaG9yaXpvbnRhbCwgdmVydGljYWwpIHtcbiAgICAgICAgICAgICAgICAgIC8vIFRvcCBTaWRlXG4gICAgICAgICAgICAgICAgICAmLSN7JHByb3B9LSN7JGRpcn0tI3skc3BhY2VyfSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoJHByb3AgPT0gbWFyZ2luKSB7IFxuICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIG1hcmdpbi1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGVsc2UgaWYgKCRwcm9wID09IHBhZGRpbmcpIHsgXG4gICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgcGFkZGluZy1kaXJlY3Rpb24oJGRpciwgJHNwYWNlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJiYXNlL2Jhc2VcIjtcclxuQGltcG9ydCBcImNvbXBvbmVudHMvX2luZGV4XCI7IiwiQGltcG9ydCBcImFwcC1taXhpbnNcIjtcclxuQGltcG9ydCBcIm1peGluc1wiO1xyXG5AaW1wb3J0IFwicmVzZXRcIjtcclxuQGltcG9ydCBcImhlbHBlcnNcIjtcclxuQGltcG9ydCBcInNldHRpbmdzXCI7XHJcbkBpbXBvcnQgXCJmb250ZmFjZVwiO1xyXG4iLCJAbWl4aW4gaW1hZ2UtcmVuZGVyKCl7XHJcbiAgaW1hZ2UtcmVuZGVyaW5nOiBjcmlzcC1lZGdlcztcclxuICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7ICAgICAgICAgIC8qIEZpcmVmb3ggKi9cclxuICBpbWFnZS1yZW5kZXJpbmc6IC1vLWNyaXNwLWVkZ2VzOyAgICAgICAgICAgIC8qIE9wZXJhICovXHJcbiAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0OyAvKiBXZWJraXQgKG5vbi1zdGFuZGFyZCBuYW1pbmcpKi9cclxuICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBuZWFyZXN0LW5laWdoYm9yOyAgIC8qIElFIChub24tc3RhbmRhcmQgcHJvcGVydHkpICovXHJcbn1cclxuQG1peGluIGNvbHVtbi1jb3VudCgkY291bnQ6MiwgJGdhcDozcmVtLCAkd2lkdGg6YXV0bywgJGJyZWFrOmF2b2lkKXtcclxuICBjb2x1bW4tY291bnQ6ICRjb3VudDtcclxuICBjb2x1bW4tZ2FwOiAkZ2FwO1xyXG4gIGNvbHVtbi13aWR0aDogJHdpZHRoO1xyXG4gID5saSw+ZGl2e1xyXG4gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiAkYnJlYWs7XHJcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogJGJyZWFrO1xyXG4gICAgYnJlYWstaW5zaWRlOiAkYnJlYWs7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gaW1hZ2UtMngoJGltYWdlLCAkd2lkdGgsICRoZWlnaHQpIHtcclxuICBAbWVkaWEgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS4zKSxcclxuICAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMi42LzIpLFxyXG4gICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuMyksXHJcbiAgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuMyksXHJcbiAgKG1pbi1yZXNvbHV0aW9uOiAxLjNkcHB4KSB7XHJcbiAgICAvKiBvbiByZXRpbmEsIHVzZSBpbWFnZSB0aGF0J3Mgc2NhbGVkIGJ5IDIgKi9cclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgkaW1hZ2UpO1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAkd2lkdGggJGhlaWdodDtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBzY3JvbGxiYXJzKCRzaXplLCAkZm9yZWdyb3VuZC1jb2xvciwgJGJhY2tncm91bmQtY29sb3I6IG1peCgkZm9yZWdyb3VuZC1jb2xvciwgd2hpdGUsICA1MCUpKSB7XHJcbiAgLy8gRm9yIEdvb2dsZSBDaHJvbWVcclxuICAmOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICB3aWR0aDogICRzaXplO1xyXG4gICAgaGVpZ2h0OiAkc2l6ZTtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICAgIGJhY2tncm91bmQ6ICRmb3JlZ3JvdW5kLWNvbG9yO1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQtY29sb3I7XHJcbiAgfVxyXG5cclxuICAvLyBGb3IgSW50ZXJuZXQgRXhwbG9yZXJcclxuICAmIHtcclxuICAgIHNjcm9sbGJhci1mYWNlLWNvbG9yOiAkZm9yZWdyb3VuZC1jb2xvcjtcclxuICAgIHNjcm9sbGJhci10cmFjay1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gdGV4dHNsaWNlKCRsaW5lKXtcclxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICAtd2Via2l0LWxpbmUtY2xhbXA6ICRsaW5lO1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuQG1peGluIGRpcmVjdGlvbigkZGlyOmx0cil7XHJcbiAgQGF0LXJvb3QgW2Rpcj1cIiN7JGRpcn1cIl0gJntcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxuICBAYXQtcm9vdCAuI3skZGlyfSAme1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbm9kZWNvcntcclxuICAmOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZTt9XHJcbn1cclxuXHJcbkBtaXhpbiB0cmFuc2l0aW9uZml4IHtcclxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XHJcbiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xyXG5cclxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAtbW96LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxufVxyXG5cclxuQG1peGluIGZhZGVkLWJvdHRvbXtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgJjphZnRlcntcclxuICAgIGNvbnRlbnQ6XCJcIjtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgYm90dG9tOiAwIDtcclxuICAgIHotaW5kZXg6IDIwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgaGVpZ2h0OiA2cmVtO1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgyNTUsMjU1LDI1NSwxKSwgcmdiYSgyNTUsMjU1LDI1NSwwKSk7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gZmFkZWQtdG9we1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAmOmJlZm9yZXtcclxuICAgIGNvbnRlbnQ6XCJcIjtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwIDtcclxuICAgIHotaW5kZXg6IDIwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgaGVpZ2h0OiA2cmVtO1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgyNTUsMjU1LDI1NSwwKSwgcmdiYSgyNTUsMjU1LDI1NSwxKSk7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gaW5saW5lLXYtY2VudGVye1xyXG4gICY+KntcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgfVxyXG4gICY6YWZ0ZXJ7XHJcbiAgICBmb250LXNpemU6MDtcclxuICAgIHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDowO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufSIsIkBtaXhpbiBibG9jaygkd2lkdGgsJGhlaWdodDowLCRkc3A6Jycpe1xyXG4gIHdpZHRoOiR3aWR0aDtcclxuICBAaWYgJGhlaWdodD09MCB7XHJcbiAgICBoZWlnaHQ6ICR3aWR0aDtcclxuICB9QGVsc2V7XHJcbiAgICBoZWlnaHQ6JGhlaWdodFxyXG4gIH1cclxuICBAaWYoJGRzcCE9Jycpe1xyXG4gICAgZGlzcGxheTogdW5xdW90ZSgkZHNwKTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiBib3gtc2l6aW5nKCR2YWx1ZSl7XHJcbiAgYm94LXNpemluZzogJHZhbHVlO1xyXG4gIC1tb3otYm94LXNpemluZzogJHZhbHVlO1xyXG59XHJcblxyXG5AbWl4aW4gY2lyY2xlKCR3aWR0aCwkZGlzcGxheTpibG9jayl7XHJcbiAgd2lkdGg6ICR3aWR0aDsgaGVpZ2h0OiAkd2lkdGg7XHJcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg1MCUpO1xyXG4gIGRpc3BsYXk6JGRpc3BsYXk7XHJcbn1cclxuXHJcblxyXG5AbWl4aW4gZm9ybS1wbGFjZWhvbGVyKCl7XHJcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7IC8qIFdlYktpdCBicm93c2VycyAqL1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG4gICY6LW1vei1wbGFjZWhvbGRlciB7IC8qIE1vemlsbGEgRmlyZWZveCA0IHRvIDE4ICovXHJcbiAgICBAY29udGVudDtcclxuICB9XHJcbiAgJjo6LW1vei1wbGFjZWhvbGRlciB7IC8qIE1vemlsbGEgRmlyZWZveCAxOSsgKi9cclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IC8qIEludGVybmV0IEV4cGxvcmVyIDEwKyAqL1xyXG4gICAgQGNvbnRlbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuQG1peGluIGRib3JkZXIoJGNvbG9yMSwkY29sb3IyKXtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3IxO1xyXG4gIG91dGxpbmU6IDFweCBzb2xpZCAkY29sb3IyO1xyXG59XHJcblxyXG5cclxuXHJcbkBtaXhpbiB0ZXh0KCRzOicnLCR3OicnLCR0OicnLCRkOicnLCRzbDonJywkYTonJywkbHM6Jycpe1xyXG4gIEBpZiAkcyE9Jyd7XHJcbiAgICBmb250LXNpemU6dW5xdW90ZSgkcyk7XHJcbiAgfVxyXG4gIEBpZiAkc2whPScne1xyXG4gICAgZm9udC1zdHlsZTp1bnF1b3RlKCRzbCk7XHJcbiAgfVxyXG4gIEBpZiAkdyE9Jyd7XHJcbiAgICBmb250LXdlaWdodDp1bnF1b3RlKCR3KTtcclxuICB9XHJcbiAgQGlmICR0IT0nJ3tcclxuICAgIHRleHQtdHJhbnNmb3JtOnVucXVvdGUoJHQpO1xyXG4gIH1cclxuICBAaWYgJGQhPScne1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOnVucXVvdGUoJGQpO1xyXG4gIH1cclxuICBAaWYgJGEhPScne1xyXG4gICAgdGV4dC1hbGlnbjp1bnF1b3RlKCRhKTtcclxuICB9XHJcbiAgQGlmICRscyE9Jyd7XHJcbiAgICBsZXR0ZXItc3BhY2luZzp1bnF1b3RlKCRscyk7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gaW5wdXQtaGVpZ2h0LXBhZGRpbmcoJGZTaXplLCRoZWlnaHQpe1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIHBhZGRpbmctdG9wOigkaGVpZ2h0IC0gJGZTaXplKS8yICFpbXBvcnRhbnQ7XHJcbiAgcGFkZGluZy1ib3R0b206KCRoZWlnaHQgLSAkZlNpemUpLzIgIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIHZlcnRpY2FsLWNlbnRlcntcclxuICAmOmFmdGVye1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgY29udGVudDogXCJcIjtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBtYXJnaW4tbGVmdDotLjNyZW07XHJcbiAgfVxyXG4gICY+KntcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gYWxpZ24tdmVydGljYWwoJHZhbHVlKXtcclxuICAmOmJlZm9yZXtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJHZhbHVlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgd2lkdGg6MDtcclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICB9XHJcbiAgJj4qe1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246ICR2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItanVzdGlmeXtcclxuICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xyXG4gICY+KntcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgfVxyXG4gICY6YmVmb3Jle1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgY29udGVudDogXCJcIjtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBtYXJnaW4tbGVmdDotLjNyZW07XHJcbiAgfVxyXG5cclxuICAmOmFmdGVye1xyXG4gICAgY29udGVudDpcIlwiO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gbWFyZ2luLWNlbnRlcntcclxuICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50O1xyXG4gIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5AbWl4aW4gbGlzdC1pbmRlbnQoJG1hcmdpbil7XHJcbiAgJj5saStsaXtcclxuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkBtaXhpbiBjaGlsZHMoKXtcclxuICAmPiorKntcclxuICAgIEBjb250ZW50O1xyXG4gIH1cclxufVxyXG5cclxuLy8gPSBPcGFjaXR5XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBtaXhpbiBvcGFjaXR5KCRvcGFjaXR5KSB7XHJcbiAgZmlsdGVyOiB1bnF1b3RlKFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9I3tyb3VuZCgkb3BhY2l0eSAqIDEwMCl9KVwiKTtcclxuICBvcGFjaXR5OiAkb3BhY2l0eTtcclxuXHJcbiAgLyogSGFjayBJRTYgKi9cclxuICAubHQtaWU3ICYge1xyXG4gICAgZmlsdGVyIDogYWxwaGEob3BhY2l0eT0je3JvdW5kKCRvcGFjaXR5ICogMTAwKX0pO1xyXG4gICAgem9vbTogMTtcclxuICB9XHJcbn1cclxuXHJcbkBtaXhpbiByZXNldC11bCgpIHtcclxuICBsaXN0LXN0eWxlOiBub25lO1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcbkBtaXhpbiB1bC1qdXN0aWZ5KCRlbDpsaSl7XHJcbiAgJjphZnRlcnt3aWR0aDogMTAwJTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBjb250ZW50OiBcIi5cIjsgdmlzaWJpbGl0eTogaGlkZGVuO31cclxuICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xyXG4gID4jeyRlbH17ZGlzcGxheTogaW5saW5lLWJsb2NrO31cclxufVxyXG5cclxuQG1peGluIF9jbGVhcmZpeCgpe1xyXG4gICY6YWZ0ZXJ7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIGNvbnRlbnQ6IFwiIFwiO1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgfVxyXG4gIC8vICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgLy9kaXNwbGF5OiBibG9jaztcclxuICBAYXQtcm9vdCAqIGh0bWwgJntcclxuICAgIGhlaWdodDogMSU7XHJcbiAgfVxyXG59XHJcblxyXG5AbWl4aW4gaXMtdHJhbnNmb3JtZWQoJHg6LTUwJSwkeTotNTAlLCAkd2lkdGg6IDEwMCUsICRwOmFic29sdXRlKXtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBwb3NpdGlvbjogJHA7XHJcbiAgbGVmdDogNTAlO3RvcDogNTAlO1xyXG4gIHdpZHRoOiAkd2lkdGg7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoJHgsJHkpKTtcclxufVxyXG5cclxuQG1peGluIGFuaW1hdGlvblNldHRpbmdzKCRuYW1lLCAkdGltaW5nLCAkZnVuY3Rpb246bGluZWFyLCAkbG9vcDppbmZpbml0ZSwgJGRpcmVjdGlvbjpub3JtYWwsICRkZWxheTogMHMpIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogJG5hbWUgJHRpbWluZyAkZGVsYXkgJGZ1bmN0aW9uICRsb29wICRkaXJlY3Rpb247XHJcbiAgLW1vei1hbmltYXRpb246ICRuYW1lICR0aW1pbmcgJGRlbGF5ICRmdW5jdGlvbiAkbG9vcCAkZGlyZWN0aW9uO1xyXG4gIC1vLWFuaW1hdGlvbjogJG5hbWUgJHRpbWluZyAkZGVsYXkgJGZ1bmN0aW9uICRsb29wICRkaXJlY3Rpb247XHJcbiAgYW5pbWF0aW9uOiAkbmFtZSAkdGltaW5nICRkZWxheSAkZnVuY3Rpb24gJGxvb3AgJGRpcmVjdGlvbjtcclxufVxyXG5cclxuQG1peGluIGFic29sdXRlU3RyZXRjaCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyB9XHJcblxyXG4vLyBUZXh0IG92ZXJmbG93XHJcbi8vIFJlcXVpcmVzIGlubGluZS1ibG9jayBvciBibG9jayBmb3IgcHJvcGVyIHN0eWxpbmdcclxuXHJcbkBtaXhpbiB0ZXh0LW92ZXJmbG93KCkge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuQG1peGluIGhpZGUoKXtcclxuICBkaXNwbGF5OiBub25lIWltcG9ydGFudDtcclxufVxyXG5cclxuLy8gTUlYSU4ncyBGT1IgRkxFWCBMQVlPVVQgdy8gRkxPQVQgRkFMTEJBQ0sgRU5BQkxFRFxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG4vLyAxLiBFbmFibGUgRmxleCBMYXlvdXRcclxuLy8gMi4gTGF5b3V0IEFsaWdubWVudCBPcHRpb25zXHJcbi8vIDMuIFBhcmVudCBVc2FnZTogRW5hYmxlIENMRUFSRklYIC8gRGlzYWJsZSBDTEVBUkZJWFxyXG4vLyA0LiBDaGlsZCBVc2FnZTogRW5hYmxlIEZMT0FUUyAvIERpc2FibGUgRkxPQVRTXHJcbi8vIDUuIEZpcmVmb3ggVXNhZ2U6IExheW91dHMgdGhhdCBuZWVkIFwiRmxleC13cmFwXCIgd2lsbCBuZWVkIHRvIGJlIHJldmVydGVkIHRvIGEgZmxvYXQuXHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbi8vIDEuIEVuYWJsZSBGbGV4IExheW91dFxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbkBtaXhpbiBkaXNwbGF5RmxleCgpe1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gIGRpc3BsYXk6IC1tb3otYm94O1xyXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG59XHJcblxyXG5AbWl4aW4gZGlzcGxheUlubGluZUZsZXgoKXtcclxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICBkaXNwbGF5OiAtbW96LWJveDtcclxuICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XHJcbiAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxufVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4vLyAyLiBMYXlvdXQgQWxpZ25tZW50IE9wdGlvbnNcclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyogRmxleC1mbG93IGlzIHNob3J0IGhhbmQgZm9yIFwiZmxleC1kaXJlY3Rpb25cIiAmIFwiZmxleC13cmFwXCIgKi9cclxuQG1peGluIGZsZXhGbG93Um93V3JhcCgpe1xyXG4gIC8qIFNhZmFyaSAtIFByZSBGbGV4IEZsb3cgKi9cclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7XHJcbiAgLyogTVMgLSBQcmUgRmxleCBGbG93ICovXHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgLW1zLWZsZXgtd3JhcDogd3JhcDtcclxuICAvKiBNb3ogLSBQcmUgRmxleCBGbG93ICovXHJcbiAgLW1vei1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIC1tb3otZmxleC13cmFwOiB3cmFwO1xyXG4gIC8qIEZsZXggRmxvdyAgKi9cclxuICAtd2Via2l0LWZsZXgtZmxvdzogcm93IHdyYXA7XHJcbiAgLW1vei1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG4gIC13ZWJraXQtZmxleC1mbG93OiByb3cgd3JhcDtcclxuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xyXG59XHJcbi8qIEZsZXgtZGlyZWN0aW9uIC0gQ29sdW1uICovXHJcbkBtaXhpbiBmbGV4RGlyZWN0aW9uQ29sKCl7XHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIC1tb3otZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5AbWl4aW4gZmxleERpcmVjdGlvbkNvbFJldmVyc2UoKXtcclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcclxuICAtbW96LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcclxuICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG4gIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcclxufVxyXG4vKiBGbGV4LWRpcmVjdGlvbiAtIFJvdyAqL1xyXG5AbWl4aW4gZmxleERpcmVjdGlvblJvdygpe1xyXG4gIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAtbW96LWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbn1cclxuQG1peGluIGZsZXhEaXJlY3Rpb25Sb3dSZXZlcnNlKCl7XHJcbiAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgLW1vei1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcclxuICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcclxuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XHJcbn1cclxuQG1peGluIGp1c3RpZnlDb250ZW50Q2VudGVyKCl7XHJcbiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbn1cclxuQG1peGluIGp1c3RpZnlDb250ZW50U3BhY2VCZXR3ZWVuKCl7XHJcbiAgLXdlYmtpdC1ib3gtcGFjazogc3BhY2UtYmV0d2VlbjtcclxuICAtbW96LWJveC1wYWNrOiBzcGFjZS1iZXR3ZWVuO1xyXG4gIC1tcy1mbGV4LXBhY2s6IHNwYWNlLWJldHdlZW47XHJcbiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG59XHJcbkBtaXhpbiBqdXN0aWZ5Q29udGVudEZsZXhTdGFydCgpe1xyXG4gIC13ZWJraXQtYm94LXBhY2s6IGZsZXgtc3RhcnQ7XHJcbiAgLW1vei1ib3gtcGFjazogZmxleC1zdGFydDtcclxuICAtbXMtZmxleC1wYWNrOiBmbGV4LXN0YXJ0O1xyXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxufVxyXG5AbWl4aW4ganVzdGlmeUNvbnRlbnRGbGV4RW5kKCl7XHJcbiAgLXdlYmtpdC1ib3gtcGFjazogZmxleC1lbmQ7XHJcbiAgLW1vei1ib3gtcGFjazogZmxleC1lbmQ7XHJcbiAgLW1zLWZsZXgtcGFjazogZmxleC1lbmQ7XHJcbiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbn1cclxuLyogQWxpZ24gSXRlbXMgLSBTdHJldGNoICovXHJcbkBtaXhpbiBhbGlnbkl0ZW1zU3RyZXRjaCgpe1xyXG4gIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoO1xyXG4gIC1tb3otYm94LWFsaWduOiBzdHJldGNoO1xyXG4gIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoO1xyXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6IHN0cmV0Y2g7XHJcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XHJcbn1cclxuLyogQWxpZ24gSXRlbXMgLSBDZW50ZXIgKi9cclxuQG1peGluIGFsaWduSXRlbXNDZW50ZXIoKXtcclxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xyXG4gIC1tb3otYm94LWFsaWduOiBjZW50ZXI7XHJcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcclxuICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5AbWl4aW4gYWxpZ25Db250ZW50RmxleFN0YXJ0KCl7XHJcbiAgLW1vei1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcclxuICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcclxuICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG59XHJcbkBtaXhpbiBhbGlnbkNvbnRlbnRGbGV4RW5kKCl7XHJcbiAgLW1vei1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcclxuICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcclxuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcclxufVxyXG5AbWl4aW4gYWxpZ25TZWxmQ2VudGVyKCl7XHJcbiAgLW1vei1hbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgLW1zLWFsaWduLXNlbGY6IGNlbnRlcjtcclxuICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbn1cclxuQG1peGluIGZsZXgxLTEtMTAwKCl7XHJcbiAgLW1vei1mbGV4OiAxIDEgMTAwJTtcclxuICAtd2Via2l0LWZsZXg6IDEgMSAxMDAlO1xyXG4gIC1tcy1mbGV4OiAxIDEgMTAwJTtcclxuICBmbGV4OiAxIDEgMTAwJTtcclxufVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4vLyAzLiBQYXJlbnQgdXNhZ2U6IEVuYWJsZSBDTEVBUkZJWCAvIERpc2FibGUgQ0xFQVJGSVhcclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG5cclxuLyogQ2xlYXJmaXggKi9cclxuQG1peGluIGNsZWFyZml4KCl7XHJcbiAgJjpiZWZvcmUsICY6YWZ0ZXJ7XHJcbiAgICBjb250ZW50OiBcIiBcIjtcclxuICAgIGRpc3BsYXk6IHRhYmxlO1xyXG4gIH1cclxuXHJcbiAgJjphZnRlcntcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gICAgLy8gIElFXHJcbiAgICAqem9vbTogMTtcclxuICB9XHJcbn1cclxuLyogUmV2ZXJ0IGNsZWFyZml4ICovXHJcbkBtaXhpbiByZXZlcnRDbGVhcmZpeCgpe1xyXG4gICY6YmVmb3JlLCAmOmFmdGVye1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIC8vICBJRVxyXG4gICAgKnpvb206IGF1dG87XHJcbiAgfVxyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbi8vIDQuIENoaWxkcmVuIHVzYWdlOiAtIEVuYWJsZSBGTE9BVFMgLyBEaXNhYmxlIEZMT0FUU1xyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbkBtaXhpbiBmbG9hdFRvZ2dsZUZvckZsZXgoKXtcclxuICBmbG9hdDogbGVmdDtcclxuICAvKiBUaGUgTW9kZXJuaXpyIGNsYXNzZXMgb24gdGhlIEVkaXRvciAmIEZ1bGwgcGFnZSBhcmUgc2xpZ2h0eSBkaWZmZXJlbnQsIHNvIEkgaGF2ZSB0byBpbmNsdWRlIFwiLm5vLWZsZXhib3hcIiwgd2hpY2ggbWFrZXMgbWUgc2FkLiAqL1xyXG4gIEBhdC1yb290IC5mbGV4Ym94ICZ7XHJcbiAgICBmbG9hdDogbm9uZTtcclxuICB9XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLy8gNS4gRmlyZWZveCBVc2FnZTogTGF5b3V0cyB0aGF0IG5lZWQgXCJGbGV4LXdyYXBcIiB3aWxsIG5lZWQgdG8gYmUgcmV2ZXJ0ZWQgdG8gYSBmbG9hdC5cclxuLy8gTW9kZXJuaXpyIGhhcyBhIGJ1ZyB3aGVyZSBpdCBpbnNlcnRzIFwibm8tZmxleGJveFwiLCB3aGVuIGluIGZhY3QgaXQgZG9lcy5cclxuLy8gVW50aWwgdGhpcyBjaGFuZ2VzIHdlIG5lZWQgdG8gaW5jbHVkZSBcIi5uby1mbGV4Ym94ICZcIlxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG5AbWl4aW4gLW1vei1jbGVhcmZpeCgpe1xyXG4gIC8vIE5lZWRlZCB0byBvdmVycmlkZSBzdHlsZXNcclxuICBAYXQtcm9vdCAuZmxleGJveCAme1xyXG4gICAgQGluY2x1ZGUgY2xlYXJmaXgoKTtcclxuICB9XHJcbiAgQGF0LXJvb3QgLm5vLWZsZXhib3ggJntcclxuICAgIEBpbmNsdWRlIGNsZWFyZml4KCk7XHJcbiAgfVxyXG59XHJcbkBtaXhpbiAtbW96LW5vRmxleFdyYXAtRmxvYXRsZWZ0KCl7XHJcbiAgLy8gTmVlZGVkIHRvIG92ZXJyaWRlIHN0eWxlc1xyXG4gIEBhdC1yb290IC5mbGV4Ym94ICZ7XHJcbiAgICBmbG9hdDogbGVmdDtcclxuICB9XHJcbiAgQGF0LXJvb3QgLm5vLWZsZXhib3ggJntcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gIH1cclxufVxyXG5cclxuQG1peGluIHRyaWFuZ2xlKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pIHtcclxuICBoZWlnaHQ6IDA7XHJcbiAgd2lkdGg6IDA7XHJcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xyXG5cclxuICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XHJcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XHJcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcclxuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAgICRjb2xvcjtcclxuXHJcbiAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xyXG4gICAgYm9yZGVyLXRvcC1jb2xvcjogICAgJGNvbG9yO1xyXG5cclxuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XHJcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICAkY29sb3I7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuQG1peGluIGJvcmRlcmVkLXRyaWFuZ2xlKCRzaXplLCAkYm9yZGVyLXdpZHRoLCAkY29sb3IsICRib3JkZXItY29sb3IsICRkaXJlY3Rpb24sICRhbHQ6IGZhbHNlKSB7XHJcbiAgJGJhY2stc2l6ZTogJHNpemUgKyAoJGJvcmRlci13aWR0aCAqIDIpO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgbWluLXdpZHRoOiAkc2l6ZTtcclxuICBtaW4taGVpZ2h0OiAkc2l6ZTtcclxuXHJcbiAgJjphZnRlcixcclxuICAmOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICAmOmFmdGVyIHtcclxuICAgIEBpbmNsdWRlIHRyaWFuZ2xlKCRzaXplLCAkY29sb3IsICRkaXJlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgJjpiZWZvcmUge1xyXG4gICAgQGluY2x1ZGUgdHJpYW5nbGUoJGJhY2stc2l6ZSwgJGJvcmRlci1jb2xvciwgJGRpcmVjdGlvbik7XHJcbiAgICAkbWlkLWJvcmRlci13aWR0aDogKCRib3JkZXItd2lkdGggLyAyKTtcclxuICAgICRib3JkZXItd2lkdGgtYW5kLW1pZDogJGJvcmRlci13aWR0aCArICRtaWQtYm9yZGVyLXdpZHRoO1xyXG5cclxuICAgIEBpZiAoJGFsdCA9PSB0cnVlKSB7XHJcbiAgICAgICRtaWQtYm9yZGVyLXdpZHRoOiAwO1xyXG4gICAgICAkYm9yZGVyLXdpZHRoLWFuZC1taWQ6ICRib3JkZXItd2lkdGggKiAyO1xyXG4gICAgfVxyXG5cclxuICAgIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xyXG4gICAgICBtYXJnaW4tbGVmdDogLSAkYm9yZGVyLXdpZHRoO1xyXG5cclxuICAgICAgQGlmICgkZGlyZWN0aW9uID09IGRvd24pIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtJG1pZC1ib3JkZXItd2lkdGg7XHJcbiAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IC0gJGJvcmRlci13aWR0aC1hbmQtbWlkO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xyXG4gICAgICBtYXJnaW4tdG9wOiAtICRib3JkZXItd2lkdGg7XHJcblxyXG4gICAgICBAaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogLSAkbWlkLWJvcmRlci13aWR0aDtcclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0gJGJvcmRlci13aWR0aC1hbmQtbWlkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuQG1peGluIGNsb3NlKCR3aWR0aDoxLjVyZW0sICRiZzojZmZmKXtcclxuICAmOmJlZm9yZSwmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMXB4O1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIGJhY2tncm91bmQ6ICRiZztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAlLC01MCUpIHJvdGF0ZSgtNDVkZWcpO1xyXG4gIH1cclxuICAmOmFmdGVye1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCUsLTUwJSkgcm90YXRlKDQ1ZGVnKTtcclxuICB9XHJcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgd2lkdGg6ICR3aWR0aDtcclxuICBoZWlnaHQ6ICR3aWR0aDtcclxuICB0ZXh0LWluZGVudDogLTk5OTlweDtcclxuICBkaXNwbGF5OiBibG9jaztcclxufSIsIi8qIEVyaWMgTWV5ZXIncyBDU1MgUmVzZXQgKi9cclxuaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxyXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXHJcbmEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcclxuZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxyXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxyXG5iLCB1LCBpLCBjZW50ZXIsXHJcbmRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXHJcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxyXG50YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcclxuYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXHJcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcclxubWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXHJcbnRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XHJcblx0bWFyZ2luOiAwO1xyXG5cdHBhZGRpbmc6IDA7XHJcblx0Ym9yZGVyOiAwO1xyXG5cdGZvbnQtc2l6ZTogMTAwJTtcclxuXHRmb250OiBpbmhlcml0O1xyXG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG4vKiBIVE1MNSBkaXNwbGF5LXJvbGUgcmVzZXQgZm9yIG9sZGVyIGJyb3dzZXJzICovXHJcbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsXHJcbmZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiwgbWFpbiB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcbn1cclxuYm9keSB7XHJcblx0bGluZS1oZWlnaHQ6IDE7XHJcbn1cclxub2wsIHVsIHtcclxuXHRsaXN0LXN0eWxlOiBub25lO1xyXG59XHJcbmJsb2NrcXVvdGUsIHEge1xyXG5cdHF1b3Rlczogbm9uZTtcclxufVxyXG5ibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlcixcclxucTpiZWZvcmUsIHE6YWZ0ZXIge1xyXG5cdGNvbnRlbnQ6ICcnO1xyXG5cdGNvbnRlbnQ6IG5vbmU7XHJcbn1cclxudGFibGUge1xyXG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcblx0Ym9yZGVyLXNwYWNpbmc6IDA7XHJcbn1cclxuLyogRW5kIG9mIEVyaWMgTWV5ZXIncyBDU1MgUmVzZXQgKi9cclxuXHJcbio6Zm9jdXN7XHJcbiAgb3V0bGluZTogbm9uZTtcclxufVxyXG5cclxuLyogRm9ybXNcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbi8qKlxyXG4gKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxyXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cclxuICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXHJcbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXHJcbiAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpIDUsIGFuZCBDaHJvbWUuXHJcbiAqL1xyXG5cclxuYnV0dG9uLFxyXG5pbnB1dCxcclxub3B0Z3JvdXAsXHJcbnNlbGVjdCxcclxudGV4dGFyZWEge1xyXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXHJcbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xyXG4gIG1hcmdpbjogMDsgLyogMyAqL1xyXG59XHJcblxyXG4vKipcclxuICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAuXHJcbiAqL1xyXG5cclxuYnV0dG9uIHtcclxuICBvdmVyZmxvdzogdmlzaWJsZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cclxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cclxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4KywgYW5kIE9wZXJhXHJcbiAqIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cclxuICovXHJcblxyXG5idXR0b24sXHJcbnNlbGVjdCB7XHJcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxyXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cclxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxyXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxyXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXHJcbiAqL1xyXG5cclxuYnV0dG9uLFxyXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cclxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxyXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xyXG4gIGN1cnNvcjogcG9pbnRlcjsgLyogMyAqL1xyXG59XHJcblxyXG4vKipcclxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cclxuICovXHJcblxyXG5idXR0b25bZGlzYWJsZWRdLFxyXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XHJcbiAgY3Vyc29yOiBkZWZhdWx0O1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxyXG4gKi9cclxuXHJcbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcclxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xyXG4gIGJvcmRlcjogMDtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxyXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cclxuICovXHJcblxyXG5pbnB1dCB7XHJcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgYXR0ZW1wdCB0byBzdHlsZSB0aGVzZSBlbGVtZW50cy5cclxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cclxuICpcclxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cclxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cclxuICovXHJcblxyXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xyXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXHJcbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXHJcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cclxuICovXHJcblxyXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxyXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcclxuICBoZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lLlxyXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSA1IGFuZCBDaHJvbWVcclxuICogICAgKGluY2x1ZGUgYC1tb3pgIHRvIGZ1dHVyZS1wcm9vZikuXHJcbiAqL1xyXG5cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cclxuICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xyXG4gIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDIgKi9cclxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxyXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXHJcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cclxuICovXHJcblxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbn0iLCIlaGlkZXtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcbi5ibG9ja3tcclxuICBkaXNwbGF5OiBibG9jaztcclxufVxyXG4ubGVmdHtmbG9hdDogbGVmdDt9XHJcbi5yaWdodHtmbG9hdDogcmlnaHQ7fVxyXG4udmlzaWJsZXtvdmVyZmxvdzogdmlzaWJsZSFpbXBvcnRhbnQ7fVxyXG5cclxuLnRleHQtY2VudGVye3RleHQtYWxpZ246IGNlbnRlcjt9XHJcbi50ZXh0LXJpZ2h0e3RleHQtYWxpZ246IHJpZ2h0O31cclxuLmhpZGV7ZGlzcGxheTogbm9uZSFpbXBvcnRhbnQ7fVxyXG5cclxuLmZ1bGwtd2lkdGh7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5mdWxsLWhlaWdodHtcclxuICBoZWlnaHQ6IDEwMCVcclxufVxyXG4uaW5saW5lLWxpc3R7XHJcbiAgJi0tdG9we3ZlcnRpY2FsLWFsaWduOiB0b3AgIWltcG9ydGFudDt9XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgPmxpe2Rpc3BsYXk6IGlubGluZS1ibG9jazt9XHJcbn1cclxuLmltZy1yZW5kZXJ7QGluY2x1ZGUgaW1hZ2UtcmVuZGVyO31cclxuLm5vLXNjcm9sbHtvdmVyZmxvdzogaGlkZGVuO31cclxuLm1yLWF1dG97bWFyZ2luLXJpZ2h0OiBhdXRvO31cclxuLm1sLWF1dG97bWFyZ2luLWxlZnQ6IGF1dG87fVxyXG5cclxuLm10LTF7bWFyZ2luLXRvcDogMXJlbTt9XHJcbi5tdC0ye21hcmdpbi10b3A6IDJyZW07fVxyXG4ubXQtM3ttYXJnaW4tdG9wOiAzcmVtO31cclxuLm10LTR7bWFyZ2luLXRvcDogNHJlbTt9XHJcbi5tdC01e21hcmdpbi10b3A6IDVyZW07fVxyXG4ubWItMXttYXJnaW4tYm90dG9tOiAxcmVtO31cclxuLm1iLTJ7bWFyZ2luLWJvdHRvbTogMnJlbTt9XHJcbi5tYi0ze21hcmdpbi1ib3R0b206IDNyZW07fVxyXG4ubWItNHttYXJnaW4tYm90dG9tOiA0cmVtO31cclxuLm1iLTV7bWFyZ2luLWJvdHRvbTogNXJlbTt9IiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xyXG5cclxuQGltcG9ydCBcIi4uLy4uL3ZhcmlhYmxlc1wiO1xyXG5cclxuKiB7XHJcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5e1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYmFzZTtcclxuICAvL2ZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZztcclxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XHJcbiAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gIGJhY2tncm91bmQ6ICRiZy1jb2xvcjtcclxuICBmb250LXNpemU6ICRmb250LXNpemUtYm9keTtcclxuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XHJcbiAgdGV4dC1yZW5kZXJpbmc6IGF1dG87XHJcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgLy90ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xyXG4gIC8vLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJztcclxuICAvLy1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJztcclxuICAvLy13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYSc7XHJcbiAgLy9mb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJztcclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gIH1cclxufVxyXG5cclxuaHRtbHtcclxuICBtaW4taGVpZ2h0OiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBmb250LXNpemU6ICRodG1sLWZvbnQtc2l6ZSAhaW1wb3J0YW50O1xyXG4gIC8vLXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtcclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KXtcclxuICAgIGZvbnQtc2l6ZTogNTIuMDglICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCl7XHJcbiAgICBmb250LXNpemU6IDUyLjUlICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICBmb250LXNpemU6IDUwJSAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTkyMXB4KXtcclxuICAgIEBtZWRpYSAobWluLWFzcGVjdC1yYXRpbzogNC8zKSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogY2FsYygwLjYyNXZ3ICogLjg0KSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgQG1lZGlhIChtaW4tYXNwZWN0LXJhdGlvOiAxNy8xMCkge1xyXG4gICAgICAvL2ZvbnQtc2l6ZTogY2FsYygwLjYyNXZ3ICogLjgyKSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgY29sb3I6ICRjb2xvci1saW5rO1xyXG4gICY6aG92ZXJ7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcbn1cclxuXHJcbi52aXNpYmxle292ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7fVxyXG5cclxuLmZ1bGx3aWR0aHtcclxuICB3aWR0aDogMTAwJSFpbXBvcnRhbnQ7XHJcbiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbn1cclxuLmhhbGZ3aWR0aHtcclxuICB3aWR0aDogNTAlIWltcG9ydGFudDtcclxufVxyXG4uZnVsbGhlaWdodHtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxufVxyXG4udHJ1bmNhdGV7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcblxyXG5pbWd7XHJcbiAgJi5ub3JtYWx7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1heC13aWR0aDogbm9uZTtcclxuICB9XHJcbiAgJi5yZXNwb25zaXZle1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgfVxyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG59XHJcblxyXG4uaW1nLWZsdWlke1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIG1heC13aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmltZy1yb3VuZGVke1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG59XHJcblxyXG4ubGVmdHtmbG9hdDogbGVmdCFpbXBvcnRhbnQ7fVxyXG4ucmlnaHR7ZmxvYXQ6IHJpZ2h0IWltcG9ydGFudDt9XHJcbi5wdWxsLWxlZnQsLnB1bGwtcmlnaHR7ZmxvYXQ6IG5vbmUhaW1wb3J0YW50O31cclxuXHJcbiVmbGV4LWNlbnRlcntcclxuICBAaW5jbHVkZSBkaXNwbGF5RmxleDtcclxuICBAaW5jbHVkZSBhbGlnbkl0ZW1zQ2VudGVyO1xyXG4gIEBpbmNsdWRlIGp1c3RpZnlDb250ZW50Q2VudGVyO1xyXG59XHJcblxyXG4uZmxleC1jZW50ZXJ7XHJcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XHJcbn1cclxuXHJcbiVoaWRkZW57XHJcbiAgb3BhY2l0eTogMDtcclxuICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbi8vICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgLjNzIGVhc2UpO1xyXG59XHJcbiV2aXNpYmxle1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuLy8gIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIC4zcyBlYXNlKTtcclxuXHJcbn1cclxuXHJcbiVib290cmVze1xyXG4gICY6Zm9jdXMsJi5mb2N1c3tcclxuICAgIG91dGxpbmUtb2Zmc2V0OjA7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICB9XHJcbn0iLCIiLCJAaW1wb3J0IFwiYW5pbWF0ZVwiO1xyXG4vL0BpbXBvcnQgXCJmb250ZmFjZS9faW5kZXhcIjtcclxuQGltcG9ydCBcInR5cG9cIjtcclxuQGltcG9ydCBcImljb25cIjtcclxuQGltcG9ydCBcImxheW91dFwiO1xyXG5AaW1wb3J0IFwiZm9ybS9faW5kZXhcIjtcclxuQGltcG9ydCBcIm5hdlwiO1xyXG5AaW1wb3J0IFwibW9kYWxcIjtcclxuQGltcG9ydCBcInNlY3Rpb25cIjtcclxuQGltcG9ydCBcImJveFwiO1xyXG5AaW1wb3J0IFwiYnRuXCI7XHJcbkBpbXBvcnQgXCJzbGlkZVwiO1xyXG5AaW1wb3J0IFwidGFic1wiO1xyXG5AaW1wb3J0IFwiYmxvZ1wiO1xyXG5AaW1wb3J0IFwicGFnaW5hdGlvblwiO1xyXG5AaW1wb3J0IFwiY3VzdG9tXCI7XHJcbkBpbXBvcnQgXCJ0aGVtZVwiO1xyXG4vL0BpbXBvcnQgXCJ3b29jb21tZXJjZVwiO1xyXG4vL0BpbXBvcnQgXCJicmVhZGNydW1ic1wiO1xyXG4vL0BpbXBvcnQgXCJhY2NvcmRpb25cIjsiLCIub3MtYW5pbWF0aW9uLCAub3MtYW5pbWF0aW9uLWFsd2F5cyB7XHJcbiAgb3BhY2l0eTogMDtcclxuICAmLmFuaW1hdGVke29wYWNpdHk6IDE7fVxyXG4gIEBhdC1yb290IC5hY3RpdmUgJntcclxuICAgIC8vb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLy5hbmltYXRlZCwuYW5pbWF0ZWRXb3cge1xyXG4vLyAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDFzO1xyXG4vLyAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcclxuLy8gIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcclxuLy8gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XHJcbi8vfVxyXG5cclxuLmFuaW1hdGVkXHJcbi8vLC5hY3RpdmUgLm9zLWFuaW1hdGlvblxyXG57XHJcbiAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDFzO1xyXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XHJcbiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xyXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XHJcbn1cclxuXHJcbi5hbmltYXRlZC5pbmZpbml0ZSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxuICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxufVxyXG5cclxuLmFuaW1hdGVkLmhpbmdlIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XHJcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcclxufVxyXG4vKiAuZmFkZU91dCBpcyBzdHlsZSB0YWtlbiBmcm9tIEFuaW1hdGlvbi5jc3MgYW5kIHRoaXMgaXMgaG93IGl0IGxvb2tzIGluIG93bC5jYXJvdXNlbC5jc3M6ICAqL1xyXG4uZmFkZU91dCAge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWUgOiBmYWRlT3V0ICA7XHJcbiAgYW5pbWF0aW9uLW5hbWUgOiBmYWRlT3V0ICA7XHJcbn1cclxuQC13ZWJraXQta2V5ZnJhbWVzICBmYWRlT3V0ICB7XHJcbiAgMCUge1xyXG4gICAgb3BhY2l0eSA6IDEgICA7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgb3BhY2l0eSA6IDAgICA7XHJcbiAgfVxyXG59XHJcbkBrZXlmcmFtZXMgIGZhZGVPdXQgIHtcclxuICAwJSB7XHJcbiAgICBvcGFjaXR5IDogMSAgIDtcclxuICB9XHJcbiAgMTAwJSB7XHJcbiAgICBvcGFjaXR5IDogMCAgIDtcclxuICB9XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW4ge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcbi5mYWRlSW4ge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJbjtcclxuICBhbmltYXRpb24tbmFtZTogZmFkZUluO1xyXG59XHJcblxyXG4ucHJvZ3Jlc3MgIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lIDogcHJvZ3Jlc3M7XHJcbiAgYW5pbWF0aW9uLW5hbWUgOiBwcm9ncmVzcztcclxufVxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgIHByb2dyZXNzICB7XHJcbiAgMCUge1xyXG4gICAgd2lkdGggOiAwO1xyXG4gIH1cclxuICAxMDAlIHtcclxuICAgIHdpZHRoIDogMTAwJTtcclxuICB9XHJcbn1cclxuQGtleWZyYW1lcyAgcHJvZ3Jlc3MgIHtcclxuICAwJSB7XHJcbiAgICB3aWR0aCA6IDA7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgd2lkdGggOiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW5Eb3duIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4uZmFkZUluRG93biB7XHJcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkRvd247XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZUluTGVmdCB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNTAlLCAwLCAwKTtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB0cmFuc2Zvcm06IG5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4uZmFkZUluTGVmdCB7XHJcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQ7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZUluUmlnaHQge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XHJcbiAgfVxyXG5cclxuICB0byB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdHJhbnNmb3JtOiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuLmZhZGVJblJpZ2h0IHtcclxuICBhbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHQ7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZUluVXAge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMTAwJSwgMCk7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwJSwgMCk7XHJcbiAgfVxyXG5cclxuICB0byB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdHJhbnNmb3JtOiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuLmZhZGVJblVwIHtcclxuICBhbmltYXRpb24tbmFtZTogZmFkZUluVXA7XHJcbn1cclxuXHJcbi5zbGlkZS1pbi1kb3duLm11aS1lbnRlciB7XHJcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNTAwbXM7XHJcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcclxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XHJcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTtcclxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IH1cclxuXHJcbi5zbGlkZS1pbi1kb3duLm11aS1lbnRlci5tdWktZW50ZXItYWN0aXZlIHtcclxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cclxuXHJcblxyXG4uc2xpZGUtb3V0LWRvd24ubXVpLWxlYXZlIHtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcclxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xyXG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTtcclxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIG9wYWNpdHk7XHJcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBvcGFjaXR5LCAtd2Via2l0LXRyYW5zZm9ybTtcclxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IH1cclxuXHJcbi5zbGlkZS1vdXQtZG93bi5tdWktbGVhdmUubXVpLWxlYXZlLWFjdGl2ZSB7XHJcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOyB9IiwicHtcclxuICAmOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTogMDt9XHJcbiAgbWFyZ2luOiAwIDAgMnJlbTtcclxuICBmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcclxuICBsaW5lLWhlaWdodDogMS4zNjtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWJhc2U7XHJcbiAgLy9mb250LXdlaWdodDogNTAwO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICB9XHJcbn1cclxuXHJcbnN0cm9uZ3tcclxuICAvL2ZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktYm9sZDtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbn1cclxuXHJcbml7Zm9udC1zdHlsZTogaXRhbGljO31cclxuXHJcbmF7XHJcbiAgJjpob3Zlcntjb2xvcjogJGNvbG9yLWxpbmstYWN0aXZlO31cclxuICAvL0BpbmNsdWRlIHRyYW5zaXRpb24oY29sb3IgLjJzKTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAuMjVzO1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG5cclxuaDEsaDIsaDMsaDQsaDUsaDZ7XHJcbiAgLy9jb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG4gIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDEuMTc7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XHJcbn1cclxuXHJcbmgxe2ZvbnQtc2l6ZTogNC40cmVtO31cclxuaDJ7Zm9udC1zaXplOiA0cmVtO31cclxuaDN7Zm9udC1zaXplOiAzLjZyZW07fVxyXG5oNHtmb250LXNpemU6IDNyZW07fVxyXG5oNXtmb250LXNpemU6IDIuNHJlbTt9XHJcblxyXG5zdXB7XHJcbiAgdmVydGljYWwtYWxpZ246IHN1cGVyO1xyXG4gIGZvbnQtc2l6ZTogNjAlO1xyXG59XHJcblxyXG5cclxuLnNlY3Rpb24tdGl0bGV7XHJcbiAgQGV4dGVuZCAudGl0bGUtMjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICAvL2ZvbnQtc2l6ZTogM3JlbTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcbiAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gIC8vdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICBsaW5lLWhlaWdodDogMS4xO1xyXG4gIG1hcmdpbi1ib3R0b206IDNyZW07XHJcblxyXG4gICYubS1ncm91cHtcclxuICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5hcnRpY2xlLXRpdGxle1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAxO1xyXG4gIGZvbnQtc2l6ZTogM3JlbTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcbiAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICBsaW5lLWhlaWdodDogMS4xO1xyXG4gIG1hcmdpbi1ib3R0b206IDNyZW07XHJcbn1cclxuXHJcbi5fYm9sZHtmb250LXdlaWdodDogNzAwO31cclxuLl9zZW1pYm9sZHtmb250LXdlaWdodDogNjAwO31cclxuLl9tZWRpdW17Zm9udC13ZWlnaHQ6IDUwMDt9XHJcbi5fbm9ybWFse2ZvbnQtd2VpZ2h0OiA0MDA7fVxyXG5cclxuW2NsYXNzKj1cInRpdGxlLVwiXSwuc2VjdGlvbi10aXRsZXtcclxuICAmLm1iLTF7bWFyZ2luLWJvdHRvbTogMXJlbTt9XHJcbiAgJi5tYi0ye21hcmdpbi1ib3R0b206IDJyZW07fVxyXG4gICYubWItM3ttYXJnaW4tYm90dG9tOiAzcmVtO31cclxuICAmLm1iLTR7bWFyZ2luLWJvdHRvbTogM3JlbTt9XHJcbiAgJi5tYi01e21hcmdpbi1ib3R0b206IDVyZW07fVxyXG4gICYubXQtMXttYXJnaW4tdG9wOiAxcmVtO31cclxuICAmLm10LTJ7bWFyZ2luLXRvcDogMnJlbTt9XHJcbiAgJi5tdC0ze21hcmdpbi10b3A6IDNyZW07fVxyXG4gICYubXQtNHttYXJnaW4tdG9wOiAzcmVtO31cclxuICAmLm10LTV7bWFyZ2luLXRvcDogNXJlbTt9XHJcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuXHJcbiAgJi5fc2VtaWJvbGR7Zm9udC13ZWlnaHQ6IDYwMDt9XHJcbiAgJi5fbWVkaXVte2ZvbnQtd2VpZ2h0OiA1MDA7fVxyXG4gICYuX25vcm1hbHtmb250LXdlaWdodDogNDAwO31cclxuXHJcbn1cclxuXHJcbiR0aXRsZS0wOiA4cmVtO1xyXG4kdGl0bGUtMTogNnJlbTtcclxuJHRpdGxlLTI6IDQuNHJlbTtcclxuJHRpdGxlLTM6IDRyZW07XHJcbiR0aXRsZS00OiAzLjZyZW07XHJcbiR0aXRsZS01OiAzLjJyZW07XHJcbiR0aXRsZS02OiAyLjhyZW07XHJcblxyXG4udGl0bGV7XHJcbiAgJi0we2ZvbnQtc2l6ZTogJHRpdGxlLTA7fVxyXG4gICYtMXtmb250LXNpemU6ICR0aXRsZS0xO31cclxuICAmLTJ7Zm9udC1zaXplOiAkdGl0bGUtMjt9XHJcbiAgJi0ze2ZvbnQtc2l6ZTogJHRpdGxlLTM7fVxyXG4gICYtNHtmb250LXNpemU6ICR0aXRsZS00O31cclxuICAmLTV7Zm9udC1zaXplOiAkdGl0bGUtNTt9XHJcbiAgJi02e2ZvbnQtc2l6ZTogJHRpdGxlLTY7fVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5MDBweCl7XHJcbiAgICAmLTF7Zm9udC1zaXplOiAzNnB4fVxyXG4gIH1cclxuXHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KXtcclxuICAgICYtMHtmb250LXNpemU6IG1hcF9nZXQoJHRpdGxlLCBmcy1tZCk7fVxyXG4gICAgJi0xe2ZvbnQtc2l6ZTogbWFwX2dldCgkdGl0bGUsIGZzLW1kKTt9XHJcbiAgICAmLTJ7Zm9udC1zaXplOiAkdGl0bGUtMiAqIDAuODt9XHJcbiAgICAmLTN7Zm9udC1zaXplOiAkdGl0bGUtMyAqIDAuODt9XHJcbiAgICAmLTR7Zm9udC1zaXplOiAkdGl0bGUtNCAqIDAuODt9XHJcbiAgICAmLTV7Zm9udC1zaXplOiAkdGl0bGUtNSAqIDAuODt9XHJcbiAgICAmLTZ7Zm9udC1zaXplOiAkdGl0bGUtNiAqIDAuOTt9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICAmLTF7Zm9udC1zaXplOiAyNnB4O31cclxuICAgICYtMntmb250LXNpemU6IDI2cHg7fVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi50aXRsZS1ncm91cHtcclxuICBbY2xhc3M9XCJ0aXRsZS1cIl0sPnNwYW57XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcbn1cclxuXHJcbi50ZXh0e1xyXG5cclxuICAmLS14eGxhcmdle2ZvbnQtc2l6ZTogMi44cmVtO31cclxuICAmLS14bGFyZ2V7Zm9udC1zaXplOiAyLjRyZW07fVxyXG4gICYtLWxhcmdle2ZvbnQtc2l6ZTogMi4ycmVtO31cclxuICAmLS1tZWRpdW17Zm9udC1zaXplOiAycmVtO31cclxuICAmLS1zbWFsbHtmb250LXNpemU6IDEuNnJlbTt9XHJcblxyXG4gICYtLXByaW1hcnl7XHJcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICBAYXQtcm9vdCBzZWN0aW9uLnRleHQtd2hpdGUgJntcclxuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gICAgQGF0LXJvb3Qgcy1zZWN0aW9uLnRleHQtd2hpdGUgJntcclxuICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gIH1cclxuICAmLS1zZWNvbmRhcnl7Y29sb3I6ICRjb2xvci1zZWNvbmRhcnk7fVxyXG4gICYtLXdoaXRle1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgICAudGV4dC0tb3BhY2l0eXtvcGFjaXR5OiAuNjt9XHJcbiAgfVxyXG5cclxuICAmLS1kYXJre1xyXG4gICAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gICAgKntcclxuICAgICAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0tYmxhY2t7Y29sb3I6ICMyMjIyMjI7fVxyXG4gICYtLWJsdWV7Y29sb3I6ICRjb2xvci1ibHVlO31cclxuICAmLS1yZWR7Y29sb3I6ICNGRjA1MDU7fVxyXG4gICYtLXJlZDJ7Y29sb3I6ICNmZjAwNWM7fVxyXG4gICYtLW9yYW5nZXtjb2xvcjogJGNvbG9yLW9yYW5nZTt9XHJcbiAgJi0teWVsbG93e2NvbG9yOiAkY29sb3IteWVsbG93O31cclxuICAmLS1ncmV5e2NvbG9yOiAkY29sb3ItZ3JleTt9XHJcbiAgJi0tZGFya2dyZXl7Y29sb3I6ICRjb2xvci1ncmV5LWFjY2VudDt9XHJcblxyXG4gICYtLW1hZ2lje1xyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIGxlZnQ6MDt0b3A6MDtcclxuICAgICAgd2lkdGg6IDVyZW07XHJcbiAgICAgIGhlaWdodDogNXJlbTtcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL21hZ2ljLnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICAgIH1cclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogNy44cmVtO1xyXG4gICAgYXtcclxuICAgICAgJjpob3Zlcnt0ZXh0LWRlY29yYXRpb246IG5vbmU7fVxyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmLS14eGxhcmdle2ZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1ib2R5LW1vYjt9XHJcbiAgICAmLS14bGFyZ2V7Zm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO31cclxuICAgICYtLWxhcmdle2ZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1ib2R5LW1vYjt9XHJcbiAgICAmLS1tZWRpdW17Zm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO31cclxuICAgICYtLXNtYWxse2ZvbnQtc2l6ZTogMS42cmVtO31cclxuICB9XHJcblxyXG59XHJcblxyXG4lb2x7XHJcbiAgbGlzdC1zdHlsZTogZGVjaW1hbDtcclxuICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICBsaXtcclxuICAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgICBtYXJnaW4tdG9wOiAuNXJlbTtcclxuICAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcclxuICAgICBtYXJnaW4tbGVmdDogMnJlbTtcclxuICAgfVxyXG4gfVxyXG5cclxuLmFydGljbGV7XHJcblxyXG4gIGgxLGgyLGgzLGg0LGg1LGg2e2NvbG9yOiAkY29sb3ItaGVhZGluZzt9XHJcblxyXG4gIHVsLCV1bHtcclxuICAgIEBleHRlbmQgJWxpc3QtZGlzYztcclxuICB9XHJcbiAgb2wsJW9se1xyXG4gICAgbGlzdC1zdHlsZTogZGVjaW1hbDtcclxuICAgIGxpe1xyXG4gICAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgICAgbWFyZ2luLXRvcDogLjVyZW07XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgICBtYXJnaW4tbGVmdDogMnJlbTtcclxuICAgIH1cclxuICB9XHJcbiAgcHtcclxuICAgIGF7XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5saXN0LWRpc2MsICVsaXN0LWRpc2N7XHJcbiAgbGlzdC1zdHlsZTogZGlzYztcclxuICBsaXtcclxuICAgIG1hcmdpbi1ib3R0b206IDEuNjdyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxpc3QtYXJyb3csICVsaXN0LWFycm93e1xyXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgbGl7XHJcbiAgICAmOmJlZm9yZXtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgbGVmdDotMnJlbTt0b3A6LjdyZW07XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvaWNvbi9hcnJvdy1saXN0LXJpZ2h0LnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgICB3aWR0aDogMS45cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgIH1cclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDEuNjdyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxpc3QtY29sdW1ue1xyXG5cclxuICAmLmxpc3QtZGlzY3tcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBsaXtcclxuICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgY29udGVudDogXCJcXDIwMjJcIjtcclxuICAgICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiAxLjJlbTtcclxuICAgICAgICBtYXJnaW4tbGVmdDogLTEuMmVtO1xyXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgICAgICB3aWR0aDogMS42cmVtO1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycmVtO1xyXG4gICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgY29sdW1uLWNvdW50KDIsIDZyZW0pO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgIEBpbmNsdWRlIGNvbHVtbi1jb3VudCgyLCAzcmVtKTtcclxuICB9XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIEBpbmNsdWRlIGNvbHVtbi1jb3VudCgxLCAwcmVtKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4uYWJvdXQtdGl0bGV7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBAZXh0ZW5kIC50ZXh0LS14bGFyZ2U7XHJcbn1cclxuLnRleHQtY2VudGVyLS1zbXtcclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyIWltcG9ydGFudDtcclxuICB9XHJcbn0iLCIuaWNvbi1wbGF5e1xyXG4gIGZvbnQtc2l6ZTogMTBweDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vaWNvbi9wbGF5LnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgd2lkdGg6IDcuM2VtO1xyXG4gIGhlaWdodDogMTAuMmVtO1xyXG59XHJcblxyXG4uaWNvbi1zdmctYmFuay1yZXBvcnR7XHJcbiAgZm9udC1zaXplOiAxMHB4O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9pY29uL2JhbmstcmVwb3J0LnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgd2lkdGg6IDcuM2VtO1xyXG4gIGhlaWdodDogMTAuMmVtO1xyXG59XHJcblxyXG4uaWNvbi1taW51c3tcclxuICBmb250LXNpemU6IDEwMCU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcclxuICB3aWR0aDogMS41ZW07XHJcbiAgaGVpZ2h0OiAwLjZlbTtcclxuICBjb2xvcjogY3VycmVudENvbG9yO1xyXG59XHJcbiIsIkBpbXBvcnQgXCJoZWFkZXJcIjtcclxuQGltcG9ydCBcImZvb3RlclwiO1xyXG5cclxuLmwtbWFpbntcclxuICBwYWRkaW5nOiAwO1xyXG4gIC8vcGFkZGluZy1ib3R0b206IDtcclxufVxyXG5cclxuLmNvbnRhaW5lciwuY29udGFpbmVyLWZsdWlke1xyXG4gIG1heC13aWR0aDogJGNvbnRhaW5lci13aWR0aDtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgcGFkZGluZy1yaWdodDogMzBweDtcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblxyXG4gICYtLW1ke1xyXG4gICAgbWF4LXdpZHRoOiAxMDJyZW07XHJcbiAgfVxyXG5cclxuXHJcbiAgJi0tbmFycm93e1xyXG4gIH1cclxuXHJcbiAgJi0tcGFkZGluZ3tcclxuICAgIC8vcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgLy9wYWRkaW5nLXJpZ2h0OiAzMHB4O1xyXG4gIH1cclxuXHJcbiAgPiAucm93Om5vdCguc21hbGwtY29sbGFwc2Upe1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07XHJcblxyXG4gICAgJi5yb3ctLXdpZGV7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMzBweDtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAtMzBweDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICB9XHJcblxyXG59XHJcblxyXG4ucm93e1xyXG4gICY6YmVmb3JlLCY6YWZ0ZXJ7XHJcbiAgICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAucm93e1xyXG4gICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgfVxyXG4gIC8vcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgLy9wYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgLy9tYXgtd2lkdGg6IDEwMi40cmVtO1xyXG5cclxuICAmLS1uYXJyb3d7XHJcbiAgICBtYXJnaW4tbGVmdDogLTZweDtcclxuICAgIG1hcmdpbi1yaWdodDogLTZweDtcclxuICAgID4uY29sLFtjbGFzc149XCJjb2wtXCJde1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDZweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogNnB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0td2lkZXtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMzBweDtcclxuICAgIG1hcmdpbi1yaWdodDogLTMwcHg7XHJcbiAgICA+LmNvbCxbY2xhc3NePVwiY29sLVwiXSw+LmNvbHVtbntcclxuICAgICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAzMHB4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0tbGlzdHtcclxuICAgID4uY29sLFtjbGFzc149XCJjb2wtXCJdLD4uY29sdW1ue1xyXG4gICAgICBwYWRkaW5nLXRvcDogMS41cmVtO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0tc2VjdGlvbntcclxuICAgIG1hcmdpbi10b3A6IDVyZW07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLnN0aWNreS1jb250YWluZXIgKyAubC1tYWlue3Bvc2l0aW9uOiBzdGF0aWM7fVxyXG5cclxuLmwtd3JhcHBlcntcclxuICBiYWNrZ3JvdW5kOiAkYmctY29sb3I7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1pbi1oZWlnaHQ6IDElO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICYubWVudS1pcy1vcGVue1xyXG4gICAgJjphZnRlcntcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIG1haW57XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB9XHJcbiAgQGluY2x1ZGUgZGlzcGxheUZsZXg7XHJcbiAgQGluY2x1ZGUgZmxleERpcmVjdGlvbkNvbCgpO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIC5sLW1haW57XHJcbiAgICAvL0BpbmNsdWRlIGZsZXgxLTEtMTAwO1xyXG4gICAgZmxleDogMTtcclxuICAgIC13ZWJraXQtZmxleDogMSAxIGF1dG87XHJcbiAgICAtbXMtZmxleDogMSAxIGF1dG87XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDtcclxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2g7XHJcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xyXG4gIH1cclxufVxyXG5cclxuLmwtaGVhZGVye1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4ubC1mb290ZXJ7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLmFzaWRlLW1haW4tbWVudXtcclxuICAmLmlzLWFjdGl2ZXtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIC8vb3BhY2l0eTogMTtcclxuICB9XHJcbiAgd2lsbC1jaGFuZ2U6IC13ZWJraXQtdHJhbnNmb3JtO1xyXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHotaW5kZXg6IDE5OTtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuOSk7XHJcbiAgLy9iYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiAzMjBweDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgcGFkZGluZzogM3JlbTtcclxuICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgLy9vcGFjaXR5OiAwO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcclxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSksXHJcbiAgdmlzaWJpbGl0eSAwLjVzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKSxcclxuICBvcGFjaXR5IC40cyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XHJcbiAgLy90cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsMCwwKTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLDAlLDApO1xyXG5cclxuICAvLyAgbmF2XHJcbiAgJl9fbmF2e1xyXG4gICAgcGFkZGluZy1yaWdodDogMTVweDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgZm9udC1zaXplOiAxLjg3NXJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgQGluY2x1ZGUgZGlzcGxheUZsZXg7XHJcbiAgICBAaW5jbHVkZSBhbGlnbkl0ZW1zQ2VudGVyO1xyXG4gICAgLy9AaW5jbHVkZSBqdXN0aWZ5Q29udGVudENlbnRlcjtcclxuICAgIHVse1xyXG4gICAgICAvL3RleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIG1hcmdpbjogLjJlbSAwO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICY6bGFzdC1jaGlsZHtcclxuICAgICAgICAgIGF7bWFyZ2luLWJvdHRvbTogMDt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF7XHJcbiAgICAgICAgICAmOmhvdmVyLCAmLmlzLWFjdGl2ZXtcclxuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XHJcbiAgICAgICAgICAvL2xldHRlci1zcGFjaW5nOiAwLjJlbTtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJ2aDtcclxuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgICAvL2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmO1xyXG4gICAgICAgICAgb3V0bGluZTogMDtcclxuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZTtcclxuXHJcbiAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpe1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDI2cHg7XHJcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA0MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKXtcclxuICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KXtcclxuICAgICAgICAgICAgLy90ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDV2dztcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMi41dmg7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA0MDBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKXtcclxuICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX193cnB7XHJcbiAgICBwYWRkaW5nLXRvcDogNnJlbTtcclxuICB9XHJcblxyXG4gIC5iLWhlYWRlcl9fc2VhcmNoe1xyXG4gICAgZGlzcGxheTogYmxvY2shaW1wb3J0YW50O1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMnZoO1xyXG5cclxuICAgICYtZm9ybXtcclxuICAgICAgLmJ0bi1zZWFyY2h7XHJcbiAgICAgICAgJjpob3Zlcntjb2xvcjogJGNvbG9yLXNlY29uZGFyeTt9XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZW51LWljb24uYnVyZ2Vye1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDEuNXJlbTt0b3A6MS41cmVtO1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgICBzcGFue2NvbG9yOiAjZmZmO31cclxuICAgICY6YmVmb3JlLCY6YWZ0ZXJ7Y29sb3I6ICNmZmY7fVxyXG4gIH1cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpe1xyXG4gICAgJl9fbmF2e1xyXG4gICAgICBwYWRkaW5nLXRvcDogNXJlbTtcclxuICAgIH1cclxuICB9XHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpe1xyXG4gICAgJl9fbmF2e1xyXG4gICAgICBwYWRkaW5nLXRvcDogMnZoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5vdmVybGF5e1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGxlZnQ6IDA7XHJcbiAgdG9wOiAwO1xyXG4gIHotaW5kZXg6IDE5OTtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBvcGFjaXR5OiAwO1xyXG4gIEBhdC1yb290IC5tZW51LWlzLW9wZW4gJntcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xyXG4gIH1cclxuICBAYXQtcm9vdCAuc2lkZWJhci1pcy1vcGVuICZ7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAwLjVzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcclxuICB9XHJcbn1cclxuIiwiLmItaGVhZGVye1xyXG4gICYubS1maXhlZHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHotaW5kZXg6IDk5O1xyXG4gICAgbGVmdDogMDt0b3A6MDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAuYi1oZWFkZXJfX3dycD4ucm93e1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG4gICYubS1hYnN7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBsZWZ0OjA7dG9wOjA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHotaW5kZXg6IDk5O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgLmItbG9nb3tcclxuICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAkYmctY29sb3I7XHJcbiAgICAgIC8vYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBsaWdodGVuO1xyXG4gICAgfVxyXG4gICAgLmItaGVhZGVyX193cnA+LnJvd3tcclxuICAgICAgLy9tYXgtd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAuc3RpY2t5LCYuc3RpY2t5e1xyXG4gICAgJi5pcy1zdHVja3tcclxuICAgICAgLy9iYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmctaGVhZGVyO1xyXG4gICAgICAvL3BhZGRpbmc6IDA7XHJcbiAgICAgIC5idXJnZXJ7XHJcbiAgICAgICAgLy9zcGFuLCY6YmVmb3JlLCY6YWZ0ZXJ7Y29sb3I6ICRjb2xvci10ZXh0O31cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuM3MgZWFzZSwgcGFkZGluZyAuM3MgZWFzZTtcclxuICB9XHJcblxyXG4gIC8vZm9udC1zaXplOiAxMHB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3ItYmctaGVhZGVyO1xyXG4gIGNvbG9yOiAkY29sb3ItaGVhZGVyO1xyXG5cclxuICAqe1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkZXI7XHJcbiAgfVxyXG5cclxuICAmX19jb250YWluZXIsLmNvbnRhaW5lciwmX19yb3d7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAmX193cnB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmctdG9wOiAxLjlyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMS45cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fcm93e1xyXG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgKyAzcmVtKTtcclxuICB9XHJcblxyXG4gICZfX21lbnV7XHJcbiAgICAvL3RleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIC8vZmxleDogMTtcclxuICB9XHJcblxyXG4gIC5iLWxvZ297XHJcbiAgICBpbWd7XHJcbiAgICAgIG1heC13aWR0aDogMTkuNXJlbTtcclxuICAgIH1cclxuICAgIC5fc2hvdy1vbi1zY3JvbGx7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAuX3Nob3ctb24tbWVudXtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX21lbnUtbmF2e1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgID51bHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICBmb250LXNpemU6IDEuNnJlbTtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuXHJcbiAgICAgID5saXtcclxuXHJcbiAgICAgICAgJi5jdXJyZW50LCAmLmlzLWFjdGl2ZSwgJjpob3ZlcntcclxuICAgICAgICAgID5he1xyXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWFnaWMtaXRlbXtcclxuICAgICAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICBsZWZ0OiAwLjVyZW07XHJcbiAgICAgICAgICAgIHRvcDogLTEuOHJlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDIuOHJlbTtoZWlnaHQ6IDIuOHJlbTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL21hZ2ljLnN2ZykgNTAlIDUwJSBuby1yZXBlYXQ7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgICA+YXtcclxuICAgICAgICAgICAgICAmOmFmdGVye1xyXG4gICAgICAgICAgICAgICAgY29udGVudDonJztcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgLy93aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgIGxlZnQ6MS41cmVtO3JpZ2h0OiAxLjVyZW07XHJcbiAgICAgICAgICAgICAgICBib3R0b206LS41cmVtO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgICAgLy90ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgID4gYXtcclxuICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICA+IGF7XHJcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXtcclxuICAgICAgICAgIHNwYW57XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDgwJTtcclxuICAgICAgICAgICAgb3BhY2l0eTogLjg7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICAvL2ZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgICAgIC8vc3Bhbntmb250LXdlaWdodDogbm9ybWFsO31cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBpbmNsdWRlIG5vZGVjb3I7XHJcbiAgICAgICAgICBjb2xvcjogIzAwMDtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL21hcmdpbi1sZWZ0OiA1cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19hdXRoe1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgYXtcclxuICAgICAgY29sb3I6ICRjb2xvci1ncmV5MjtcclxuICAgICAgLy9jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmJ1cmdlcntcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMi43cmVtO1xyXG4gICAgcmlnaHQ6IDNyZW07XHJcbiAgfVxyXG5cclxuICAvLyB0aGVtZVxyXG4gICYtLXllbGxvd3tcclxuXHJcbiAgICBjb2xvcjogI2ZmZjtcclxuXHJcbiAgICAubWVudS1pY29uLmJ1cmdlcntcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICY6YmVmb3JlLCAmOmFmdGVye1xyXG4gICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICB9XHJcbiAgICAgICp7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYi1oZWFkZXJ7XHJcbiAgICAgICZfX2F1dGh7XHJcbiAgICAgICAgYXtcclxuICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICZfX21lbnUtbmF2e1xyXG4gICAgICAgID51bHtcclxuICAgICAgICAgID5saXtcclxuICAgICAgICAgICAgJi5pcy1hY3RpdmUsICYuY3VycmVudCwgJjpob3ZlcntcclxuICAgICAgICAgICAgICAmPiBhe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgICAgID4gYXtcclxuICAgICAgICAgICAgICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6Jyc7XHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgIC8vd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgIGxlZnQ6MS41cmVtO3JpZ2h0OiAxLjVyZW07XHJcbiAgICAgICAgICAgICAgICAgIGJvdHRvbTotLjVyZW07XHJcbiAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAgICAgLy90ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5tYWdpYy1pdGVte1xyXG4gICAgICAgICAgICAgID4gYXtcclxuICAgICAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID4gYXtcclxuICAgICAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAgICAgICAvL3BhZGRpbmctdG9wOiAuNXJlbTtcclxuICAgICAgICAgICAgICAvL3BhZGRpbmctYm90dG9tOiAuNXJlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJltjbGFzcyo9XCJuYXYtXCJde1xyXG4gICAgJi5tLWFic3tcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG5cclxuICAgICAgJi5scC1oZWFkZXJ7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgLmItbG9nbyBpbWd7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICYuX3Nob3ctb24tc2Nyb2xse1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgdG9wOjA7bGVmdDowO1xyXG5cclxuICAgIC5iLWxvZ297XHJcbiAgICAgIGltZ3tcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICYuX3Nob3ctb24tc2Nyb2xse1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm1lbnUtaWNvbi5idXJnZXJ7XHJcbiAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICAmOmJlZm9yZSwgJjphZnRlcntcclxuICAgICAgICBjb2xvcjogIzAwMDtcclxuICAgICAgfVxyXG4gICAgICAqe1xyXG4gICAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBAYXQtcm9vdCAuaXMtbWVudS1vcGVuICZ7XHJcbiAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgJjpiZWZvcmUsICY6YWZ0ZXJ7XHJcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICB9XHJcbiAgICAgICAgKntcclxuICAgICAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLWhlYWRlcl9fYXV0aHtcclxuICAgICAgYXtcclxuICAgICAgICBjb2xvcjogIzg4ODg4ODtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLWhlYWRlcl9fbWVudS1uYXZ7XHJcbiAgICAgIHVsPmxpe1xyXG5cclxuICAgICAgICAmLmlzLWFjdGl2ZXtcclxuICAgICAgICAgIGF7XHJcbiAgICAgICAgICAgICY6YWZ0ZXJ7Y29sb3I6ICRjb2xvci1vcmFuZ2U7fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJi5tYWdpYy1pdGVte1xyXG4gICAgICAgICAgICBhe1xyXG4gICAgICAgICAgICAgICY6YWZ0ZXJ7Y29sb3I6ICRjb2xvci1vcmFuZ2U7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLm1hZ2ljLWl0ZW17XHJcblxyXG4gICAgICAgICAgYXtcclxuICAgICAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgICAgICAvL2NvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhe1xyXG4gICAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2xvcjogIzAwMDAwMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgIC5jb2x1bW46bGFzdC1vZi10eXBle1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA2cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICZfX2F1dGgsJl9fY2FsbGJhY2t7ZGlzcGxheTogbm9uZTt9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICAuYnVyZ2Vye3JpZ2h0OiAyMHB4O31cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmlzLW1lbnUtb3BlbntcclxuXHJcbiAgb3ZlcmZsb3c6IGhpZGRlbiFpbXBvcnRhbnQ7XHJcblxyXG4gIC5iLWhlYWRlcntcclxuXHJcbiAgICAmW2NsYXNzKj1cIm5hdi1cIl17XHJcbiAgICAgICYubS1hYnN7XHJcbiAgICAgICAgYmFja2dyb3VuZDogIzIyMjIyMjtcclxuICAgICAgfVxyXG4gICAgICBiYWNrZ3JvdW5kOiAjMjIyMjIyO1xyXG4gICAgICAuYi1oZWFkZXJfX21lbnUtbmF2e1xyXG4gICAgICAgIHVsPmxpe1xyXG4gICAgICAgICAgJjpub3QoLm1hZ2ljLWl0ZW0pe1xyXG4gICAgICAgICAgICBhe1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAjZmZmZjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXtcclxuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmX19sb2dve1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgIH1cclxuXHJcbiAgICAuYi1sb2dve1xyXG4gICAgICBpbWd7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAmLl9zaG93LW9uLXNjcm9sbHtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYuX3Nob3ctb24tbWVudXtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci15ZWxsb3c7XHJcbiAgICBiYWNrZ3JvdW5kOiAjMjIyMjIyO1xyXG4gICAgYm94LXNoYWRvdzogJGJ0bi1zaGFkb3c7XHJcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgbWF4LWhlaWdodDogMTAwdmg7XHJcblxyXG4gICAgLmNvbHVtbjpsYXN0LW9mLXR5cGV7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5iLWhlYWRlcl9fbWVudXtcclxuICAgIGRpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcclxuICAgIC8vcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgLy90b3A6IDEwMCU7XHJcbiAgICBsZWZ0OjA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci15ZWxsb3c7XHJcbiAgICBiYWNrZ3JvdW5kOiAjMjIyMjIyO1xyXG4gIH1cclxuICAubWVudS1pY29uLmJ1cmdlcntcclxuICAgICY6YmVmb3JlLCY6YWZ0ZXJ7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgfVxyXG4gICAgc3BhbntcclxuICAgICAgJjpiZWZvcmUsJjphZnRlcntcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgfVxyXG4gICAgICBjb2xvcjogI2ZmZjtcclxuICAgIH1cclxuICB9XHJcbiAgLmItaGVhZGVyX19tZW51LW5hdntcclxuICAgIHVsPmxpe1xyXG4gICAgICBhe1xyXG4gICAgICAgIGNvbG9yOiAjZmZmZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAuYi1oZWFkZXJfX2F1dGh7XHJcbiAgICBkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGZvbnQtc2l6ZTogMi40cmVtO1xyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI0cHgpIHtcclxuICAgICAgZm9udC1zaXplOiA1dnc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5iLWhlYWRlcl9fY2FsbGJhY2t7XHJcbiAgICBkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbi10b3A6IDF2aDtcclxuICAgIC5idG57XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI0cHgpIHtcclxuICAgICAgICBmb250LXNpemU6IDV2dztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAuYi1oZWFkZXJfX3dycHtcclxuICAgIHBhZGRpbmctYm90dG9tOiAzMHB4O1xyXG4gIH1cclxuICAuYi1oZWFkZXJfX2F1dGgtaXRte1xyXG4gICAgcGFkZGluZy10b3A6IC41dmg7XHJcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAuNXZoO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDFyZW07XHJcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xyXG4gICAgYXtcclxuICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgfVxyXG4gIH1cclxuICAuYi1oZWFkZXJfX21lbnUtbmF2e1xyXG4gICAgcGFkZGluZy10b3A6IDNyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgIHVse1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBsaXtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBtaW4taGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAuNXZoO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAuNXZoO1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xyXG4gICAgICAgICYubWFnaWMtaXRlbXtcclxuICAgICAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgICAgICB0b3A6IC0wLjc1cmVtO1xyXG4gICAgICAgICAgICBsZWZ0OiAwLjVyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF7XHJcbiAgICAgICAgICBmb250LXNpemU6IDIuNHJlbTtcclxuICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNHB4KSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNXZ3O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59IiwiLmItZm9vdGVye1xyXG5cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBiYWNrZ3JvdW5kOiAkY29sb3ItYmctZm9vdGVyO1xyXG4gIGNvbG9yOiAkY29sb3ItZm9vdGVyO1xyXG4gIGZvbnQtc2l6ZTogJGZvb3Rlci1zaXplO1xyXG4gIHBhZGRpbmc6ICRmb290ZXItcGFkZGluZy15IDA7XHJcblxyXG4gICZfX2NvbnRhaW5lciwuY29udGFpbmVye1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgJl9fcm93e1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgcHtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICB9XHJcblxyXG4gICp7XHJcbiAgICAvL2NvbG9yOiAkY29sb3ItZm9vdGVyO1xyXG4gIH1cclxuXHJcbiAgYXtjb2xvcjpjdXJyZW50Q29sb3I7fVxyXG5cclxuICAmX19uYXZ7XHJcbiAgICB1bHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07XHJcbiAgICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbTtcclxuICAgICAgbGl7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICAgIGF7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19zb2NpYWx7XHJcblxyXG4gICAgLnNvY2lhbC1pbmxpbmV7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogM3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX21lbnV7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAuc29jaWFsLWlubGluZXtcclxuICAgICAgJjpmaXJzdC1vZi10eXBle1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3JlbTtcclxuICAgICAgICBtYXJnaW4tbGVmdDowO1xyXG4gICAgICB9XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAzcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNvY2lhbC1pbmxpbmV7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogLjZyZW07XHJcbiAgICBhe1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6IC43O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCl7XHJcbiAgICAmX19jb3B5e1xyXG4gICAgICAmOmJlZm9yZXtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDowcmVtO1xyXG4gICAgICAgIHRvcDowO1xyXG4gICAgICAgIHdpZHRoOiA0cmVtO2hlaWdodDogNHJlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2xvZ28tZm9vdGVyLnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcbiAgICAgIH1cclxuICAgICAgJi5jb2x1bW57XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA2cmVtO1xyXG4gICAgICB9XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogNnJlbTtcclxuICAgICAgbWluLWhlaWdodDogNHJlbTtcclxuXHJcblxyXG4gICAgICAmLl9uby1sb2dve1xyXG4gICAgICAgICY6YmVmb3Jle1xyXG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJi5jb2x1bW57XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDByZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgICZfX2NvcHksJl9fbWVudXtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG4gICAgJl9fbWVudXtcclxuICAgICAgb3JkZXI6IC0xO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fbmF2e1xyXG4gICAgICAmOmJlZm9yZXtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDotNnJlbTtcclxuICAgICAgICB0b3A6MDtcclxuICAgICAgICB3aWR0aDogNHJlbTtoZWlnaHQ6IDRyZW07XHJcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9sb2dvLWZvb3Rlci5zdmcpIDAgMCBuby1yZXBlYXQ7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgICB9XHJcbiAgICAgIG9yZGVyOiAtMTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBtYXJnaW4tbGVmdDogNnJlbTtcclxuICAgIH1cclxuXHJcbiAgICAuc29jaWFsLWlubGluZXtcclxuICAgICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAvL29yZGVyOiBsYXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIC8vcGFkZGluZy1ib3R0b206IDhyZW07XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICAmX19jb3B5e1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgfVxyXG4gICAgJl9fbWVudXtcclxuICAgICAgLnNvY2lhbC1pbmxpbmV7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICAmOmZpcnN0LW9mLXR5cGV7XHJcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAmX19uYXZ7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcclxuICAgICAgdWx7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICBAaW5jbHVkZSBjb2x1bW4tY291bnQoMik7XHJcbiAgICAgICAgbGl7XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAuNXJlbTtcclxuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAuNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiQGltcG9ydCBcImZvcm1cIjtcclxuLy9AaW1wb3J0IFwiY2hlY2tib3hcIjtcclxuLy9AaW1wb3J0IFwicmFkaW9cIjsiLCIkaW5wdXQtd2lkdGg6IDE3cHg7XHJcbiRpbnB1dC1oZWlnaHQ6IDRyZW07XHJcbiRsYWJlbC1wYWRkaW5nOiAkaW5wdXQtd2lkdGggKyA4cHg7XHJcbiRyYWRpby1lbXB0eS1jb2xvcjogJGNvbG9yLWJvcmRlcjtcclxuJHJhZGlvLWZpbGwtY29sb3I6ICRjb2xvci1ibHVlO1xyXG4kaW5wdXQtZGlzYWJsZWQtY29sb3I6ICRjb2xvci1ncmV5O1xyXG4kaW5wdXQtZGlzYWJsZWQtc29saWQtY29sb3I6ICRjb2xvci1ncmV5O1xyXG4kaW5wdXQtYmctY29sb3I6ICRjb2xvci1ib3JkZXI7XHJcbiRzZWNvbmRhcnktY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcblxyXG4vLyBUZXh0IGlucHV0c1xyXG5pbnB1dFt0eXBlPXRleHRdLFxyXG5pbnB1dFt0eXBlPXBhc3N3b3JkXSxcclxuaW5wdXRbdHlwZT1lbWFpbF0sXHJcbmlucHV0W3R5cGU9dXJsXSxcclxuaW5wdXRbdHlwZT10aW1lXSxcclxuaW5wdXRbdHlwZT1kYXRlXSxcclxuaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sXHJcbmlucHV0W3R5cGU9dGVsXSxcclxuaW5wdXRbdHlwZT1udW1iZXJdLFxyXG5pbnB1dFt0eXBlPXNlYXJjaF0sXHJcbmlucHV0W3R5cGU9ZmlsZV0sXHJcbnRleHRhcmVhLC53cGNmNy1mb3JtLWNvbnRyb2w6bm90KC53cGNmNy1jaGVja2JveCk6bm90KC53cGNmNy1yYWRpbylcclxue1xyXG4gIC8vIEdlbmVyYWwgU3R5bGVzXHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItYm9yZGVyLWlucHV0O1xyXG4gIC8vYm9yZGVyOiBtZWRpdW0gbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1iYXNlO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xyXG4gIGxpbmUtaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGNvbG9yOiAkY29sb3ItdGV4dDtcclxuICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWxpZ2h0O1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgcGFkZGluZzogMCAxLjJyZW07XHJcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcclxuICB0cmFuc2l0aW9uOiBib3JkZXIgLjNzIGVhc2UsIGJveC1zaGFkb3cgLjNzIGVhc2U7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG4gIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgY29sb3I6ICRjb2xvci1ib3JkZXItaW5wdXQ7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcclxuICAgIC8vZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIH1cclxuICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAvL2JveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICB9XHJcbiAgJi5pbmxpbmV7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICB9XHJcbiAgJi5pcy1lcnJvciwgJi5oYXMtZXJyb3J7XHJcbiAgICBjb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcmVkLWZvcm07XHJcbiAgICAucmVxdWlyZWQtaWNue29wYWNpdHk6IDE7fVxyXG4gIH1cclxuICBAYXQtcm9vdCAuaGFzLWVycm9yICZ7XHJcbiAgICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICAgIC8vYm9yZGVyOiAxcHggc29saWQgI2UyZTJlMjtcclxuICAgIH1cclxuICAgIC5yZXF1aXJlZC1pY257b3BhY2l0eTogMTt9XHJcbiAgICAvL2JvcmRlci1jb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gIH1cclxuICAmOmZvY3VzLCY6YWN0aXZle1xyXG4gICAgJi5pcy1lcnJvciwgJi5oYXMtZXJyb3J7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gICAgfVxyXG4gICAgLy9ib3gtc2hhZG93OiBub25lO1xyXG4gICAgLy9ib3JkZXI6IG1lZGl1bSBub25lO1xyXG4gICAgLy9ib3JkZXItY29sb3I6ICNmZmY7XHJcbiAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gIH1cclxuXHJcbiAgJjppbnZhbGlkOmZvY3Vze1xyXG4gICAgKyAucmVxdWlyZWQtaWNue1xyXG4gICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gICAgLy9jb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gICAgLy9ib3JkZXItY29sb3I6ICRjb2xvci1yZWQtZm9ybTtcclxuICB9XHJcbiAgJjppbnZhbGlkOmFjdGl2ZXtcclxuICAgIC8vYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICB9XHJcbiAgJjp2YWxpZDpmb2N1cywmOmZvY3Vze1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICB9XHJcblxyXG4gICYuaXMtZXJyb3J7XHJcbiAgICAmOmZvY3Vze1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICB9XHJcbiAgICBAaW5jbHVkZSBmb3JtLXBsYWNlaG9sZXIoKXtcclxuICAgICAgLy9mb250LXNpemU6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmlucHV0LXNtYWxse1xyXG4gICAgd2lkdGg6IDEzcmVtO1xyXG4gICAgbWF4LXdpZHRoOiAxM3JlbTtcclxuICB9XHJcblxyXG4gIEBhdC1yb290IC5yb3ctZmllbGQgJntcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgZm9udC1zaXplOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgQGV4dGVuZCAlbW9iaWxlLWZvcm07XHJcblxyXG4vL1xyXG59XHJcblxyXG5mb3Jte1xyXG4gIEBleHRlbmQgJW1vYmlsZS1mb3JtO1xyXG59XHJcblxyXG4lbW9iaWxlLWZvcm17XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICBpbnB1dFt0eXBlPXRleHRdLFxyXG4gICAgaW5wdXRbdHlwZT1wYXNzd29yZF0sXHJcbiAgICBpbnB1dFt0eXBlPWVtYWlsXSxcclxuICAgIGlucHV0W3R5cGU9dXJsXSxcclxuICAgIGlucHV0W3R5cGU9dGltZV0sXHJcbiAgICBpbnB1dFt0eXBlPWRhdGVdLFxyXG4gICAgaW5wdXRbdHlwZT1kYXRldGltZS1sb2NhbF0sXHJcbiAgICBpbnB1dFt0eXBlPXRlbF0sXHJcbiAgICBpbnB1dFt0eXBlPW51bWJlcl0sXHJcbiAgICBpbnB1dFt0eXBlPXNlYXJjaF0sXHJcbiAgICBpbnB1dFt0eXBlPWZpbGVdLFxyXG4gICAgdGV4dGFyZWEsLndwY2Y3LWZvcm0tY29udHJvbDpub3QoLndwY2Y3LWNoZWNrYm94KTpub3QoLndwY2Y3LXJhZGlvKXtcclxuICAgICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuaW5wdXQ6bm90KFt2YWx1ZT1cIlwiXSkge1xyXG4gIC8vYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuOjotbXMtcmV2ZWFsIHtcclxuICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuaW5wdXRbdHlwZT1maWxlXXtcclxuICAvL3BhZGRpbmctdG9wOiAxLjFyZW07XHJcbiAgdGV4dC1pbmRlbnQ6IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgY29sb3I6ICRjb2xvci1ibHVlO1xyXG4gIEBhdC1yb290IC50b3VjaCAme1xyXG4gICAgLy9AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbWVkaXVtLXNjcmVlbil7XHJcbiAgICAvLyAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAvLyAgcGFkZGluZy10b3A6IDhweDtcclxuICAgIC8vICB0ZXh0LWluZGVudDogLThweDtcclxuICAgIC8vfVxyXG4gIH1cclxufVxyXG50ZXh0YXJlYXtcclxuICBwYWRkaW5nOiAxLjRyZW07XHJcbiAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgcmVzaXplOiBub25lO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjE7XHJcbiAgbWluLWhlaWdodDogMjEwcHg7XHJcbn1cclxuXHJcbi5hdXRvLXdpZHRoe1xyXG4gIHdpZHRoOiBhdXRvO1xyXG59XHJcblxyXG5pbnB1dFt0eXBlPXRleHRdOjotbXMtY2xlYXIge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcblxyXG5sYWJlbHtcclxuICAmLmlzLWVycm9ye1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjb2xvcjogJGNvbG9yLXJlZC1mb3JtO1xyXG4gICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgfVxyXG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG59XHJcblxyXG4ubGFiZWx7XHJcbiAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbn1cclxuXHJcbi5zZWxlY3Qtd3Jwe1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAvL2JhY2tncm91bmQ6IHVybCguLi9pbWcvKTtcclxuICAmOmJlZm9yZXtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgY29udGVudDogXCJcXGU5MDFcIjtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDFyZW07XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBjb2xvcjogIzAwMDtcclxuICAgIC8vQGluY2x1ZGUgaWNvbm1vb247XHJcblxyXG4gICAgQGluY2x1ZGUgZGlyZWN0aW9uKGx0cil7XHJcbiAgICAgIGxlZnQ6IGF1dG87XHJcbiAgICAgIHJpZ2h0OiAxcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0e1xyXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1ib3JkZXItaW5wdXQ7XHJcbiAgICAvL2JvcmRlcjogbWVkaXVtIG5vbmU7XHJcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1iYXNlO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xyXG4gICAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcclxuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIHBhZGRpbmc6IDAgMS4ycmVtO1xyXG5cclxuICAgIHBhZGRpbmctbGVmdDogNHJlbTtcclxuICAgIEBpbmNsdWRlIGRpcmVjdGlvbihsdHIpe1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEuMnJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogNHJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5lcnJvci1tZXNzYWdle1xyXG4gIGNvbG9yOiByZWQ7XHJcbiAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XHJcbiAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcclxufVxyXG5cclxuLmFwcC1jYWxsYmFjay1mb3Jte1xyXG4gIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKSwud3BjZjctZm9ybS1jb250cm9sOm5vdCgud3BjZjctY2hlY2tib3gpOm5vdCgud3BjZjctcmFkaW8pe1xyXG4gICAgJjpob3ZlciwmOmZvY3Vze1xyXG4gICAgICAvL2JvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICAuYnRue1xyXG4gICAgLy9tYXJnaW4tdG9wOiAxcmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIHVwbG9hZCBidXR0b24gc3R5bGVzXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuLmZpbGUtdXBsb2FkIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cclxuICAmX19sYWJlbHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgLy9wYWRkaW5nOiAxZW0gMmVtO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG5cclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvaWNvbi9pY29uYXR0YWNoLnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgICB3aWR0aDogMjBweDtcclxuICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweDtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9faW5wdXQge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgd2lkdGg6MDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuI2dmb3JtX3dyYXBwZXJfMyAuZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2UsLmdmb3JtX3dyYXBwZXIgLmdmb3JtX2NvbmZpcm1hdGlvbl9tZXNzYWdlIHtcclxuICBmb250LXNpemU6IDIycHg7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gIHBhZGRpbmc6IDAgMjBweCAwIDIwcHg7XHJcbn1cclxuXHJcblxyXG5zZWN0aW9ue1xyXG5cclxuICAuYXBwLWlubGluZS1mb3Jte1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcclxuICAgIC5nZmllbGR7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNnZm9ybV93cmFwcGVyXzMuZ2Zvcm1fd3JhcHBlciwuZ2Zvcm1fd3JhcHBlcntcclxuICAgIC5nZm9ybV9idXR0b24sLmJ1dHRvbntcclxuICAgICAgLy9sZXR0ZXItc3BhY2luZzogLS4yMnB4IWltcG9ydGFudDtcclxuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZTtcclxuICAgICAgY29sb3I6ICNmZmYhaW1wb3J0YW50O1xyXG4gICAgICAvL3BhZGRpbmc6IDAuN2VtIDEuNzM4ZW0haW1wb3J0YW50O1xyXG4gICAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtIDEuMnJlbSFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweCFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAhaW1wb3J0YW50O1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeSFpbXBvcnRhbnQ7XHJcbiAgICAgIG1pbi13aWR0aDogMTYwcHg7XHJcbiAgICAgIG1heC13aWR0aDogMjQwcHg7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC5nZmllbGR7XHJcbiAgICAgICYgLmdmaWVsZF9lcnJvcntcclxuXHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG5cclxuICAgICAgICBAaW5jbHVkZSBmbGV4Rmxvd1Jvd1dyYXA7XHJcblxyXG4gICAgICAgIC52YWxpZGF0aW9uX21lc3NhZ2V7XHJcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcbiAgICAgICAgICBjb2xvcjogcmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pe1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiByZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmdmaWVsZF9kZXNjcmlwdGlvbntjb2xvcjogJGNvbG9yLWdyZXkyO31cclxuXHJcbiAgICAuZ2ZpZWxkLmZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93e1xyXG4gICAgICAuZ2lucHV0X2NvbnRhaW5lcntcclxuICAgICAgICBtYXgtd2lkdGg6IDUwMHB4O1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU2N3B4KXtcclxuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5RmxleDtcclxuICAgICAgICBAaW5jbHVkZSBhbGlnbkl0ZW1zQ2VudGVyO1xyXG4gICAgICAgIC5nZmllbGRfbGFiZWx7XHJcbiAgICAgICAgICBmbGV4OiAwIDAgMjIwcHg7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IDIyMHB4O1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuZ2lucHV0X2NvbnRhaW5lcntcclxuICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICAgICAgZmxleDogYXV0bztcclxuICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjIwcHgpO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZ2ZpZWxkX2xhYmVse1xyXG4gICAgICBjb2xvcjogIzI1MzM0MyFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGUhaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDE4cHghaW1wb3J0YW50O1xyXG4gICAgICBmb250LXdlaWdodDogNjAwIWltcG9ydGFudDtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLmdpbnB1dF9jb250YWluZXJ7XHJcbiAgICAgIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKXtcclxuICAgICAgICBib3JkZXItY29sb3I6ICNBQUFBQUE7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvci10ZXh0IWltcG9ydGFudDtcclxuICAgICAgICBmb250LXNpemU6IDEuNnJlbSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbCFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZiFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtIWltcG9ydGFudDtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAycmVtIWltcG9ydGFudDtcclxuICAgICAgICBoZWlnaHQ6IDVyZW07XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMCFpbXBvcnRhbnQ7XHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICAgICAgY29sb3I6ICNBQUFBQUE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmRyb3Bib3gtZHJvcGluLWJ0bntcclxuICAgICAgY29sb3I6ICMwMEE2RDAhaW1wb3J0YW50O1xyXG4gICAgICBib3JkZXI6IG5vbmUhaW1wb3J0YW50O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwIWltcG9ydGFudDtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZSFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMThweCFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGUgIWltcG9ydGFudDtcclxuICAgICAgcGFkZGluZzogMCFpbXBvcnRhbnQ7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWwhaW1wb3J0YW50O1xyXG4gICAgICBoZWlnaHQ6IDUwcHghaW1wb3J0YW50O1xyXG4gICAgICBsaW5lLWhlaWdodDogNTBweCFpbXBvcnRhbnQ7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgICAgIC5kcm9waW4tYnRuLXN0YXR1c3tcclxuICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vaWNvbmRyb3Bib3guc3ZnKSAwIDAgbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluIWltcG9ydGFudDtcclxuICAgICAgICB3aWR0aDogMjBweCFpbXBvcnRhbnQ7XHJcbiAgICAgICAgaGVpZ2h0OiAyMXB4IWltcG9ydGFudDtcclxuICAgICAgICBtYXJnaW46IDAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4IWltcG9ydGFudDtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogLTJweCFpbXBvcnRhbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZ2lucHV0X2NvbnRhaW5lcl9maWxldXBsb2Fke1xyXG4gICAgICBAaW5jbHVkZSBkaXNwbGF5RmxleDtcclxuICAgICAgQGluY2x1ZGUgYWxpZ25JdGVtc0NlbnRlcjtcclxuICAgICAgQGluY2x1ZGUgZmxleEZsb3dSb3dXcmFwO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG5cclxuICAgICAgLmdmaWVsZF9kZXNjcmlwdGlvbntcclxuICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS10aXRsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgPiBkaXZ7XHJcbiAgICAgICAgJjpsYXN0LW9mLXR5cGV7bWFyZ2luLXJpZ2h0OiAwO31cclxuICAgICAgICAmOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OiAwO31cclxuICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpe1xyXG4gICAgICAgICAgJi5kcm9wYm94LXVwbG9hZHttYXJnaW4tcmlnaHQ6IDA7fVxyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNTRweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmRyb3Bib3gtdXBsb2Fke1xyXG4gICAgICAgICY6aG92ZXJ7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5kcm9wYm94LWRyb3Bpbi1idG57XHJcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwIWltcG9ydGFudDtcclxuICAgICAgICAgIC5kcm9waW4tYnRuLXN0YXR1c3tkaXNwbGF5OiBpbmxpbmUtYmxvY2s7fVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAuZmlsZS11cGxvYWR7XHJcbiAgICAgICAgJl9fbGFiZWx7XHJcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICB6LWluZGV4OiA1O1xyXG4gICAgICAgIH1cclxuICAgICAgICAmX19pbnB1dHtcclxuICAgICAgICAgIC8vd2lkdGg6IDEwMCUhaW1wb3J0YW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAuZ2Zvcm1fZm9vdGVye1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4uZ2ZpZWxkLmFjY2VwdC1wb2xpY3l7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxuICBwYWRkaW5nOiAxcmVtIC41cmVtO1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG59XHJcblxyXG5cclxuLy8vYXBwLWZvcm0tbGFuZGluZy1yZXF1ZXN0LWRlbW9cclxuLmFwcC1mb3JtLWxhbmRpbmctcmVxdWVzdC1kZW1ve1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgLnJvd3tcclxuICAgICAgLmNvbHVtbntcclxuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYgKyAucm93e1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAzcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDExcHgpe1xyXG4gICAgICAuYnRuLXN1Ym1pdHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBwYWRkaW5nLXRvcDogLjdlbTtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjdlbTtcclxuICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufSIsIiRidXJnZXItd2lkdGg6IDMuN3JlbTtcclxuJGJ1cmdlci1oZWlnaHQ6IDNyZW07XHJcbiRidXJnZXItY29sb3I6ICRjb2xvci10ZXh0O1xyXG4kYnVyZ2VyLWNvbG9yLWhvdmVyOiAjNDg0YTQ4O1xyXG4kYnVyZ2VyLWNvbG9yLW9wZW46ICNmZmY7XHJcbiRidXJnZXItbGluZS1oZWlnaHQ6IDRweDtcclxuJGJ1cmdlci1saW5lLXJhZGl1czogNXB4O1xyXG5cclxuLm1lbnUtaWNvbiwubWVudS1pY29uLS1hc2lkZXtcclxuICBAYXQtcm9vdCAubWVudS1pcy1vcGVuICZ7XHJcbiAgICAmLmJ1cmdlcntcclxuICAgICAgc3BhbiwmOmJlZm9yZSwmOmFmdGVye2NvbG9yOiAkYnVyZ2VyLWNvbG9yLW9wZW47fVxyXG4gICAgfVxyXG4gICAgei1pbmRleDogMjAwO1xyXG4gICAgY29sb3I6ICRidXJnZXItY29sb3Itb3BlbjtcclxuICB9XHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KXtcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgICYuYnVyZ2Vye1xyXG4gICAgICAgIHNwYW4sJjpiZWZvcmUsJjphZnRlcntjb2xvcjogJGJ1cmdlci1jb2xvci1ob3Zlcjt0cmFuc2l0aW9uOiBjb2xvciAuM3MgZWFzZTt9XHJcbiAgICAgIH1cclxuICAgICAgY29sb3I6ICRidXJnZXItY29sb3ItaG92ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHdpZHRoOiAkYnVyZ2VyLXdpZHRoO1xyXG4gIGhlaWdodDogJGJ1cmdlci1oZWlnaHQ7XHJcbiAgYm9yZGVyOm5vbmU7XHJcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcclxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICBjdXJzb3I6cG9pbnRlcjtcclxuICAmLmxhcmdle1xyXG4gICAgd2lkdGg6IDJyZW07XHJcbiAgICBoZWlnaHQ6IDEuOHJlbTtcclxuICB9XHJcbiAgJjpmb2N1cyB7XHJcbiAgICBvdXRsaW5lOm5vbmU7XHJcbiAgfVxyXG4gICYuYnVyZ2VyIHtcclxuICAgICY6YWZ0ZXIsXHJcbiAgICAmOmJlZm9yZSxcclxuICAgIHNwYW4ge1xyXG4gICAgICBjb2xvcjogJGJ1cmdlci1jb2xvcjtcclxuICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgaGVpZ2h0OiRidXJnZXItbGluZS1oZWlnaHQ7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRidXJnZXItbGluZS1yYWRpdXM7XHJcbiAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gICAgICBkaXNwbGF5OmJsb2NrO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgJjphZnRlcixcclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDpcIlwiO1xyXG4gICAgICB0cmFuc2l0aW9uOiAwLjNzIHdpZHRoIDAuNHM7XHJcbiAgICB9XHJcblxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIHRvcDowO1xyXG4gICAgICBsZWZ0OjA7XHJcbiAgICAgIG1hcmdpbi10b3A6MDtcclxuICAgIH1cclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGJvdHRvbTowO1xyXG4gICAgICByaWdodDowO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOjA7XHJcbiAgICB9XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIHRvcDo1MCU7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0oJGJ1cmdlci1saW5lLWhlaWdodCkvMjtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xyXG4gICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgY29udGVudDpcIlwiO1xyXG4gICAgICAgIGJhY2tncm91bmQ6Y3VycmVudENvbG9yO1xyXG4gICAgICAgIHdpZHRoOjEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiRidXJnZXItbGluZS1oZWlnaHQ7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czokYnVyZ2VyLWxpbmUtcmFkaXVzO1xyXG4gICAgICAgIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6MDtcclxuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5vbiB7XHJcbiAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xyXG4gICAgICAgIHdpZHRoOjA7XHJcbiAgICAgICAgbGVmdDowO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XHJcbiAgICAgICAgd2lkdGg6MDtcclxuICAgICAgICByaWdodDowO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzcGFuIHtcclxuICAgICAgICB0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIHRyYW5zZm9ybSAwLjRzIDtcclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzIHRyYW5zZm9ybSAwLjRzIDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5iLXNpZGViYXItbWVudXtcclxuICAmX190aXRsZXtcclxuICAgICYuaXMtYWN0aXZle1xyXG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICB9XHJcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjMDAwO1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIG1hcmdpbi1ib3R0b206IDJweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICA+YXtcclxuICAgICAgJjpob3Zlcnt0ZXh0LWRlY29yYXRpb246IG5vbmU7fVxyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDEuOHJlbSAxcmVtO1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgY29sb3I6IGN1cnJlbnRDb2xvcjtcclxuICAgIH1cclxuICB9XHJcbiAgJl9fY29udGVudHtcclxuICAgIHBhZGRpbmc6IDJyZW07XHJcbiAgICAvL3BhZGRpbmctcmlnaHQ6IDJyZW07XHJcbiAgfVxyXG5cclxuICAmX19uYXZ7XHJcbiAgICBsaXtcclxuICAgICAgJjpub3QoOmxhc3Qtb2YtdHlwZSl7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgICAgfVxyXG4gICAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIH1cclxuICAgIC5pcy1hY3RpdmV7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm5hdmlnYXRpb257XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcblxyXG4gIC5zY3JlZW4tcmVhZGVyLXRleHR7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIG1hcmdpbjogMDtcclxuICB9XHJcbiAgLm5hdi1saW5rc3tcclxuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgfVxyXG4gIC5wYWdlLW51bWJlcnN7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IC40cmVtO1xyXG4gICAgcGFkZGluZy1yaWdodDogLjRyZW07XHJcbiAgfVxyXG4gIC5jdXJyZW50e2ZvbnQtd2VpZ2h0OiBib2xkO31cclxufVxyXG5cclxuLmhhcy1zdWJtZW51e1xyXG5cclxuICAmOmhvdmVye1xyXG4gICAgLnN1Ym1lbnUtd3Jwe1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICAgID5he1xyXG4gICAgICAvL2NvbG9yOiAkY29sb3IteWVsbG93IWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgLnN1Ym1lbnUtd3Jwe1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOjEwMCU7XHJcbiAgICBsZWZ0OjA7XHJcbiAgICB3aWR0aDogMTJyZW07XHJcblxyXG4gIH1cclxuXHJcbiAgLnN1Ym1lbnV7XHJcbiAgICBtaW4td2lkdGg6IDEyMHB4O1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIGJveC1zaGFkb3c6IDBweCA0cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcblxyXG4gICAgQGF0LXJvb3QgLmlzLW1lbnUtb3BlbiAme1xyXG4gICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICBtaW4td2lkdGg6IDA7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgPmxpe1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xyXG4gICAgICArIGxpe1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgIEBhdC1yb290IC5pcy1tZW51LW9wZW4gJntcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICA+YXtcclxuICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgY29sb3I6ICRjb2xvci1ncmV5MjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDExcHg7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTFweDtcclxuICAgICAgICBAYXQtcm9vdCAuYi1oZWFkZXItLXllbGxvdyAme1xyXG4gICAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgICAgY29sb3I6ICRjb2xvci1ncmV5MjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBAYXQtcm9vdCAuYi1oZWFkZXJbY2xhc3MqPW5hdi1dICZ7XHJcbiAgICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgIC5zdWJtZW51LXdycHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIC5zdWJtZW51e1xyXG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgICAgbGl7XHJcbiAgICAgICAgICAmLmlzLWFjdGl2ZXtcclxuICAgICAgICAgICAgYXtcclxuICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yLW9yYW5nZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXtcclxuICAgICAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufSIsIiRjbG9zZS13aWR0aDogNS4xcmVtO1xyXG4kY2xvc2UtbGluZS13aWR0aDogLjJyZW07XHJcblxyXG4uY2xvc2UtYnV0dG9ue1xyXG4gICY6YmVmb3JlLCY6YWZ0ZXJ7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDowO1xyXG4gICAgbGVmdDogKCRjbG9zZS13aWR0aC8yKSArICRjbG9zZS1saW5lLXdpZHRoLzI7XHJcbiAgICBoZWlnaHQ6ICRjbG9zZS13aWR0aCArICRjbG9zZS1saW5lLXdpZHRoLzI7XHJcbiAgICB3aWR0aDogJGNsb3NlLWxpbmUtd2lkdGg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItdGV4dDtcclxuICB9XHJcbiAgJjpiZWZvcmV7dHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO31cclxuICAmOmFmdGVye3RyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7fVxyXG5cclxuICAmOmhvdmVye1xyXG4gICAgb3BhY2l0eTogLjU7XHJcbiAgfVxyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBmb250LXNpemU6IDA7XHJcbiAgd2lkdGg6ICRjbG9zZS13aWR0aDtcclxuICBoZWlnaHQ6ICRjbG9zZS13aWR0aDtcclxuICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2UsIGJhY2tncm91bmQgLjNzIGVhc2U7XHJcbn1cclxuXHJcbmh0bWwuaXMtcmV2ZWFsLW9wZW4gYm9keXtcclxuICBoZWlnaHQ6IGF1dG87XHJcbn1cclxuXHJcbi5yZXZlYWwtb3ZlcmxheXtcclxuICAvL2Rpc3BsYXk6IGJsb2NrIWltcG9ydGFudDtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKCRjb2xvci1kYXJrLWJsdWUsLjk1KTtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKCMwZDBjMWUsLjg0KTtcclxufVxyXG5cclxuLnJldmVhbHtcclxuXHJcbiAgJi5yZXZlYWwtdHJhbnNwYXJlbnR7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gIGJvcmRlcjogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHBhZGRpbmc6IDUuOHJlbTtcclxuICBtYXgtd2lkdGg6IDg4cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAmLnJldmVhbC1zbWFsbHtcclxuICAgIG1heC13aWR0aDogNzByZW07XHJcbiAgfVxyXG5cclxuICAmLnJldmVhbC1ib3h7XHJcbiAgICBtYXgtd2lkdGg6IDg3cmVtO1xyXG4gICAgLm1vZGFsLXR4dHtcclxuICAgICAgbWF4LXdpZHRoOiA2N3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWN0aW9uLXRpdGxle1xyXG4gICAgLy9tYXJnaW4tYm90dG9tOiA1cmVtO1xyXG4gIH1cclxuXHJcbiAgLmNsb3NlLWJ1dHRvbntcclxuICAgICY6YmVmb3JlLCY6YWZ0ZXJ7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDowO1xyXG4gICAgICBsZWZ0OiAoJGNsb3NlLXdpZHRoLzIpICsgJGNsb3NlLWxpbmUtd2lkdGgvMjtcclxuICAgICAgaGVpZ2h0OiAkY2xvc2Utd2lkdGggKyAkY2xvc2UtbGluZS13aWR0aC8yO1xyXG4gICAgICB3aWR0aDogJGNsb3NlLWxpbmUtd2lkdGg7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gICAgfVxyXG4gICAgJjpiZWZvcmV7dHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO31cclxuICAgICY6YWZ0ZXJ7dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTt9XHJcblxyXG4gICAgJjpob3ZlcntcclxuICAgICAgb3BhY2l0eTogLjU7XHJcbiAgICB9XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICB3aWR0aDogJGNsb3NlLXdpZHRoO1xyXG4gICAgaGVpZ2h0OiAkY2xvc2Utd2lkdGg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MgZWFzZSwgYmFja2dyb3VuZCAuM3MgZWFzZTtcclxuICB9XHJcblxyXG4gIC5tb2RhbC1oZWFkZXJ7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gIH1cclxuXHJcbiAgLm1vZGFsLXRpdGxle1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcclxuICAgIC5hcnRpY2xlLXRpdGxle1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLm1vZGFsLWJvZHl7XHJcblxyXG4gICAgcHtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS44NzU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLm1vZGFsLXR4dHtcclxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gIH1cclxuXHJcbiAgLm1vZGFsLXByZXZpZXd7XHJcbiAgICBwYWRkaW5nLXRvcDogMnJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDRyZW07XHJcbiAgfVxyXG5cclxuICAubW9kYWwtZm9vdGVye1xyXG5cclxuICAgIG1hcmdpbi10b3A6IDMuNXJlbTtcclxuXHJcbiAgICBbY2xhc3NePVwiYnRuXCJdLC5idG57XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxLjVyZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XHJcbiAgICAgIG1pbi13aWR0aDogMjMuM3JlbTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tb3JlLWxpbmt7XHJcbiAgICAmOmhvdmVye1xyXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB9XHJcbiAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcblxyXG4gIGlmcmFtZXtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIH1cclxuICB2aWRlb3tcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgfVxyXG5cclxuICAucmVzcG9uc2l2ZS1lbWJlZHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XHJcbiAgICBiYWNrZ3JvdW5kOiAjY2NjIHVybCguLi9pbWcvY29tbW9uL2xvYWRlci5zdmcpIDUwJSA1MCUgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAxNXJlbSBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJi5yZXZlYWwtdmlkZW97XHJcblxyXG4gICAgLy9iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoLi4vaW1nL2NvbW1vbi9sb2FkZXIuc3ZnKSA1MCUgNTAlIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICAuY2xvc2UtYnV0dG9ue1xyXG4gICAgICAmOmJlZm9yZSwgJjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO31cclxuICAgIH1cclxuICAgIC5tb2RhbC1ib2R5e1xyXG4gICAgICBsaW5lLWhlaWdodDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gIH1cclxuXHJcbn0iLCJAbWl4aW4gaXRlbSgkd2lkdGgsICRicmVha3BvaW50KXtcclxuICBtYXgtd2lkdGg6ICR3aWR0aDtcclxuICB3aWR0aDogKCR3aWR0aC8kYnJlYWtwb2ludCkqMTAwdnc7XHJcbiAgbWluLXdpZHRoOiAkd2lkdGgvMjtcclxufVxyXG5cclxuLnNlY3Rpb24sLnMtc2VjdGlvbntcclxuXHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctdG9wOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nKTtcclxuICBwYWRkaW5nLWJvdHRvbTogbWFwX2dldCgkc2VjdGlvbiwgcGFkZGluZyk7XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UgZG93bil7fVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgIHBhZGRpbmctdG9wOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLW1kKTtcclxuICAgIHBhZGRpbmctYm90dG9tOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLW1kKTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwYWRkaW5nLXRvcDogbWFwX2dldCgkc2VjdGlvbiwgcGFkZGluZy1zbSk7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogbWFwX2dldCgkc2VjdGlvbiwgcGFkZGluZy1zbSk7XHJcbiAgfVxyXG5cclxuICAmLnAtbWR7XHJcbiAgICBwYWRkaW5nLXRvcDogbWFwX2dldCgkc2VjdGlvbiwgcGFkZGluZy1tZCk7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogbWFwX2dldCgkc2VjdGlvbiwgcGFkZGluZy1tZCk7XHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICBwYWRkaW5nLXRvcDogbWFwX2dldCgkc2VjdGlvbiwgcGFkZGluZy1zbSk7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiBtYXBfZ2V0KCRzZWN0aW9uLCBwYWRkaW5nLXNtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubS1ncmV5e1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXk7XHJcbiAgfVxyXG5cclxuICAmLm0tY3lhbntcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1jeWFuO1xyXG4gIH1cclxuXHJcbiAgJi5tLWJsdWV7XHJcbiAgICAmOmJlZm9yZXtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgbGVmdDowO3RvcDowO1xyXG4gICAgICB3aWR0aDogMTAwJTtoZWlnaHQ6MTAwJTtcclxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgwLCA1OCwgMTQ1LCAwLjUpIDAlLCByZ2JhKDUsIDEyOCwgMjU1LCAwKSAxMDAlKTtcclxuICAgIH1cclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ibHVlO1xyXG4gICAgLnNlY3Rpb24tdGl0bGV7Y29sb3I6ICNmZmY7fVxyXG4gIH1cclxuXHJcbiAgJi5tLXdhdmV7XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6YXV0bztib3R0b206LTFweDtcclxuICAgICAgbGVmdDowO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fd2F2ZVNvbHV0aW9ucy5zdmcpIDEwMCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgei1pbmRleDogMTtcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjAwMHB4KSBhbmQgKG1pbi13aWR0aDogMTIwMHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5tLXByaW1hcnl7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIC5zZWN0aW9uLXRpdGxle2NvbG9yOiAjZmZmO31cclxuICB9XHJcblxyXG4gICYubS1vcmFuZ2V7YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW9yYW5nZTt9XHJcbiAgJi5tLXllbGxvd3tiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3IteWVsbG93O31cclxuXHJcbiAgJi5oMTAwe1xyXG4gICAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgfVxyXG5cclxuICAmLnB0LTB7cGFkZGluZy10b3A6IDB9XHJcbiAgJi5wYi0we3BhZGRpbmctYm90dG9tOiAwfVxyXG5cclxuICAmLnRleHQtd2hpdGV7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIC5zLWhlcm9fX3RpdGxle2NvbG9yOiAjZmZmO31cclxuICAgIC5zLWhlcm9fX3R4dHtjb2xvcjogI2ZmZjt9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbi5zZWN0aW9uLXNsaWRlciwuc2VjdGlvbi1tYWluLXNsaWRlciwuc2VjdGlvbi1oZXJve1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIC8vb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAuYmctaW1ne1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgIGltZ3tvcGFjaXR5OiAwO3Zpc2liaWxpdHk6IGhpZGRlbjt9XHJcbiAgfVxyXG59XHJcblxyXG4uc2VjdGlvbi1iZ3tcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgLmJnLWltZ3tcclxuICAgICYuYmctcGFyYWxsYXh7XHJcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxuICAgIH1cclxuICAgICYtLWZpeGVke2JhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7fVxyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtyaWdodDogMDtcclxuICAgIHRvcDogMDsgYm90dG9tOjA7XHJcbiAgICBpbWd7b3BhY2l0eTogMDt2aXNpYmlsaXR5OiBoaWRkZW47fVxyXG4gICAgLy96LWluZGV4OiAtMTtcclxuICB9XHJcbiAgLnN1YnRpdGxle2NvbG9yOiAjZmZmO31cclxuICAuY29udGFpbmVyLC5zZWN0aW9uLXRpdGxlLC5yb3d7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgfVxyXG59XHJcblxyXG4udmlkZW8td3JhcC5iZy1pbWd7XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogdG9wIGNlbnRlcjtcclxuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGxlZnQ6IDA7cmlnaHQ6IDA7XHJcbiAgdG9wOiAwOyBib3R0b206MDtcclxuICBpbWd7b3BhY2l0eTogMDt2aXNpYmlsaXR5OiBoaWRkZW47fVxyXG4gIC8vei1pbmRleDogLTE7XHJcbn1cclxuXHJcbi5zLWhlcm97XHJcblxyXG4gICYuX2hlYWRlci1vZmZzZXR7XHJcbiAgICBwYWRkaW5nLXRvcDogMTRyZW07XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiAkY29sb3IteWVsbG93O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB3aWR0aDogMTAwJTtcclxuICAvL21pbi1oZWlnaHQ6IDUycmVtO1xyXG5cclxuICAmX19iZ3tcclxuICAgICYuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgMTAwJTtcclxuICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xyXG4gICAgICAvL2JhY2tncm91bmQtc2l6ZTogMTkycmVtIGF1dG87XHJcbiAgICAgICYuX3Nob3ctdGFibGV0e1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTkyMXB4KXtcclxuICAgICAgICAvL2JhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyODBweCkgYW5kIChtaW4td2lkdGg6IDEwMDBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxOTIwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTlweCkgYW5kIChtaW4td2lkdGg6IDMyMHB4KSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMTUlIGF1dG87XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAmLl9zaG93LXRhYmxldHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fcGlje31cclxuXHJcbiAgJl9fY29udGVudHtcclxuICAgIC8vcGFkZGluZy10b3A6IDdyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMTRyZW07XHJcbiAgfVxyXG5cclxuICAmX190eHR7XHJcbiAgICBtYXgtd2lkdGg6IDcwcmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMy40cmVtO1xyXG4gICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgICBwe1xyXG4gICAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjMzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBAZXh0ZW5kIC50aXRsZS0xO1xyXG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gICAgc3BhbntcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIHRleHQtc2hhZG93OiAxMHB4IDRweCAxMnB4IHJnYmEoMTQwLCA4NCwgMCwgMC42KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2J0bntcclxuICAgIC5idG4gKyAuYnRue1xyXG4gICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG57XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQGF0LXJvb3QgLmhvbWUgJntcclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE5MjBweCl7XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA5NjBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTRyZW07XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgICAgbWluLWhlaWdodDogNjByZW07XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDlyZW07XHJcbiAgICAgICAgJi0tdXNlci1hY2Nlc3N7XHJcbiAgICAgICAgICBtaW4taGVpZ2h0OiA3N3JlbTtcclxuICAgICAgICAgIHBhZGRpbmctdG9wOiAxN3JlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLWFzcGVjdC1yYXRpbzogMTcvMTApIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IC00cmVtO1xyXG4gICAgICBtaW4taGVpZ2h0OiA2MHJlbTtcclxuICAgICAgcGFkZGluZy10b3A6IDlyZW07XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSBhbmQgKG1heC13aWR0aDogMTkyMHB4KXtcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDcwMHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAtNnJlbTtcclxuICAgICAgICBtaW4taGVpZ2h0OiA1MXJlbTtcclxuICAgICAgICBwYWRkaW5nLXRvcDogOXJlbTtcclxuXHJcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTYwMHB4KXtcclxuICAgICAgICAgICZfX2JnLmJnLWltZ3tiYWNrZ3JvdW5kLXNpemU6IDE2MDBweCBhdXRvO31cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICZfX3RpdGxle2ZvbnQtc2l6ZTogNXJlbTt9XHJcbiAgICAgICAgJl9fdHh0e2ZvbnQtc2l6ZTogMi4ycmVtO31cclxuXHJcbiAgICAgIH1cclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDYwMHB4KXtcclxuICAgICAgICBtaW4taGVpZ2h0OiA1MXJlbTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAtN3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEBtZWRpYSAgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgbWluLWhlaWdodDogNzJyZW07XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxOTIxcHgpe1xyXG4gICAgLy9taW4taGVpZ2h0OiAxMDV2aDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0IGRvd24pe1xyXG4gICAgJl9fY29udGVudHtcclxuICAgICAgcGFkZGluZy10b3A6IDA7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiA4cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI4MHB4KSBhbmQgKG1pbi13aWR0aDogMTAwMHB4KXtcclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwcmVtO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTByZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKXtcclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fYmcuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA5NSUgMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDByZW0gYXV0bztcclxuICAgIH1cclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyNHJlbTtcclxuICAgIH1cclxuICAgICZfX3RpdGxle2ZvbnQtc2l6ZTogMzJweDt9XHJcblxyXG4gICAgJl9fYnRue1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgICAgLmJ0bntcclxuICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICAmICsgLmJ0bntcclxuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgJi5faGVhZGVyLW9mZnNldHtwYWRkaW5nLXRvcDogMTByZW07fVxyXG4gICAgJl9fYmcuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2OCUgMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiA4MHJlbSBhdXRvO1xyXG4gICAgfVxyXG4gICAgJl9fY29udGVudHtwYWRkaW5nLWJvdHRvbToxN3JlbTt9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLnMtaGVyby1zb2x1dGlvbnN7XHJcbiAgJjphZnRlcntcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOmF1dG87Ym90dG9tOi0xcHg7XHJcbiAgICBsZWZ0OjA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2JnX193YXZlU29sdXRpb25zLnN2ZykgMTAwJSAxMDAlIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjAwMHB4KSBhbmQgKG1pbi13aWR0aDogMTIwMHB4KXtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fcGlje1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgcmlnaHQ6IDAlO1xyXG4gICAgei1pbmRleDogMDtcclxuICAgIGltZ3tcclxuICAgICAgd2lkdGg6IDU0cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY29udGVudHtcclxuICAgIHBhZGRpbmctdG9wOiA0cmVtO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcbiAgICAmX19waWN7XHJcbiAgICAgIC8vd2lkdGg6IDgwJTtcclxuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgIGltZ3tcclxuICAgICAgICB3aWR0aDogNzAlO1xyXG4gICAgICAgIC8vd2lkdGg6IDgwJTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcblxyXG4gICAgJjphZnRlcntcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAwcHggYXV0bztcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTElIDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLmJnLWltZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOiAzMCUgMDt9XHJcblxyXG4gICAgcGFkZGluZy1ib3R0b206IDI0cmVtO1xyXG5cclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA2cmVtO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTByZW07XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDE0JTtcclxuICAgIH1cclxuXHJcbiAgICAucy1oZXJvX190eHR7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDIwJTtcclxuICAgIH1cclxuXHJcbiAgICAmX19waWN7XHJcbiAgICAgIHJpZ2h0OiAtMTIlO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMjZyZW07XHJcbiAgICAmX19jb250ZW50e1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMHJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICAgIH1cclxuICAgICZfX3BpY3tcclxuICAgICAgLy9kaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gICAgLnMtaGVyb19fdHh0LCZfX3R4dHtcclxuICAgICAgcGFkZGluZy1yaWdodDogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1oZXJvLWNvbnRlbnR7XHJcblxyXG4gICYubS1zaGFkb3d7XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fd2F2ZVNvbHV0aW9ucy1zaGFkb3cuc3ZnKSAxMDAlIDEwMCUgbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjAwMHB4KSBhbmQgKG1pbi13aWR0aDogMTIwMHB4KXtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMSU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5tLWNsZWFue1xyXG4gICAgJjphZnRlcntkaXNwbGF5OiBub25lO31cclxuICB9XHJcblxyXG5cclxuICAmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6YXV0bztib3R0b206LTFweDtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX3dhdmVTb2x1dGlvbnMuc3ZnKSAxMDAlIDEwMCUgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICAvL29wYWNpdHk6IC43O1xyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjAwMHB4KSBhbmQgKG1pbi13aWR0aDogMTIwMHB4KXtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmJnLWltZ3tcclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBjb250ZW50OicnO1xyXG4gICAgICB6LWluZGV4OiAxO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDowO2xlZnQ6MDtcclxuICAgICAgd2lkdGg6MTAwJTtoZWlnaHQ6IDEycmVtO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuNykgMCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XHJcbiAgICB9XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6YXV0bztib3R0b206LTFweDtcclxuICAgICAgbGVmdDowO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCMyMjIsLjYpO1xyXG4gICAgfVxyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB9XHJcblxyXG4gIG1pbi1oZWlnaHQ6IDU1cmVtO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmV5O1xyXG59XHJcblxyXG4ucy1oZXJvLWJsb2d7XHJcbiAgJjphZnRlcntkaXNwbGF5OiBub25lO31cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gIC5zLWhlcm8tYWlfX2NvbnRlbnR7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuXHJcbi5zLWFpLXBlcnNvbmFse1xyXG5cclxuICBwYWRkaW5nLXRvcDogMTVyZW07XHJcbiAgcGFkZGluZy1ib3R0b206IDIwJTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgei1pbmRleDogMTtcclxuICBtaW4taGVpZ2h0OiA4OXJlbTtcclxuICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG5cclxuICAmX19pbmZve1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gIH1cclxuXHJcbiAgJl9fYmd7XHJcbiAgICAmLmJnLWltZ3tcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwMHB4IGF1dG87XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDIwMDBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB6LWluZGV4OiAtMTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG5cclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgd2lkdGg6IDhyZW07aGVpZ2h0OiA4cmVtO1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL21hZ2ljLnN2ZykgMCAwIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAtNHJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogLTFyZW07XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgICAgIC8vZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAgIHdpZHRoOiA1cmVtO2hlaWdodDogNXJlbTtcclxuICAgICAgICBtYXJnaW4tbGVmdDogLTJyZW07XHJcbiAgICAgICAgLy9tYXJnaW4tYm90dG9tOiAtMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNwYW57ZGlzcGxheTogYmxvY2s7fVxyXG4gICAgbWFyZ2luLWJvdHRvbTogNHJlbTtcclxuICB9XHJcblxyXG4gICZfX3R4dHtcclxuICAgIEBleHRlbmQgLnRleHQtLW1lZGl1bTtcclxuICAgIHB7Zm9udC1zaXplOiAxMDAlO2xpbmUtaGVpZ2h0OiAxLjU7fVxyXG4gIH1cclxuXHJcbiAgJl9fYnRue1xyXG4gICAgbWFyZ2luLXRvcDogNXJlbTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UgZG93bil7XHJcbiAgICBtaW4taGVpZ2h0OiA3NXZ3O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcbiAgICBwYWRkaW5nLXRvcDogM3JlbTtcclxuXHJcbiAgICAuY29udGFpbmVye1xyXG4gICAgICBwYWRkaW5nLXRvcDogMjByZW07XHJcbiAgICB9XHJcblxyXG4gICAgJl9fYmd7XHJcbiAgICAgICYuYmctaW1ne1xyXG4gICAgICAgIC8vYmFja2dyb3VuZC1wb3NpdGlvbjogNDUlIDA7XHJcbiAgICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IDExMDBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgcGFkZGluZy10b3A6IDRyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuXHJcbiAgICAuYmctaW1ne1xyXG4gICAgICAvL29wYWNpdHk6IC41O1xyXG4gICAgfVxyXG5cclxuICAgICZfX2Jne1xyXG4gICAgICAmLmJnLWltZ3tcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIG1hcmdpbi10b3A6IDZyZW07XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDIwdnc7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcbiAgICAmX19idG57XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuICAgICZfX2luZm97XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MDBweCl7XHJcblxyXG5cclxuICAgICZfX3RpdGxle1xyXG4gICAgICAvL21hcmdpbi10b3A6IDJyZW07XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDEzcmVtO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAyMnJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogMDtcclxuICAgIH1cclxuXHJcbiAgICAudGl0bGUtMXtmb250LXNpemU6IDI2cHg7fVxyXG5cclxuICAgICZfX2JnLmJnLWltZ3tcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDUwMHB4IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5zLWhlcm8taW5kdXN0cmllc3tcclxuXHJcbiAgJi5tLWJsdWV7XHJcblxyXG4gIH1cclxuXHJcbiAgei1pbmRleDogNTtcclxuXHJcbiAgJl9fYmd7XHJcblxyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBAaW5jbHVkZSBhYnNvbHV0ZVN0cmV0Y2g7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuNykgMCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7XHJcbiAgICAgIGhlaWdodDogMTJyZW07XHJcbiAgICAgIC8vYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDk2LjU2ZGVnLCAjMDA1OUIxIDM3Ljg2JSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKTtcclxuICAgIH1cclxuXHJcbiAgICAmLmJnLWltZ3tcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICAgIC8vYmFja2dyb3VuZC1zaXplOiAxOTJyZW0gYXV0bztcclxuICAgICAgJi5fc2hvdy10YWJsZXR7XHJcbiAgICAgICAgLy9kaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE5MjFweCl7XHJcbiAgICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgICAgfVxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpIGFuZCAobWluLXdpZHRoOiAxMDAwcHgpe1xyXG4gICAgICAgIC8vYmFja2dyb3VuZC1zaXplOiAxOTIwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTlweCkgYW5kIChtaW4td2lkdGg6IDMyMHB4KSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuICAgICAgICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgJi5fc2hvdy10YWJsZXR7XHJcbiAgICAgICAgICAvL2Rpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnMtaGVyby1haXtcclxuXHJcbiAgJi5tLXNoYWRvd3tcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2JnX193YXZlU29sdXRpb25zLXNoYWRvdy5zdmcpIDEwMCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMTAxJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6YXV0bztib3R0b206LTFweDtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX3dhdmVTb2x1dGlvbnMuc3ZnKSAxMDAlIDEwMCUgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpIGFuZCAobWluLXdpZHRoOiAxMjAwcHgpe1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwMHB4IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiAjRjFGMUYxO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBtaW4taGVpZ2h0OiA1MnJlbTtcclxuXHJcbiAgJl9fY29udGVudHtcclxuICAgIHBhZGRpbmctdG9wOiA2cmVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDZyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgbWluLWhlaWdodDogMjB2aDtcclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4ucy1jYWxsYmFjay1mb3Jte1xyXG5cclxuICBwYWRkaW5nLWJvdHRvbTogNXJlbTtcclxuICBtaW4taGVpZ2h0OiA0NnJlbTtcclxuXHJcblxyXG4gIC5mb3JtLXRpdGxle1xyXG4gICAgcGFkZGluZy1sZWZ0OiAuNXJlbTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IC41cmVtO1xyXG4gICAgcGFkZGluZy10b3A6IDVyZW07XHJcbiAgICAvL2NvbG9yOiByZ2JhKDM0LCAzNCwgMzQsIDAuNSk7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICAgIC8vQGV4dGVuZCAudGl0bGUtNTtcclxuICB9XHJcblxyXG4gICZfX2Jne1xyXG4gICAgJi5iZy1pbWd7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAlIDEwMSU7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTkycmVtIGF1dG87XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDIwMDBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDAwcHggYXV0bztcclxuICAgICAgfVxyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxNjAwcHgpIGFuZCAobWF4LXdpZHRoOiAyMDAwcHgpe1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjEwMHB4IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2NvbnRlbnR7XHJcbiAgICBwYWRkaW5nLXRvcDogMTclO1xyXG4gIH1cclxuXHJcbiAgdGV4dGFyZWF7XHJcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDE0cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICBAaW5jbHVkZSBmb3JtLXBsYWNlaG9sZXIoKXtcclxuICAgICAgY29sb3I6ICNBQUFBQUE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYi1mb3JtLWxpc3R7XHJcbiAgICBpbnB1dDpub3QoW3R5cGU9c3VibWl0XSksdGV4dGFyZWF7XHJcbiAgICAgICY6Zm9jdXMsJjphY3RpdmV7XHJcbiAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgICB9XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICAgIGNvbG9yOiAjQUFBQUFBO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmhhcy1lcnJvcntcclxuICAgICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLHRleHRhcmVhe1xyXG4gICAgICAgICY6Zm9jdXMsJjphY3RpdmV7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRjAwMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBtYXJnaW4tdG9wOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC41cmVtO1xyXG5cclxuICAgIGxpe1xyXG4gICAgICBwYWRkaW5nOiAuNXJlbTtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC5idG4tc3VibWl0e1xyXG4gICAgJjpob3ZlciwgJjpmb2N1c3tcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIC8vY29sb3I6IHJnYmEoMzQsIDM0LCAzNCwgMC42KTtcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIG9wYWNpdHk6MTtcclxuICAgICAgLy9ib3gtc2hhZG93OiAwcHggNnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgIH1cclxuICAgICYuYnRue1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6Ljc7XHJcbiAgICAgIH1cclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gICAgLy9AZXh0ZW5kICVidG47XHJcbiAgICBtaW4td2lkdGg6IDE4cmVtO1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjE2NjtcclxuICAgIGJvcmRlci1jb2xvcjogI0ZGRjE2NjtcclxuICAgIGNvbG9yOiByZ2JhKDM0LCAzNCwgMzQsIDAuNSk7XHJcbiAgICBib3gtc2hhZG93OiAwcHggNnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgLmhhcy1lcnJvcntcclxuICAgIGlucHV0LHRleHRhcmVhe1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjRkYwMDAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZvcm0tc3VibWl0LW1lc3NhZ2V7XHJcbiAgICBtYXgtd2lkdGg6IDI4cmVtO1xyXG4gICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuXHJcbiAgICBwe2ZvbnQtc2l6ZTogMTAwJTt9XHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuICAgICAgLy9mb250LXNpemU6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZXJyb3ItbWVzc2FnZXtcclxuICAgIHBhZGRpbmctbGVmdDogLjVyZW07XHJcbiAgfVxyXG5cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcbiAgICAmX19iZ3tcclxuICAgICAgJi5iZy1pbWd7XHJcbiAgICAgICAgLy9kaXNwbGF5OiBub25lO1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bil7XHJcblxyXG4gICAgJl9fYmd7XHJcbiAgICAgICYuYmctaW1ne1xyXG4gICAgICAgIC8vZGlzcGxheTogbm9uZTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci15ZWxsb3c7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3IteWVsbG93O1xyXG4gICAgcGFkZGluZy1ib3R0b206IDZyZW07XHJcbiAgICBtaW4taGVpZ2h0OiAwO1xyXG5cclxuICAgICZfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiA2cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAmX19jb250ZW50e1xyXG4gICAgICBwYWRkaW5nLXRvcDogNDIlO1xyXG4gICAgfVxyXG5cclxuICAgICZfX2Jne1xyXG4gICAgICAmLmJnLWltZ3tcclxuICAgICAgICAvL2Rpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnRleHQtcmlnaHR7XHJcbiAgICAgIHRleHQtYWxpZ246Y2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm17XHJcbiAgICAgIC5jb2x1bW57XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICAgIC5zaHJpbmsuc21hbGwtMTJ7XHJcbiAgICAgICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICAgIH1cclxuICAgICAgLy9wYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgIC8vcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS10aXRsZXtcclxuICAgICAgcGFkZGluZy10b3A6MDtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAwcmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5iLWZvcm0tbGlzdHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC0uNXJlbTtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAtLjVyZW07XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgLmItZm9ybS1saXN0e1xyXG4gICAgICBsaXtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLm1sLWF1dG8sLm1yLWF1dG97XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICB9XHJcbiAgICAuZXJyb3ItbWVzc2FnZXtcclxuICAgICAgLy90ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1haS1hYm91dHtcclxuICBcclxuICAmLl9uby1iZ3tcclxuICAgICY6YmVmb3Jle1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpiZWZvcmV7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgdG9wOjA7XHJcbiAgICBsZWZ0OiAwJTtcclxuICAgIC8vdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgei1pbmRleDogLTE7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvY29tbW9uL2JnX19saW5lMi5zdmcpIDU1JSAwIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxMDAlO1xyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE2MDBweCl7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwJSAwO1xyXG4gICAgfVxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTE5OXB4KXtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhZGRpbmctdG9wOiAxMnJlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogMTJyZW07XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcblxyXG4gICZfX3Jvd3tcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nLXRvcDogNnJlbTtcclxuICB9XHJcblxyXG4gICZfX3BpY3tcclxuICAgIGltZyxzdmd7XHJcbiAgICAgIG1heC13aWR0aDogNjZyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pbmZve1xyXG4gICAgbWF4LXdpZHRoOiA1NHJlbTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICAgIHNwYW4sc3Ryb25ne2ZvbnQtd2VpZ2h0OiA3MDA7fVxyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgQGV4dGVuZCAudGV4dC0tbWVkaXVtO1xyXG4gICAgcHtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQodGFibGV0IGRvd24pe1xyXG4gICAgcGFkZGluZy10b3A6IDZyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIHBhZGRpbmctdG9wOiAwO1xyXG5cclxuICAgICZfX3Jvd3tcclxuICAgICAgJjpudGgtY2hpbGQoMm4pe1xyXG4gICAgICAgIC5zLWFpLWFib3V0X19waWN7b3JkZXI6IC0xO31cclxuICAgICAgfVxyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgJl9faW5mb3tcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1haS1yZXBvcnR7XHJcblxyXG59XHJcblxyXG4ucy1haS1jdGF7XHJcblxyXG4gIFtjbGFzc149XCJ0aXRsZS1cIl17Y29sb3I6ICRjb2xvci1oZWFkaW5nO31cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gdXApe1xyXG4gICAgJl9faW5mb3tcclxuICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICZfX2J0bntcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG4gICAgJl9faW5mb3tcclxuICAgICAgbWFyZ2luLWJvdHRvbTogLTJyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLnMtYWktcHJvZHVjdHN7XHJcbiAgJjpiZWZvcmV7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDowO1xyXG4gICAgbGVmdDowO1xyXG4gICAgaGVpZ2h0OjUwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwOTRmZjtcclxuICB9XHJcbiAgJjphZnRlcntcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDowO2JvdHRvbTowO1xyXG4gICAgd2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX3dhdmUuc3ZnKSA1MCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE5MnJlbSBhdXRvO1xyXG4gICAgLy96LWluZGV4OiAtMTtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmNvbnRhaW5lcntcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDE7XHJcbiAgfVxyXG5cclxuICBwYWRkaW5nLXRvcDogOC4ycmVtO1xyXG4gIHBhZGRpbmctYm90dG9tOiA4LjJyZW07XHJcbiAgY29sb3I6ICMwMDA7XHJcbiAgei1pbmRleDogNTtcclxuICBtYXJnaW4tYm90dG9tOiAtMTIlO1xyXG5cclxuICAmICsgLnNlY3Rpb24sICYgKyBzZWN0aW9ue1xyXG4gICAgcGFkZGluZy10b3A6IDEyJTtcclxuICB9XHJcblxyXG4gICZfX2luZm97XHJcbiAgICBwYWRkaW5nLXRvcDogOHJlbTtcclxuICAgIC8vcGFkZGluZy1ib3R0b206IDhyZW07XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlIGRvd24pe1xyXG4gICAgJjphZnRlcntcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlO1xyXG4gICAgfVxyXG4gICAgcGFkZGluZy1ib3R0b206IDE4cmVtO1xyXG5cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDBweCkgYW5kIChtYXgtd2lkdGg6IDEwMjRweCl7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNC41cmVtO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAmOmJlZm9yZXtoZWlnaHQ6IDgwJTt9XHJcbiAgICAvLyY6YWZ0ZXJ7YmFja2dyb3VuZC1zaXplOiAxMjAwcHggYXV0bzt9XHJcbiAgICAmOmFmdGVye2JhY2tncm91bmQtc2l6ZTogMTAwMHB4IGF1dG87YmFja2dyb3VuZC1wb3NpdGlvbjogNDQlIDEwMCU7fVxyXG4gICAgcGFkZGluZy1ib3R0b206IDVyZW07XHJcbiAgICAmX19pbmZve1xyXG4gICAgICBwYWRkaW5nLXRvcDogM3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgICY6YWZ0ZXJ7YmFja2dyb3VuZC1zaXplOiAxMDAwcHggYXV0bztiYWNrZ3JvdW5kLXBvc2l0aW9uOiA0NCUgMTAwJTt9XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNXJlbTtcclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1yZXZpZXd7XHJcblxyXG4gICZfX3ZpZGVve1xyXG4gICAgLy9wYWRkaW5nLXRvcDogNXJlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiA3cmVtO1xyXG5cclxuICAgICYtd3Jwe1xyXG4gICAgICBtYXgtd2lkdGg6IDcwcmVtO1xyXG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgIC5iLWhvbWUtdmlkZW97XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDQuNXJlbTtcclxuICAgICAgbWF4LXdpZHRoOiA3MHJlbTtcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuXHJcbiAgICAgIC5idG4tcGxheXtcclxuICAgICAgICBmb250LXNpemU6IC42cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAucmVzcG9uc2l2ZS1lbWJlZHtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAycmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwYWRkaW5nLXRvcDogOHJlbTtcclxuXHJcbiAgICAmX192aWRlb3tcclxuICAgICAgcGFkZGluZy1ib3R0b206IDRyZW07XHJcbiAgICAgIC5iLWhvbWUtdmlkZW97XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcclxuICAgICAgICAmX190eHR7XHJcbiAgICAgICAgICBicntcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTt9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNsaWNrLXNsaWRlcntcclxuICAgICAgLmItYm94LXJldmlld3tcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG5cclxuLnMtc29sdXRpb25zLWFib3V0e31cclxuXHJcbi5zLXNvbHV0aW9ucy1hcnRpY2xle1xyXG5cclxuICAmICsgLnMtc29sdXRpb25zLWFydGljbGV7XHJcbiAgICAgbWFyZ2luLXRvcDogMTEuN3JlbTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcclxuICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICB9XHJcblxyXG4gICZfX3BpY3tcclxuICAgIG1hcmdpbi10b3A6IDUuNHJlbTtcclxuICB9XHJcblxyXG4gICZfX3RhYi1uYXZ7XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICAvL2NvbnRlbnQ6ICcnO1xyXG4gICAgICB0b3A6IDEwMCU7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgbGVmdDogNTAlO1xyXG4gICAgICBtYXJnaW4tbGVmdDogLTYwcmVtO1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNBQUFBQUE7XHJcbiAgICAgIHdpZHRoOiAxMjByZW07XHJcbiAgICB9XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBtYXJnaW4tdG9wOiA5cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOXJlbTtcclxuICAgIC8vbWF4LXdpZHRoOiA4OHJlbTtcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG5cclxuICAgIC5iLXRhYnMtLWJnIC50YWJzLW5hdiwudGFicy1uYXZ7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMi42cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDIuNnJlbTtcclxuICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgLmItdGFic19fbGlua3tcclxuICAgICAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgICAgICAvL2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLHJnYmEoMCwwLDAsLjMpLHJnYmEoMCwwLDAsLjMpKSxsaW5lYXItZ3JhZGllbnQoMTQxLjkxZGVnLHJnYmEoMCwwLDAsLjc2KSAxMC4wNyUscmdiYSgwLDAsMCwwKSA5OC43NyUpO1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3BhbntvcGFjaXR5OiAuNzt9XHJcblxyXG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuaXMtYWN0aXZle1xyXG4gICAgICAgIC5iLXRhYnNfX2xpbmt7XHJcbiAgICAgICAgICAmOmFmdGVye1xyXG4gICAgICAgICAgICAvL2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLHJnYmEoMCwwLDAsLjMpLHJnYmEoMCwwLDAsLjMpKSxsaW5lYXItZ3JhZGllbnQoMTQxLjkxZGVnLHJnYmEoMCwwLDAsLjc2KSAxMC4wNyUscmdiYSgwLDAsMCwwKSA5OC43NyUpO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5iLXRhYnNfX2xpbmt7XHJcblxyXG4gICAgICAgICY6YmVmb3Jle2Rpc3BsYXk6IG5vbmU7fVxyXG5cclxuICAgICAgICBzcGFue3RyYW5zaXRpb246IC4zcyBlYXNlIG9wYWNpdHk7fVxyXG5cclxuICAgICAgICB3aWR0aDogMjByZW07XHJcbiAgICAgICAgaGVpZ2h0OiAyMHJlbTtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgICAvL2hlaWdodDogMDtcclxuICAgICAgICAvL3BhZGRpbmctYm90dG9tOiAxMDAlO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xyXG4gICAgICB1bHtcclxuICAgICAgICBtYXJnaW46IC0xLjVyZW07XHJcbiAgICAgIH1cclxuICAgICAgbGl7XHJcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xyXG4gICAgICAgIGZsZXg6IDAgMCA1MCU7XHJcbiAgICAgICAgbWF4LXdpZHRoOiA1MCU7XHJcbiAgICAgICAgbWluLXdpZHRoOiAyNHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgICY6bm90KGxhc3Qtb2YtdHlwZSl7XHJcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgbWluLXdpZHRoOiA1MCU7XHJcbiAgICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgICBmbGV4OiAwIDAgNTAlO1xyXG4gICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIH1cclxuICAgICAgLmItdGFic19fbGlua3tcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzRweCl7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gICZfX3RhYi1ib2R5e1xyXG4gICAgJjpub3QoLnRhYi1jb250ZW50KXtcclxuICAgICAgLmItdGFiICsgLmItdGFie1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHJlbTtcclxuICAgICAgfVxyXG4gICAgICAuYi10YWJ7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDEwcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmJnLXRpdGxle1xyXG5cclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSB1cCl7XHJcbiAgICAgICAgLy9tYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuICAgICAgICAvL21hcmdpbi1yaWdodDogLTEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDZyZW07XHJcbiAgICAgIHBhZGRpbmc6IDRyZW07XHJcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSA1MCU7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDIwcmVtO1xyXG4gICAgICBbY2xhc3MqPVwidGl0bGVcIl17XHJcbiAgICAgICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAmX190eHQtdGl0bGUsaDQsaDV7XHJcbiAgICBmb250LXNpemU6IDIuNHJlbTtcclxuICAgIGNvbG9yOiAjMjIyMjIyO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICB9XHJcblxyXG4gICZfX3R4dC1ncm91cHtcclxuICAgICYgKyAucy1zb2x1dGlvbnMtYXJ0aWNsZV9fdHh0LWdyb3Vwe1xyXG4gICAgICBtYXJnaW4tdG9wOiA1cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIHVse1xyXG4gICAgICBAZXh0ZW5kICVsaXN0LWRpc2M7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX190eHR7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIHB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNjc7XHJcbiAgICB9XHJcblxyXG4gICAgdWx7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgLy9saW5lLWhlaWdodDogMS4yNTtcclxuICAgICAgLy9AZXh0ZW5kICVsaXN0LWRpc2M7XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIG1hcmdpbi10b3A6IC41cmVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb2x7XHJcbiAgICAgIEBleHRlbmQgJW9sO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAucm93Om5vdCgucm93LS1saXN0KXtcclxuICAgICAgLmNvbHVtbi5zbWFsbC0xMntcclxuICAgICAgICArIC5jb2x1bW4uc21hbGwtMTJ7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiA1cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZfX3BpY3tcclxuICAgICAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IC0yMHB4O1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RhYi1ib2R5e1xyXG4gICAgICAuYmctdGl0bGV7XHJcbiAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICAvL2p1c3RpZnktY29udGVudDpjZW50ZXI7XHJcbiAgICAgICAgbWluLWhlaWdodDogODBweDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogLTIwcHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcclxuICAgICAgICBbY2xhc3NePVwidGl0bGVcIl17XHJcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAudGl0bGUtMntmb250LXNpemU6IDI1cHg7fVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICBmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG5cclxuLmFydGljbGV7XHJcbiAgLmdydmUtdGV4dC13cnB7XHJcbiAgICBtYXJnaW4tdG9wOiA1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmdydmUtdGV4dC13cnB7XHJcblxyXG4gICYgKyAuZ3J2ZS10ZXh0LXdycHtcclxuICAgIG1hcmdpbi10b3A6IDVyZW07XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLnMtY29tcGFueS1hcnRpY2xle1xyXG5cclxuICAmICsgLnMtc29sdXRpb25zLWFydGljbGV7XHJcbiAgICBtYXJnaW4tdG9wOiAxMS43cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gIH1cclxuXHJcbiAgJl9fcGlje1xyXG4gICAgbWFyZ2luLXRvcDogNS40cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgZm9udC1zaXplOiAyLjJyZW07XHJcbiAgICBwe1xyXG4gICAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjM2O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICZfX3R4dHtcclxuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4ucy1jb250ZW50LXBhcnRuZXJze1xyXG4gIHB7XHJcbiAgICBAZXh0ZW5kIC50ZXh0LS1sYXJnZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgcHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnMtY29tcGFueS1hYm91dHtcclxuICBwYWRkaW5nLXRvcDogMTglO1xyXG4gIHBhZGRpbmctYm90dG9tOiAxMC41cmVtO1xyXG5cclxuICAmX19pbmZve1xyXG4gICAgbWF4LXdpZHRoOiAzOC41cmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1oZWFkaW5nO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh4bGFyZ2UgZG93bil7XHJcbiAgICAvL3BhZGRpbmctdG9wOiAxOCU7XHJcbiAgICAvL3BhZGRpbmctYm90dG9tOiAxMC41cmVtO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh3bGFyZ2UgZG93bil7XHJcbiAgICAvL3BhZGRpbmctdG9wOiAxNi41JTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAxMC41cmVtO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bil7XHJcbiAgICBwYWRkaW5nLXRvcDogMjUlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmctdG9wOiAzMCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMTUlO1xyXG4gICAgbWluLWhlaWdodDogNTVyZW07XHJcblxyXG4gICAgLmJnLWltZ3tcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDAlO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMDBweCBhdXRvO1xyXG4gICAgfVxyXG5cclxuICAgIC5jb250YWluZXJ7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAmX19pbmZve1xyXG4gICAgICBtYXgtd2lkdGg6IDIyLjVyZW07XHJcbiAgICAgIC8vcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gICAgICAvL3BhZGRpbmctcmlnaHQ6IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5zLWhlcm8tY29tcGFueXtcclxuXHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBoZWlnaHQ6MDtcclxuICBwYWRkaW5nLWJvdHRvbTogNDguMjUlO1xyXG5cclxuICAudmlkZW8td3Jwe1xyXG4gICAgJjpiZWZvcmV7XHJcbiAgICAgIGNvbnRlbnQ6Jyc7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOjA7bGVmdDowO1xyXG4gICAgICB3aWR0aDoxMDAlO2hlaWdodDogMTJyZW07XHJcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSAwJSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKTtcclxuICAgIH1cclxuICAgIC8vaGVpZ2h0OjA7XHJcbiAgICAvL3dpZHRoOjEwMCU7XHJcbiAgICAvL3BhZGRpbmctYm90dG9tOiA1Ni4yNSU7XHJcbiAgfVxyXG5cclxuICA+IGlmcmFtZSw+dmlkZW97XHJcbiAgICBAaW5jbHVkZSBhYnNvbHV0ZVN0cmV0Y2g7XHJcbiAgICAvL3otaW5kZXg6IC0xO1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIH1cclxuICAvLz4te1xyXG4gIC8vICBvYmplY3QtZml0OiBmaWxsO1xyXG4gIC8vfVxyXG5cclxuICAuYmdWaWRlb3tcclxuICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuICAgIC8vei1pbmRleDogLTE7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgICBpZnJhbWV7XHJcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gICAgfVxyXG4gICAgLnl0cGxheWVyLWNvbnRhaW5lcntcclxuICAgICAgQGluY2x1ZGUgYWJzb2x1dGVTdHJldGNoO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgLy96LWluZGV4OiAtMTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5zLWhlcm8tY29tcGFueTJ7XHJcblxyXG4gIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxO1xyXG4gIG1hcmdpbi1ib3R0b206IDVyZW07XHJcblxyXG4gIC52aWRlb0hlcm97XHJcbiAgICB3aWR0aDoxMDAlO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgLy96LWluZGV4OiA1O1xyXG4gICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICBib3gtc2hhZG93OiAwcHggMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC40KTtcclxuICB9XHJcbiAgLnZpZGVvLXdycHtcclxuICAgIG1hcmdpbi1ib3R0b206IC01cmVtO1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDU7XHJcbiAgICBsaW5lLWhlaWdodDogMDtcclxuICB9XHJcblxyXG4gIC5zLWhlcm8tYWlfX2NvbnRlbnQsJl9fY29udGVudHtcclxuICAgIHBhZGRpbmctYm90dG9tOjA7XHJcbiAgICBwYWRkaW5nLXRvcDogMDtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgLnMtaGVyby1haV9fY29udGVudCwmX19jb250ZW50e1xyXG4gICAgICBwYWRkaW5nLXRvcDogNnJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgIC5zLWhlcm8tYWlfX2NvbnRlbnR7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgICAudmlkZW8td3Jwe1xyXG4gICAgICAmOmJlZm9yZXtcclxuICAgICAgICBjb250ZW50OicnO1xyXG4gICAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDowO2xlZnQ6MDtcclxuICAgICAgICB3aWR0aDoxMDAlO2hlaWdodDogMTJyZW07XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSgwLCAwLCAwLCAwLjcpIDAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO1xyXG4gICAgICB9XHJcbiAgICAgIHZpZGVve1xyXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgbWluLWhlaWdodDogMTgwcHg7XHJcbiAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgICAgIH1cclxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1yZXF1ZXN0LWRlbW97XHJcbiAgJi5tLWZpeGVke1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgYm90dG9tOjA7XHJcbiAgICBsZWZ0OjA7XHJcbiAgICB3aWR0aDoxMDAlO1xyXG4gICAgei1pbmRleDogOTg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgcGFkZGluZzogMXJlbSAyMHB4O1xyXG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcbiAgfVxyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcblxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJjpub3QoLmhpZGUpe1xyXG4gICAgICB+IC5zLWdhcnRuZXIubS1maXhlZHtcclxuICAgICAgICBib3R0b206IDZyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1nYXJ0bmVye1xyXG5cclxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjRzIGVhc2U7XHJcblxyXG4gICYuaXMtaGlkZXtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gIH1cclxuXHJcbiAgJi5tLWZpeGVke1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgYm90dG9tOjJyZW07XHJcbiAgICByaWdodDowO1xyXG4gICAgd2lkdGg6YXV0bztcclxuICAgIHotaW5kZXg6IDk3O1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIGJveC1zaGFkb3c6IDBweCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gIH1cclxuXHJcbiAgJl9fd3Jwe1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG1heC13aWR0aDogMTByZW07XHJcbiAgfVxyXG5cclxuICAmX19sb2dve1xyXG4gICAgZmxleDogMCAwIDEwcmVtO1xyXG4gICAgd2lkdGg6IDEwcmVtO1xyXG4gICAgYmFja2dyb3VuZDogIzE4MmE1NDtcclxuICAgIGxpbmUtaGVpZ2h0OiAwO1xyXG4gICAgaW1ne21heC13aWR0aDogMTAwJTt3aWR0aDoxMDAlO31cclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWZhbGxiYWNrO1xyXG4gICAgcGFkZGluZzogLjZyZW0gLjNyZW0gLjlyZW0gLjlyZW07XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBmb250LXdlaWdodDogNTAwO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAmLm0tZml4ZWR7XHJcbiAgICAgIGJvdHRvbTowO1xyXG4gICAgICByaWdodDogYXV0bztcclxuICAgICAgbGVmdDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAmX193cnB7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgIG1heC13aWR0aDogMTg1cHg7XHJcbiAgICAgIG1heC13aWR0aDogMjRyZW07XHJcbiAgICB9XHJcblxyXG4gICAgJl9fbG9nb3tcclxuICAgICAgZmxleDogMCAwIDkwcHg7XHJcbiAgICAgIG1heC13aWR0aDogOTBweDtcclxuICAgICAgZmxleC1ncm93OiAxO1xyXG4gICAgfVxyXG5cclxuICAgICZfX3RpdGxle1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICBwYWRkaW5nOiAxNXB4IDVweCAxNXB4IDE2cHg7XHJcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICBmb250LXNpemU6IDE0cHghaW1wb3J0YW50O1xyXG4gICAgICBmb250LXNpemU6IDEuNzVyZW0haW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5oYXMtc2hvdy1nYXJ0bmVye1xyXG4gIC5iLWZvb3RlcntcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAxMnJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4ucy1jb250ZW50LWFpe1xyXG5cclxuICAmX19hYm91dHtcclxuICAgIHB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY3O1xyXG4gICAgfVxyXG4gICAgdWx7XHJcbiAgICAgIEBleHRlbmQgJWxpc3QtZGlzYztcclxuICAgIH1cclxuICAgIG9se1xyXG4gICAgICBAZXh0ZW5kICVvbDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uZC1mbGV4e1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLnMtY29va2llc3tcclxuICAmLm0tZml4ZWR7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICBib3R0b206MDtcclxuICAgIGxlZnQ6MDtcclxuICAgIHdpZHRoOjEwMCU7XHJcbiAgICB6LWluZGV4OiA5OTtcclxuICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICBwYWRkaW5nOiAxLjVyZW0gNHJlbTtcclxuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xyXG4gIH1cclxuICAmX19pbmZve1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICB9XHJcbiAgLmJ0bntcclxuICAgIG1pbi13aWR0aDogOXJlbTtcclxuICAgIG1hcmdpbi1sZWZ0OiAzcmVtO1xyXG4gIH1cclxuXHJcbiAgLmNsb3NlLWJ1dHRvbntcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHJpZ2h0OiAycmVtO1xyXG4gICAgdG9wOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICYubS1maXhlZHtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xyXG4gICAgfVxyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgLmJ0bnttYXJnaW4tbGVmdDogMDt9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5zLWNvbnRlbnQtcG9zdHtcclxuICAuYXJ0aWNsZXtcclxuICAgIHAsdWx7XHJcbiAgICAgIEBleHRlbmQgLnRleHQtLWxhcmdlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi5iLXNvY2lhbHN7XHJcbiAgJl9fdGl0bGV7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgY29sb3I6ICRjb2xvci1ncmV5MjtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcbiAgICBwe1xyXG4gICAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICAgIGNvbG9yOiBjdXJyZW50Q29sb3I7XHJcbiAgICB9XHJcbiAgfVxyXG4gICZfX2xpc3R7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgbGl7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMTBweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgICAgYXtcclxuICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgb3BhY2l0eTogLjc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ucy1jb250ZW50LWZvb3RlcntcclxuXHJcblxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIEBpbmNsdWRlIGRpc3BsYXlGbGV4O1xyXG4gIEBpbmNsdWRlIGFsaWduSXRlbXNDZW50ZXI7XHJcblxyXG4gIC5iLXNvY2lhbHN7XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICB9XHJcblxyXG4gIC5iLXZhY2FuY3ktcGFnZV9fYmFjay1saW5re1xyXG5cclxuICAgIEBhdC1yb290IC5wYWdlLXZhY2FuY3kgI2dydmUtY29udGVudCAme1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCl7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjQwcHgpe1xyXG4gICAgQGluY2x1ZGUgZmxleEZsb3dSb3dXcmFwO1xyXG5cclxuICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDA7XHJcblxyXG4gICAgLmItc29jaWFsc3tcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1hcmdpbi10b3A6IDMwcHg7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLnMtaGVyby1yZXF1ZXN0e1xyXG5cclxuICAvLyY6YWZ0ZXJ7XHJcbiAgLy8gIGNvbnRlbnQ6ICcnO1xyXG4gIC8vICBAaW5jbHVkZSBhYnNvbHV0ZVN0cmV0Y2g7XHJcbiAgLy8gIHRvcDogMTAwJTtcclxuICAvLyAgYm90dG9tOiBhdXRvO1xyXG4gIC8vICBoZWlnaHQ6IDEwMCU7XHJcbiAgLy8gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gIC8vICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ0RlbW9XYXZlLXNoYWRvdy5zdmcpIDUwJSAxMDAlIG5vLXJlcGVhdDtcclxuICAvLyAgLy9iYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XHJcbiAgLy8gIHotaW5kZXg6IDE7XHJcbiAgLy99XHJcblxyXG4gIC5zLWhlcm9fX3R4dHtcclxuICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xyXG4gICAgbWF4LXdpZHRoOiA2M3JlbTtcclxuICB9XHJcblxyXG4gIC5zLWhlcm9fX2J0bntcclxuICAgIC5idG57XHJcbiAgICAgIG1pbi13aWR0aDogMTZyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucy1oZXJvX190aXRsZXtcclxuICAgIGNvbG9yOiAjMjIyO1xyXG5cclxuICAgICYubS1zbWFsbHtcclxuICAgICAgZm9udC1zaXplOiA1cmVtO1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY29udGVudCwuY29udGFpbmVye1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgcGFkZGluZy10b3A6IDZyZW07XHJcbiAgICAvL3otaW5kZXg6IDI7XHJcbiAgfVxyXG5cclxuICAuYmctaW1ne1xyXG4gICAgLy90b3A6IDEwMCU7XHJcbiAgICAvL2JhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNDAlIDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMjAwMHB4KSBhbmQgKG1pbi13aWR0aDogMTAwMHB4KXtcclxuICAgICAgLy9iYWNrZ3JvdW5kLXNpemU6IDIwMDBweCBhdXRvO1xyXG4gICAgfVxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTk5cHgpe1xyXG4gICAgICAvL2JhY2tncm91bmQtc2l6ZTogMTAwMHB4IGF1dG87XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwJSAxMDAlO1xyXG4gICAgfVxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzAwcHgpe1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2MCUgMTAwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiA1O1xyXG4gIHBhZGRpbmctYm90dG9tOiAyMCU7XHJcbiAgbWluLWhlaWdodDogNTZ2aDtcclxuICAvL21hcmdpbi1ib3R0b206IC0yMHJlbTtcclxuXHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDcwMHB4KXtcclxuICAgIG1pbi1oZWlnaHQ6IDYwMHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAuYmctaW1ne1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDE0MDBweCBhdXRvO1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2MiUgMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICBtaW4taGVpZ2h0OiAzNjBweDtcclxuXHJcbiAgICAucy1oZXJvX190aXRsZXtcclxuICAgICAgbWF4LXdpZHRoOiAyMDBweDtcclxuICAgICAgLy9mb250LXNpemU6IDMycHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgJi0tbGFuZGluZ3tcclxuICAgIHBhZGRpbmctYm90dG9tOiAxMiU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxMHJlbTtcclxuICAgIC8vb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJhY2tncm91bmQ6ICMwMDk0ZmY7XHJcblxyXG4gICAgLmJnLWltZ3tcclxuICAgICAgdG9wOiAtMXB4O1xyXG4gICAgICBib3R0b206IC0xcHg7XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTk5cHgpe1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTQlO1xyXG5cclxuICAgICAgLmJnLWltZ3tcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA2NiUgMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEzMCUgYXV0bztcclxuICAgICAgfVxyXG5cclxuICAgICAgLnMtaGVyb19fdHh0e1xyXG4gICAgICAgIHdpZHRoOiA4MCU7XHJcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDMyMHB4O1xyXG4gICAgICAvL21hcmdpbi1ib3R0b206IDEwcmVtO1xyXG4gICAgICAuYmctaW1ne1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDgwJSAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwMHB4IGF1dG87XHJcbiAgICAgIH1cclxuICAgICAgLnMtaGVyb19fdGl0bGV7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICAgIC5zLWhlcm9fX3R4dHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgICAgcHtcclxuICAgICAgICAgIGJye2Rpc3BsYXk6IG5vbmU7fVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnMtZm9ybXtcclxuXHJcbiAgJi5zLWZvcm0tLXJlcXVlc3R7XHJcblxyXG4gICAgLmItZm9ybS1saXN0e1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyMDBweCl7XHJcbiAgICAgIHRleHRhcmVhe1xyXG4gICAgICAgIC8vaGVpZ2h0OiBjYWxjKDEwMCUgLSAyLjNyZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgLmItZm9ybS1saXN0e1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtLjVyZW07XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtLjVyZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAmLnMtZm9ybS0tbGFuZGluZ3tcclxuXHJcbiAgICBwYWRkaW5nLWJvdHRvbTogN3JlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDQwdmg7XHJcblxyXG4gICAgLmNvbnRhaW5lcntcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBtYXJnaW4tdG9wOiAtMTByZW07XHJcbiAgICB9XHJcblxyXG4gICAgLmItZm9ybS1saXN0e1xyXG4gICAgICBmb250LXNpemU6IDA7XHJcbiAgICAgIG1hcmdpbjogLS41cmVtO1xyXG4gICAgICBsaXtcclxuICAgICAgICAmOm50aC1jaGlsZCgxKXt3aWR0aDogNTAlO31cclxuICAgICAgICAmOm50aC1jaGlsZCgyKXt3aWR0aDogNTAlO31cclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5zLWZvcm1fX3BhcnRuZXJze1xyXG4gICAgICAvL21hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICAvL21hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgPiAucm93e1xyXG4gICAgICAgIG1heC13aWR0aDogNzByZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0ZXh0YXJlYSxpbnB1dHtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgfVxyXG5cclxuICAgIHRleHRhcmVhe1xyXG4gICAgICAvL2hlaWdodDogMTAwJTtcclxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQpe1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5lcnJvci1tZXNzYWdle1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLnJvdyAucm93Om5vdCguc21hbGwtY29sbGFwc2Upe1xyXG4gICAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcblxyXG4gICAgICAuY29udGFpbmVye1xyXG4gICAgICAgIG1hcmdpbi10b3A6IC0zcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBwe1xyXG4gICAgICAgIGJye2Rpc3BsYXk6IG5vbmU7fVxyXG4gICAgICB9XHJcbiAgICAgIC50ZXh0LS1sYXJnZXtcclxuICAgICAgICBmb250LXNpemU6IDIuMnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmItYWktcGFydG5lcnNfX2ltZ3tcclxuICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICAgICY6Zmlyc3QtY2hpbGR7XHJcbiAgICAgICAgICBpbWd7bWF4LXdpZHRoOjcuN3JlbTt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6bnRoLWNoaWxkKDUpe1xyXG4gICAgICAgICAgaW1ne21heC13aWR0aDo3cmVtO31cclxuICAgICAgICB9XHJcbiAgICAgICAgaW1ne1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogMXJlbTtcclxuICAgICAgICAgIG1heC1oZWlnaHQ6IDVyZW07XHJcbiAgICAgICAgICBtaW4taGVpZ2h0OiAzLjlyZW07XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IDUuM3JlbTtcclxuICAgICAgICAgIC8vbWluLXdpZHRoOiA3cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvL21hcmdpbi10b3A6IC0xMHJlbTtcclxuICBwYWRkaW5nLXRvcDogMDtcclxuICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICBtaW4taGVpZ2h0OiA0MHZoO1xyXG4gIG1pbi1oZWlnaHQ6IGNhbGMoNDR2aCAtIDUuNXJlbSk7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXllbGxvdztcclxuICAvL3BhZGRpbmctdG9wOiAyMCU7XHJcbiAgXHJcbiAgJi5tLXdoaXRle1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICB9XHJcblxyXG4gIC5jb250YWluZXJ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiA2O1xyXG4gICAgdG9wOiAtN3JlbTtcclxuICB9XHJcblxyXG4gIHRleHRhcmVhe1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBtaW4taGVpZ2h0OiAxNHJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDO1xyXG4gICAgQGluY2x1ZGUgZm9ybS1wbGFjZWhvbGVyKCl7XHJcbiAgICAgIGNvbG9yOiAjQUFBQUFBO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmItZm9ybS1saXN0e1xyXG4gICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLHRleHRhcmVhe1xyXG4gICAgICAmOmZvY3VzLCY6YWN0aXZle1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIH1cclxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgICAgQGluY2x1ZGUgZm9ybS1wbGFjZWhvbGVyKCl7XHJcbiAgICAgICAgY29sb3I6ICNBQUFBQUE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLmhhcy1lcnJvcntcclxuICAgICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLHRleHRhcmVhe1xyXG4gICAgICAgICY6Zm9jdXMsJjphY3RpdmV7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRjAwMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBtYXJnaW4tdG9wOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAuNXJlbTtcclxuXHJcbiAgICBsaXtcclxuICAgICAgcGFkZGluZzogLjVyZW07XHJcbiAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHJcbiAgICAgICYuYWNjZXB0LXBvbGljeXtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC5idG4tc3VibWl0e1xyXG4gICAgJjpob3ZlciwgJjpmb2N1c3tcclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIC8vY29sb3I6IHJnYmEoMzQsIDM0LCAzNCwgMC42KTtcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIG9wYWNpdHk6MTtcclxuICAgICAgLy9ib3gtc2hhZG93OiAwcHggNnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcclxuICAgIH1cclxuICAgICYuYnRue1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6Ljc7XHJcbiAgICAgIH1cclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gICAgLy9AZXh0ZW5kICVidG47XHJcbiAgICBtaW4td2lkdGg6IDE4cmVtO1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjE2NjtcclxuICAgIGJvcmRlci1jb2xvcjogI0ZGRjE2NjtcclxuICAgIGNvbG9yOiByZ2JhKDM0LCAzNCwgMzQsIDAuNSk7XHJcbiAgICBib3gtc2hhZG93OiAwcHggNnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgLmhhcy1lcnJvcntcclxuICAgIGlucHV0LHRleHRhcmVhe1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjRkYwMDAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZvcm0tc3VibWl0LW1lc3NhZ2V7XHJcbiAgICBtYXgtd2lkdGg6IDI4cmVtO1xyXG4gICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuXHJcbiAgICBwe2ZvbnQtc2l6ZTogMTAwJTt9XHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuICAgICAgLy9mb250LXNpemU6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZXJyb3ItbWVzc2FnZXtcclxuICAgIHBhZGRpbmctbGVmdDogLjVyZW07XHJcbiAgfVxyXG5cclxuICAmX190eHR7XHJcbiAgICBwe2ZvbnQtc2l6ZTogMTAwJTt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHRhYmxldCBkb3duKXtcclxuICAgIC5jb250YWluZXJ7dG9wOjA7fVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICAvL21hcmdpbi10b3A6IC01cmVtO1xyXG5cclxuICAgICZfX3R4dHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgIHB7Zm9udC1zaXplOiAxMDAlO31cclxuICAgIH1cclxuXHJcbiAgICAuY29udGFpbmVye3RvcDogLThyZW07fVxyXG5cclxuICAgIC50ZXh0LXJpZ2h0e1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgIC5iLWZvcm0tbGlzdHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IC0uNXJlbTtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAtLjVyZW07XHJcbiAgICAgIGxpe1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbi5zLWhlcm8tYWl7XHJcblxyXG4gICY6bm90KC50ZXh0LXdoaXRlKXtcclxuICAgIFtjbGFzc149XCJ0aXRsZS1cIl17XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmOm5vdCgucy1oZXJvLWluZHVzdHJpZXMpOm5vdCgucy1oZXJvLWNvbnRlbnQpe1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMjRyZW07XHJcbiAgICAgICY6YWZ0ZXJ7XHJcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxNDAwcHggYXV0bztcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1NiUgMTAwJTtcclxuICAgICAgfVxyXG4gICAgICAucy1oZXJvLWFpX19iZ3tcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA3NSUgMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMDBweCBhdXRvO1xyXG4gICAgICAgIGJhY2tncm91bmQtYmxlbmQtbW9kZTogbXVsdGlwbHk7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YxRjFGMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAudGl0bGUtMXtcclxuICAgICAgZm9udC1zaXplOiAzMnB4O1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1oZXJvLWluZHVzdHJpZXN7XHJcblxyXG4gICY6bm90KC50ZXh0LXdoaXRlKXtcclxuICAgIFtjbGFzc149XCJ0aXRsZS1cIl17XHJcbiAgICAgIGNvbG9yOiAkY29sb3ItaGVhZGluZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDE0MDBweCBhdXRvO1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1NiUgMTAxJTtcclxuICAgIH1cclxuICAgICZfX2JnLmJnLWltZ3tcclxuICAgICAgLy9iYWNrZ3JvdW5kLXBvc2l0aW9uOiA3NSUgMCU7XHJcbiAgICAgIC8vYmFja2dyb3VuZC1zaXplOiBhdXRvIDEwMCU7XHJcbiAgICB9XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMTZyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ucGFnZS10ZW1wbGF0ZS1wYWdlLWFpe1xyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAucy1oZXJvLWFpe1xyXG4gICAgICAucy1oZXJvX190eHR7XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMzAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi5zLWhlcm8gKyAucy1hYm91dC1wcm9tb3tcclxuICBwYWRkaW5nLXRvcDogMTJyZW07XHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmctdG9wOiA1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnMtZmVhdHVyZXMtcHJvbW97XHJcblxyXG4gIHBhZGRpbmctdG9wOiA1cmVtO1xyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJjpsYXN0LW9mLXR5cGV7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIi5yZXNwb25zaXZlLWVtYmVke1xyXG5cclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuICA+aW1nLD5pZnJhbWUsPnZpZGVvLD4udmlkZW8td3Jwe1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuXHJcbiAgfVxyXG5cclxuICA+IGlmcmFtZXtcclxuICAgIG9iamVjdC1maXQ6IGZpbGw7XHJcbiAgfVxyXG5cclxuICA+LmJnLWltZ3tiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO31cclxuXHJcbiAgJi13cnB7XHJcblxyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogNTtcclxuXHJcbiAgICAmLm0tc2hhZG93e1xyXG4gICAgICAmOmFmdGVye1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBoZWlnaHQ6IDcyJTtcclxuICAgICAgICB0b3A6IGF1dG87XHJcbiAgICAgICAgcmlnaHQ6IC0zcmVtO1xyXG4gICAgICAgIGxlZnQ6IC0zcmVtO1xyXG4gICAgICAgIGJvdHRvbTogLTNyZW07XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgei1pbmRleDogLTE7XHJcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgICAgLnJlc3BvbnNpdmUtZW1iZWR7Ym9yZGVyLXJhZGl1czogMXJlbTt9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXNvY2lhbC1pbmxpbmV7XHJcbiAgZm9udC1zaXplOiAwO1xyXG4gIGxpe1xyXG4gICAgcGFkZGluZzogMCA3cHg7XHJcbiAgICBhe1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6IC44O1xyXG4gICAgICB9XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWJzLWxpbmt7XHJcbiAgQGluY2x1ZGUgYWJzb2x1dGVTdHJldGNoO1xyXG4gIHotaW5kZXg6IDU7XHJcbn1cclxuXHJcbi5iLWFpLXBhcnRuZXJze1xyXG5cclxuICAmX19pbWd7XHJcbiAgICBtYXJnaW4tdG9wOiAtMS41cmVtO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIG1heC13aWR0aDogOTZyZW07XHJcbiAgICBpbWd7XHJcbiAgICAgICY6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6IDA7fVxyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDVyZW07XHJcbiAgICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgICAgbWF4LWhlaWdodDogNS45cmVtO1xyXG4gICAgICBtaW4taGVpZ2h0OiA0LjlyZW07XHJcbiAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG5cclxuICAgICAgJi5iaWcsJjpudGgtY2hpbGQoMil7XHJcbiAgICAgICAgbWF4LWhlaWdodDogNS45cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuc2xpZGVyLWl0ZW17XHJcbiAgICAgIG1pbi13aWR0aDogMTByZW07XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgZmxleDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2ltZy1zbGlkZXJ7XHJcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICAuc2xpZGVyLWl0ZW17XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMS41dnc7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXZ3O1xyXG5cclxuICAgICAgaW1ne1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLnNsaWNrLWRvdHN7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJi5zbGlkZXItbWFycXVlZXtcclxuICAgICAgZGlzcGxheTpmbGV4O1xyXG4gICAgICBmbGV4LXdyYXA6bm93cmFwO1xyXG4gICAgICB3aGl0ZS1zcGFjZTpub3dyYXA7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgICAgbWluLXdpZHRoOiAwO1xyXG5cclxuICAgICAgJi5jbG9uZWR7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDoxLjVyZW07bGVmdDoxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICAvL292ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIC5zbGljay10cmFjaywuc2xpY2stbGlzdHtcclxuICAgICAgICAvL292ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICB9XHJcbiAgICAgICYuY2xvbmVke1xyXG4gICAgICAgIC5zbGlkZXItaXRlbXtcclxuICAgICAgICAgICY6Zmlyc3Qtb2YtdHlwZXtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC5zbGlkZXItaXRlbXtcclxuICAgICAgICAmOmZpcnN0LW9mLXR5cGV7XHJcbiAgICAgICAgICAvL3BhZGRpbmctbGVmdDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICAgIG1pbi13aWR0aDogMDtcclxuICAgICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgICBpbWd7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XHJcbiAgICAgICAgICAvL21pbi13aWR0aDogMjV2dztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9mbGV4OiAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCh0YWJsZXQgZG93bil7XHJcblxyXG4gICAgbWFyZ2luLXRvcDogLTEwcmVtO1xyXG5cclxuICAgICZfX3R4dHtcclxuICAgICAgbWF4LXdpZHRoOiA1MHJlbTtcclxuICAgIH1cclxuXHJcbiAgICAmX19pbWd7XHJcbiAgICAgIG1hcmdpbi10b3A6IDByZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luLXRvcDogLTRyZW07XHJcbiAgICAmX19pbWd7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjBweCk7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OmF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDphdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgJl9faW1ne1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgID5pbWd7XHJcbiAgICAgICAgLy9tYXJnaW4tcmlnaHQ6IDUlO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDI0JTtcclxuICAgICAgICBmbGV4OiAwIDEgYXV0bztcclxuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmItYm94LXJldmlld3tcclxuXHJcbiAgJi1saXN0e1xyXG5cclxuICAgICYucm93e1xyXG4gICAgICAmLnNsaWNrLXNsaWRlcntcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtYXJnaW4tdG9wOiA0cmVtO1xyXG5cclxuICAgID4uY29sdW1ue1xyXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcclxuICAgICAgICArIC5jb2x1bW57XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLWJveC1yZXZpZXd7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZmxleDogMTtcclxuICAgICAgJl9fZm9vdGVye21hcmdpbi10b3A6IGF1dG87fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWF4LXdpZHRoOiA0NHJlbTtcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcblxyXG4gICZfX3BpY3tcclxuICAgIG1hcmdpbi1ib3R0b206IDMuNHJlbTtcclxuICAgIGhlaWdodDogMTByZW07XHJcbiAgICB3aWR0aDogMTByZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuXHJcbiAgICBpbWd7XHJcbiAgICAgIG1heC13aWR0aDogMTByZW07XHJcbiAgICB9XHJcblxyXG4gICAgLnJlc3BvbnNpdmUtZW1iZWR7XHJcbiAgICAgIGhlaWdodDogMTByZW07XHJcbiAgICAgIHdpZHRoOiAxMHJlbTtcclxuICAgICAgaW1ne1xyXG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgJl9fYm9keXtcclxuICAgIHBhZGRpbmctYm90dG9tOiAycmVtO1xyXG4gICAgZm9udC1zaXplOiAxLjZyZW07XHJcbiAgICBwe1xyXG4gICAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19mb290ZXJ7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gICAgcGFkZGluZy10b3A6IDEuNXJlbTtcclxuXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgLy9mbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgcHtcclxuICAgICAgYXtcclxuICAgICAgICAmOmhvdmVye1xyXG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi1jb2x7XHJcbiAgICAgICY6bGFzdC1vZi10eXBle2JvcmRlcjpub25lO31cclxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yLWJvcmRlcjtcclxuICAgICAgZmxleDogMCAxIGF1dG87XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDdyZW07XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMnJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMnJlbTtcclxuXHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHB7bWFyZ2luLWJvdHRvbTogMDt9XHJcbiAgfVxyXG5cclxuICAmX19hdXRob3J7XHJcbiAgICBjb2xvcjogIzIyMjtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fdHh0LCZfX2F1dGhvcntcclxuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXJlcG9ydHtcclxuXHJcbiAgJi1saXN0e1xyXG4gICAgbWF4LXdpZHRoOiA5MHJlbTtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cclxuICAgIC5iLXJlcG9ydCArIC5iLXJlcG9ydHttYXJnaW4tdG9wOiAxcmVtO31cclxuXHJcbiAgfVxyXG5cclxuICAmLS1jYXJlZXJ7XHJcbiAgICAuYi1yZXBvcnR7XHJcbiAgICAgICZfX3BpY3tcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgIGltZ3tcclxuICAgICAgICAgIHdpZHRoOjEwMCU7XHJcbiAgICAgICAgICBoZWlnaHQ6MTAwJTtcclxuICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAmX19pbmZve1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMi40cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDIuNHJlbTtcclxuICAgICAgICBwe1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XHJcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAgICAgICBmb250LXNpemU6ICRmb250LXNpemUtYm9keS1tb2I7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICZfX2luZm8tYnRue1xyXG4gICAgICAgIC5idG57bWluLXdpZHRoOiAwO31cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJl9fcGlje1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZWVuO1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIGZsZXg6IDAgMCAyNHJlbTtcclxuICAgIG1heC13aWR0aDogMjRyZW07XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICB9XHJcbiAgJl9faW5mb3tcclxuICAgIHBhZGRpbmctbGVmdDogNHJlbTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDRyZW07XHJcbiAgICBmbGV4OiAxO1xyXG4gICAgZmxleDogMCAwIGNhbGMoMTAwJSAtIDI0cmVtKTtcclxuICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMjRyZW0pO1xyXG4gICAgYmFja2dyb3VuZDogI0U5RTlFOTtcclxuICAgIGNvbG9yOiAjMjIyO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICYtdHh0e1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIHBhZGRpbmctdG9wOiAuNzVyZW07XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAuNzVyZW07XHJcbiAgICB9XHJcblxyXG4gICAgJi1idG57XHJcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgICBtYXJnaW4tbGVmdDogNHJlbTtcclxuICAgIH1cclxuXHJcbiAgICBwe1xyXG4gICAgICBAZXh0ZW5kIC50ZXh0LS1sYXJnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAmX19waWMsJl9faW5mb3tcclxuICAgICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgcGFkZGluZzogM3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgICYtbGlzdHtcclxuICAgICAgbWF4LXdpZHRoOiAyNDBweDtcclxuICAgIH1cclxuICAgICZfX2luZm97XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAgcGFkZGluZzogMS44cmVtIDJyZW0gM3JlbTtcclxuICAgIH1cclxuICAgICZfX2luZm8tdHh0e1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcbiAgICB9XHJcbiAgICAmX19pbmZvLWJ0bntcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uYi1jdGEtYmVuZWZpdHtcclxuICAmOmJlZm9yZXtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDowO1xyXG4gICAgdG9wOjA7XHJcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIHdpZHRoOiA1cmVtO1xyXG4gICAgaGVpZ2h0OiA1cmVtO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL2NoZWNrLWMuc3ZnKSAwIDAgbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIG1heC13aWR0aDogMjhyZW07XHJcbiAgbWluLXdpZHRoOiAyN3JlbTtcclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1cmVtO1xyXG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcclxuICAgIHBhZGRpbmctdG9wOiAuNHJlbTtcclxuICAgIEBleHRlbmQgLnRleHQtLW1lZGl1bTtcclxuICB9XHJcblxyXG4gIHB7XHJcbiAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgICY6YmVmb3Jle1xyXG4gICAgICB3aWR0aDogNHJlbTtcclxuICAgICAgaGVpZ2h0OiA0cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIGZsZXg6IDAgMCA3MCU7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogNHJlbTtcclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjRweCl7XHJcbiAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgIG1pbi1oZWlnaHQ6IDdyZW07XHJcbiAgICBtYXgtd2lkdGg6IDk1JTtcclxuXHJcbiAgICAmX190eHR7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG4uYi1haS1wcm9kdWN0e1xyXG5cclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgQGF0LXJvb3QgLnNsaWNrLXNsaWRlciAme1xyXG4gICAgZGlzcGxheTogZmxleCFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAmX19waWN7XHJcbiAgICBmbGV4OiAwIDAgNDUlO1xyXG4gICAgbWF4LXdpZHRoOiA0NSU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBpbWd7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pbmZve1xyXG4gICAgZmxleDogMCAwIDU1JTtcclxuICAgIG1heC13aWR0aDogNTUlO1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDRyZW07XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjhyZW07XHJcbiAgICBjb2xvcjogIzIyMjtcclxuICB9XHJcblxyXG4gICZfX3R4dHtcclxuICAgIC8vQGV4dGVuZCAudGV4dC0teGxhcmdlO1xyXG4gICAgQGV4dGVuZCAudGV4dC0tbWVkaXVtO1xyXG4gICAgcHtmb250LXNpemU6IDEwMCU7bGluZS1oZWlnaHQ6IDEuNTt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIHBhZGRpbmctYm90dG9tOiA2cmVtO1xyXG5cclxuICAgICZfX3BpYywmX19pbmZve1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gICAgJl9fcGlje1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwJTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMTAlO1xyXG4gICAgICBpbWd7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTEwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZfX2luZm97XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMnJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMnJlbTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAudGV4dC1yaWdodHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmItYWktcHJvZHVjdC1zbGlkZXJ7XHJcblxyXG4gICZfX25hdntcclxuXHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgLy9ib3JkZXItYm90dG9tOiAxcHggc29saWQgI0U5RTlFOTtcclxuXHJcbiAgICAmLWljbntcclxuXHJcbiAgICAgIGhlaWdodDogNXJlbTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZmxleC1ncm93OiAxO1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAgIGltZyxzdmd7XHJcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICAgIC8vbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1heC13aWR0aDogNi4ycmVtO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDQuNnJlbTtcclxuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuaWNuLXV4e3dpZHRoOiA0LjVyZW07fVxyXG4gICAgfVxyXG5cclxuICAgICYtaXRte1xyXG5cclxuICAgICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgICAgKntcclxuICAgICAgICAgIGNvbG9yOiAkY29sb3IteWVsbG93O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdmd7XHJcbiAgICAgICAgICBwYXRoe2ZpbGw6ICRjb2xvci15ZWxsb3c7ZmlsbC1vcGFjaXR5OiAxO31cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGJvcmRlci1ib3R0b206IC44cmVtIHNvbGlkICRjb2xvci15ZWxsb3c7XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDEuOHJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMS44cmVtO1xyXG4gICAgICBtYXgtd2lkdGg6IDE4cmVtO1xyXG4gICAgICB3aWR0aDogMThyZW07XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLXRpdGxle1xyXG4gICAgICBAYXQtcm9vdCAuaXMtYWN0aXZlICZ7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgfVxyXG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDFyZW07XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XHJcbiAgICAgIC8vbWFyZ2luLWJvdHRvbTogMXJlbjtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgLnNsaWNrLW5hdi5zbGljay1hcnJvd3tcclxuICAgICAgdG9wOiAyMCU7XHJcbiAgICB9XHJcbiAgICAmX19uYXZ7XHJcbiAgICAgICYtaXRte1xyXG4gICAgICAgICYuaXMtYWN0aXZle1xyXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogM3B4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL21hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogLjVyZW07XHJcbiAgICAgICAgd2lkdGg6IGF1dG87XHJcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogM3B4O1xyXG4gICAgICB9XHJcbiAgICAgICYtdGl0bGV7XHJcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNGVtO1xyXG4gICAgICB9XHJcbiAgICAgIC8vJi10aXRsZXtmb259XHJcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuICAgICAgLy9ib3JkZXItYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgJl9fbmF2e1xyXG4gICAgICAmLXRpdGxle1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcclxuICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICB9XHJcbiAgICAgICYtaWNue1xyXG4gICAgICAgIHN2ZyxpbWd7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IDQuMnJlbTtcclxuICAgICAgICAgIG1heC1oZWlnaHQ6IDMuNnJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItdXNlLWNhc2UtbGlzdHtcclxuXHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG4gICZfX2l0bXtcclxuICAgIHBhZGRpbmc6IDJyZW07XHJcbiAgICBmbGV4OiAwIDAgMzMlO1xyXG4gICAgbWF4LXdpZHRoOiAzMy4zMyU7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgLy8uYi11c2UtY2FzZXtcclxuICAgIC8vICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi91c2UtY2FzZS0xLnN2ZykgNTAlIDAgbm8tcmVwZWF0O1xyXG4gICAgLy8gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgIC8vfVxyXG5cclxuICAgIC8vQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAxMntcclxuICAgIC8vICAmOm50aC1jaGlsZCgjeyRpfSl7XHJcbiAgICAvLyAgICAuYi11c2UtY2FzZXtcclxuICAgIC8vICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWcvY29tbW9uL3VzZS1jYXNlLSN7JGl9LnN2ZycpIDUwJSAwIG5vLXJlcGVhdDtcclxuICAgIC8vICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgLy8gICAgfVxyXG4gICAgLy8gIH1cclxuICAgIC8vfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAuYi11c2UtY2FzZXtcclxuICAgIC8vaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bil7XHJcbiAgICAmX19pdG17XHJcbiAgICAgIGZsZXg6IDAgMCA1MCU7XHJcbiAgICAgIG1heC13aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuXHJcbiAgICBtYXJnaW4tbGVmdDogLTJyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0ycmVtO1xyXG5cclxuICAgICZfX2l0bXtcclxuICAgICAgZmxleDogMCAwIDUwJTtcclxuICAgICAgbWF4LXdpZHRoOiA1MCU7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpe1xyXG4gICAgJl9faXRte1xyXG4gICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXVzZS1jYXNle1xyXG5cclxuICAmOmhvdmVye1xyXG4gICAgLy9ib3gtc2hhZG93OiAkc2hhZG93O1xyXG4gIH1cclxuXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgLy9iYWNrZ3JvdW5kOiAkY29sb3IteWVsbG93O1xyXG4gIC8vcGFkZGluZy10b3A6IDJyZW07XHJcbiAgLy9wYWRkaW5nLWJvdHRvbTogMnJlbTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtd3JhcDogd3JhcDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtaW4taGVpZ2h0OiAyMnJlbTtcclxuXHJcbiAgJl9fcGlje1xyXG4gICAgLy9mbGV4OiAwIDAgMTAwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgLy9oZWlnaHQ6IDEycmVtO1xyXG4gICAgLy9kaXNwbGF5OiBmbGV4O1xyXG4gICAgLy9mbGV4LWdyb3c6IDE7XHJcbiAgICAvL2FsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAvL2p1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICYuX2ItMXtcclxuICAgICAgLy90b3A6MjAlO3Bvc2l0aW9uOnJlbGF0aXZlO1xyXG4gICAgICAvL2ltZ3ttYXgtd2lkdGg6IDEzMCU7fVxyXG4gICAgfVxyXG5cclxuICAgIGltZ3tcclxuICAgICAgLy9tYXJnaW4tbGVmdDogLTEzJTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgbWF4LWhlaWdodDogMTAwJTtcclxuICAgICAgLy9oZWlnaHQ6IDEwMCU7XHJcbiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmX19pbmZve1xyXG4gICAgZmxleDogMCAwIDEwMCU7XHJcbiAgICAvL2hlaWdodDogMTAwJTtcclxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgLy9tYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDEycmVtKTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDowO3RvcDo1NSU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGZvbnQtc2l6ZTogMnJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XHJcbiAgICBtYXgtd2lkdGg6IDIwcmVtO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmLWxpc3R7XHJcbiAgICB9XHJcbiAgICAmX19pbmZve1xyXG4gICAgICAvL21heC13aWR0aDogY2FsYygxMDAlIC0gOHJlbSlcclxuICAgIH1cclxuICAgICZfX3RpdGxle1xyXG4gICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB9XHJcbiAgICAmX19waWN7XHJcbiAgICAgIC8vd2lkdGg6IDlyZW07XHJcbiAgICAgIC8vZmxleDogMCAwIDlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzVweCl7XHJcbiAgICBtaW4taGVpZ2h0OiAwO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLWNhbGxiYWNrLWZvcm17XHJcblxyXG4gIEBleHRlbmQgJW1vYmlsZS1mb3JtO1xyXG5cclxuICB0ZXh0YXJlYXtcclxuICAgIHBhZGRpbmctdG9wOiAxcmVtO1xyXG4gICAgbWluLWhlaWdodDogMTRyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcclxuICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICBjb2xvcjogI0FBQUFBQTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5iLWZvcm0tbGlzdHtcclxuICAgIGlucHV0Om5vdChbdHlwZT1zdWJtaXRdKSx0ZXh0YXJlYXtcclxuICAgICAgJjpmb2N1cywmOmFjdGl2ZXtcclxuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgICB9XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7XHJcbiAgICAgIEBpbmNsdWRlIGZvcm0tcGxhY2Vob2xlcigpe1xyXG4gICAgICAgIGNvbG9yOiAjQUFBQUFBO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmhhcy1lcnJvcntcclxuICAgICAgaW5wdXQ6bm90KFt0eXBlPXN1Ym1pdF0pLHRleHRhcmVhe1xyXG4gICAgICAgICY6Zm9jdXMsJjphY3RpdmV7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRjAwMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb250LXNpemU6IDA7XHJcbiAgICBtYXJnaW4tdG9wOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAtLjVyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC41cmVtO1xyXG5cclxuICAgIGxpe1xyXG4gICAgICBwYWRkaW5nOiAuNXJlbTtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC5idG4tc3VibWl0e1xyXG4gICAgQGV4dGVuZCAuYnRuLWZsYXQ7XHJcbiAgICBAZXh0ZW5kIC5idG4tbW9yZTtcclxuICAgICYuYnRue1xyXG4gICAgICAmOmhvdmVye1xyXG4gICAgICAgIG9wYWNpdHk6Ljc7XHJcbiAgICAgIH1cclxuICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmhhcy1lcnJvcntcclxuICAgIGlucHV0LHRleHRhcmVhe1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZFN0U3O1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjRkYwMDAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZvcm0tc3VibWl0LW1lc3NhZ2V7XHJcbiAgICBtYXgtd2lkdGg6IDI4cmVtO1xyXG4gICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuXHJcbiAgICBwe2ZvbnQtc2l6ZTogMTAwJTt9XHJcblxyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgJl9fdHh0e1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4yNTtcclxuICAgICAgLy9mb250LXNpemU6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG5cclxuICAgIC50ZXh0LXJpZ2h0e1xyXG4gICAgICB0ZXh0LWFsaWduOmNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuY29sdW1uLm1sLWF1dG97XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC5nZm9ybV9mb290ZXJ7XHJcbiAgICAgIG1hcmdpbi10b3A6IDFyZW07XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybXtcclxuICAgICAgLmNvbHVtbntcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgICAgLy9wYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbiAgICAgIC8vcGFkZGluZy1yaWdodDogMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuYi1mb3JtLWxpc3R7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAtLjVyZW07XHJcbiAgICAgIG1hcmdpbi1yaWdodDogLS41cmVtO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQyNXB4KXtcclxuICAgIC5iLWZvcm0tbGlzdHtcclxuICAgICAgbGl7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5iLXBhcnRuZXJzLWxpc3R7XHJcbiAgZm9udC1zaXplOiAwO1xyXG4gICZfX2l0bXtcclxuICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGltZ3tcclxuICAgICAgLy9tYXgtaGVpZ2h0OiA1cmVtO1xyXG4gICAgICAvL2hlaWdodDogYXV0bztcclxuICAgICAgLy93aWR0aDogYXV0bztcclxuICAgICAgLy9tYXgtd2lkdGg6IDEwMCU7XHJcbiAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYi1sb2NhdGlvbi1saXN0e1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG5cclxuICAuYi1sb2NhdGlvbntcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgJl9faXRte1xyXG4gICAgcGFkZGluZzogMnJlbTtcclxuICAgIGZsZXg6IDAgMCAzMyU7XHJcbiAgICBtYXgtd2lkdGg6IDMzLjMzJTtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pe1xyXG4gICAgJl9faXRte1xyXG4gICAgICBmbGV4OiAwIDAgNTAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSBhbmQgKG1pbi13aWR0aDogMzc1cHgpe1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAtMXJlbTtcclxuICAgICZfX2l0bXtcclxuICAgICAgZmxleDogMCAwIDMzJTtcclxuICAgICAgbWF4LXdpZHRoOiAzMyU7XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcclxuICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcclxuICAgICAgPiBkaXZ7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgfVxyXG4gICAgICAuYi1sb2NhdGlvbl9faW5mb3twYWRkaW5nLXRvcDogOSU7fVxyXG4gICAgICAuYi1sb2NhdGlvbl9fdGl0bGV7Zm9udC1zaXplOiAycmVtO2ZvbnQtc2l6ZTogNHZ3O31cclxuICAgICAgLmItbG9jYXRpb25fX2NpdHl7Zm9udC1zaXplOiAxLjhyZW07Zm9udC1zaXplOiAzLjZ2dzt9XHJcbiAgICAgIC5iLWxvY2F0aW9uX19tYXJrZXJ7bWFyZ2luLWJvdHRvbTogMDttYXJnaW4tYm90dG9tOiAxdnc7fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc0cHgpe1xyXG4gICAgJl9faXRte1xyXG4gICAgICBmbGV4OiAwIDAgMTAwJTtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgICA+IGRpdntcclxuICAgICAgICB3aWR0aDogMjRyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAyNHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLWxvY2F0aW9ue1xyXG4gIHdpZHRoOiAyOHJlbTtcclxuICBoZWlnaHQ6IDI4cmVtO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG5cclxuICAmX19pbmZve1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOjA7bGVmdDowO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nLXRvcDogNHJlbTtcclxuICAgIC8vZGlzcGxheTogZmxleDtcclxuICAgIC8vZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIC8vYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIC8vanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAmX19tYXJrZXJ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBAZXh0ZW5kIC50aXRsZS00O1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgfVxyXG5cclxuICAmX19jaXR5e1xyXG4gICAgZm9udC1zaXplOiAyLjZyZW1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItdmFjYW5jeS1saXN0e1xyXG4gIG1hcmdpbi10b3A6IDNyZW07XHJcbiAgbWF4LXdpZHRoOiA0MDBweDtcclxuXHJcbiAgJl9faXRte1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcbiAgICAvL2JhY2tncm91bmQtY29sb3I6ICNmNGY0ZjQ7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbi5iLXZhY2FuY3l7XHJcblxyXG4gICYtd3Jwe1xyXG4gICAgbWF4LXdpZHRoOiA0MDBweDtcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgcGFkZGluZy10b3A6IDIwcHg7XHJcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XHJcblxyXG4gIEBpbmNsdWRlIGRpc3BsYXlGbGV4O1xyXG4gIEBpbmNsdWRlIGp1c3RpZnlDb250ZW50U3BhY2VCZXR3ZWVuO1xyXG5cclxuICAmX19ib2R5e1xyXG4gICAgbWF4LXdpZHRoOiA4MCU7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIH1cclxuXHJcbiAgJl9fdGl0bGV7XHJcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXRpdGxlO1xyXG4gICAgY29sb3I6ICMwYTBhMGE7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgLy9sZXR0ZXItc3BhY2luZzogLS4wNWVtO1xyXG4gICAgYXtcclxuICAgICAgLy8mOmhvdmVye1xyXG4gICAgICAvLyAgY29sb3I6ICRjb2xvci1idG47XHJcbiAgICAgIC8vfVxyXG4gICAgICBjb2xvcjogY3VycmVudENvbG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJl9fY2l0eXtcclxuICAgIGNvbG9yOiAkY29sb3ItZ3JleTI7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAvL2xldHRlci1zcGFjaW5nOiAtLjA1ZW07XHJcbiAgfVxyXG5cclxuICAmX19saW5re1xyXG4gICAgJjpob3ZlcntcclxuICAgICAgLy90ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICAgICAgb3BhY2l0eTogLjc7XHJcbiAgICAgIGNvbG9yOiAkY29sb3Itb3JhbmdlO1xyXG4gICAgfVxyXG4gICAgY29sb3I6ICRjb2xvci1vcmFuZ2U7XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgbWF4LXdpZHRoOiAyMCU7XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpe1xyXG4gICAgJi1saXN0LCAmLXdycHtcclxuICAgICAgLy9tYXgtd2lkdGg6IDgwJTtcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgICAgJi5hbGlnbi1yaWdodHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KXtcclxuICAgICYtbGlzdHtcclxuICAgICAgbWFyZ2luLXRvcDogMjVweDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogNzVweDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuLmItaG9tZS12aWRlb3tcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWF4LXdpZHRoOiA5NnJlbTtcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcblxyXG4gIC5idG4tcGxheXtcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgIC5pY24tcGxheS1zaGFkb3d7XHJcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguOSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmlzLWhpZGV7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLC01MCUpO1xyXG4gICAgei1pbmRleDogNTtcclxuICAgIGZvbnQtc2l6ZTogMXJlbTtcclxuICAgIC5pY24tcGxheS1zaGFkb3d7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB3aWR0aDogMjJlbTtcclxuICAgICAgaGVpZ2h0OiAyMmVtO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vcGxheS1jaXJjbGUtc2hhZG93LnN2ZykgNTAlIDUwJSBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4ydnc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLnJlc3BvbnNpdmUtZW1iZWR7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fdmlkZW8tbW9ie1xyXG4gICAgPiBpZnJhbWV7XHJcbiAgICAgIG9iamVjdC1maXQ6IGluaXRpYWw7XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTM2MHB4KXtcclxuICAgIG1heC13aWR0aDogNzhyZW07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmItYm94LXByb21vLWxpc3R7XHJcbiAgJl9faXRte1xyXG5cclxuICB9XHJcbiAgLmItYm94LXByb21ve1xyXG4gICAgbWF4LXdpZHRoOiAzMXJlbTtcclxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLmlzLWFjdGl2ZXtcclxuICAgIGltZ3tcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgfVxyXG4gICAgLnNob3ctb24tYWN0aXZle1xyXG4gICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0tZmVhdHVyZXN7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICAvL3BlcnNwZWN0aXZlOiAxMDAwcHg7XHJcbiAgICAuYi1ib3gtcHJvbW8tbGlzdF9faXRte1xyXG4gICAgICB0cmFuc2l0aW9uOiBhbGwgLjdzO1xyXG4gICAgICAvL3RyYW5zaXRpb24tZGVsYXk6IDAuMDVzO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxLDEpO1xyXG4gICAgICAmLmlzLWFjdGl2ZXtcclxuICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxLjI3LDEuMjcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNsaWNrLXNsaWRle1xyXG4gICAgICAvL3RyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEuMSwxLjEpO1xyXG4gICAgfVxyXG5cclxuICAgIC5zbGljay1hY3RpdmV7XHJcblxyXG4gICAgICAuYi1ib3gtcHJvbW8tbGlzdF9faXRte1xyXG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEuMjcsMS4yNyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAuYi1ib3gtcHJvbW97XHJcbiAgICAgIG1heC13aWR0aDogMzNyZW07XHJcbiAgICB9XHJcbiAgICAmX19pdG17XHJcbiAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG5cclxuICAgICAgJiArICZ7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogN3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbi5iLWJveC1wcm9tb3tcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICZfX3BpY3tcclxuXHJcbiAgICBtaW4taGVpZ2h0OiAxNHJlbTtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICBpbWd7XHJcbiAgICAgIHRyYW5zaXRpb246IC43cyBlYXNlLWluLW91dDtcclxuICAgIH1cclxuXHJcbiAgICAuc2hvdy1vbi1hY3RpdmV7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAmX190eHR7XHJcbiAgICBmb250LXNpemU6IDNyZW07XHJcblxyXG4gICAgcHtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi0tZmVhdHVyZXN7XHJcblxyXG4gICAgLmItYm94LXByb21vX19waWN7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07XHJcblxyXG4gICAgICAuc2hvdy1vbi1hY3RpdmV7XHJcbiAgICAgICAgdG9wOiBhdXRvO1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmItYm94LXByb21vX190eHR7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgICBAYXQtcm9vdCAuaXMtYWN0aXZlICZ7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgfVxyXG4gICAgICBAYXQtcm9vdCAuc2xpY2stYWN0aXZlICZ7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAgIC5iLWJveC1wcm9tb19fdHh0e1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtO1xyXG4gICAgICB9XHJcbiAgICAgIC5iLWJveC1wcm9tb19fcGlje1xyXG4gICAgICAgIGltZ3tcclxuICAgICAgICAgIG1pbi13aWR0aDogMjByZW07XHJcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAyMHJlbTtcclxuICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICZfX3BpY3tcclxuICAgICAgaW1ne1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDEwcmVtO1xyXG4gICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICZfX3R4dHtcclxuICAgICAgZm9udC1zaXplOiAyLjJyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59IiwiW2NsYXNzKj0nYnRuLSdde1xyXG4gICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31cclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgLy9ib3JkZXI6IG1lZGl1bSBub25lO1xyXG59XHJcblxyXG4uYnRuLWljb257XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyOiBtZWRpdW0gbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBsaW5lLWhlaWdodDogMTtcclxuICB3aWR0aDogYXV0bztcclxuICBwYWRkaW5nOiAxLjFyZW0gMXJlbTtcclxufVxyXG5cclxuLmJ0bi1kcm9wZG93biwuYnRuLWxpbmt7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyOiBtZWRpdW0gbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi5idG4tLWJsb2Nre1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uYnRuLCAuYnV0dG9uLCAlYnRue1xyXG4gICY6bGlua3tcclxuICAgICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31cclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICB9XHJcbiAgJjpob3ZlciwmOmZvY3Vze1xyXG4gICAgLy9ib3JkZXItY29sb3I6IGRhcmtlbigkY29sb3ItcHJpbWFyeSwgMTAlKTtcclxuICAgIC8vYmFja2dyb3VuZDogZGFya2VuKCRjb2xvci1wcmltYXJ5LCAxMCUpO1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgICBvcGFjaXR5OiAuNztcclxuICAgIC8vYm9yZGVyLWNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xyXG4gICAgLy9jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgfVxyXG4gICY6YWN0aXZle1xyXG4gICAgLy9jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgfVxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1idG47XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXByaW1hcnk7XHJcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1iYXNlO1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICBsaW5lLWhlaWdodDogMTtcclxuICBmb250LXNpemU6IDEuNHJlbTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XHJcbiAgcGFkZGluZzogMS4ycmVtIDEuNXJlbSAxLjJyZW07XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGNvbG9yIC4zcywgYmFja2dyb3VuZCAuM3MsIGJvcmRlci1jb2xvciAuM3MsIG9wYWNpdHkgLjNzIGVhc2U7XHJcblxyXG4gICYubm8tcmFkaXVze1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICB9XHJcblxyXG4gICYubS13aGl0ZXtcclxuICAgICY6aG92ZXJ7XHJcbiAgICAgIC8vYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIC8vY29sb3I6ICNmZmY7XHJcbiAgICAgIC8vYm9yZGVyLWNvbG9yOiAjZmZmO1xyXG4gICAgICBvcGFjaXR5OiAuNztcclxuICAgIH1cclxuICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICBjb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgfVxyXG5cclxuICAmLmJ0bi0td2hpdGV7XHJcbiAgICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICBib3JkZXItY29sb3I6ICNmZmY7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmO1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcclxuICB9XHJcblxyXG4gICYuYnRuLS1wcmltYXJ5e1xyXG4gICAgJjpob3ZlciwmOmZvY3Vze1xyXG4gICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgYm9yZGVyLWNvbG9yOiBkYXJrZW4oJGNvbG9yLXByaW1hcnksMTAlKTtcclxuICAgICAgYmFja2dyb3VuZDogZGFya2VuKCRjb2xvci1wcmltYXJ5LDEwJSk7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICB9XHJcbiAgJi5idG4tLXJlZHtcclxuICAgICY6aG92ZXIsJjpmb2N1c3tcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogZGFya2VuKCNmZjAwNWMsMTAlKTtcclxuICAgICAgYmFja2dyb3VuZDogZGFya2VuKCNmZjAwNWMsMTAlKTtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZmYwMDVjO1xyXG4gICAgYmFja2dyb3VuZDogI2ZmMDA1YztcclxuICB9XHJcblxyXG5cclxuICAmLmJ0bi0tbGFyZ2V7XHJcbiAgICBmb250LXNpemU6IDIuNXJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBtaW4td2lkdGg6IDMwcmVtO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNnJlbTtcclxuICAgIHBhZGRpbmctdG9wOiAycmVtO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDJyZW07XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gICYubS1zaGFkb3d7XHJcbiAgICBib3gtc2hhZG93OiAkYnRuLXNoYWRvdztcclxuICB9XHJcbiAgJi5tLWZpeGVke1xyXG4gICAgJi0tbWR7bWluLXdpZHRoOiAxNnJlbTt9XHJcbiAgICBtaW4td2lkdGg6IDE4cmVtO1xyXG4gIH1cclxuICAmLm0tcm91bmRlZHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICYubS1maXhlZHtcclxuICAgICAgJi0tbWR7bWluLXdpZHRoOiAxNjBweDt9XHJcbiAgICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICB9XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmJ1dHRvbntcclxuICBib3JkZXI6IG1lZGl1bSBub25lO1xyXG4gIHNwYW57dmVydGljYWwtYWxpZ246IG1pZGRsZTt9XHJcbn1cclxuXHJcblxyXG4uYnRuLWZsYXR7XHJcbiAgJi5pcy1hY3RpdmV7fVxyXG4gIEBleHRlbmQgLmJ0bjtcclxuICAmOmhvdmVye1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgfVxyXG5cclxuICAmLm0td2hpdGV7XHJcbiAgICAmOmhvdmVyLCY6Zm9jdXN7XHJcbiAgICAgIC8vYmFja2dyb3VuZDogI2ZmZjtcclxuICAgICAgLy9jb2xvcjogJGNvbG9yLXRleHQ7XHJcbiAgICAgIG9wYWNpdHk6IC43O1xyXG4gICAgfVxyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbn1cclxuXHJcbi5idG4tc3VibWl0e1xyXG4gIEBleHRlbmQgJWJ0bjtcclxufVxyXG5cclxuLmJ0bi1tb3Jle1xyXG4gIG1pbi13aWR0aDogMThyZW07XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIG1pbi13aWR0aDogMTgwcHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi5iYWNrLWxpbmt7XHJcbiAgQGluY2x1ZGUgbm9kZWNvcjtcclxuICBjb2xvcjogJGNvbG9yLWdyZXkyO1xyXG4gIHN2ZyxbY2xhc3NePVwiaWNvblwiXXtcclxuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcclxuICB9XHJcblxyXG4gICY6aG92ZXJ7XHJcbiAgICBvcGFjaXR5OiAuNztcclxuICB9XHJcblxyXG4gICYudGV4dC0tYmx1ZXtjb2xvcjogJGNvbG9yLWJsdWU7fVxyXG4gICYudGV4dC0tb3Jhbmdle2NvbG9yOiAkY29sb3Itb3JhbmdlO31cclxuXHJcbn1cclxuXHJcbiRjbG9zZS13aWR0aDogMnJlbTtcclxuJGNsb3NlLWxpbmUtd2lkdGg6IC4ycmVtO1xyXG5cclxuLmNsb3NlLWJ1dHRvbntcclxuICAmOmJlZm9yZSwmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6MDtcclxuICAgIGxlZnQ6ICgkY2xvc2Utd2lkdGgvMikgKyAkY2xvc2UtbGluZS13aWR0aC8yO1xyXG4gICAgaGVpZ2h0OiAkY2xvc2Utd2lkdGggKyAkY2xvc2UtbGluZS13aWR0aC8yO1xyXG4gICAgd2lkdGg6ICRjbG9zZS1saW5lLXdpZHRoO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgfVxyXG4gICY6YmVmb3Jle3RyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTt9XHJcbiAgJjphZnRlcnt0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO31cclxuXHJcbiAgJjpob3ZlcntcclxuICAgIG9wYWNpdHk6IC41O1xyXG4gIH1cclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW4tbGVmdDogYXV0bztcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgZm9udC1zaXplOiAwO1xyXG4gIHdpZHRoOiAkY2xvc2Utd2lkdGg7XHJcbiAgaGVpZ2h0OiAkY2xvc2Utd2lkdGg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcclxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcyBlYXNlLCBiYWNrZ3JvdW5kIC4zcyBlYXNlO1xyXG59XHJcblxyXG4uYnRuLXdhdGNoe1xyXG4gICY6aG92ZXIsJjpmb2N1c3tcclxuICAgIG9wYWNpdHk6IC43O1xyXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcclxuICAgIGNvbG9yOiByZ2JhKDAsMCwwLC43KTtcclxuICB9XHJcbiAgJi5idG4tZmxhdHtcclxuICAgICY6aG92ZXIsJjpmb2N1c3tcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcclxuICAgICAgY29sb3I6IHJnYmEoMCwwLDAsLjcpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgfVxyXG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgfVxyXG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLDAsMCwuNSk7XHJcbiAgY29sb3I6IHJnYmEoMCwwLDAsLjcpO1xyXG4gIC8vcGFkZGluZy1sZWZ0OiAxLjhyZW07XHJcbiAgLy9wYWRkaW5nLXJpZ2h0OiAxLjhyZW07XHJcbn0iLCIlYnZfaGlkZGVuIHtcclxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XHJcbn1cclxuJWZpbGxlZF9vYmoge1xyXG4gIGNvbnRlbnQ6ICcnO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiVzbGlkZXJIMTAwe1xyXG4gIC5zbGljay10cmFja3tcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgLnNsaWNrLXNsaWRle1xyXG4gICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5zbGljay10cmFjaywuc2xpY2stbGlzdHtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICB9XHJcbiAgLnNsaWNrLXNsaWRle1xyXG4gICAgPmRpdntcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICA+IGRpdntcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4uc2xpY2stc2xpZGVye1xyXG5cclxuICAmLnNsaWRlci1wcm9ncmVzc2l2ZXtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICBoZWlnaHQ6MDtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIHRyYW5zaXRpb246YWxsIDEuMnMgZWFzZTtcclxuXHJcbiAgICAmLnNsaWNrLWluaXRpYWxpemVkIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5oYXMtcG9wb3ZlcntcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDUwO1xyXG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcclxuICAgIC5zbGljay10cmFjaywuc2xpY2stbGlzdHtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnNsaWRlci12aXNpYmxle1xyXG4gICAgLnNsaWNrLXRyYWNrLC5zbGljay1saXN0e1xyXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zbGljay1kb3Rze1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAwO1xyXG4gICAgcGFkZGluZy10b3A6IDFyZW07XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuICAgIGxpe1xyXG4gICAgICAmLnNsaWNrLWFjdGl2ZXtcclxuICAgICAgICBidXR0b257XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICBidXR0b257XHJcbiAgICAgICAgd2lkdGg6IDIuMnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDIuMnJlbTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICB9XHJcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UgZG93bil7XHJcbiAgICAgICAgcGFkZGluZzogLjVyZW07XHJcbiAgICAgICAgYnV0dG9ue1xyXG4gICAgICAgICAgd2lkdGg6IDEycHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEycHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2xpY2stYXJyb3d7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDUwJTtcclxuICAgIHotaW5kZXg6IDUwO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgZm9udC1zaXplOiA0cmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci10ZXh0O1xyXG4gICAgdHJhbnNpdGlvbjogLjVzO1xyXG5cclxuICAgICYuc2xpY2stZGlzYWJsZWR7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICYuc2xpY2stcHJldntcclxuICAgICAgbGVmdDotNnJlbTtcclxuICAgIH1cclxuICAgICYuc2xpY2stbmV4dHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICAgIHJpZ2h0Oi02cmVtO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSB1cCl7XHJcbiAgICAgIGZvbnQtc2l6ZTogNnJlbTtcclxuICAgICAgJi5zbGljay1wcmV2e2xlZnQ6LThyZW07fVxyXG4gICAgICAmLnNsaWNrLW5leHR7cmlnaHQ6LThyZW07fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNsaWNrLW5hdi5zbGljay1hcnJvd3tcclxuICAgICYuc2xpY2stZGlzYWJsZWR7XHJcbiAgICAgIG9wYWNpdHk6IC41O1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIH1cclxuICAgIHdpZHRoOiAxLjlyZW07XHJcbiAgICBoZWlnaHQ6IDMuMnJlbTtcclxuXHJcbiAgICBkaXNwbGF5OiBibG9jayFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJi5zbGljay1uZXh0e1xyXG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2ljb24vYXJyb3ctcmlnaHQuc3ZnKSA1MCUgNTAlIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgfVxyXG5cclxuICAgICYuc2xpY2stcHJldntcclxuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9pY29uL2Fycm93LWxlZnQuc3ZnKSA1MCUgNTAlIG5vLXJlcGVhdDtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xyXG4gICAgfVxyXG5cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MDBweCl7XHJcbiAgICAgICYuc2xpY2stbmV4dHtyaWdodDogLTEuNXJlbTt9XHJcbiAgICAgICYuc2xpY2stcHJldntsZWZ0OiAtMS41cmVtO31cclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgICAmLnNsaWNrLW5leHR7cmlnaHQ6IC0wLjVyZW07fVxyXG4gICAgICAmLnNsaWNrLXByZXZ7bGVmdDogLTAuNXJlbTt9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLnNsaWNrLXRyYWNre1xyXG4gICAgQGF0LXJvb3QgLmFsaWduLWxlZnQgJntcclxuICAgICAgbWFyZ2luLWxlZnQ6MDtcclxuICAgIH1cclxuICAgIEBhdC1yb290IC5hbGlnbi1yaWdodCAme1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6MDtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiLnRhYnMtcGFuZWx7XHJcbiAgLy92aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgLy9vcGFjaXR5OiAwO1xyXG4gIC8vaGVpZ2h0OiAwO1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbiAgJi5pcy1hY3RpdmV7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIC8vdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIC8vb3BhY2l0eTogMTtcclxuICAgIC8vaGVpZ2h0OiBhdXRvO1xyXG4gIH1cclxufVxyXG4udGFic3tcclxuICAmOmJlZm9yZSwmOmFmdGVye2Rpc3BsYXk6IG5vbmU7fVxyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIC50YWJzLXRpdGxle1xyXG4gICAgZmxvYXQ6IG5vbmU7XHJcbiAgICA+YXtwYWRkaW5nOiAwO2JhY2tncm91bmQ6IG5vbmU7fVxyXG4gIH1cclxufVxyXG5cclxuLnRhYnMtY29udGVudHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxufVxyXG5cclxuLnRhYnMtY29udGVudCwgLnRhYi1jb250ZW50e1xyXG5cclxuICAmLmhhcy1sb2FkZXJ7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9sb2FkZXIuc3ZnKSA1MCUgMTUlIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMTJyZW0gYXV0bztcclxuICB9XHJcblxyXG4gICYtLXZpc2libGV7XHJcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIGJvcmRlcjogbm9uZTtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuXHJcbiAgJi0tcGFkZGluZ3tcclxuICAgIHBhZGRpbmctdG9wOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgLmItdGFie1xyXG4gICAgJi5pcy1hY3RpdmV7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgIC8vei1pbmRleDogMTtcclxuICAgICAgei1pbmRleDogNTA7XHJcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB0b3A6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICAvL3otaW5kZXg6IDA7XHJcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC43cztcclxuICB9XHJcbn1cclxuXHJcbi5iLXRhYnN7XHJcblxyXG4gICZfX2xpbmt7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAuOXJlbSAxLjVyZW07XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XHJcbiAgfVxyXG5cclxuICAmLS1iZ3tcclxuXHJcbiAgICAuYi10YWJzX19saW5re1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtaW4taGVpZ2h0OiAxMnJlbTtcclxuICAgICAgZm9udC1zaXplOiAyLjRyZW07XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIGltZ3tcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogLTE7XHJcbiAgICAgICAgd2lkdGg6MTAwJTtcclxuICAgICAgICBoZWlnaHQ6MTAwJTtcclxuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZVN0cmV0Y2g7XHJcbiAgICAgIH1cclxuICAgICAgc3BhbntcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgei1pbmRleDogNDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5iLXRhYnMtbGlzdHtcclxuXHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAgIGxpe1xyXG5cclxuICAgICAgICAmLmlzLWFjdGl2ZSwgJjpob3ZlciwgJjpmb2N1c3tcclxuICAgICAgICAgIC5iLXRhYnNfX2xpbmt7XHJcbiAgICAgICAgICAgICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31cclxuICAgICAgICAgICAgJjpiZWZvcmV7XHJcbiAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiA2cHg7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzIyMjtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgYm90dG9tOjA7XHJcbiAgICAgICAgICAgICAgbGVmdDowO1xyXG4gICAgICAgICAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgICAgICAvL2JhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDI1NSwgMjMyLCAwLCAwLjUpLCByZ2JhKDI1NSwgMjMyLCAwLCAwLjUpKSwgbGluZWFyLWdyYWRpZW50KDE0MS45MWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc2KSAxMC4wNyUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgOTguNzclKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuYi10YWJzX19saW5re1xyXG4gICAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIGFic29sdXRlU3RyZXRjaDtcclxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYmEoMCwgMCwgMCwgMC4zKSwgcmdiYSgwLCAwLCAwLCAwLjMpKSwgbGluZWFyLWdyYWRpZW50KDE0MS45MWRlZywgcmdiYSgwLCAwLCAwLCAwLjc2KSAxMC4wNyUsIHJnYmEoMCwgMCwgMCwgMCkgOTguNzclKTtcclxuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5iLXRhYnMtbGlzdHtcclxuXHJcbiAgZm9udC1zaXplOiAwO1xyXG5cclxuICBsaXtcclxuICAgICYuaXMtYWN0aXZlLCAmOmhvdmVyLCAmOmZvY3Vze1xyXG4gICAgICAuYi10YWJzX19saW5re1xyXG4gICAgICAgICY6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiBub25lO31cclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItcHJpbWFyeTtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSIsIi5iLWJsb2d7XHJcbiAgJi5yb3d7XHJcbiAgICBAZXh0ZW5kIC5yb3ctLXdpZGU7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLmItcG9zdHtcclxuXHJcbiAgJl9fYXV0aG9ye1xyXG4gICAgY29sb3I6ICRjb2xvci1ncmV5MjtcclxuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgYXtjb2xvcjogY3VycmVudENvbG9yO31cclxuICB9XHJcblxyXG4gICZfX2hlYWRlcntcclxuICAgIHBhZGRpbmctYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJl9fYm9keXtcclxuICAgIHBhZGRpbmc6IDEuNnJlbSAyLjRyZW07XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICBhe2NvbG9yOiAkY29sb3ItcHJpbWFyeTt9XHJcbiAgfVxyXG5cclxuICAmX19waWN7XHJcbiAgICBib3JkZXItYm90dG9tOiA2cHggc29saWQgJGNvbG9yLXllbGxvdztcclxuICB9XHJcblxyXG4gICZfX3RpdGxle1xyXG4gICAgQGV4dGVuZCAudGl0bGUtNjtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMTQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjhyZW07XHJcbiAgICBjb2xvcjogJGNvbG9yLWhlYWRpbmc7XHJcbiAgICBhe2NvbG9yOiBjdXJyZW50Q29sb3I7fVxyXG4gIH1cclxuXHJcbiAgJl9fdHh0e1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgcHtcclxuICAgICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS42NztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZfX2J0bntcclxuICAgIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgICAuYnRuLW1vcmV7bWluLXdpZHRoOiAxMnJlbTt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpe1xyXG4gICAgJl9fYXV0aG9ye2ZvbnQtc2l6ZTogMTZweH1cclxuICAgICZfX3R4dHtcclxuICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLWJvZHktbW9iO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn0iLCIkcG9zdC1tYXJnaW46IDJyZW07XHJcblxyXG4uYi1wYWdpbmF0aW9ue1xyXG5cclxuICAvL21hcmdpbi10b3A6ICRwb3N0LW1hcmdpbjtcclxuICAvL3BhZGRpbmctbGVmdDogNXJlbTtcclxuXHJcbiAgJl9fYXJyb3d7fVxyXG5cclxuICAmX19saXN0e1xyXG5cclxuICAgIGZvbnQtc2l6ZTogMDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtLjVyZW07XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0uNXJlbTtcclxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktdGl0bGU7XHJcblxyXG4gICAgLnBhZ2UtbnVtYmVyc3tcclxuICAgICAgJjpob3ZlcntvcGFjaXR5OiAuNjt9XHJcbiAgICAgIEBpbmNsdWRlIG5vZGVjb3I7XHJcbiAgICAgIHBhZGRpbmc6IC44cmVtIC41cmVtO1xyXG4gICAgICBtaW4td2lkdGg6IDMuNnJlbTtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgLy9ib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICBtYXJnaW46IC41cmVtO1xyXG4gICAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XHJcbiAgICAgIC8vY29sb3I6ICNmZmY7XHJcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2U7XHJcblxyXG4gICAgICAmLmN1cnJlbnR7XHJcbiAgICAgICAgJjpob3ZlcntvcGFjaXR5OiAxO31cclxuICAgICAgICBiYWNrZ3JvdW5kOiAjMDA2YWMwO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogIzAwNmFjMDtcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICAvL2NvbG9yOiAkY29sb3ItZ3JleTI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYubmV4dCwmLnByZXZ7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZG90c3tib3JkZXI6IG5vbmU7fVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAvL3BhZGRpbmctbGVmdDogM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDIuNXJlbTtcclxuICB9XHJcblxyXG59IiwiLmdmaWVsZC5oaWRkZW5fbGFiZWwgLmdmaWVsZF9sYWJlbCB7XHJcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5mb3JtLmhvbWUtZm9ybSAuZ2ZpZWxkX2Rlc2NyaXB0aW9uLnZhbGlkYXRpb25fbWVzc2FnZXtcclxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuZm9ybS5ob21lLWZvcm0gLmdmb3JtX2Zvb3RlciBpbnB1dFt0eXBlPVwic3VibWl0XCJde1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuXHJcblxyXG4jY29va2llLW5vdGljZS5jb29raWUtbm90aWNlLWhpZGRlbiB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI2Nvb2tpZS1ub3RpY2Uge1xyXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxufVxyXG5cclxuXHJcbmZvcm0ubGVmdC1idXR0b24gLmNvbHVtbi5zbWFsbC0xMi5zaHJpbmsubWwtYXV0by50ZXh0LXJpZ2h0e1xyXG4gIG1hcmdpbi1sZWZ0OiAwO1xyXG5cclxufVxyXG5cclxuXHJcbi5nZmllbGQuZ2Zvcm1faGlkZGVuIHtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5cclxuLmVycm9yLW1lc3NhZ2UtYmxvY2sge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcbi5lcnJvci1tZXNzYWdlIHtcclxuICBwYWRkaW5nLWxlZnQ6IC41cmVtO1xyXG59IiwiLnBhZ2UtdXNlci1zdWNjZXNze1xyXG5cclxuICAuYi1oZWFkZXIgLmItbG9nbyBpbWd7XHJcbiAgICBtYXgtd2lkdGg6IDM0LjVyZW07XHJcbiAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICAgIC8vdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlO1xyXG4gIH1cclxuICAuYi1oZWFkZXJbY2xhc3MqPVwibmF2LVwiXSAuYi1sb2dvIGltZ3tcclxuICAgIG1heC13aWR0aDogMTkuNXJlbTtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgfVxyXG5cclxuICAucy1jb250ZW50IC5zLXJldmlld19fdmlkZW97XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICB9XHJcblxyXG4gIC5zLWFpLWFib3V0X19waWMgaW1nLCAucy1haS1hYm91dF9fcGljIHN2Z3tcclxuICAgIG1heC13aWR0aDogOTUlO1xyXG4gIH1cclxuXHJcbiAgLnMtYWktYWJvdXRfX3R4dHtcclxuICAgIHB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTt9XHJcbiAgfVxyXG5cclxuICAucy1haS1hYm91dF9fcGlje1xyXG4gICAgaW1ne1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGxlZnQ6IC01JTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zLWFpLWFib3V0X19pbmZvICsgLnMtYWktYWJvdXRfX3BpY3tcclxuICAgIGltZ3tcclxuICAgICAgcmlnaHQ6IC01JTtcclxuICAgICAgbGVmdDogYXV0bztcclxuICAgICAgLy9tYXJnaW4tcmlnaHQ6IC02cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnMtcmV2aWV3X192aWRlby13cnB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMHJlbTtcclxuICAgIC5iLWhvbWUtdmlkZW97XHJcbiAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgLmJ0bi1wbGF5e1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTM4MHB4KSBhbmQgKG1pbi13aWR0aDogMTIwMHB4KXtcclxuICAgIC5zLWhlcm8gKyAucy1hYm91dC1wcm9tb3twYWRkaW5nLXRvcDogNXJlbTt9XHJcbiAgICAucy1oZXJvX190aXRsZXtmb250LXNpemU6IDVyZW07fVxyXG4gICAgLmItaGVhZGVyIC5iLWxvZ28gaW1ne21hcmdpbi10b3A6IDA7bWF4LXdpZHRoOiAyNC41cmVtO31cclxuICAgICYuaG9tZSAucy1oZXJvLS11c2VyLXN1Y2Nlc3N7bWluLWhlaWdodDogNjRyZW07fVxyXG4gICAgLnMtaGVyby0tdXNlci1zdWNjZXNzIC5zLWhlcm9fX2NvbnRlbnR7dG9wOiAtOHJlbTt9XHJcbiAgfVxyXG5cclxuICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSl7XHJcbiAgICAucy1oZXJvX19jb250ZW50IC5jb2x1bW4ubWwtYXV0b3tcclxuICAgICAgbWFyZ2luLXJpZ2h0OiA2cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIC5iLWhlYWRlciAuYi1sb2dvIGltZyB7XHJcbiAgICAgIG1heC13aWR0aDogMTY1cHg7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgpO1xyXG4gICAgfVxyXG4gICAgLnMtYWktYWJvdXRfX3BpYyB7XHJcbiAgICAgIGltZyB7XHJcbiAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnMtYWktYWJvdXRfX2luZm8gKyAucy1haS1hYm91dF9fcGlje1xyXG4gICAgICBpbWd7XHJcbiAgICAgICAgcmlnaHQ6IGF1dG87XHJcbiAgICAgICAgbGVmdDogYXV0bztcclxuICAgICAgICAvL21hcmdpbi1yaWdodDogLTZyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAucy1haS1hYm91dF9fdGl0bGV7XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjFweDtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogLjZyZW07XHJcbiAgICB9XHJcbiAgICAucy1haS1hYm91dF9fdHh0e1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICBmb250LXNpemU6IDIuMnJlbTtcclxuICAgICAgcHtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTAwJTt9XHJcbiAgICB9XHJcblxyXG4gICAgLnMtcmV2aWV3X192aWRlb3tcclxuICAgICAgLnRpdGxlLTJ7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAzNHJlbTtcclxuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uYi1mb290ZXItLXVzZXItc3VjY2Vzc3tcclxuXHJcbiAgLy9taW4taGVpZ2h0OiA0MHJlbTtcclxuICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fZm9vdGVyQDJ4LnBuZykgNTAlIDEwMCUgbm8tcmVwZWF0O1xyXG4gIG1pbi1oZWlnaHQ6IDM2LjRyZW07XHJcbiAgaW1hZ2UtcmVuZGVyaW5nOiAtd2Via2l0LW9wdGltaXplLWNvbnRyYXN0O1xyXG4gIHBhZGRpbmctdG9wOiAyMHJlbTtcclxuICBwYWRkaW5nLWJvdHRvbTogNXJlbTtcclxuICBiYWNrZ3JvdW5kLXNpemU6IDE5MnJlbSBhdXRvO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG5cclxuICAuYi1sb2dve1xyXG4gICAgaW1ne1xyXG4gICAgICBtYXgtd2lkdGg6IDVyZW07XHJcbiAgICAgIHdpZHRoOiA1cmVtO1xyXG4gICAgfVxyXG4gICAgJl9fY29weXtcclxuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcclxuICAgICAgZm9udC1zaXplOiAyLjVyZW07XHJcbiAgICAgIGF7XHJcbiAgICAgICAgJjpob3ZlcntcclxuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyODBweCl7XHJcbiAgICBwYWRkaW5nLXRvcDogMTZyZW07XHJcbiAgICBtaW4taGVpZ2h0OiAwO1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAxNDRyZW0gYXV0bztcclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fZm9vdGVyX21vYi5wbmcpIDUwJSAxMDAlIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi5zLWhlcm8tLXVzZXItc3VjY2Vzc3tcclxuXHJcbiAgQGF0LXJvb3QgLmhvbWUgJntcclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkgYW5kIChtYXgtd2lkdGg6IDE5MjBweCl7XHJcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA5NjBweCl7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTRyZW07XHJcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgICAgbWluLWhlaWdodDogNzdyZW07XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDE3cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1hc3BlY3QtcmF0aW86IDE3LzEwKSBhbmQgKG1pbi13aWR0aDogMTIwMHB4KXtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAtNHJlbTtcclxuICAgICAgbWluLWhlaWdodDogNzdyZW07XHJcbiAgICAgIHBhZGRpbmctdG9wOiAxN3JlbTtcclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIGFuZCAobWF4LXdpZHRoOiAxOTIwcHgpe1xyXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWhlaWdodDogNzAwcHgpe1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC02cmVtO1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDc3cmVtO1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxN3JlbTtcclxuXHJcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTYwMHB4KXtcclxuICAgICAgICAgICZfX2JnLmJnLWltZ3tiYWNrZ3JvdW5kLXNpemU6IDE2MDBweCBhdXRvO31cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICZfX3RpdGxle2ZvbnQtc2l6ZTogNXJlbTt9XHJcbiAgICAgICAgJl9fdHh0e2ZvbnQtc2l6ZTogMi4ycmVtO31cclxuXHJcbiAgICAgIH1cclxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDYwMHB4KXtcclxuICAgICAgICAvL21pbi1oZWlnaHQ6IDUxcmVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IC03cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cclxuXHJcbiAgLnMtaGVyb19fdHh0e1xyXG4gICAgZm9udC1zaXplOiAyLjJyZW07XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpIGFuZCAobWluLXdpZHRoOiAxMDAwcHgpe1xyXG4gICAgLnMtaGVyb19fYmcuYmctaW1nIHtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMzc4cHggYXV0bztcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDA7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgLnMtaGVyb19fY29udGVudHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB0b3A6IC00cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5idG4uYnRuLS1sYXJnZXtcclxuICAgICAgbWluLXdpZHRoOiAyNXJlbTtcclxuICAgICAgcGFkZGluZy10b3A6IDEuNHJlbTtcclxuICAgICAgcGFkZGluZy1ib3R0b206IDEuNHJlbTtcclxuICAgICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KXtcclxuICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgLnMtaGVyb19fY29udGVudHtcclxuICAgICAgcGFkZGluZy1sZWZ0OiA0N3B4O1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMjByZW07XHJcbiAgICB9XHJcbiAgICAucy1oZXJvX19idG57XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiA5MHB4O1xyXG4gICAgfVxyXG4gICAgLnMtaGVyb19fdHh0e1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xyXG4gICAgfVxyXG4gICAgLmJ0bi5idG4tLWxhcmdle1xyXG4gICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgIG1pbi13aWR0aDogMTQ4cHg7XHJcbiAgICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB9ICAgICAgICAgICAgICAgXHJcblxyXG4gICAgLnMtaGVyb19fdGl0bGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogMzBweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTt9XHJcbiAgICAucy1oZXJvX19iZy5iZy1pbWd7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcclxuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MjVweCl7XHJcbiAgICAucy1oZXJvX190eHR7XHJcbiAgICAgIGZvbnQtc2l6ZTogNC41dnc7XHJcbiAgICB9XHJcbiAgICAucy1oZXJvX19jb250ZW50e1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogNDB2dztcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4ucy1jYWxsYmFjay1mb3JtLS11c2VyLXN1Y2Nlc3N7XHJcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcclxuICAuZm9ybS10aXRsZS50aXRsZS0ye1xyXG4gICAgZm9udC1zaXplOiA0LjlyZW07XHJcbiAgfVxyXG4gIGlucHV0LHRleHRhcmVhe1xyXG4gICAgYm9yZGVyLXJhZGl1czogMnJlbTtcclxuICB9XHJcblxyXG4gIC5mb3JtLXN1Ym1pdC1tZXNzYWdle1xyXG4gICAgJl9fdGl0bGV7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTEyJTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICAgIH1cclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xyXG4gIH1cclxuXHJcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDI1cHgpe1xyXG4gICAgLmVycm9yLW1lc3NhZ2V7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG4gICAgfVxyXG4gICAgLmItZm9ybS1saXN0IGxpe1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gICAgaW5wdXQsdGV4dGFyZWF7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICB9XHJcbiAgICAuZm9ybS10aXRsZS50aXRsZS0ye1xyXG4gICAgICBmb250LXNpemU6IDIxcHg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uX2JnLXdhdmVzLWdyZXl7XHJcbiAgJjpiZWZvcmV7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IC0xO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1nL2NvbW1vbi9iZ19fd19ncmV5X3RvcC5wbmcpIDUwJSAwIG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xyXG4gIH1cclxuICAmOmFmdGVye1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiAwO1xyXG4gICAgYm90dG9tOiAtMy42JTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb21tb24vYmdfX3dfZ3JleV9ib3R0b20ucG5nKSA1MCUgMTAwJSBuby1yZXBlYXQ7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcclxuICAgIC8vbWFyZ2luLXRvcDogLTIzcmVtO1xyXG4gIH1cclxuICB6LWluZGV4OiAxO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmYmZiO1xyXG5cclxuICA+LmNvbnRhaW5lcntcclxuICAgIG1hcmdpbi10b3A6IC02cmVtO1xyXG4gIH1cclxuXHJcbiAgJiArIC5zZWN0aW9uLCAmICsgc2VjdGlvbntcclxuXHJcbiAgICA+ICp7XHJcbiAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSl7XHJcbiAgICAmOmJlZm9yZSwmOmFmdGVye1xyXG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDc2OHB4IGF1dG87XHJcbiAgICB9XHJcbiAgICAmOmFmdGVye1xyXG4gICAgICBib3R0b206IDA7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogMzIlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFjQUE7Ozs7O0dBS0c7QXdHd05ILG1FQUFtRTtBQVFuRSxtRUFBbUU7QUFFbkUsbUVBQW1FO0FBaUJuRSxtRUFBbUU7QUFFbkUs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QUFBQSxJQUFDLENBQUQsSUFBQyxBQUFBLENBNkNILFNBQVMsRUE3Q1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELElBQUMsQUFBQSxDQTZDUyxVQUFVO0FBNUN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsUUFBQyxBQUFBLENBNENILFNBQVM7QUE1Q1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELFFBQUMsQUFBQSxDQTRDUyxVQUFVO0FBM0N6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsS0FBQyxBQUFBLENBMkNILFNBQVM7QUEzQ1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELEtBQUMsQUFBQSxDQTJDUyxVQUFVO0FBMUN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsR0FBQyxBQUFBLENBMENILFNBQVM7QUExQ1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELEdBQUMsQUFBQSxDQTBDUyxVQUFVO0FBekN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsSUFBQyxBQUFBLENBeUNILFNBQVM7QUF6Q1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELElBQUMsQUFBQSxDQXlDUyxVQUFVO0FBeEN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsSUFBQyxBQUFBLENBd0NILFNBQVM7QUF4Q1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELElBQUMsQUFBQSxDQXdDUyxVQUFVO0FBdkN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsY0FBQyxBQUFBLENBdUNILFNBQVM7QUF2Q1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELGNBQUMsQUFBQSxDQXVDUyxVQUFVO0FBdEN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsR0FBQyxBQUFBLENBc0NILFNBQVM7QUF0Q1osS0FBSyxDQUFBLEFBQUEsSUFBQyxDQUFELEdBQUMsQUFBQSxDQXNDUyxVQUFVO0FBckN6QixLQUFLLENBQUEsQUFBQSxJQUFDLENBQUQsTUFBQyxBQUFBLENBcUNILFNBQVM7QUFyQ1osS0FBSyxDQUFBLEFBQUEsSUFB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TSxFQURBLFVBQVU7QUE5Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxJQUFDLEFBQUEsQ0ErQ08sTUFBTSxFQURSLFVBQVU7QUE3Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxJQUFDLEFBQUEsQ0E4Q0QsTUFBTSxFQURBLFVBQVU7QUE3Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxJQUFDLEFBQUEsQ0E4Q08sTUFBTSxFQURSLFVBQVU7QUE1Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxjQUFDLEFBQUEsQ0E2Q0QsTUFBTSxFQURBLFVBQVU7QUE1Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxjQUFDLEFBQUEsQ0E2Q08sTUFBTSxFQURSLFVBQVU7QUEzQ3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxHQUFDLEFBQUEsQ0E0Q0QsTUFBTSxFQURBLFVBQVU7QUEzQ3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxHQUFDLEFBQUEsQ0E0Q08sTUFBTSxFQURSLFVBQVU7QUExQ3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxNQUFDLEFBQUEsQ0EyQ0QsTUFBTSxFQURBLFVBQVU7QUExQ3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxNQUFDLEFBQUEsQ0EyQ08sTUFBTSxFQURSLFVBQVU7QUF6Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxNQUFDLEFBQUEsQ0EwQ0QsTUFBTSxFQURBLFVBQVU7QUF6Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxNQUFDLEFBQUEsQ0EwQ08sTUFBTSxFQURSLFVBQVU7QUF4Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxJQUFDLEFBQUEsQ0F5Q0QsTUFBTSxFQURBLFVBQVU7QUF4Q3JCLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBRCxJQUFDLEFBQUEsQ0F5Q08sTUFBTSxFQURSLFVBQVU7QUF2Q3JCLFFBQVEsQUF3Q0gsTUFBTSxFQURBLFVBQVU7QUF2Q3JCLFFBQVEsQUF3Q0ssTUFBTSxFQURSLFVBQVUsQ0F2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 */
