@charset "UTF-8";
/* Colors */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* text over primary background */
/* Secondary: green */
/* text over secondary background */
/* Accent: orange */
/* text over accent background */
/* Brag: gold */
/* text over brag background */
/* Error: red */
/* text over brag background */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Heart: red */
/* Fancy: pink */
/* text over brag background */
/* Borders */
/* Shadows */
/* even rows in list or tables, subtle shade of $c-bg-high */
/* Primary: blue */
/* Secondary: green */
/* Brag: gold */
/* Fancy: pink */
/* Good: green */
/* Warn: orange */
/* Bad: red */
/* Common imports for all pages */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
html {
  font-family: 'Noto Sans', Sans-Serif;
}

.ninja-title, .site-title {
  font-family: 'Noto Sans', Sans-Serif;
}

h1,
h2,
h3,
h4, .mini-game .rating, .mini-game__clock, .btn-rack__btn i,
.btn-rack form i {
  font-family: 'Roboto', Sans-Serif;
}

.button {
  font-family: 'Roboto', Sans-Serif;
  font-weight: 600;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.subnav a, #clinput input {
  color: #999999;
}

.button.button-empty:not(.disabled):hover, .button.button-empty.button-green:not(.disabled):hover, .button.button-empty.button-red:not(.disabled):hover, .button.button-metal, #friend_box .friend_box_title, .btn-rack__btn,
.btn-rack form {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.button.button-metal:not(.disabled):hover, #friend_box .friend_box_title:hover, .btn-rack__btn:hover,
.btn-rack form:hover {
  background: linear-gradient(to bottom, #44413b, #3b3935 100%);
  color: #cccccc;
}

.data-count::after,
.unread, .button.active, .btn-rack__btn.active {
  box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15) inset;
}

.data-count::after,
.unread, .button.active, .btn-rack__btn.active {
  background: #d64f00;
  color: #fff;
  text-shadow: 0 1px 1px black !important;
}

.button.active:not(.disabled):hover {
  background: #de7233;
}

.site-buttons .dropdown {
  box-shadow: -1px 5px 6px rgba(0, 0, 0, 0.3);
}

#powerTip,
#miniGame, #reconnecting, #announce {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.button, .button.button-empty:not(.disabled):hover {
  box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.225);
}

.button:not(.disabled):hover {
  box-shadow: 0 4px 10px 0px rgba(0, 0, 0, 0.225);
}

.button-link {
  background: none;
  border: none;
  outline: none;
  color: #bababa;
  align-items: normal;
}

.button:not(.disabled):focus {
  box-shadow: 0 0 12px #999999;
}

.subnav a, .user-link, .mini-game {
  white-space: nowrap;
  overflow: hidden;
}

.box-pad, .box:not(.box-pad) > h1 {
  padding: 5vh var(--box-padding);
}

.box__pad {
  padding: 0 var(--box-padding);
}

.upt__info__top .user-link {
  overflow: hidden;
  text-overflow: ellipsis;
}

.main-board, .mini-board,
.mini-game .cg-wrap {
  position: relative;
  display: block;
  height: 0;
  padding-bottom: 100%;
  width: 100%;
}

.is::before,
[data-icon]::before,
.is-after::after, .rp::before, .user-link .line {
  font-size: 1.2em;
  vertical-align: middle;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  text-transform: none;
  content: attr(data-icon);
  opacity: 0.9;
}

.fullscreen-mask {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 109;
}

cg-board, .main-board .cg-wrap {
  position: absolute;
  width: 100%;
  height: 100%;
}

.box__top__actions {
  display: flex;
  flex-flow: row wrap;
}

.site-buttons .initiating, .box__top__actions .button, .upt__info__top__country, .upt__info__warning {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.site-buttons, .upt__info__top .left, .btn-rack__btn,
.btn-rack form, #reconnecting {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.box__top, .upt__info__top, .upt__info__ratings, .upt__mod, #announce {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.mini-game__player {
  /* extends %flex-center */
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-between;
}

.upt__info {
  display: flex;
  flex-flow: column;
}

#powerTip,
#miniGame, input,
textarea,
select, .data-count::after,
.unread, .button, .btn-rack {
  border-radius: 3px;
}

#powerTip,
#miniGame {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.btn-rack__btn:first-child,
.btn-rack form:first-child {
  border-radius: 3px 0 0 3px;
}

.btn-rack__btn:last-child,
.btn-rack form:last-child {
  border-radius: 0 3px 3px 0;
}

cg-board, .box, .upt__actions.btn-rack {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

html {
  box-sizing: border-box;
  min-height: 100%;
  color-scheme: dark;
}

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

body {
  background: #161512 linear-gradient(to bottom, #2e2a24, #161512 116px) no-repeat;
  color: #bababa;
  overflow-x: hidden;
}

body.fixed-scroll {
  /* prevents scroll bar flicker when dragging a piece out */
  overflow-y: scroll;
}

a {
  color: #3692e7;
  text-decoration: none;
}

a:hover, a:active, a:focus {
  color: #57aeff;
}

p {
  margin-bottom: 1em;
}

em,
i {
  font-style: normal;
}

li {
  list-style: none;
}

time {
  font-size: 90%;
  opacity: 0.9;
  /* don't use c-color-dim, it overrides too hard */
}

hr {
  margin: 1.5rem 0;
  border: 0;
  height: 1px;
  background: #404040;
}

small {
  font-size: 0.9em;
}

table,
tbody,
tfoot,
thead,
tr,
th,
td {
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: middle;
  text-align: inherit;
}

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

button,
input,
optgroup,
select,
textarea {
  font: inherit;
  color: #bababa;
  outline-color: #3692e7;
}

option,
optgroup {
  background: #262421;
  color: #cccccc;
}

input,
textarea,
select {
  background: #24221e;
  border: 1px solid #404040;
  padding: 0.6em 1em;
}

textarea {
  overflow: auto;
  resize: vertical;
  padding: 0.8em 1em;
}

button,
a {
  cursor: pointer;
}

::placeholder {
  color: #999999;
}

.copyable {
  background: #262421;
  color: #cccccc;
}

input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
  border: 1px solid #404040;
  -webkit-text-fill-color: #bababa;
  -webkit-box-shadow: 0 0 0px 1000px #2b2e1e inset;
}

/* Icon fonts */
@font-face {
  font-family: 'lichess';
  font-display: block;
  src: url(../font/lichess.woff2) format("woff2"), url(../font/lichess.woff) format("woff");
}

@font-face {
  font-family: 'Noto Chess';
  font-display: block;
  src: url(../font/lichess.chess.woff2) format("woff2"), url(../font/lichess.chess.woff) format("woff");
}

/* Noto Sans (v7) */
/* cyrillic-ext */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-cyrillic-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-cyrillic.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* devanagari */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-devanagari.woff2) format("woff2");
  unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}

/* greek-ext */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-greek-ext.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-greek.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-v14-latin-ext-regular.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'Noto Sans';
  src: local("Noto Sans"), local("NotoSans"), url(../font/noto-sans-v14-latin-regular.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Noto Sans Bold (v7)

/* cyrillic-ext */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-cyrillic-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-cyrillic.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* devanagari */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-devanagari.woff2) format("woff2");
  unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}

/* greek-ext */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-greek-ext.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-greek.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-bold-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-v14-latin-ext-700.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'Noto Sans';
  font-weight: 700;
  src: local("Noto Sans Bold"), local("NotoSans-Bold"), url(../font/noto-sans-v14-latin-700.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Roboto Light (v18) */
/* cyrillic-ext */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-cyrillic-ext.woff2) format("woff2");
  unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

/* cyrillic */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-cyrillic.woff2) format("woff2");
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* greek-ext */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-greek-ext.woff2) format("woff2");
  unicode-range: U+1F00-1FFF;
}

/* greek */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-greek.woff2) format("woff2");
  unicode-range: U+0370-03FF;
}

/* vietnamese */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* latin-ext */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-latin-ext.woff2) format("woff2");
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* latin */
@font-face {
  font-family: 'Roboto';
  font-weight: 300;
  src: local("Roboto Light"), local("Roboto-Light"), url(../font/roboto-light-latin.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

html {
  -webkit-font-smoothing: antialiased;
}

html {
  font-size: 12px;
}

@media (min-width: 320px) {
  html {
    font-size: calc( 12px + 2 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  html {
    font-size: 14px;
  }
}

h1,
h2,
h3,
h4 {
  font-weight: normal;
  font-size: 1em;
}

h1 {
  margin-bottom: 5vh;
}

h1 {
  font-size: 20px;
}

@media (min-width: 320px) {
  h1 {
    font-size: calc( 20px + 20 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  h1 {
    font-size: 40px;
  }
}

h1 a {
  color: #2e7cc5;
}

h1 a:hover {
  color: #3692e7;
}

h2 {
  font-size: 16px;
}

@media (min-width: 320px) {
  h2 {
    font-size: calc( 16px + 14 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  h2 {
    font-size: 30px;
  }
}

.ninja-title {
  font-size: 1em;
}

.is.text::before,
.text[data-icon]::before {
  margin-right: 0.4em;
}

.is-green::before {
  color: #629924;
}

.is-red::before {
  color: #cc3333;
}

.is-gold::before {
  color: #bf811d;
}

.data-count {
  position: relative;
}

.data-count::after,
.unread {
  padding: 1px 5px 1px 4px;
  font-weight: bold;
  font-size: 13px;
}

.data-count::after {
  content: attr(data-count);
  top: -5px;
  right: 0;
  position: absolute;
  padding: 0 3px;
  height: 15px;
  line-height: 15px;
}

.data-count[data-count='0']::after {
  display: none;
}

.none {
  display: none !important;
}

.fullscreen-mask {
  display: none;
}

.fullscreen-toggle:checked ~ .fullscreen-mask {
  display: block;
}

.rp::before {
  margin-right: 0.2em;
  content: '';
}

bad.rp::before {
  content: '';
}

good {
  color: #629924;
}

bad {
  color: #cc3333;
}

.infinite-scroll .pager {
  text-align: center;
  margin: 10px auto;
}

body {
  --site-header-height: 40px;
  --site-header-margin: 0px;
  --main-margin: 0;
}

@media (min-height: 600px) {
  body {
    --site-header-height: 60px;
  }
}

body.header-margin {
  --site-header-margin: 1em;
}

@media (min-width: 800px) {
  body {
    --main-margin: 1vw;
    margin-bottom: 2vmin;
  }
}

#main-wrap {
  display: grid;
  grid-template-areas: '. . main . .';
  --main-max-width: 1300px;
  grid-template-columns: var(--main-margin) 1fr minmax(auto, var(--main-max-width)) 1fr var(--main-margin);
  margin-top: var(--site-header-margin);
}

#main-wrap.full-screen {
  --main-max-width: auto;
}

#main-wrap.full-screen-force {
  --main-max-width: 100%;
}

@media (hover: none) {
  body.clinput #main-wrap {
    display: none;
  }
}

main {
  grid-area: main;
}

main.page-small {
  max-width: 1000px;
  margin: auto;
  width: 100%;
}

@media (max-width: 799px) {
  .subnav {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(17ch, 1fr));
    grid-gap: 3px;
    margin-bottom: 3px;
    background: #161512;
  }
  .subnav a {
    border-radius: 3px;
    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
    font-family: roboto;
    display: flex;
    align-items: center;
    color: #bababa;
    padding: 0.6rem 0 0.6rem 0.5rem;
    letter-spacing: -0.06em;
    background: #262421;
  }
  .subnav a:hover {
    color: #3692e7;
  }
  .subnav a.active {
    background: #3692e7;
    color: #fff;
  }
  .subnav .sep {
    display: none;
  }
}

@media (min-width: 800px) {
  .subnav {
    margin-top: 5px;
    z-index: 2;
    /* active border must go over the page content */
  }
  .subnav a {
    display: block;
    color: #999999;
    padding: 0.7rem 2vw 0.7rem 0.8rem;
    position: relative;
  }
  .subnav a::after {
    content: '';
    background: rgba(214, 79, 0, 0.6);
    width: 3px;
    position: absolute;
    height: 98%;
    top: 1%;
    right: -1px;
    transition: all 0.25s;
    transform: scale(0);
  }
  .subnav a.active::after, .subnav a:hover::after {
    transform: scale(1);
  }
  .subnav a.active {
    color: #d64f00;
  }
  .subnav .sep {
    height: 2em;
  }
}

.page-menu {
  display: grid;
  grid-template-areas: 'menu' 'content';
}

@media (min-width: 800px) {
  .page-menu {
    grid-template-columns: max-content auto;
    grid-template-rows: min-content;
    grid-template-areas: 'menu content';
  }
}

.page-menu.page-small {
  max-width: 1000px;
  margin: inherit;
}

.page-menu__menu {
  z-index: 0;
  grid-area: menu;
}

.page-menu__content {
  grid-area: content;
  height: 100%;
}

.page-menu__content.box {
  /* ensure the content is as high as the menu */
  min-height: 100%;
}

.blue .is2d cg-board {
  background-image: url("../images/board/svg/blue.svg");
}

.blue .is2d coords {
  --cg-ccw: #dee3e6;
  --cg-ccb: #788a94;
  --cg-cs: none;
}

.blue2 .is2d cg-board {
  background-image: url("../images/board/blue2.jpg");
}

.blue2 .is2d coords {
  --cg-ccw: #97b2c7;
  --cg-ccb: #546f82;
  --cg-cs: none;
}

.blue3 .is2d cg-board {
  background-image: url("../images/board/blue3.jpg");
}

.blue3 .is2d coords {
  --cg-ccw: #d9e0e6;
  --cg-ccb: #315991;
  --cg-cs: none;
}

.blue-marble .is2d cg-board {
  background-image: url("../images/board/blue-marble.jpg");
}

.blue-marble .is2d coords {
  --cg-ccw: #eae6dd;
  --cg-ccb: #7c7f87;
  --cg-cs: none;
}

.canvas .is2d cg-board {
  background-image: url("../images/board/canvas2.jpg");
}

.canvas .is2d coords {
  --cg-ccw: #d7daeb;
  --cg-ccb: #547388;
  --cg-cs: none;
}

.wood .is2d cg-board {
  background-image: url("../images/board/wood.jpg");
}

.wood .is2d coords {
  --cg-ccw: #d8a45b;
  --cg-ccb: #9b4d0f;
  --cg-cs: none;
}

.wood2 .is2d cg-board {
  background-image: url("../images/board/wood2.jpg");
}

.wood2 .is2d coords {
  --cg-ccw: #a38b5d;
  --cg-ccb: #6c5017;
  --cg-cs: none;
}

.wood3 .is2d cg-board {
  background-image: url("../images/board/wood3.jpg");
}

.wood3 .is2d coords {
  --cg-ccw: #d0ceca;
  --cg-ccb: #755839;
  --cg-cs: none;
}

.wood4 .is2d cg-board {
  background-image: url("../images/board/wood4.jpg");
}

.wood4 .is2d coords {
  --cg-ccw: #caaf7d;
  --cg-ccb: #7b5330;
  --cg-cs: none;
}

.maple .is2d cg-board {
  background-image: url("../images/board/maple.jpg");
}

.maple .is2d coords {
  --cg-ccw: #e8ceab;
  --cg-ccb: #bc7944;
  --cg-cs: none;
}

.maple2 .is2d cg-board {
  background-image: url("../images/board/maple2.jpg");
}

.maple2 .is2d coords {
  --cg-ccw: #e2c89f;
  --cg-ccb: #996633;
  --cg-cs: none;
}

.leather .is2d cg-board {
  background-image: url("../images/board/leather.jpg");
}

.leather .is2d coords {
  --cg-ccw: #d1d1c9;
  --cg-ccb: #c28e16;
  --cg-cs: none;
}

.green .is2d cg-board {
  background-image: url("../images/board/svg/green.svg");
}

.green .is2d coords {
  --cg-ccw: #ffffdd;
  --cg-ccb: #6d8753;
  --cg-cs: none;
}

.brown .is2d cg-board {
  background-image: url("../images/board/svg/brown.svg");
}

.brown .is2d coords {
  --cg-ccw: #f0d9b5;
  --cg-ccb: #946f51;
  --cg-cs: none;
}

.pink .is2d cg-board {
  background-image: url("../images/board/pink-pyramid.png");
}

.pink .is2d coords {
  --cg-ccw: #e8e9b7;
  --cg-ccb: #ed7272;
  --cg-cs: none;
}

.marble .is2d cg-board {
  background-image: url("../images/board/marble.jpg");
}

.marble .is2d coords {
  --cg-ccw: #93ab91;
  --cg-ccb: #4f644e;
  --cg-cs: none;
}

.green-plastic .is2d cg-board {
  background-image: url("../images/board/green-plastic.png");
}

.green-plastic .is2d coords {
  --cg-ccw: #f2f9bb;
  --cg-ccb: #59935d;
  --cg-cs: none;
}

.grey .is2d cg-board {
  background-image: url("../images/board/grey.jpg");
}

.grey .is2d coords {
  --cg-ccw: #b8b8b8;
  --cg-ccb: #7d7d7d;
  --cg-cs: none;
}

.metal .is2d cg-board {
  background-image: url("../images/board/metal.jpg");
}

.metal .is2d coords {
  --cg-ccw: #c9c9c9;
  --cg-ccb: #727272;
  --cg-cs: none;
}

.olive .is2d cg-board {
  background-image: url("../images/board/olive.jpg");
}

.olive .is2d coords {
  --cg-ccw: #b8b19f;
  --cg-ccb: #6d6655;
  --cg-cs: none;
}

.newspaper .is2d cg-board {
  background-image: url("../images/board/newspaper.png");
}

.newspaper .is2d coords {
  --cg-ccw: #fff;
  --cg-ccb: #8d8d8d;
  --cg-cs: none;
}

.purple .is2d cg-board {
  background-image: url("../images/board/svg/purple.svg");
}

.purple .is2d coords {
  --cg-ccw: #9f90b0;
  --cg-ccb: #7d4a8d;
  --cg-cs: none;
}

.purple-diag .is2d cg-board {
  background-image: url("../images/board/purple-diag.png");
}

.purple-diag .is2d coords {
  --cg-ccw: #e5daf0;
  --cg-ccb: #957ab0;
  --cg-cs: none;
}

.ic .is2d cg-board {
  background-image: url("../images/board/svg/ic.svg");
}

.ic .is2d coords {
  --cg-ccw: #ececec;
  --cg-ccb: #c1c18e;
  --cg-cs: none;
}

.horsey .is2d cg-board {
  background-image: url("../images/board/horsey.jpg");
}

.horsey .is2d coords {
  --cg-ccw: #f0d9b5;
  --cg-ccb: #946f51;
  --cg-cs: none;
}

body.dark-board {
  --dark-factor: 0.4;
}

body.dark-board cg-board,
body.dark-board .is3d cg-board::before {
  background-color: rgba(0, 0, 0, var(--dark-factor));
  background-blend-mode: darken;
}

body.dark-board.coords-in coord {
  color: #fff !important;
  opacity: calc(1 - var(--dark-factor));
}

body.dark-board cg-board square {
  opacity: calc(1 - var(--dark-factor));
}

body.dark-board cg-board piece {
  filter: brightness(calc(1 - 0.6 * var(--dark-factor)));
}

cg-board {
  top: 0;
  left: 0;
  user-select: none;
  line-height: 0;
  background-size: cover;
}

.manipulable cg-board {
  cursor: pointer;
}

square {
  position: absolute;
  width: 12.5%;
  height: 12.5%;
  pointer-events: none;
}

square.move-dest {
  background: radial-gradient(rgba(20, 85, 30, 0.5) 19%, rgba(0, 0, 0, 0) 20%);
  pointer-events: auto;
}

square.premove-dest {
  background: radial-gradient(rgba(20, 30, 85, 0.5) 19%, rgba(0, 0, 0, 0) 20%);
  pointer-events: auto;
}

square.oc.move-dest {
  background: radial-gradient(transparent 0%, transparent 79%, rgba(20, 85, 0, 0.3) 80%);
}

square.oc.premove-dest {
  background: radial-gradient(transparent 0%, transparent 79%, rgba(20, 30, 85, 0.2) 80%);
}

body.green square.last-move,
body.green-plastic square.last-move,
body.marble square.last-move {
  background-color: rgba(0, 155, 199, 0.41);
}

square.last-move {
  will-change: transform;
  background-color: rgba(155, 199, 0, 0.41);
}

body.horsey square.last-move:not(.move-dest) {
  background: url(../images/board/horsey.last-move.png);
  background-size: cover;
}

square.check {
  background: radial-gradient(ellipse at center, red 0%, #e70000 25%, rgba(169, 0, 0, 0) 89%, rgba(158, 0, 0, 0) 100%);
}

square.selected {
  background-color: rgba(20, 85, 30, 0.5);
}

body.horsey square.selected {
  background: url(../images/board/horsey.selected.png);
  background-size: cover;
}

square.current-premove {
  background-color: rgba(20, 30, 85, 0.5) !important;
}

body.horsey square.current-premove {
  background: url(../images/board/horsey.current-premove.png);
  background-size: cover;
}

square.move-dest:hover {
  background: rgba(20, 85, 30, 0.3);
}

body.horsey square.move-dest:hover {
  background: url(../images/board/horsey.move-dest.png);
  background-size: cover;
}

square.premove-dest:hover {
  background: rgba(20, 30, 85, 0.2);
}

square.bh1 piece {
  opacity: 0.98;
}

piece {
  position: absolute;
  top: 0;
  left: 0;
  width: 12.5%;
  height: 12.5%;
  background-size: cover;
  z-index: 2;
  will-change: transform;
  pointer-events: none;
}

piece.dragging {
  cursor: move;
  z-index: 204 !important;
}

piece.anim {
  z-index: 3;
}

piece.fading {
  z-index: 1;
  opacity: 0.5;
}

piece.ghost {
  opacity: 0.3;
}

cg-container {
  position: absolute;
  width: 100%;
  height: 100%;
  display: block;
  top: 0;
  right: 0;
}

cg-container .cg-shapes,
cg-container .cg-custom-svgs {
  overflow: hidden;
  position: absolute;
  top: 0px;
  left: 0px;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

cg-container .cg-shapes {
  opacity: 0.6;
  z-index: 2;
}

cg-container .cg-shapes image {
  opacity: 0.5;
}

cg-container .cg-custom-svgs {
  z-index: 4;
  overflow: visible;
}

cg-container .cg-custom-svgs svg {
  overflow: visible;
}

@media (max-width: 979px) {
  .topnav-toggle {
    display: block;
    position: absolute;
    top: -9999px;
    left: -9999px;
  }
  .hbg {
    position: absolute;
    top: 0;
    left: 0;
    width: var(--site-header-height);
    height: var(--site-header-height);
    cursor: pointer;
    z-index: 110;
  }
  .hbg__in {
    top: 50%;
    left: 8.5px;
    transition: transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  .hbg__in, .hbg__in::after, .hbg__in::before {
    display: block;
    margin-top: -1.5px;
    position: absolute;
    width: 23px;
    height: 2px;
    border-radius: 3px;
    background-color: #999999;
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in, .hbg__in::after, .hbg__in::before {
    width: 34px;
    height: 3px;
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in {
    left: 13px;
  }
}

@media (max-width: 979px) {
  .hbg__in::after, .hbg__in::before {
    content: '';
  }
  .hbg__in::before {
    top: -6px;
    transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in;
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in::before {
    top: -9px;
  }
}

@media (max-width: 979px) {
  .hbg__in::after {
    bottom: -7px;
    transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
}

@media (max-width: 979px) and (min-height: 600px) {
  .hbg__in::after {
    bottom: -10px;
  }
}

@media (max-width: 979px) {
  .topnav-toggle:checked ~ .hbg {
    position: fixed;
    background: #262421;
  }
  .topnav-toggle:checked ~ .hbg .hbg__in {
    transform: rotate(225deg);
    transition-delay: 0.12s;
    transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  .topnav-toggle:checked ~ .hbg .hbg__in::before {
    top: 0;
    opacity: 0;
    transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out;
  }
  .topnav-toggle:checked ~ .hbg .hbg__in::after {
    bottom: 0;
    transform: rotate(-90deg);
    transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  #topnav {
    display: flex;
    flex-flow: row wrap;
    position: fixed;
    top: var(--site-header-height);
    bottom: 0;
    left: 0;
    background: #262421;
    transform: translateX(calc(-100% - 10px));
    transition: transform 200ms;
    padding-bottom: 1.2rem;
    overflow-y: auto;
    overscroll-behavior: contain;
    box-shadow: 2px 5px 7px rgba(0, 0, 0, 0.5);
    border-radius: 0 3px 0 0;
    max-width: 80%;
    z-index: 110;
  }
}

@media (max-width: 979px) and (min-width: 500px) {
  #topnav {
    max-width: 70%;
  }
}

@media (max-width: 979px) {
  #topnav a {
    color: #bababa;
    text-decoration: none;
    padding: 0.7em 0;
    opacity: 0;
    transition: opacity 150ms;
  }
  #topnav section {
    flex: 1 0 50%;
    margin-top: 1rem;
  }
  #topnav section > a {
    font-size: 1.2em;
    padding-left: 1.2rem;
    font-weight: bold;
    display: block;
  }
  #topnav section .play {
    display: none;
  }
  #topnav section div {
    display: flex;
    flex-flow: column;
  }
  #topnav section div a {
    padding-left: 2.4rem;
  }
  #topnav section a:active {
    background: #3692e7;
    color: #fff;
  }
  .topnav-toggle:checked ~ #topnav {
    transform: translateX(0);
  }
  .topnav-toggle:checked ~ #topnav a {
    opacity: 1;
    transition: opacity 125ms ease-in-out 125ms;
  }
  body.masked {
    /* prevent scrolling while topnav is open */
    overflow: hidden;
    /* awkwardly make up for the disappearance of the scroll bar */
    /* actually don't, since on mobile devices the scrool bar
     * has no width, and that menu is mainly for mobile. */
  }
}

@media (min-width: 980px) {
  .hbg,
  .site-title-nav .fullscreen-mask,
  .topnav-toggle {
    display: none !important;
  }
  #topnav {
    --nav-section: 26px;
    --nav-section-hover: 35px;
    display: flex;
  }
}

@media (min-width: 980px) and (min-height: 600px) {
  #topnav {
    --nav-section: 48px;
    --nav-section-hover: 53px;
  }
}

@media (min-width: 980px) {
  #topnav section {
    position: relative;
    height: var(--nav-section);
  }
  #topnav section > a {
    color: #999999;
    text-shadow: none;
    display: block;
    height: var(--nav-section);
    line-height: var(--site-header-height);
    padding: 0 0.7rem;
    text-transform: uppercase;
    border-left: 2px solid transparent;
  }
  #topnav section .home {
    display: none;
  }
  #topnav div {
    visibility: hidden;
    max-height: inherit;
    position: absolute;
    left: 0;
    background: #3c3934;
    min-width: 10rem;
    box-shadow: 2px 5px 6px rgba(0, 0, 0, 0.3);
    border-radius: 0 3px 3px 3px;
    border-left: 2px solid #3692e7;
  }
  #topnav div a {
    display: block;
    padding: 0.6rem 0.7rem;
    color: #cccccc;
  }
  #topnav div a:hover {
    background: #3692e7;
  }
  #topnav div a:hover, #topnav div a:hover::after {
    color: #fff;
  }
  #topnav div a:first-child {
    border-radius: 0 3px 0 0;
  }
  #topnav div a:last-child {
    border-radius: 0 0 3px 1px;
  }
  #topnav.blind div {
    display: block;
    margin-left: -9000px;
  }
  #topnav.hover section:hover > a,
  #topnav section:active > a {
    height: var(--nav-section-hover);
    background: #3c3934;
    color: #cccccc;
    border-color: #3692e7;
  }
  #topnav.hover section:hover div,
  #topnav section:active div {
    visibility: visible;
    max-height: none;
  }
}

.site-title {
  font-size: 25px;
  line-height: 37px;
  text-shadow: none;
  white-space: nowrap;
  margin: 0 0.5rem;
  display: none;
}

@media (min-width: 500px) {
  .site-title {
    display: block;
  }
}

@media (max-width: 979px) {
  .site-title {
    /* move away from hamburger */
    margin-left: calc(0.5rem + var(--site-header-height));
  }
}

@media (min-height: 600px) {
  .site-title {
    font-size: 30px;
    line-height: 57px;
  }
}

@media (min-width: 980px) and (min-height: 600px) {
  .site-title {
    line-height: 55px;
    margin: 0 1rem 0 1.5rem;
  }
}

.site-title a {
  color: #bababa;
  text-decoration: none;
}

.site-title a:hover {
  color: #3692e7;
}

.site-title a:hover span {
  color: #2e7cc5;
}

.site-title span {
  color: #999999;
}

.site-title .kiddo {
  color: #6b6b6b;
  font-weight: bold;
  margin-right: 0.5em;
}

.site-buttons .link, .site-buttons .toggle {
  display: block;
  height: var(--site-header-height);
  line-height: var(--site-header-height);
}

.site-buttons .shop-button {
  margin-top: 20px;
}

.site-buttons .shop-button img {
  width: 30px;
  height: 30px;
}

.site-buttons .cohencoins-counter {
  display: flex;
  align-items: center;
  margin-left: 0.5em;
  margin-right: 0.5em;
  margin-top: 0;
}

.site-buttons .cohencoins-counter .cohencoins-icon {
  width: 2.0em;
  height: 2.0em;
  margin-right: 0.2em;
}

.site-buttons .link {
  /* we don't want a lighter dark font in the top gradient */
  color: #bababa;
  font-size: 1.1rem;
  padding: 0 0.7rem;
}

.site-buttons .link:hover {
  color: #e3e3e3;
}

.site-buttons .link span::before {
  vertical-align: middle;
}

.site-buttons .initiating {
  justify-content: center;
  height: 300px;
  width: 225px;
}

.site-buttons .dropdown {
  display: none;
  position: absolute;
  right: 0;
  top: var(--dropdown-top);
  background: #3c3934;
  z-index: 108;
}

.site-buttons .dropdown a,
.site-buttons .dropdown button {
  color: #cccccc;
}

.site-buttons .shown .toggle {
  background: #3c3934;
  color: #cccccc;
}

.site-buttons .shown .dropdown {
  display: block;
}

.site-buttons .signin {
  margin: 0 1rem;
}

.site-buttons .link-center {
  height: inherit;
  line-height: inherit;
}

.site-buttons .report-score:not(.report-score--high)::after {
  background: #161512;
  color: #bf811d;
  text-shadow: none;
  font-weight: normal;
}

.site-buttons .report-score--low::after {
  color: #629924 !important;
}

#user_tag {
  padding-right: 1rem;
  white-space: nowrap;
}

#notify-app .initiating {
  width: 25rem;
}

#top {
  height: var(--site-header-height);
  display: flex;
  justify-content: space-between;
  position: relative;
  z-index: 106;
  max-width: 1800px;
  margin: 0 auto;
  user-select: none;
  --dropdown-top: 40px;
}

@media (min-height: 600px) {
  #top {
    --dropdown-top: 60px;
  }
}

.site-title-nav {
  display: flex;
  justify-content: flex-start;
}

#clinput {
  display: flex;
  height: var(--site-header-height);
}

#clinput input {
  line-height: var(--site-header-height);
  background: none;
  padding: 0;
  border: 0;
  width: 0;
}

@media (min-width: 1260px) {
  #clinput input {
    transition: width 150ms;
  }
}

body.clinput #clinput input {
  width: 20ch;
}

#clinput input:focus {
  outline: none;
}

@media (max-width: 1259px) {
  body.clinput #top #topnav {
    display: none;
  }
}

@media (max-width: 649px) {
  body.clinput #top .site-title {
    display: none;
  }
}

@media (max-width: 499px) {
  body.clinput #top .site-buttons > *:not(#clinput) {
    display: none;
  }
  body.clinput #top #clinput {
    width: 75vw;
  }
}

.main-board__preload {
  position: absolute;
}

.box {
  background: #262421;
}

.box {
  --box-padding: 15px;
}

@media (min-width: 320px) {
  .box {
    --box-padding: calc( 15px + 45 * ((100vw - 320px) / 880));
  }
}

@media (min-width: 1200px) {
  .box {
    --box-padding: 60px;
  }
}

.box-pad .box__top {
  padding: 0 0 var(--box-padding) 0;
}

.box-pad .box__top h1 {
  margin-top: 0;
}

.box__top {
  padding: calc(5vh - 1rem) var(--box-padding);
  /* flex gutters, waiting for row-gap to be implemented for flexbox.  https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Mastering_Wrapping_of_Flex_Items#Creating_gutters_between_items */
  /* end of flex gutter hack */
}

.box__top h1 {
  margin: 0;
}

.box__top > h1,
.box__top > div,
.box__top > form {
  margin-top: 1rem;
}

.box__top__actions {
  /* flex gutters, waiting for row-gap to be implemented for flexbox.  https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Mastering_Wrapping_of_Flex_Items#Creating_gutters_between_items */
  margin-left: -1rem;
  /* end of flex gutter hack */
}

.box__top__actions > * {
  margin-left: 1rem;
}

.box__top__actions > :not(:first-child) {
  margin-left: 1rem;
}

.box:not(.box-pad) > h1 {
  margin: 0;
}

@media (min-width: 800px) {
  .box {
    border-radius: 3px;
  }
}

.button {
  background: #3692e7;
  text-transform: uppercase;
  padding: 0.8em 1em;
  border: none;
  cursor: pointer;
  text-align: center;
  user-select: none;
  white-space: nowrap;
  display: inline-block;
  transition: all 150ms;
}

.button, .button:visited, .button:focus {
  color: #fff;
}

.button:not(.disabled):hover {
  color: #fff;
  background: #56a3eb;
}

.button-no-upper {
  text-transform: none;
}

.button-thin {
  padding: 0.1em 1em;
  font-size: 90%;
}

.button-fat {
  font-size: 1.6rem;
}

.button-green {
  background: #629924;
}

.button-green:not(.disabled):hover {
  background: #6da928;
}

.button-red {
  background: #cc3333;
}

.button-red:not(.disabled):hover {
  background: #d76060;
}

.button-link {
  color: #3692e7;
}

.button-link:hover, .button-link:active, .button-link:focus {
  color: #57aeff;
}

.button.button-empty {
  transition: none;
  background: none;
  box-shadow: none;
}

.button.button-empty, .button.button-empty:hover {
  color: #3692e7;
}

.button.button-empty.button-red, .button.button-empty.button-red:hover {
  color: #cc3333;
}

.button.button-empty.button-green, .button.button-empty.button-green:hover {
  color: #629924;
}

.button.button-metal, .button.button-metal:hover {
  color: #999999;
}

.button.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.button.active {
  color: #fff;
}

.button.active:not(.disabled):hover {
  color: #fff;
}

.user-link {
  color: #bababa;
}

.user-link.online .line {
  color: #629924;
  opacity: 0.9;
}

.user-link.online .line::before {
  content: '';
}

.user-link.online .line.patron {
  opacity: 1;
}

.user-link .line {
  color: #bababa;
  opacity: 0.5;
  display: inline-block;
  width: 1.5em;
  text-align: center;
  vertical-align: text-top;
  /* not sure about that */
}

.user-link .line.patron {
  opacity: 0.8;
}

.user-link .line::before {
  content: '';
}

.user-link .line.patron::before {
  content: '' !important;
}

.user-link .line.moderator::before {
  content: '';
}

a.user-link:hover {
  color: #3692e7;
}

.utitle {
  color: #bf811d;
  font-weight: bold;
}

.utitle[data-bot] {
  color: #b72fc6;
}

#blind-mode {
  margin-left: -99999px;
  height: 0;
}

.blind-mode #blind-mode {
  text-align: center;
  padding: 5px 0;
  background: #888;
  margin-left: 0;
  height: auto;
}

.blind-mode .is::before,
.blind-mode .is::after,
.blind-mode [data-icon]::before {
  content: none;
  display: none;
  visibility: hidden;
}

#friend_box {
  display: none;
  position: fixed;
  bottom: 0;
  right: 0;
  z-index: 2;
  background: #3c3934;
  border: 1px solid #404040;
  border-right: 0;
  border-bottom: 0;
  border-top-left-radius: 3px;
  font-size: 0.9rem;
  min-width: 280px;
  width: fit-content;
  max-width: 480px;
  max-height: 95%;
  /* improve scroll perfs */
  backface-visibility: hidden;
  overflow-y: auto;
}

@media (min-width: 980px) and (min-height: 600px) {
  #friend_box {
    display: block;
  }
}

@media (hover: hover) {
  #friend_box:not(:hover) {
    scrollbar-width: none;
  }
  #friend_box:not(:hover)::-webkit-scrollbar {
    display: none;
  }
}

#friend_box .friend_box_title {
  cursor: pointer;
  padding: 3px 5px;
  border-bottom: 1px solid #404040;
}

#friend_box .content {
  max-height: 80vh;
  overflow-x: auto;
  overflow-y: auto;
}

#friend_box .content div {
  display: flex;
}

#friend_box .content div:hover {
  background: #404333;
}

#friend_box .content a {
  flex: 1 1 100%;
  padding: 3px 0px;
  display: block;
  transition: background 0.13s;
}

#friend_box .content a:hover {
  color: #bababa;
}

#friend_box .content a.user-link {
  overflow: visible;
  text-overflow: clip;
  white-space: nowrap;
  word-break: normal;
}

#friend_box .content a.user-link .line::before {
  color: #629924;
  content: '';
}

#friend_box .content a.tv {
  flex: 0 0 auto;
  padding: 0 5px;
}

#friend_box .content a.friend-study {
  flex: 0 0 auto;
  padding: 2px 5px 0 5px;
}

#friend_box .content i.line {
  opacity: 0.6;
}

#friend_box .nobody {
  text-align: center;
  height: 100%;
  padding: 3px 5px;
}

#friend_box .nobody span {
  display: block;
  margin: 5px;
}

#friend_box a.find {
  display: none;
  margin: 7px;
  font-style: normal;
}

#friend_box .nobody:hover a.find {
  display: block;
}

signal {
  display: inline-block;
  height: 1em;
  width: 1.5em;
  overflow: visible;
  white-space: nowrap;
}

signal > i {
  width: 20%;
  margin-left: 1px;
  display: inline-block;
  height: 40%;
  background-color: #4f7a1d;
}

signal > i:nth-child(2) {
  height: 60%;
}

signal > i:nth-child(3) {
  height: 80%;
}

signal > i:nth-child(4) {
  height: 100%;
}

signal.q1 > i {
  background-color: #cc3333;
}

signal.q2 > i {
  background-color: #bf811d;
}

signal > i.off {
  background-color: #4d4d4d;
}

#powerTip,
#miniGame {
  width: 20rem;
  min-height: 3em;
  background: #3c3934;
  display: none;
  position: absolute;
  z-index: 120;
}

#powerTip .mini-game__player,
#miniGame .mini-game__player {
  padding: 3px 0.5em 0.3em 0.7em;
}

#powerTip .mini-game__player:first-child,
#miniGame .mini-game__player:first-child {
  padding: 0.3em 0.5em 3px 0.7em;
}

.upt__info {
  height: 83px;
  padding: 0.4em 0.5em 0.3em 0.5em;
  border-bottom: 1px solid #404040;
  overflow: hidden;
}

body.no-rating .upt__info {
  height: 30px;
}

.upt__info__top__country {
  margin-left: 0.5em;
}

.upt__info__top .user-link {
  display: block;
}

.upt__info__top .user-link .line {
  vertical-align: middle;
}

.upt__info__top__country {
  font-size: 0.9em;
}

.upt__info__top__country img {
  margin-right: 0.3em;
}

.upt__info__ratings {
  margin-top: 3px;
}

.upt__info__ratings > span {
  flex: 0 0 25%;
  max-width: 25%;
  padding: 2px 3px;
  text-align: left;
}

.upt__info__warning {
  text-align: center;
  color: #cc3333;
  flex: 1 1 auto;
}

.upt__score {
  display: block;
  font-size: 1rem;
  line-height: 1.5rem;
  text-align: center;
}

.upt__actions.btn-rack {
  width: 100%;
  justify-content: stretch;
  border: 0;
  border-radius: 0;
}

.upt__actions.btn-rack a {
  flex: 0 0 18%;
}

.upt__actions.btn-rack a.relation-button {
  flex: 1 1 auto;
}

.upt__mod {
  white-space: nowrap;
}

.upt__mod__marks {
  padding: 3px 5px;
  background: #cc3333;
  color: #fff;
}

.upt__mod span {
  padding: 0.3em 0.5em 0.3em 0.5em;
  margin: 0;
}

#miniGame {
  min-height: 262px;
}

#miniGame .spinner {
  margin: 82px auto 0 auto;
}

#miniGame cg-board {
  border-radius: 0;
}

.mini-game {
  display: block;
}

.mini-game, .mini-game:hover {
  color: #bababa;
}

.mini-game__player {
  padding: 3px 2px 0 2px;
}

.mini-game__player:first-child {
  padding: 0 2px 2px 2px;
}

.mini-game__user {
  display: flex;
  align-items: baseline;
  overflow: hidden;
}

.mini-game .name {
  overflow: hidden;
  text-overflow: ellipsis;
}

.mini-game .rating {
  font-size: 0.9em;
  margin-left: 1ch;
}

.mini-game__clock {
  padding-left: 2ch;
}

.mini-game__clock.clock--run {
  color: #d64f00;
  font-weight: bold;
}

.mini-game__result {
  font-weight: bold;
  margin-right: 1ch;
}

.btn-rack {
  display: inline-flex;
  align-items: center;
  border: 1px solid #404040;
  user-select: none;
}

.btn-rack .btn-rack {
  /* embedded racks */
  border: none;
}

.btn-rack__btn,
.btn-rack form {
  justify-content: center;
  text-align: center;
  line-height: 2rem;
  cursor: pointer;
  border-right: 1px solid #404040;
  color: #bababa;
  white-space: nowrap;
}

.btn-rack__btn:hover,
.btn-rack form:hover {
  color: #bababa;
}

.btn-rack__btn:last-child,
.btn-rack form:last-child {
  border: 0;
}

.btn-rack__btn i,
.btn-rack form i {
  letter-spacing: -1px;
}

.btn-rack__btn {
  padding: 0 0.6em;
}

.btn-rack__btn.active {
  color: #fff;
}

/* circular loader */
@keyframes mask1 {
  0% {
    stroke-dashoffset: 180.87;
  }
  100% {
    stroke-dashoffset: -180.87;
  }
}

@keyframes mask2 {
  0% {
    stroke-dashoffset: 214.83;
  }
  100% {
    stroke-dashoffset: -146.91;
  }
}

@keyframes mask3 {
  0% {
    stroke-dashoffset: 257.43;
  }
  100% {
    stroke-dashoffset: -104.31;
  }
}

@keyframes spinner-color {
  0%,
  100% {
    stroke: #3692e7;
  }
  25% {
    stroke: #cc3333;
  }
  50% {
    stroke: #629924;
  }
  75% {
    stroke: #bf811d;
  }
}

@keyframes spinner-color {
  0%,
  100% {
    stroke: #42a5f5;
  }
  25% {
    stroke: #f44336;
  }
  50% {
    stroke: #fdd835;
  }
  75% {
    stroke: #4caf50;
  }
}

.spinner {
  width: 70px;
  height: 70px;
  margin: auto;
}

.spinner path {
  animation: mask1 2.75s cubic-bezier(0.49, 0.67, 0.45, 0.29) infinite;
}

.spinner path:nth-child(2) {
  animation-name: mask2;
}

.spinner path:nth-child(3) {
  animation-name: mask3;
}

@media (prefers-reduced-motion: reduce) {
  .spinner path {
    animation: none !important;
  }
}

.spinner g {
  animation: spinner-color 11s steps(1) infinite;
  stroke-dasharray: 180.87 180.87;
}

.white .spinner path {
  stroke: #fff;
}

/* small horizontal loader */
@keyframes ddloader {
  0% {
    background-position: left;
  }
  100% {
    background-position: right;
  }
}

.ddloader {
  background: url("../images/loader/whitex1.png") no-repeat;
  animation: ddloader 0.5s steps(15) infinite;
  vertical-align: middle;
  display: inline-block;
  width: 32px;
  height: 8px;
}

@keyframes reconnected {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(2.5rem);
  }
}

#reconnecting {
  font-size: 1.2em;
  font-weight: bold;
  position: fixed;
  background: #cc3333;
  color: #fff;
  position: fixed;
  bottom: 0;
  left: 0;
  height: 2.5rem;
  padding: 0 1rem;
  border-top-right-radius: 3px;
  z-index: 105;
  opacity: 0;
  transform: translateY(2.5rem);
}

#reconnecting::before {
  font-size: 1.3em;
}

.offline #reconnecting {
  transform: translateY(0);
  opacity: 1;
}

.online.reconnected #reconnecting {
  background: #629924;
  animation: reconnected 2.5s ease-out 1.5s backwards;
}

.online #reconnecting::before {
  content: '';
}

#announce {
  font-size: 1.4em;
  position: fixed;
  background: #3692e7;
  color: #fff;
  position: fixed;
  bottom: 0;
  left: 0;
  padding: 0.7rem 1rem;
  z-index: 104;
  width: 100%;
}

@media (min-width: 500px) {
  #announce {
    width: auto;
    border-top-right-radius: 3px;
  }
}

#announce a {
  color: #fff;
}

#announce time {
  margin-left: 1rem;
}

#announce .actions a {
  font-weight: bold;
  margin-left: 1rem;
}

#announce.announce {
  flex-flow: row nowrap;
  background: #d64f00;
}

.attack-training {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.attack-training__header {
  text-align: center;
  margin-bottom: 1rem;
}

.attack-training__header h1 {
  color: var(--c-brag);
  margin-bottom: 0.5rem;
}

.attack-training__header p {
  color: var(--c-font-dimmer);
  font-size: 1.1rem;
}

.attack-training__game {
  display: flex;
  gap: 2rem;
  justify-content: center;
  align-items: flex-start;
}

.attack-training__board-wrap {
  position: relative;
  padding-bottom: 1.4em;
  padding-left: 1.4em;
}

.attack-training__board {
  width: 480px;
  height: 480px;
  border: 2px solid var(--c-border);
  border-radius: 4px;
  position: relative;
}

.attack-training__files {
  display: flex;
  width: 480px;
  margin-left: 0;
}

.attack-training__files span {
  flex: 1;
  text-align: center;
  font-size: 1.15em;
  font-weight: bold;
  color: var(--c-font-dim);
  user-select: none;
}

.attack-training__ranks {
  position: absolute;
  top: 0;
  left: 0;
  width: 1.4em;
  height: 480px;
  display: flex;
  flex-direction: column;
}

.attack-training__ranks span {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15em;
  font-weight: bold;
  color: var(--c-font-dim);
  user-select: none;
}

.attack-training__sidebar {
  min-width: 280px;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.attack-training__stats {
  background: var(--c-bg-zebra);
  padding: 1rem;
  border-radius: 4px;
  border: 1px solid var(--c-border);
}

.attack-training__stats > div {
  display: flex;
  justify-content: space-between;
  margin-bottom: 0.5rem;
  font-size: 1.1rem;
  font-weight: bold;
}

.attack-training__stats > div:last-child {
  margin-bottom: 0;
}

.attack-training__timer .timer {
  color: var(--c-brag);
  font-size: 1.3rem;
}

.attack-training__timer .timer.warning {
  color: var(--c-bad);
  animation: pulse 1s infinite;
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

.attack-training__score .score {
  color: var(--c-good);
}

.attack-training__score .score.negative {
  color: var(--c-bad);
}

.attack-training__high-score {
  display: flex;
  justify-content: space-between;
  margin-bottom: 0.5rem;
  font-size: 1.1rem;
  font-weight: bold;
}

.attack-training__high-score .high-score-value {
  color: #f5a623;
}

.attack-training__high-score .high-score-date {
  font-size: 0.85rem;
  font-weight: normal;
  color: var(--c-font-dim);
}

.attack-training__position-complete {
  margin-top: 0.4rem;
  padding: 0.3rem 0.6rem;
  background: #2ecc71;
  color: #fff;
  border-radius: 4px;
  font-size: 1rem;
  font-weight: bold;
  text-align: center;
  animation: fadeInOut 1s ease forwards;
}

@keyframes fadeInOut {
  0% {
    opacity: 0;
    transform: translateY(-4px);
  }
  15% {
    opacity: 1;
    transform: translateY(0);
  }
  75% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

.new-high-score {
  color: #f5a623 !important;
  font-size: 1.3rem !important;
  font-weight: bold;
}

.attack-training__controls {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.attack-training__instructions {
  background: var(--c-bg-zebra2);
  padding: 1rem;
  border-radius: 4px;
  border: 1px solid var(--c-border);
}

.attack-training__instructions h3 {
  margin-bottom: 0.5rem;
  color: var(--c-font-clear);
}

.attack-training__instructions ul {
  margin: 0;
  padding-left: 1.2rem;
}

.attack-training__instructions li {
  margin-bottom: 0.3rem;
  line-height: 1.4;
}

.attack-training__results {
  text-align: center;
  background: var(--c-bg-zebra);
  padding: 2rem;
  border-radius: 8px;
  border: 2px solid var(--c-border);
  margin-top: 2rem;
}

.attack-training__results h2 {
  color: var(--c-brag);
  margin-bottom: 1rem;
}

.results-stats {
  margin-bottom: 1.5rem;
}

.results-stats p {
  font-size: 1.2rem;
  margin-bottom: 0.5rem;
  display: flex;
  justify-content: center;
  gap: 0.5rem;
}

.results-stats span {
  font-weight: bold;
  color: var(--c-good);
}

/* Piece selection states */
.attack-training__board .piece.selectable {
  cursor: pointer;
  transition: all 0.2s ease;
}

.attack-training__board .piece.selectable:hover {
  filter: brightness(1.3);
  transform: scale(1.05);
}

.attack-training__board .piece.selected {
  filter: drop-shadow(0 0 8px var(--c-good));
  transform: scale(1.1);
}

.attack-training__board .piece.incorrect {
  filter: drop-shadow(0 0 8px var(--c-bad));
  animation: shake 0.5s ease-in-out;
}

/* Square selection for Attack Training */
.attack-training__board square {
  cursor: pointer !important;
  pointer-events: auto !important;
  transition: background-color 0.2s ease;
  position: relative;
}

.attack-training__board square:hover {
  background: rgba(255, 255, 0, 0.2) !important;
}

.attack-training__board square.selected::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 255, 0, 0.5) !important;
  pointer-events: none;
  z-index: 2;
}

.attack-training__board square.missed::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 0, 0.6) !important;
  pointer-events: none;
  z-index: 2;
}

.attack-training__board square.incorrect::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 0, 0, 0.5) !important;
  pointer-events: none;
  z-index: 2;
}

/* Alternative approach using coordinate-based selectors */
.attack-training__board .cg-wrap square.selected {
  background: rgba(0, 255, 0, 0.5) !important;
}

.attack-training__board .cg-wrap square.missed {
  background: rgba(255, 255, 0, 0.6) !important;
}

.attack-training__board .cg-wrap square.incorrect {
  background: rgba(255, 0, 0, 0.5) !important;
}

@keyframes shake {
  0%, 100% {
    transform: translateX(0);
  }
  25% {
    transform: translateX(-3px);
  }
  75% {
    transform: translateX(3px);
  }
}

/* Responsive design */
@media (max-width: 1024px) {
  .attack-training__game {
    flex-direction: column;
    align-items: center;
  }
  .attack-training__board {
    width: 400px;
    height: 400px;
  }
  .attack-training__sidebar {
    width: 100%;
    max-width: 400px;
  }
}

@media (max-width: 768px) {
  .attack-training__board {
    width: 320px;
    height: 320px;
  }
  .attack-training__sidebar {
    max-width: 320px;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS9jc3MvYnVpbGQvc2l0ZS5kYXJrLmNzcyIsInNvdXJjZXMiOlsic2l0ZS9jc3MvYnVpbGQvc2l0ZS5kYXJrLnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kYXJrLnNjc3MiLCJjb21tb24vY3NzL3RoZW1lL19kZWZhdWx0LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mdW5jdGlvbnMuc2NzcyIsInNpdGUvY3NzL2J1aWxkL19zaXRlLnNjc3MiLCJjb21tb24vY3NzL19saWNoZXNzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3NldHRpbmdzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2NvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19wYXJzZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3NpbmdsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX2RvdWJsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZG91YmxlLXN0cmluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy90cmlwbGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX25vLXF1ZXJ5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3Jlc3BvbmQtdG8uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19hbGwuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX3otaW5kZXguc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX21lZGlhLXF1ZXJpZXMuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX3ZhcmlhYmxlcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX21peGlucy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZXh0ZW5kcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZmxleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fYm94LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbHVpZC1zaXplLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX2VsZW1lbnRzLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX2Zvcm0uc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fZm9udHMuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiY29tbW9uL2Nzcy9iYXNlL19kYXRhLWljb24uc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fdW5yZWFkLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3V0aWwuc2NzcyIsImNvbW1vbi9jc3MvbGF5b3V0L19iYXNlLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fcGFnZS1tZW51LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc3VibmF2LnNjc3MiLCJjb21tb24vY3NzL3ZlbmRvci9jaGVzc2dyb3VuZC9fY2hlc3Nncm91bmQuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19ib2FyZC0yZC5zY3NzIiwiY29tbW9uL2Nzcy92ZW5kb3IvY2hlc3Nncm91bmQvX3RoZW1lcy5zY3NzIiwiY29tbW9uL2Nzcy92ZW5kb3IvY2hlc3Nncm91bmQvX2RhcmstYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL19oZWFkZXIuc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL190b3BuYXYtaGlkZGVuLnNjc3MiLCJjb21tb24vY3NzL2hlYWRlci9fdG9wbmF2LXZpc2libGUuc2NzcyIsImNvbW1vbi9jc3MvaGVhZGVyL190aXRsZS5zY3NzIiwiY29tbW9uL2Nzcy9oZWFkZXIvX2J1dHRvbnMuc2NzcyIsImNsaS9jc3MvX2NsaW5wdXQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2JveC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2J1dHRvbi5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX3VzZXItbGluay5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2JsaW5kLW1vZGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mcmllbmQtYm94LnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fc2lnbmFsLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fcG93ZXItdGlwLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbWluaS1nYW1lLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fYnRuLXJhY2suc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19sb2FkZXIuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19yZWNvbm5lY3Rpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19hbm5vdW5jZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2F0dGFjay50cmFpbmluZy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvdGhlbWUvZGFyayc7XG5AaW1wb3J0ICdzaXRlJztcbiIsIkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4kdGhlbWU6ICdkYXJrJztcbiRjb2xvci1zY2hlbWU6ICdkYXJrJztcbiR0aGVtZS1saWdodDogZmFsc2U7XG4kdGhlbWUtZGFyazogdHJ1ZTtcblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMjAlKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDglKTtcbiRjLWJnLWhpZ2g6IGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDE0JSk7XG4kYy1iZy1sb3c6IGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyJSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOCUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMyUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgMTYlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCA3MyUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNjAlKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDQyJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgODklKTtcbiRjLXNoYWRlOiBjLWxpZ2h0KCRjLWZvbnQsIDMwJSk7XG4kYy1mb250LXBhZ2U6ICRjLWZvbnQtZGltO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3OSUsIDU2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSwgMTUlKTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0MyUpO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYyJSwgNDglKTtcblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMjUlKTtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgMTMlKTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWxvdztcbiRjLXBvcHVwOiAkYy1mb250LWNsZWFyO1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctYm94O1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgMjUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDIyJSk7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4kYy1mb250LXNoYWRvdzogYmxhY2s7XG4kdGV4dC1zaGFkb3c6IG5vbmU7XG5cbkBtaXhpbiBtZXRhbC1iZyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyKSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTkpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuQG1peGluIG1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjUpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMikgMTAwJSk7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge1xufVxuIiwiQGltcG9ydCAnLi4vYWJzdHJhY3QvZnVuY3Rpb25zJztcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbi8vIGhzbCgyMTAsIDE3JSwgOTUlKVxuJGMtYmctaGlnaDogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLWxvdzogaHNsKDAsIDAlLCA4OSUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDk2LjUlKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDkyJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA4NCUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDMwJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA0NyUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNzAlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgMTIlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCAwJSk7XG4kYy1zaGFkZTogYy1kaW1tZXIoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtcGFnZTogYy1saWdodCgkYy1mb250LCAzNyUpO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3NyUsIDQ2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6IGhzbCgyMiwgMTAwJSwgNDIlKTtcbiRjLWFjY2VudC1kaW06IGMtZGltbWVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtY2xlYXI6IGMtY2xlYXJlcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBhY2NlbnQgYmFja2dyb3VuZCAqL1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDglKTtcbiRjLWJyYWctb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBFcnJvcjogcmVkICovXG4kYy1yZWQ6IGhzbCgwLCA2MCUsIDUwJSk7XG4kYy1lcnJvcjogJGMtcmVkO1xuJGMtZXJyb3Itb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEhlYXJ0OiByZWQgKi9cbiRjLWhlYXJ0OiAkYy1lcnJvcjtcbiRjLWhlYXJ0LW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjElLCA2MiUpO1xuJGMtZmFuY3ktb3Zlcjogd2hpdGU7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDM1JSk7XG4kYy1saW5rLW92ZXI6ICRjLXByaW1hcnktb3ZlcjtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgOTglKTtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDg1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCA4MCUpO1xuXG4kYy1wYWdlLW1hc2s6IGhzbGEoMCwgMCwgMCUsIDAuNik7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1oaWdoO1xuJGMtcG9wdXA6ICRjLWZvbnQ7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1mb250LXNoYWRvdzogd2hpdGU7XG4kdGV4dC1zaGFkb3c6IDAgMXB4IDAgJGMtZm9udC1zaGFkb3c7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWxvdztcblxuLyogQm9yZGVycyAqL1xuXG4kYm9yZGVyLXdpZHRoOiAxcHg7XG4kYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbi8qIFNoYWRvd3MgKi9cblxuJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuLy8gJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE1Nyk7XG4iLCJAZnVuY3Rpb24gYy1saWdodCgkY29sb3IsICR2YWx1ZSkge1xuICBAcmV0dXJuIGNoYW5nZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICR2YWx1ZSk7XG59XG5cbkBmdW5jdGlvbiBpbWctdXJsKCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKCcjeyRpbWctcGF0aH0vI3skcGF0aH0nKTtcbn1cbiIsIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvbGljaGVzcyc7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIHBhZ2VzICovXG5cbkBpbXBvcnQgJy4uLy4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludCc7XG5cbkBpbXBvcnQgJ2Fic3RyYWN0L2FsbCc7XG5cbkBpbXBvcnQgJ2Jhc2UvZWxlbWVudHMnO1xuQGltcG9ydCAnYmFzZS9mb3JtJztcbkBpbXBvcnQgJ2Jhc2UvZm9udHMnO1xuQGltcG9ydCAnYmFzZS90eXBvZ3JhcGh5JztcbkBpbXBvcnQgJ2Jhc2UvZGF0YS1pY29uJztcbkBpbXBvcnQgJ2Jhc2UvdW5yZWFkJztcbkBpbXBvcnQgJ2Jhc2UvdXRpbCc7XG5cbkBpbmNsdWRlIHRoZW1lLXN0eWxlO1xuXG5AaW1wb3J0ICdsYXlvdXQvYmFzZSc7XG5AaW1wb3J0ICdsYXlvdXQvcGFnZS1tZW51JztcblxuQGltcG9ydCAndmVuZG9yL2NoZXNzZ3JvdW5kL2NoZXNzZ3JvdW5kJztcblxuQGltcG9ydCAnaGVhZGVyL2hlYWRlcic7XG5AaW1wb3J0ICcuLi8uLi9jbGkvY3NzL2NsaW5wdXQnO1xuXG5AaW1wb3J0ICdjb21wb25lbnQvYm9hcmQnO1xuQGltcG9ydCAnY29tcG9uZW50L2JveCc7XG5AaW1wb3J0ICdjb21wb25lbnQvYnV0dG9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudC91c2VyLWxpbmsnO1xuQGltcG9ydCAnY29tcG9uZW50L2JsaW5kLW1vZGUnO1xuQGltcG9ydCAnY29tcG9uZW50L2ZyaWVuZC1ib3gnO1xuQGltcG9ydCAnY29tcG9uZW50L3NpZ25hbCc7XG5AaW1wb3J0ICdjb21wb25lbnQvcG93ZXItdGlwJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9taW5pLWdhbWUnO1xuQGltcG9ydCAnY29tcG9uZW50L2J0bi1yYWNrJztcbkBpbXBvcnQgJ2NvbXBvbmVudC9sb2FkZXInO1xuQGltcG9ydCAnY29tcG9uZW50L3JlY29ubmVjdGluZyc7XG5AaW1wb3J0ICdjb21wb25lbnQvYW5ub3VuY2UnO1xuQGltcG9ydCAnY29tcG9uZW50L2F0dGFjay50cmFpbmluZyc7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIkBpbXBvcnQgJ2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd6LWluZGV4JztcbkBpbXBvcnQgJ21lZGlhLXF1ZXJpZXMnO1xuQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ3VuaWJvYXJkJztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICdleHRlbmRzJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYm94JztcbkBpbXBvcnQgJ2ZsdWlkLXNpemUnO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcbiAgJ2NnX19wcm9tb3Rpb24nOiAyMDUsXG4gICdjZ19fcGllY2UuZHJhZ2dpbmcnOiAyMDQsXG4gICdjZ19fYm9hcmQub3ZlcmxheSc6IDEwMCxcbiAgJ2NnX19waWVjZS5hbmltJzogMyxcbiAgJ2NnX19zdmcuY2ctc2hhcGVzJzogMixcbiAgJ2NnX19zdmcuY2ctY3VzdG9tLXN2Z3MnOiA0LFxuICAnY2dfX3BpZWNlJzogMixcbiAgJ2NnX19waWVjZS5mYWRpbmcnOiAxLFxuICAncG93ZXJ0aXAnOiAxMjAsXG4gICdjb21wbGV0ZSc6IDExMixcbiAgJ2lucXVpcnknOiAxMTEsXG4gICd6ZW4tdG9nZ2xlJzogMTEwLFxuICAnbW9kYWwnOiAxMTAsXG4gICdtc2VsZWN0JzogMTEwLFxuICAndG9wbmF2JzogMTEwLFxuICAnZnVsbHNjcmVlbi1tYXNrJzogMTA5LFxuICAnZHJvcGRvd24nOiAxMDgsXG4gICdjb250ZXh0LW1lbnUnOiAxMDcsXG4gICdzaXRlLWhlYWRlcic6IDEwNixcbiAgJ3JlY29ubmVjdGluZyc6IDEwNSxcbiAgJ3RvdXItcmVtaW5kZXInOiAxMDQsXG4gICdtei1tZW51JzogNCxcbiAgJ2Fib3ZlLWxpbmstb3ZlcmxheSc6IDMsXG4gICdmcmllbmQtYm94JzogMixcbiAgJ2xpbmstb3ZlcmxheSc6IDIsXG4gICdnYW1lLWJvb2ttYXJrJzogMixcbiAgJ3N1Ym5hdi1zaWRlJzogMixcbiAgJ2RlZmF1bHQnOiAwLFxuKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC1sYXJnZTogbWF4LXdpZHRoIDExMTlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6ICdob3ZlcjogaG92ZXInO1xuJG1xLWhvdmVyLW5vOiBob3ZlciBub25lO1xuXG4vKiBBbGlhc2VzICovXG5cbiRtcS1tYWluLW1hcmdpbjogJG1xLXNtYWxsO1xuXG4kbXEtdG9wbmF2LXZpc2libGU6ICRtcS1tZWRpdW07XG4kbXEtdG9wbmF2LWhpZGRlbjogJG1xLW5vdC1tZWRpdW07XG5cbiRtcS1zaXRlLWhlYWRlci10YWxsOiAkbXEtdGFsbDtcblxuJG1xLXN1Ym5hdi10b3A6ICRtcS1ub3Qtc21hbGw7XG4kbXEtc3VibmF2LXNpZGU6ICRtcS1zbWFsbDtcblxuJG1xLXpvb20tZW5hYmxlZDogJG1xLXNtYWxsICRtcS1zaG9ydDtcbiIsIiRkZWJ1ZzogZmFsc2U7XG5cbiRmb250LXBhdGg6ICcuLi9mb250JztcbiRpbWctcGF0aDogJy4uL2ltYWdlcyc7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKFxuICAxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc31cbik7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6IDVyZW07XG4iLCJAbWl4aW4gYm94LXJhZGl1cyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBib3gtbmVhdCB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBkZWJ1Zy16b29tLWlucHV0IHtcbiAgI3pvb20taW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgYm90dG9tOiAzcHg7XG4gICAgICByaWdodDogM3B4O1xuICAgICAgd2lkdGg6IDEwdnc7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wOiBhbGwsICRkdXI6ICR0cmFuc2l0aW9uLWR1cmF0aW9uKSB7XG4gIHRyYW5zaXRpb246ICRwcm9wICRkdXI7XG59XG5cbkBtaXhpbiBob3ZlcmZsb3cge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgJjpub3QoOmhvdmVyKSB7XG4gICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhpZGUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIGVsbGlwc2lzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLWxhcmdlIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiA3IDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1zbWFsbCB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGJvZHktZml4ZWQtc2Nyb2xsIHtcbiAgYm9keSB7XG4gICAgLyogcHJldmVudHMgc2Nyb2xsIGJhciBmbGlja2VyIHdoZW4gZHJhZ2dpbmcgYSBwaWVjZSBvdXQgKi9cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIiViYXNlLWZvbnQtZmFsbGJhY2sge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiViYXNlLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8ge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8tZmF0IHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4lY2hlc3MtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBDaGVzcycsICdOb3RvIFNhbnMnO1xufVxuXG4lc2FuIHtcbiAgQGV4dGVuZCAlY2hlc3MtZm9udDtcblxuICAucGllY2UtbGV0dGVyICYge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udDtcbiAgfVxuXG4gIGRyYXcge1xuICAgIEBleHRlbmQgJXJvYm90bztcbiAgICBtYXJnaW4tbGVmdDogMWNoO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IGJsYWNrICFpbXBvcnRhbnQ7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbiAgYWxpZ24taXRlbXM6IG5vcm1hbDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbTtcblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeS1kaW1tZXI7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1zZWNvbmRhcnktZGltO1xuICB9XG59XG5cbiVmb2N1cy1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAkYy1mb250LWRpbTtcbn1cblxuJXphbGdvdmVyZmxvdyB7XG4gIC8vIG1pdGlnYXRlIHphbGdvIHRleHRcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1oaWRkZW4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWVsbGlwc2lzIHtcbiAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuJWJveC1wYWRkaW5nIHtcbiAgcGFkZGluZzogNXZoIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJveC1wYWRkaW5nLWhvcml6IHtcbiAgcGFkZGluZzogMCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVicmVhay13b3JkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLXdvcmQtaGFyZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblxuICAvKiBzdXBwb3J0OiBmaXJlZm94ICovXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay1ub3BlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbiVlbGxpcHNpcyB7XG4gIEBpbmNsdWRlIGVsbGlwc2lzO1xufVxuXG4lc3F1YXJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbiV2aWRlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcblxuICAvKiAxNi85ICovXG4gIC8vIHBhZGRpbmctYm90dG9tOiA3NSU7IC8qIDQvMyAqL1xuICB3aWR0aDogMTAwJTtcblxuICA+ICoge1xuICAgIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuJWdhbWUtZW1iZWQge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTYwJTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBvcGFjaXR5OiAwLjk7XG59XG5cbiVkYXRhLWljb24tdG9wIHtcbiAgJjo6YmVmb3JlIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbn1cblxuJWZ1bGxzY3JlZW4tbWFzayB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAkYy1wYWdlLW1hc2s7XG4gIHotaW5kZXg6IHooJ2Z1bGxzY3JlZW4tbWFzaycpO1xufVxuXG4lbGluay1vdmVybGF5IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IHooJ2xpbmstb3ZlcmxheScpO1xufVxuXG4lYWJzLTEwMCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuJWRvdWJsZS10YXAge1xuICAvLyBwcmV2ZW50IGlQYWQgc2FmYXJpIGZyb20gem9vbWluZyBpbiBvbiBkb3VibGUgdGFwXG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuIiwiJWZsZXgtd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG59XG5cbiVmbGV4LWNlbnRlciB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtd3JhcCAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1jZW50ZXItbm93cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4lZmxleC1iZXR3ZWVuIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLW5vd3JhcCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4lZmxleC1iZXR3ZWVuLXN0cmV0Y2gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4lZmxleC1hcm91bmQge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuJWZsZXgtY29sdW1uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG59XG4iLCIlYm94LXJhZGl1cyB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG59XG5cbiVib3gtcmFkaXVzLWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC8qIGhlbHBzIHdpdGggY2xpcHBpbmcgYmFja2dyb3VuZCBpbnRvIGJvcmRlci1yYWRpdXMgKi9cbn1cblxuJWJveC1yYWRpdXMtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtYm90dG9tIHtcbiAgYm9yZGVyLXJhZGl1czogMCAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtdG9wLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAwO1xufVxuXG4lYm94LXJhZGl1cy10b3AtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXNoYWRvdyB7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbiVib3gtbmVhdCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzO1xufVxuXG4lYm94LW5lYXQtdG9wIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtdG9wO1xufVxuXG4lYm94LW5lYXQtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy1mb3JjZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4ICFkZWZhdWx0O1xuJHZwLW1heC13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcbiAgQHJldHVybiAkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpO1xufVxuXG5AbWl4aW4gZmx1aWQtc2l6ZSgkcHJvcCwgJG1pbi1zaXplLCAkbWF4LXNpemUsICRtaW4tdnc6ICR2cC1taW4td2lkdGgsICRtYXgtdnc6ICR2cC1tYXgtd2lkdGgpIHtcbiAgJHUxOiB1bml0KCRtaW4tdncpO1xuICAkdTI6IHVuaXQoJG1heC12dyk7XG4gICR1MzogdW5pdCgkbWluLXNpemUpO1xuICAkdTQ6IHVuaXQoJG1heC1zaXplKTtcblxuICBAaWYgJHUxID09ICR1MiBhbmQgJHUxID09ICR1MyBhbmQgJHUxID09ICR1NCB7XG4gICAgJiB7XG4gICAgICAjeyRwcm9wfTogJG1pbi1zaXplO1xuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbi12dykge1xuICAgICAgICAjeyRwcm9wfTogY2FsYyhcbiAgICAgICAgICAjeyRtaW4tc2l6ZX0gKyAje3N0cmlwLXVuaXQoJG1heC1zaXplIC0gJG1pbi1zaXplKX0gKlxuICAgICAgICAgICAgKCgxMDB2dyAtICN7JG1pbi12d30pIC8gI3tzdHJpcC11bml0KCRtYXgtdncgLSAkbWluLXZ3KX0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWF4LXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiAkbWF4LXNpemU7XG4gICAgICB9XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJmbHVpZC1zaXplIHJlcXVpcmVzIHRoYXQgYWxsIHZhbHVlcyBoYXZlIHRoZSBzYW1lIHVuaXRcIjtcbiAgfVxufVxuIiwiaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIGNvbG9yLXNjaGVtZTogdW5xdW90ZSgkY29sb3Itc2NoZW1lKTtcbn1cblxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZSBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAkYy1ib2R5LWdyYWRpZW50LCAkYy1iZy1wYWdlIDExNnB4KSBuby1yZXBlYXQ7XG4gIGNvbG9yOiAkYy1mb250O1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG5cbiAgJi5maXhlZC1zY3JvbGwge1xuICAgIC8qIHByZXZlbnRzIHNjcm9sbCBiYXIgZmxpY2tlciB3aGVuIGRyYWdnaW5nIGEgcGllY2Ugb3V0ICovXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG5cbmEge1xuICBjb2xvcjogJGMtbGluaztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGMtbGluay1ob3ZlcjtcbiAgfVxufVxuXG5wIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG5lbSxcbmkge1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbmxpIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxudGltZSB7XG4gIGZvbnQtc2l6ZTogOTAlO1xuICBvcGFjaXR5OiAwLjk7XG5cbiAgLyogZG9uJ3QgdXNlIGMtY29sb3ItZGltLCBpdCBvdmVycmlkZXMgdG9vIGhhcmQgKi9cbn1cblxuaHIge1xuICBtYXJnaW46IDEuNXJlbSAwO1xuICBib3JkZXI6IDA7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiAkYy1ib3JkZXI7XG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiAwLjllbTtcbn1cblxudGFibGUsXG50Ym9keSxcbnRmb290LFxudGhlYWQsXG50cixcbnRoLFxudGQge1xuICBib3JkZXI6IDA7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgZm9udDogaW5oZXJpdDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cbiIsImJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGNvbG9yOiAkYy1mb250O1xuICBvdXRsaW5lLWNvbG9yOiAkYy1wcmltYXJ5O1xufVxuXG5vcHRpb24sXG5vcHRncm91cCB7XG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveC1vcGFxdWU7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyO1xufVxuXG5pbnB1dCxcbnRleHRhcmVhLFxuc2VsZWN0IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1pbnB1dDtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBwYWRkaW5nOiAwLjZlbSAxZW07XG59XG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHJlc2l6ZTogdmVydGljYWw7XG4gIHBhZGRpbmc6IDAuOGVtIDFlbTtcbn1cblxuYnV0dG9uLFxuYSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuOjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAkYy1mb250LWRpbTtcbn1cblxuLmNvcHlhYmxlIHtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1pbnB1dDtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG59XG5cbmlucHV0Oi13ZWJraXQtYXV0b2ZpbGwsXG50ZXh0YXJlYTotd2Via2l0LWF1dG9maWxsLFxuc2VsZWN0Oi13ZWJraXQtYXV0b2ZpbGwge1xuICBib3JkZXI6ICRib3JkZXI7XG4gIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiAkYy1mb250O1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwcHggMTAwMHB4IG1peCgkYy1nb29kLCAkYy1iZy1pbnB1dCwgMTAlKSBpbnNldDtcbn1cbiIsIkBmdW5jdGlvbiBsb2NhbC1mb250KCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKCN7JGZvbnQtcGF0aH0vI3skcGF0aH0pO1xufVxuXG4vKiBJY29uIGZvbnRzICovXG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LWRpc3BsYXk6IGJsb2NrO1xuICBzcmM6IGxvY2FsLWZvbnQoJ2xpY2hlc3Mud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIGxvY2FsLWZvbnQoJ2xpY2hlc3Mud29mZicpIGZvcm1hdCgnd29mZicpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJztcbiAgZm9udC1kaXNwbGF5OiBibG9jaztcbiAgc3JjOiBsb2NhbC1mb250KCdsaWNoZXNzLmNoZXNzLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCBsb2NhbC1mb250KCdsaWNoZXNzLmNoZXNzLndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbn1cblxuLyogTm90byBTYW5zICh2NykgKi9cblxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1jeXJpbGxpYy1leHQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGO1xufVxuXG4vKiBjeXJpbGxpYyAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zJyksIGxvY2FsKCdOb3RvU2FucycpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtY3lyaWxsaWMud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcbn1cblxuLyogZGV2YW5hZ2FyaSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zJyksIGxvY2FsKCdOb3RvU2FucycpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtZGV2YW5hZ2FyaS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswOTAwLTA5N0YsIFUrMUNEMC0xQ0Y2LCBVKzFDRjgtMUNGOSwgVSsyMDBDLTIwMEQsIFUrMjBBOCwgVSsyMEI5LCBVKzI1Q0MsIFUrQTgzMC1BODM5LCBVK0E4RTAtQThGQjtcbn1cblxuLyogZ3JlZWstZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ncmVlay1leHQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuXG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zJyksIGxvY2FsKCdOb3RvU2FucycpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtZ3JlZWsud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGO1xufVxuXG4vKiB2aWV0bmFtZXNlICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMnKSwgbG9jYWwoJ05vdG9TYW5zJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy12aWV0bmFtZXNlLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMUVBMC0xRUY5LCBVKzIwQUI7XG59XG5cbi8qIGxhdGluLWV4dCAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zJyksIGxvY2FsKCdOb3RvU2FucycpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtdjE0LWxhdGluLWV4dC1yZWd1bGFyLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuXG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJztcbiAgc3JjOiBsb2NhbCgnTm90byBTYW5zJyksIGxvY2FsKCdOb3RvU2FucycpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtdjE0LWxhdGluLXJlZ3VsYXIud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLFxuICAgIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcbn1cblxuLyogTm90byBTYW5zIEJvbGQgKHY3KVxuXG4vKiBjeXJpbGxpYy1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ib2xkLWN5cmlsbGljLWV4dC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMUM4MC0xQzg4LCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RiwgVStGRTJFLUZFMkY7XG59XG5cbi8qIGN5cmlsbGljICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMgQm9sZCcpLCBsb2NhbCgnTm90b1NhbnMtQm9sZCcpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtYm9sZC1jeXJpbGxpYy53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuXG4vKiBkZXZhbmFnYXJpICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMgQm9sZCcpLCBsb2NhbCgnTm90b1NhbnMtQm9sZCcpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtYm9sZC1kZXZhbmFnYXJpLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA5MDAtMDk3RiwgVSsxQ0QwLTFDRjYsIFUrMUNGOC0xQ0Y5LCBVKzIwMEMtMjAwRCwgVSsyMEE4LCBVKzIwQjksIFUrMjVDQywgVStBODMwLUE4MzksIFUrQThFMC1BOEZCO1xufVxuXG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ib2xkLWdyZWVrLWV4dC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7XG59XG5cbi8qIGdyZWVrICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMgQm9sZCcpLCBsb2NhbCgnTm90b1NhbnMtQm9sZCcpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtYm9sZC1ncmVlay53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7XG59XG5cbi8qIHZpZXRuYW1lc2UgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ05vdG8gU2Fucyc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHNyYzogbG9jYWwoJ05vdG8gU2FucyBCb2xkJyksIGxvY2FsKCdOb3RvU2Fucy1Cb2xkJyksIGxvY2FsLWZvbnQoJ25vdG8tc2Fucy1ib2xkLXZpZXRuYW1lc2Uud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cblxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMgQm9sZCcpLCBsb2NhbCgnTm90b1NhbnMtQm9sZCcpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtdjE0LWxhdGluLWV4dC03MDAud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XG59XG5cbi8qIGxhdGluICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIFNhbnMnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBzcmM6IGxvY2FsKCdOb3RvIFNhbnMgQm9sZCcpLCBsb2NhbCgnTm90b1NhbnMtQm9sZCcpLCBsb2NhbC1mb250KCdub3RvLXNhbnMtdjE0LWxhdGluLTcwMC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsXG4gICAgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xufVxuXG4vKiBSb2JvdG8gTGlnaHQgKHYxOCkgKi9cblxuLyogY3lyaWxsaWMtZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCBsb2NhbC1mb250KCdyb2JvdG8tbGlnaHQtY3lyaWxsaWMtZXh0LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjtcbn1cblxuLyogY3lyaWxsaWMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIGxvY2FsLWZvbnQoJ3JvYm90by1saWdodC1jeXJpbGxpYy53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2O1xufVxuXG4vKiBncmVlay1leHQgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIGxvY2FsLWZvbnQoJ3JvYm90by1saWdodC1ncmVlay1leHQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGO1xufVxuXG4vKiBncmVlayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgbG9jYWwtZm9udCgncm9ib3RvLWxpZ2h0LWdyZWVrLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjtcbn1cblxuLyogdmlldG5hbWVzZSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgbG9jYWwtZm9udCgncm9ib3RvLWxpZ2h0LXZpZXRuYW1lc2Uud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcbn1cblxuLyogbGF0aW4tZXh0ICovXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nO1xuICBmb250LXdlaWdodDogMzAwO1xuICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCBsb2NhbC1mb250KCdyb2JvdG8tbGlnaHQtbGF0aW4tZXh0LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xufVxuXG4vKiBsYXRpbiAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgbG9jYWwtZm9udCgncm9ib3RvLWxpZ2h0LWxhdGluLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQyxcbiAgICBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XG59XG4iLCJodG1sIHtcbiAgQGV4dGVuZCAlYmFzZS1mb250LWZhbGxiYWNrO1xuXG4gIEBpbmNsdWRlIGZsdWlkLXNpemUoJ2ZvbnQtc2l6ZScsIDEycHgsIDE0cHgpO1xuXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCB7XG4gIEBleHRlbmQgJXJvYm90bztcblxuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuaDEge1xuICBAaW5jbHVkZSBmbHVpZC1zaXplKCdmb250LXNpemUnLCAyMHB4LCA0MHB4KTtcblxuICBtYXJnaW4tYm90dG9tOiA1dmg7XG5cbiAgYSB7XG4gICAgY29sb3I6ICRjLWxpbmstZGltO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtbGluaztcbiAgICB9XG4gIH1cbn1cblxuaDIge1xuICBAaW5jbHVkZSBmbHVpZC1zaXplKCdmb250LXNpemUnLCAxNnB4LCAzMHB4KTtcbn1cblxuLm5pbmphLXRpdGxlIHtcbiAgQGV4dGVuZCAlYmFzZS1mb250O1xuXG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuIiwiLmlzOjpiZWZvcmUsXG5bZGF0YS1pY29uXTo6YmVmb3JlLFxuLmlzLWFmdGVyOjphZnRlciB7XG4gIEBleHRlbmQgJWRhdGEtaWNvbjtcbn1cblxuLmlzLnRleHQ6OmJlZm9yZSxcbi50ZXh0W2RhdGEtaWNvbl06OmJlZm9yZSB7XG4gIG1hcmdpbi1yaWdodDogMC40ZW07XG59XG5cbi5pcy1ncmVlbjo6YmVmb3JlIHtcbiAgY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5pcy1yZWQ6OmJlZm9yZSB7XG4gIGNvbG9yOiAkYy1iYWQ7XG59XG5cbi5pcy1nb2xkOjpiZWZvcmUge1xuICBjb2xvcjogJGMtYnJhZztcbn1cbiIsIi5kYXRhLWNvdW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGF0YS1jb3VudDo6YWZ0ZXIsXG4udW5yZWFkIHtcbiAgQGV4dGVuZCAlYWN0aXZlLCAlYm94LXJhZGl1cztcblxuICBwYWRkaW5nOiAxcHggNXB4IDFweCA0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5kYXRhLWNvdW50OjphZnRlciB7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1jb3VudCk7XG4gIHRvcDogLTVweDtcbiAgcmlnaHQ6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcGFkZGluZzogMCAzcHg7XG4gIGhlaWdodDogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDE1cHg7XG59XG5cbi5kYXRhLWNvdW50W2RhdGEtY291bnQ9JzAnXTo6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuIiwiLm5vbmUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5mdWxsc2NyZWVuLW1hc2sge1xuICBAZXh0ZW5kICVmdWxsc2NyZWVuLW1hc2s7XG5cbiAgZGlzcGxheTogbm9uZTtcblxuICAuZnVsbHNjcmVlbi10b2dnbGU6Y2hlY2tlZCB+ICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbi5ycDo6YmVmb3JlIHtcbiAgQGV4dGVuZCAlZGF0YS1pY29uO1xuXG4gIG1hcmdpbi1yaWdodDogMC4yZW07XG4gIGNvbnRlbnQ6ICfugYEnO1xufVxuXG5iYWQucnAge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugYAnO1xuICB9XG59XG5cbmdvb2Qge1xuICBjb2xvcjogJGMtZ29vZDtcbn1cblxuYmFkIHtcbiAgY29sb3I6ICRjLWJhZDtcbn1cblxuLmluZmluaXRlLXNjcm9sbCAucGFnZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbjogMTBweCBhdXRvO1xufVxuIiwiJHZwLW1pbi13aWR0aDogMzIwcHg7XG4kdnAtbWF4LXdpZHRoOiAxMjAwcHg7XG5cbmJvZHkge1xuICAtLXNpdGUtaGVhZGVyLWhlaWdodDogI3skc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0fTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgLS1zaXRlLWhlYWRlci1oZWlnaHQ6ICN7JHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0fTtcbiAgfVxuXG4gIC0tc2l0ZS1oZWFkZXItbWFyZ2luOiAwcHg7XG5cbiAgJi5oZWFkZXItbWFyZ2luIHtcbiAgICAtLXNpdGUtaGVhZGVyLW1hcmdpbjogMWVtO1xuICB9XG5cbiAgLS1tYWluLW1hcmdpbjogMDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1tYWluLW1hcmdpbikge1xuICAgIC0tbWFpbi1tYXJnaW46IDF2dztcbiAgICBtYXJnaW4tYm90dG9tOiAkYmxvY2stZ2FwO1xuICB9XG59XG5cbiNtYWluLXdyYXAge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnLiAuIG1haW4gLiAuJztcbiAgLS1tYWluLW1heC13aWR0aDogI3skbWFpbi1tYXgtd2lkdGh9O1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICRtYWluLW1hcmdpbiAxZnIgbWlubWF4KGF1dG8sIHZhcigtLW1haW4tbWF4LXdpZHRoKSkgMWZyICRtYWluLW1hcmdpbjtcblxuICAmLmZ1bGwtc2NyZWVuIHtcbiAgICAtLW1haW4tbWF4LXdpZHRoOiBhdXRvO1xuICB9XG5cbiAgJi5mdWxsLXNjcmVlbi1mb3JjZSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogMTAwJTtcbiAgfVxuXG4gIG1hcmdpbi10b3A6ICRzaXRlLWhlYWRlci1tYXJnaW47XG5cbiAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgIGJvZHkuY2xpbnB1dCAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbm1haW4ge1xuICBncmlkLWFyZWE6IG1haW47XG5cbiAgJi5wYWdlLXNtYWxsIHtcbiAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uL2NvbXBvbmVudC9zdWJuYXYnO1xuXG4ucGFnZS1tZW51IHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ21lbnUnICdjb250ZW50JztcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zdWJuYXYtc2lkZSkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWF4LWNvbnRlbnQgYXV0bztcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbi1jb250ZW50O1xuICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6ICdtZW51IGNvbnRlbnQnO1xuICB9XG5cbiAgJi5wYWdlLXNtYWxsIHtcbiAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgICBtYXJnaW46IGluaGVyaXQ7XG4gIH1cblxuICAmX19tZW51IHtcbiAgICB6LWluZGV4OiAwO1xuICAgIGdyaWQtYXJlYTogbWVudTtcbiAgfVxuXG4gICZfX2NvbnRlbnQge1xuICAgIGdyaWQtYXJlYTogY29udGVudDtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAvLyBvdmVyZmxvdzogaGlkZGVuOyAvKiBmaXhlcyBjcmF6eSB0ZXh0IG92ZXJmbG93IG9uIEZ4ICovXG4gIH1cblxuICAmX19jb250ZW50LmJveCB7XG4gICAgLyogZW5zdXJlIHRoZSBjb250ZW50IGlzIGFzIGhpZ2ggYXMgdGhlIG1lbnUgKi9cbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICB9XG59XG4iLCIuc3VibmF2IHtcbiAgYSB7XG4gICAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbiwgJXBhZ2UtdGV4dDtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXN1Ym5hdi10b3ApIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTdjaCwgMWZyKSk7XG4gICAgZ3JpZC1nYXA6IDNweDtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gICAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcblxuICAgIGEge1xuICAgICAgQGluY2x1ZGUgYm94LW5lYXQ7XG5cbiAgICAgIGZvbnQtZmFtaWx5OiByb2JvdG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgcGFkZGluZzogMC42cmVtIDAgMC42cmVtIDAuNXJlbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNmVtO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctaGlnaDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkYy1saW5rO1xuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNlcCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXN1Ym5hdi1zaWRlKSB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIHotaW5kZXg6IHooJ3N1Ym5hdi1zaWRlJyk7XG5cbiAgICAvKiBhY3RpdmUgYm9yZGVyIG11c3QgZ28gb3ZlciB0aGUgcGFnZSBjb250ZW50ICovXG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG4gICAgICBwYWRkaW5nOiAwLjdyZW0gMnZ3IDAuN3JlbSAwLjhyZW07XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLWFjY2VudCwgMC40KTtcbiAgICAgICAgd2lkdGg6IDNweDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6IDk4JTtcbiAgICAgICAgdG9wOiAxJTtcbiAgICAgICAgcmlnaHQ6IC0xcHg7XG5cbiAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwsIDAuMjVzKTtcblxuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSxcbiAgICAgICY6aG92ZXIge1xuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNlcCB7XG4gICAgICBoZWlnaHQ6IDJlbTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgJ2JvYXJkLTJkJztcbkBpbXBvcnQgJ2RhcmstYm9hcmQnO1xuXG5jZy1ib2FyZCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVhYnMtMTAwO1xuXG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXG4gIC5tYW5pcHVsYWJsZSAmIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuc3F1YXJlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTIuNSU7XG4gIGhlaWdodDogMTIuNSU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICYubW92ZS1kZXN0IHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQocmdiYSgyMCwgODUsIDMwLCAwLjUpIDE5JSwgcmdiYSgwLCAwLCAwLCAwKSAyMCUpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB9XG5cbiAgJi5wcmVtb3ZlLWRlc3Qge1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDIwLCAzMCwgODUsIDAuNSkgMTklLCByZ2JhKDAsIDAsIDAsIDApIDIwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIH1cblxuICAmLm9jLm1vdmUtZGVzdCB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KHRyYW5zcGFyZW50IDAlLCB0cmFuc3BhcmVudCA3OSUsIHJnYmEoMjAsIDg1LCAwLCAwLjMpIDgwJSk7XG4gIH1cblxuICAmLm9jLnByZW1vdmUtZGVzdCB7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KHRyYW5zcGFyZW50IDAlLCB0cmFuc3BhcmVudCA3OSUsIHJnYmEoMjAsIDMwLCA4NSwgMC4yKSA4MCUpO1xuICB9XG5cbiAgYm9keS5ncmVlbiAmLmxhc3QtbW92ZSxcbiAgYm9keS5ncmVlbi1wbGFzdGljICYubGFzdC1tb3ZlLFxuICBib2R5Lm1hcmJsZSAmLmxhc3QtbW92ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNTUsIDE5OSwgMC40MSk7XG4gIH1cblxuICAmLmxhc3QtbW92ZSB7XG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1NSwgMTk5LCAwLCAwLjQxKTtcblxuICAgIGJvZHkuaG9yc2V5ICY6bm90KC5tb3ZlLWRlc3QpIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvYm9hcmQvaG9yc2V5Lmxhc3QtbW92ZS5wbmcpO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLmNoZWNrIHtcbiAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoXG4gICAgICBlbGxpcHNlIGF0IGNlbnRlcixcbiAgICAgIHJnYmEoMjU1LCAwLCAwLCAxKSAwJSxcbiAgICAgIHJnYmEoMjMxLCAwLCAwLCAxKSAyNSUsXG4gICAgICByZ2JhKDE2OSwgMCwgMCwgMCkgODklLFxuICAgICAgcmdiYSgxNTgsIDAsIDAsIDApIDEwMCVcbiAgICApO1xuICB9XG5cbiAgJi5zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMCwgODUsIDMwLCAwLjUpO1xuXG4gICAgYm9keS5ob3JzZXkgJiB7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2JvYXJkL2hvcnNleS5zZWxlY3RlZC5wbmcpO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLmN1cnJlbnQtcHJlbW92ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMCwgMzAsIDg1LCAwLjUpICFpbXBvcnRhbnQ7XG5cbiAgICBib2R5LmhvcnNleSAmIHtcbiAgICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWFnZXMvYm9hcmQvaG9yc2V5LmN1cnJlbnQtcHJlbW92ZS5wbmcpO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLm1vdmUtZGVzdDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyMCwgODUsIDMwLCAwLjMpO1xuXG4gICAgYm9keS5ob3JzZXkgJiB7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vaW1hZ2VzL2JvYXJkL2hvcnNleS5tb3ZlLWRlc3QucG5nKTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgfVxuICB9XG5cbiAgJi5wcmVtb3ZlLWRlc3Q6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjAsIDMwLCA4NSwgMC4yKTtcbiAgfVxuXG4gICYuYmgxIHBpZWNlIHtcbiAgICBvcGFjaXR5OiAwLjk4O1xuICB9XG59XG5cbnBpZWNlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMi41JTtcbiAgaGVpZ2h0OiAxMi41JTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgei1pbmRleDogeignY2dfX3BpZWNlJyk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICYuZHJhZ2dpbmcge1xuICAgIGN1cnNvcjogbW92ZTtcbiAgICB6LWluZGV4OiB6KCdjZ19fcGllY2UuZHJhZ2dpbmcnKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgJi5hbmltIHtcbiAgICB6LWluZGV4OiB6KCdjZ19fcGllY2UuYW5pbScpO1xuICB9XG5cbiAgJi5mYWRpbmcge1xuICAgIHotaW5kZXg6IHooJ2NnX19waWVjZS5mYWRpbmcnKTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cblxuICAmLmdob3N0IHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gIH1cbn1cblxuY2ctY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbn1cblxuY2ctY29udGFpbmVyIC5jZy1zaGFwZXMsXG5jZy1jb250YWluZXIgLmNnLWN1c3RvbS1zdmdzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuY2ctY29udGFpbmVyIC5jZy1zaGFwZXMge1xuICBvcGFjaXR5OiAwLjY7XG4gIHotaW5kZXg6IHooJ2NnX19zdmcuY2ctc2hhcGVzJyk7XG5cbiAgaW1hZ2Uge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxufVxuXG5jZy1jb250YWluZXIgLmNnLWN1c3RvbS1zdmdzIHtcbiAgei1pbmRleDogeignY2dfX3N2Zy5jZy1jdXN0b20tc3ZncycpO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuY2ctY29udGFpbmVyIC5jZy1jdXN0b20tc3ZncyBzdmcge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbiIsIkBpbXBvcnQgJ3RoZW1lcyc7XG5cbkBlYWNoICRuYW1lLCAkdGhlbWUgaW4gJGJvYXJkLXRoZW1lcy0yZCB7XG4gIC4jeyRuYW1lfSAuaXMyZCB7XG4gICAgY2ctYm9hcmQge1xuICAgICAgJGZpbGUtZXh0OiBtYXAtZ2V0KCR0aGVtZSwgZmlsZS1leHQpO1xuICAgICAgJG5hbWUtb3ZlcnJpZGU6IG1hcC1nZXQoJHRoZW1lLCBuYW1lLW92ZXJyaWRlKTtcbiAgICAgICRmaWxlLW5hbWU6IGlmKCRuYW1lLW92ZXJyaWRlLCAkbmFtZS1vdmVycmlkZSwgJG5hbWUpO1xuICAgICAgJGRpci1uYW1lOiAnYm9hcmQje2lmKCRmaWxlLWV4dCA9PSBcInN2Z1wiLCBcIi9zdmdcIiwgXCJcIil9JztcblxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1nLXVybCgnI3skZGlyLW5hbWV9LyN7JGZpbGUtbmFtZX0uI3skZmlsZS1leHR9Jyk7XG4gICAgfVxuXG4gICAgJGNvb3JkLWNvbG9yLXdoaXRlOiBtYXAtZ2V0KCR0aGVtZSwgY29vcmQtY29sb3Itd2hpdGUpO1xuICAgICRjb29yZC1jb2xvci1ibGFjazogbWFwLWdldCgkdGhlbWUsIGNvb3JkLWNvbG9yLWJsYWNrKTtcblxuICAgIEBpZiAkY29vcmQtY29sb3Itd2hpdGUgYW5kICRjb29yZC1jb2xvci1ibGFjayB7XG4gICAgICBjb29yZHMge1xuICAgICAgICAtLWNnLWNjdzogI3skY29vcmQtY29sb3Itd2hpdGV9O1xuICAgICAgICAtLWNnLWNjYjogI3skY29vcmQtY29sb3ItYmxhY2t9O1xuICAgICAgICAtLWNnLWNzOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiJGJvYXJkLXRoZW1lcy0yZDogKFxuICAnYmx1ZSc6IChcbiAgICBmaWxlLWV4dDogJ3N2ZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNkZWUzZTYsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM3ODhhOTQsXG4gICksXG4gICdibHVlMic6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICM5N2IyYzcsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM1NDZmODIsXG4gICksXG4gICdibHVlMyc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNkOWUwZTYsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICMzMTU5OTEsXG4gICksXG4gICdibHVlLW1hcmJsZSc6IChcbiAgICBmaWxlLWV4dDogJ2pwZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlYWU2ZGQsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM3YzdmODcsXG4gICksXG4gICdjYW52YXMnOiAoXG4gICAgbmFtZS1vdmVycmlkZTogJ2NhbnZhczInLFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2Q3ZGFlYixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzU0NzM4OCxcbiAgKSxcbiAgJ3dvb2QnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZDhhNDViLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjOWI0ZDBmLFxuICApLFxuICAnd29vZDInOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjYTM4YjVkLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNmM1MDE3LFxuICApLFxuICAnd29vZDMnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZDBjZWNhLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNzU1ODM5LFxuICApLFxuICAnd29vZDQnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjY2FhZjdkLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjN2I1MzMwLFxuICApLFxuICAnbWFwbGUnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZThjZWFiLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjYmM3OTQ0LFxuICApLFxuICAnbWFwbGUyJzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2UyYzg5ZixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzk5NjYzMyxcbiAgKSxcbiAgJ2xlYXRoZXInOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZDFkMWM5LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjYzI4ZTE2LFxuICApLFxuICAnZ3JlZW4nOiAoXG4gICAgZmlsZS1leHQ6ICdzdmcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZmZmZmRkLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNmQ4NzUzLFxuICApLFxuICAnYnJvd24nOiAoXG4gICAgZmlsZS1leHQ6ICdzdmcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZjBkOWI1LFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjOTQ2ZjUxLFxuICApLFxuICAncGluayc6IChcbiAgICBuYW1lLW92ZXJyaWRlOiAncGluay1weXJhbWlkJyxcbiAgICBmaWxlLWV4dDogJ3BuZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlOGU5YjcsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNlZDcyNzIsXG4gICksXG4gICdtYXJibGUnOiAoXG4gICAgZmlsZS1leHQ6ICdqcGcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjOTNhYjkxLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNGY2NDRlLFxuICApLFxuICAnZ3JlZW4tcGxhc3RpYyc6IChcbiAgICBmaWxlLWV4dDogJ3BuZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNmMmY5YmIsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM1OTkzNWQsXG4gICksXG4gICdncmV5JzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2I4YjhiOCxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzdkN2Q3ZCxcbiAgKSxcbiAgJ21ldGFsJzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2M5YzljOSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzcyNzI3MixcbiAgKSxcbiAgJ29saXZlJzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2I4YjE5ZixcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzZkNjY1NSxcbiAgKSxcbiAgJ25ld3NwYXBlcic6IChcbiAgICBmaWxlLWV4dDogJ3BuZycsXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNmZmYsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM4ZDhkOGQsXG4gICksXG4gICdwdXJwbGUnOiAoXG4gICAgZmlsZS1leHQ6ICdzdmcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjOWY5MGIwLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjN2Q0YThkLFxuICApLFxuICAncHVycGxlLWRpYWcnOiAoXG4gICAgZmlsZS1leHQ6ICdwbmcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZTVkYWYwLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjOTU3YWIwLFxuICApLFxuICAnaWMnOiAoXG4gICAgZmlsZS1leHQ6ICdzdmcnLFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZWNlY2VjLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjYzFjMThlLFxuICApLFxuICAnaG9yc2V5JzogKFxuICAgIGZpbGUtZXh0OiAnanBnJyxcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2YwZDliNSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzk0NmY1MSxcbiAgKSxcbik7XG5cbiRib2FyZC10aGVtZXMtM2Q6IChcbiAgJ0JsYWNrLVdoaXRlLUFsdW1pbml1bSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2Q5ZGVkOSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzRjNGU0ZCxcbiAgKSxcbiAgJ0JydXNoZWQtQWx1bWluaXVtJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjNWM1ZTYzLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNDY0OTRmLFxuICApLFxuICAnQ2hpbmEtQmx1ZSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2U3ZThjYyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzNjMDBiYSxcbiAgKSxcbiAgJ0NoaW5hLUdyZWVuJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZTdlOGNjLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjNDhiMDY0LFxuICApLFxuICAnQ2hpbmEtR3JleSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2U0ZTRjYSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzZhNmI2OCxcbiAgKSxcbiAgJ0NoaW5hLVNjYXJsZXQnOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlN2U4Y2MsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNhYzE2MWQsXG4gICksXG4gICdDaGluYS1ZZWxsb3cnOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICNlN2U4Y2MsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICNjOGRkMWMsXG4gICksXG4gICdDbGFzc2ljLUJsdWUnOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICM3MTkzZGYsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICM1MTc4YTcsXG4gICksXG4gICdHb2xkLVNpbHZlcic6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2MwYzNjOCxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzUxNGQxZCxcbiAgKSxcbiAgJ0dyZWVuLUdsYXNzJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZjdmYWZhLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjYTFmZmI0LFxuICApLFxuICAnTGlnaHQtV29vZCc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2RhY2M5ZixcbiAgICBjb29yZC1jb2xvci1ibGFjazogI2FjNzIzMSxcbiAgKSxcbiAgJ1Bvd2VyLUNvYXRlZCc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2Q1ZGFkNCxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzkzOTY5NyxcbiAgKSxcbiAgJ1B1cnBsZS1CbGFjayc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2JkMDBhYyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzNlNDA0MixcbiAgKSxcbiAgJ1Jvc2V3b29kJzogKFxuICAgIGNvb3JkLWNvbG9yLXdoaXRlOiAjZmFlN2RmLFxuICAgIGNvb3JkLWNvbG9yLWJsYWNrOiAjZDY4MTcwLFxuICApLFxuICAnV29vZC1HbGFzcyc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2RiZGFlNyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogI2U0YzM4NCxcbiAgKSxcbiAgJ01hcmJsZSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogIzVhOTQ3NSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzI2NWU0MSxcbiAgKSxcbiAgJ1dheCc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogI2RiYmE4ZSxcbiAgICBjb29yZC1jb2xvci1ibGFjazogI2QyNTU2MyxcbiAgKSxcbiAgJ0phZGUnOiAoXG4gICAgY29vcmQtY29sb3Itd2hpdGU6ICM5Yjk1OTEsXG4gICAgY29vcmQtY29sb3ItYmxhY2s6ICMxMzRlMzUsXG4gICksXG4gICdXb29kaSc6IChcbiAgICBjb29yZC1jb2xvci13aGl0ZTogIzgwNzEzYyxcbiAgICBjb29yZC1jb2xvci1ibGFjazogIzYyNTIxYSxcbiAgKSxcbik7XG4iLCJAaWYgJHRoZW1lLWRhcmsge1xuICBib2R5LmRhcmstYm9hcmQge1xuICAgIC0tZGFyay1mYWN0b3I6IDAuNDtcblxuICAgIGNnLWJvYXJkLFxuICAgIC5pczNkIGNnLWJvYXJkOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCB2YXIoLS1kYXJrLWZhY3RvcikpO1xuICAgICAgYmFja2dyb3VuZC1ibGVuZC1tb2RlOiBkYXJrZW47XG4gICAgfVxuXG4gICAgJi5jb29yZHMtaW4gY29vcmQge1xuICAgICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDtcbiAgICAgIG9wYWNpdHk6IGNhbGMoMSAtIHZhcigtLWRhcmstZmFjdG9yKSk7XG4gICAgfVxuXG4gICAgY2ctYm9hcmQgc3F1YXJlIHtcbiAgICAgIG9wYWNpdHk6IGNhbGMoMSAtIHZhcigtLWRhcmstZmFjdG9yKSk7XG4gICAgfVxuXG4gICAgY2ctYm9hcmQgcGllY2Uge1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKGNhbGMoMSAtIDAuNiAqIHZhcigtLWRhcmstZmFjdG9yKSkpO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCAndG9wbmF2LWhpZGRlbic7XG5AaW1wb3J0ICd0b3BuYXYtdmlzaWJsZSc7XG5AaW1wb3J0ICd0aXRsZSc7XG5AaW1wb3J0ICdidXR0b25zJztcblxuI3RvcCB7XG4gIGhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IHooJ3NpdGUtaGVhZGVyJyk7XG4gIG1heC13aWR0aDogMTgwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC0tZHJvcGRvd24tdG9wOiA0MHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICAtLWRyb3Bkb3duLXRvcDogNjBweDtcbiAgfVxufVxuXG5cblxuLnNpdGUtdGl0bGUtbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuIiwiQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtdG9wbmF2LWhpZGRlbikge1xuICAudG9wbmF2LXRvZ2dsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTk5OTlweDtcbiAgICBsZWZ0OiAtOTk5OXB4O1xuICB9XG5cbiAgLmhiZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICAgIGhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogeigndG9wbmF2Jyk7XG5cbiAgICAmX19pbiB7XG4gICAgICAmLFxuICAgICAgJjo6YWZ0ZXIsXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEuNXB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAyM3B4O1xuICAgICAgICBoZWlnaHQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgICAgICAgd2lkdGg6IDM0cHg7XG4gICAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdG9wOiA1MCU7XG4gICAgICBsZWZ0OiA4LjVweDtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgICAgICBsZWZ0OiAxM3B4O1xuICAgICAgfVxuXG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yMnMgY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7XG5cbiAgICAgICY6OmFmdGVyLFxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICB9XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIHRvcDogLTZweDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zaXRlLWhlYWRlci10YWxsKSB7XG4gICAgICAgICAgdG9wOiAtOXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhbnNpdGlvbjogdG9wIDAuMXMgMC4yNXMgZWFzZS1pbiwgb3BhY2l0eSAwLjFzIGVhc2UtaW47XG4gICAgICB9XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgYm90dG9tOiAtN3B4O1xuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICAgICAgICBib3R0b206IC0xMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhbnNpdGlvbjogYm90dG9tIDAuMXMgMC4yNXMgZWFzZS1pbiwgdHJhbnNmb3JtIDAuMjJzIGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC50b3BuYXYtdG9nZ2xlOmNoZWNrZWQgfiAmIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWhpZ2g7XG5cbiAgICAgIC5oYmdfX2luIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMjI1ZGVnKTtcbiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4xMnM7XG4gICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zaXRpb246IHRvcCAwLjFzIGVhc2Utb3V0LCBvcGFjaXR5IDAuMXMgMC4xMnMgZWFzZS1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYm90dG9tIDAuMXMgZWFzZS1vdXQsIHRyYW5zZm9ybSAwLjIycyAwLjEycyBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICN0b3BuYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWhpZ2g7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEwMCUgLSAxMHB4KSk7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKHRyYW5zZm9ybSwgMjAwbXMpO1xuXG4gICAgcGFkZGluZy1ib3R0b206IDEuMnJlbTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG4gICAgYm94LXNoYWRvdzogMnB4IDVweCA3cHggaHNsYSgwLCAwLCAwJSwgMC41KTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDNweCAwIDA7XG4gICAgbWF4LXdpZHRoOiA4MCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgICAgbWF4LXdpZHRoOiA3MCU7XG4gICAgfVxuXG4gICAgei1pbmRleDogeigndG9wbmF2Jyk7XG5cbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgcGFkZGluZzogMC43ZW0gMDtcbiAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSk7XG4gICAgfVxuXG4gICAgc2VjdGlvbiB7XG4gICAgICBmbGV4OiAxIDAgNTAlO1xuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcblxuICAgICAgPiBhIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjJyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLnBsYXkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuXG4gICAgICBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbjtcblxuICAgICAgICBhIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLXByaW1hcnk7XG4gICAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnRvcG5hdi10b2dnbGU6Y2hlY2tlZCB+ICYge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuXG4gICAgICBhIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxMjVtcyBlYXNlLWluLW91dCAxMjVtcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBib2R5Lm1hc2tlZCB7XG4gICAgLyogcHJldmVudCBzY3JvbGxpbmcgd2hpbGUgdG9wbmF2IGlzIG9wZW4gKi9cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLyogYXdrd2FyZGx5IG1ha2UgdXAgZm9yIHRoZSBkaXNhcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGwgYmFyICovXG4gICAgLyogYWN0dWFsbHkgZG9uJ3QsIHNpbmNlIG9uIG1vYmlsZSBkZXZpY2VzIHRoZSBzY3Jvb2wgYmFyXG4gICAgICogaGFzIG5vIHdpZHRoLCBhbmQgdGhhdCBtZW51IGlzIG1haW5seSBmb3IgbW9iaWxlLiAqL1xuICAgIC8vIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gIH1cbn1cbiIsIkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXRvcG5hdi12aXNpYmxlKSB7XG4gIC5oYmcsXG4gIC5zaXRlLXRpdGxlLW5hdiAuZnVsbHNjcmVlbi1tYXNrLFxuICAudG9wbmF2LXRvZ2dsZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgI3RvcG5hdiB7XG4gICAgLS1uYXYtc2VjdGlvbjogMjZweDtcbiAgICAtLW5hdi1zZWN0aW9uLWhvdmVyOiAzNXB4O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgICAgLS1uYXYtc2VjdGlvbjogNDhweDtcbiAgICAgIC0tbmF2LXNlY3Rpb24taG92ZXI6IDUzcHg7XG4gICAgfVxuXG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIHNlY3Rpb24ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgaGVpZ2h0OiB2YXIoLS1uYXYtc2VjdGlvbik7XG5cbiAgICAgID4gYSB7XG4gICAgICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG4gICAgICAgIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLW5hdi1zZWN0aW9uKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRzaXRlLWhlYWRlci1oZWlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDAgMC43cmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAuaG9tZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGl2IHtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIG1heC1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctaGVhZGVyLWRyb3Bkb3duO1xuICAgICAgbWluLXdpZHRoOiAxMHJlbTtcbiAgICAgIGJveC1zaGFkb3c6IDJweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAzcHg7XG4gICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICRjLXByaW1hcnk7XG5cbiAgICAgIGEge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogMC42cmVtIDAuN3JlbTtcbiAgICAgICAgY29sb3I6ICRjLWhlYWRlci1kcm9wZG93bjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgICAgICYsXG4gICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDNweCAwIDA7XG4gICAgICAgIH1cblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAzcHggMXB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5ibGluZCBkaXYge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogLTkwMDBweDtcbiAgICB9XG5cbiAgICAmLmhvdmVyIHNlY3Rpb246aG92ZXIsXG4gICAgc2VjdGlvbjphY3RpdmUge1xuICAgICAgPiBhIHtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1uYXYtc2VjdGlvbi1ob3Zlcik7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWhlYWRlci1kcm9wZG93bjtcbiAgICAgICAgY29sb3I6ICRjLWhlYWRlci1kcm9wZG93bjtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkYy1wcmltYXJ5O1xuICAgICAgfVxuXG4gICAgICBkaXYge1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnNpdGUtdGl0bGUge1xuICBAZXh0ZW5kICViYXNlLWZvbnQ7XG5cbiAgZm9udC1zaXplOiAyNXB4O1xuICBsaW5lLWhlaWdodDogI3skc2l0ZS1oZWFkZXItc2hvcnQtaGVpZ2h0IC0gM307XG4gIHRleHQtc2hhZG93OiAkdGV4dC1zaGFkb3c7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG1hcmdpbjogMCAwLjVyZW07XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXRvcG5hdi1oaWRkZW4pIHtcbiAgICAvKiBtb3ZlIGF3YXkgZnJvbSBoYW1idXJnZXIgKi9cbiAgICBtYXJnaW4tbGVmdDogY2FsYygwLjVyZW0gKyAjeyRzaXRlLWhlYWRlci1oZWlnaHR9KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICBmb250LXNpemU6IDMwcHg7XG4gICAgbGluZS1oZWlnaHQ6ICN7JHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0IC0gM307XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS10b3BuYXYtdmlzaWJsZSAkbXEtc2l0ZS1oZWFkZXItdGFsbCkge1xuICAgIGxpbmUtaGVpZ2h0OiAjeyRzaXRlLWhlYWRlci10YWxsLWhlaWdodCAtIDV9O1xuICAgIG1hcmdpbjogMCAxcmVtIDAgMS41cmVtO1xuICB9XG5cbiAgYSB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtcHJpbWFyeTtcblxuICAgICAgc3BhbiB7XG4gICAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LWRpbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzcGFuIHtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gIH1cblxuICAua2lkZG8ge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICB9XG59XG4iLCIldG9wLWljb24ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAkc2l0ZS1oZWFkZXItaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcbn1cblxuLnNpdGUtYnV0dG9ucyB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAuc2hvcC1idXR0b24ge1xuICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gIH1cblxuICAuc2hvcC1idXR0b24gaW1nIHtcbiAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgaGVpZ2h0OjMwcHg7XG4gICB9XG5cbiAgLmNvaGVuY29pbnMtY291bnRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cblxuICAuY29oZW5jb2lucy1jb3VudGVyIC5jb2hlbmNvaW5zLWljb24ge1xuICAgIHdpZHRoOiAyLjBlbTtcbiAgICBoZWlnaHQ6IDIuMGVtO1xuICAgIG1hcmdpbi1yaWdodDogMC4yZW07XG4gIH1cblxuXG4gIC5saW5rIHtcbiAgICBAZXh0ZW5kICV0b3AtaWNvbjtcblxuICAgIC8qIHdlIGRvbid0IHdhbnQgYSBsaWdodGVyIGRhcmsgZm9udCBpbiB0aGUgdG9wIGdyYWRpZW50ICovXG4gICAgQGlmICR0aGVtZSA9PSAndHJhbnNwJyB7XG4gICAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG4gICAgfSBAZWxzZSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICB9XG5cbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBwYWRkaW5nOiAwIDAuN3JlbTtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgICB9XG5cbiAgICBzcGFuOjpiZWZvcmUge1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxuICAudG9nZ2xlIHtcbiAgICBAZXh0ZW5kICV0b3AtaWNvbjtcbiAgfVxuXG4gIC5pbml0aWF0aW5nIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGhlaWdodDogMzAwcHg7XG4gICAgd2lkdGg6IDIyNXB4O1xuICB9XG5cbiAgLmRyb3Bkb3duIHtcbiAgICBAZXh0ZW5kICVkcm9wZG93bi1zaGFkb3c7XG5cbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IHZhcigtLWRyb3Bkb3duLXRvcCk7XG4gICAgYmFja2dyb3VuZDogJGMtYmctaGVhZGVyLWRyb3Bkb3duO1xuICAgIHotaW5kZXg6IHooJ2Ryb3Bkb3duJyk7XG5cbiAgICBhLFxuICAgIGJ1dHRvbiB7XG4gICAgICBjb2xvcjogJGMtaGVhZGVyLWRyb3Bkb3duO1xuICAgIH1cbiAgfVxuXG4gIC5zaG93biB7XG4gICAgLnRvZ2dsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1oZWFkZXItZHJvcGRvd247XG4gICAgICBjb2xvcjogJGMtaGVhZGVyLWRyb3Bkb3duO1xuICAgIH1cblxuICAgIC5kcm9wZG93biB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAuc2lnbmluIHtcbiAgICBtYXJnaW46IDAgMXJlbTtcblxuICAgIEBpZiAkdGhlbWUgPT0gJ3RyYW5zcCcge1xuICAgICAgJi5idXR0b24tZW1wdHkge1xuICAgICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubGluay1jZW50ZXIge1xuICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgfVxuXG4gIC5yZXBvcnQtc2NvcmUge1xuICAgICY6bm90KC5yZXBvcnQtc2NvcmUtLWhpZ2gpOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1wYWdlO1xuICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuICAgICYtLWxvdzo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICRjLWdvb2QgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxuI3VzZXJfdGFnIHtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuI25vdGlmeS1hcHAgLmluaXRpYXRpbmcge1xuICB3aWR0aDogMjVyZW07XG59XG4iLCIjY2xpbnB1dCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogJHNpdGUtaGVhZGVyLWhlaWdodDtcblxuICBpbnB1dCB7XG4gICAgQGV4dGVuZCAlcGFnZS10ZXh0O1xuXG4gICAgbGluZS1oZWlnaHQ6ICRzaXRlLWhlYWRlci1oZWlnaHQ7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICB3aWR0aDogMDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXgtbGFyZ2UpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24od2lkdGgpO1xuICAgIH1cblxuICAgIGJvZHkuY2xpbnB1dCAmIHtcbiAgICAgIHdpZHRoOiAyMGNoO1xuICAgIH1cbiAgfVxuXG4gIGlucHV0OmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cbmJvZHkuY2xpbnB1dCAjdG9wIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXgtbGFyZ2UpIHtcbiAgICAjdG9wbmF2IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXgtc21hbGwpIHtcbiAgICAuc2l0ZS10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIC5zaXRlLWJ1dHRvbnMgPiAqOm5vdCgjY2xpbnB1dCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAjY2xpbnB1dCB7XG4gICAgICB3aWR0aDogNzV2dztcbiAgICB9XG4gIH1cbn1cbiIsIi5tYWluLWJvYXJkIHtcbiAgQGV4dGVuZCAlc3F1YXJlO1xuXG4gICZfX3ByZWxvYWQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC5jZy13cmFwIHtcbiAgICBAZXh0ZW5kICVhYnMtMTAwO1xuICB9XG59XG5cbi5taW5pLWJvYXJkLFxuLm1pbmktZ2FtZSAuY2ctd3JhcCB7XG4gIEBleHRlbmQgJXNxdWFyZTtcbn1cbiIsIiR2cC1taW4td2lkdGg6IDMyMHB4O1xuJHZwLW1heC13aWR0aDogMTIwMHB4O1xuXG4uYm94IHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG5cbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZSgnLS1ib3gtcGFkZGluZycsIDE1cHgsIDYwcHgpO1xuXG4gICYtcGFkIHtcbiAgICBAZXh0ZW5kICVib3gtcGFkZGluZztcblxuICAgIC5ib3hfX3RvcCB7XG4gICAgICBwYWRkaW5nOiAwIDAgdmFyKC0tYm94LXBhZGRpbmcpIDA7XG4gICAgICBoMSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fdG9wIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICBwYWRkaW5nOiBjYWxjKDV2aCAtIDFyZW0pIHZhcigtLWJveC1wYWRkaW5nKTtcblxuICAgIGgxIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAvKiBmbGV4IGd1dHRlcnMsIHdhaXRpbmcgZm9yIHJvdy1nYXAgdG8gYmUgaW1wbGVtZW50ZWQgZm9yIGZsZXhib3guICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ1NTX0ZsZXhpYmxlX0JveF9MYXlvdXQvTWFzdGVyaW5nX1dyYXBwaW5nX29mX0ZsZXhfSXRlbXMjQ3JlYXRpbmdfZ3V0dGVyc19iZXR3ZWVuX2l0ZW1zICovXG4gICAgPiBoMSxcbiAgICA+IGRpdixcbiAgICA+IGZvcm0ge1xuICAgICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICB9XG5cbiAgICAvKiBlbmQgb2YgZmxleCBndXR0ZXIgaGFjayAqL1xuXG4gICAgJl9fYWN0aW9ucyB7XG4gICAgICBAZXh0ZW5kICVmbGV4LXdyYXA7XG5cbiAgICAgIC8qIGZsZXggZ3V0dGVycywgd2FpdGluZyBmb3Igcm93LWdhcCB0byBiZSBpbXBsZW1lbnRlZCBmb3IgZmxleGJveC4gIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9DU1NfRmxleGlibGVfQm94X0xheW91dC9NYXN0ZXJpbmdfV3JhcHBpbmdfb2ZfRmxleF9JdGVtcyNDcmVhdGluZ19ndXR0ZXJzX2JldHdlZW5faXRlbXMgKi9cbiAgICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcblxuICAgICAgPiAqIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC8qIGVuZCBvZiBmbGV4IGd1dHRlciBoYWNrICovXG5cbiAgICAgIC5idXR0b24ge1xuICAgICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgPiA6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOm5vdCguYm94LXBhZCkgPiBoMSB7XG4gICAgQGV4dGVuZCAlYm94LXBhZGRpbmc7XG5cbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAmX19wYWQge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nLWhvcml6O1xuICB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW1haW4tbWFyZ2luKSB7XG4gIC5ib3gge1xuICAgIEBpbmNsdWRlIGJveC1yYWRpdXM7XG4gIH1cbn1cbiIsIi5idXR0b24ge1xuICBAZXh0ZW5kICVyb2JvdG8tZmF0LCAlYnV0dG9uLXNoYWRvdywgJWJveC1yYWRpdXM7XG5cbiAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgcGFkZGluZzogMC44ZW0gMWVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgJixcbiAgJjp2aXNpdGVkLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICB9XG5cbiAgJjpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgQGV4dGVuZCAlYnV0dG9uLXJhaXNlZC1zaGFkb3c7XG5cbiAgICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGMtcHJpbWFyeSwgNyk7XG4gIH1cblxuICAmOm5vdCguZGlzYWJsZWQpOmZvY3VzIHtcbiAgICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG4gIH1cblxuICAmLW5vLXVwcGVyIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gICYtdGhpbiB7XG4gICAgcGFkZGluZzogMC4xZW0gMWVtO1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICB9XG5cbiAgJi1mYXQge1xuICAgIGZvbnQtc2l6ZTogMS42cmVtO1xuICB9XG5cbiAgJi1ncmVlbiB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5O1xuXG4gICAgJjpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRjLXNlY29uZGFyeSwgNCk7XG4gICAgfVxuICB9XG5cbiAgJi1yZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLWVycm9yO1xuXG4gICAgJjpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBsaWdodGVuKCRjLWVycm9yLCAxMSk7XG4gICAgfVxuICB9XG5cbiAgJi1saW5rIHtcbiAgICBAZXh0ZW5kICVidXR0b24tbm9uZTtcblxuICAgIGNvbG9yOiAkYy1saW5rO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkYy1saW5rLWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gICYuYnV0dG9uLWVtcHR5IHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuXG4gICAgJixcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5O1xuICAgIH1cblxuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlYnV0dG9uLXNoYWRvdztcbiAgICB9XG5cbiAgICAmLFxuICAgICYuYnV0dG9uLWdyZWVuLFxuICAgICYuYnV0dG9uLXJlZCB7XG4gICAgICAmOm5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgICAgQGV4dGVuZCAlbWV0YWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5idXR0b24tcmVkLFxuICAgICYuYnV0dG9uLXJlZDpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtZXJyb3I7XG4gICAgfVxuXG4gICAgJi5idXR0b24tZ3JlZW4sXG4gICAgJi5idXR0b24tZ3JlZW46aG92ZXIge1xuICAgICAgY29sb3I6ICRjLXNlY29uZGFyeTtcbiAgICB9XG4gIH1cblxuICAmLmJ1dHRvbi1tZXRhbCB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICAmLFxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIH1cblxuICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgQGV4dGVuZCAlbWV0YWwtaG92ZXI7XG4gICAgfVxuICB9XG5cbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgQGV4dGVuZCAlYWN0aXZlO1xuXG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmLmFjdGl2ZTpub3QoLmRpc2FibGVkKTpob3ZlciB7XG4gICAgQGV4dGVuZCAlYWN0aXZlLWhvdmVyO1xuXG4gICAgY29sb3I6ICNmZmY7XG4gIH1cbn1cbiIsIi51c2VyLWxpbmsge1xuICBAZXh0ZW5kICVub3dyYXAtaGlkZGVuO1xuXG4gIGNvbG9yOiAkYy1mb250O1xuXG4gICYub25saW5lIC5saW5lIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AkCc7XG4gICAgfVxuXG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgb3BhY2l0eTogMC45O1xuXG4gICAgJi5wYXRyb24ge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAubGluZSB7XG4gICAgQGV4dGVuZCAlZGF0YS1pY29uO1xuXG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMS41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcblxuICAgIC8qIG5vdCBzdXJlIGFib3V0IHRoYXQgKi9cbiAgICAmLnBhdHJvbiB7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugJInO1xuICAgIH1cblxuICAgICYucGF0cm9uOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6AkScgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmLm1vZGVyYXRvcjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugIInO1xuICAgIH1cbiAgfVxufVxuXG5hLnVzZXItbGluazpob3ZlciB7XG4gIGNvbG9yOiAkYy1saW5rO1xufVxuXG4udXRpdGxlIHtcbiAgY29sb3I6ICRjLWJyYWc7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICZbZGF0YS1ib3RdIHtcbiAgICBjb2xvcjogJGMtYm90O1xuICB9XG59XG4iLCIjYmxpbmQtbW9kZSB7XG4gIG1hcmdpbi1sZWZ0OiAtOTk5OTlweDtcbiAgaGVpZ2h0OiAwO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA1cHggMDtcbiAgICBiYWNrZ3JvdW5kOiAjODg4O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG4uYmxpbmQtbW9kZSB7XG4gIC5pczo6YmVmb3JlLFxuICAuaXM6OmFmdGVyLFxuICBbZGF0YS1pY29uXTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBub25lO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG59XG4iLCIjZnJpZW5kX2JveCB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtdG9wbmF2LXZpc2libGUgJG1xLXNpdGUtaGVhZGVyLXRhbGwpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgei1pbmRleDogeignZnJpZW5kLWJveCcpO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBtaW4td2lkdGg6IDI4MHB4O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIG1heC13aWR0aDogNDgwcHg7XG4gIG1heC1oZWlnaHQ6IDk1JTtcblxuICAvKiBpbXByb3ZlIHNjcm9sbCBwZXJmcyAqL1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgQGluY2x1ZGUgaG92ZXJmbG93O1xuXG4gIC5mcmllbmRfYm94X3RpdGxlIHtcbiAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuICAgIH1cbiAgfVxuXG4gIC5jb250ZW50IHtcbiAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIGRpdiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcG9wdXAsIDEwJSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICAgIHBhZGRpbmc6IDNweCAwcHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xM3M7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIH1cblxuICAgICAgJi51c2VyLWxpbmsge1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgd29yZC1icmVhazogbm9ybWFsO1xuXG4gICAgICAgIC5saW5lOjpiZWZvcmUge1xuICAgICAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgICAgIGNvbnRlbnQ6ICfugJAnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYudHYge1xuICAgICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICB9XG5cbiAgICAgICYuZnJpZW5kLXN0dWR5IHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDJweCA1cHggMCA1cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaS5saW5lIHtcbiAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG4gIH1cblxuICAubm9ib2R5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmc6IDNweCA1cHg7XG5cbiAgICBzcGFuIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiA1cHg7XG4gICAgfVxuICB9XG5cbiAgYS5maW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1hcmdpbjogN3B4O1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG4gIC5ub2JvZHk6aG92ZXIgYS5maW5kIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwic2lnbmFsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDEuNWVtO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuc2lnbmFsID4gaSB7XG4gIHdpZHRoOiAyMCU7XG4gIG1hcmdpbi1sZWZ0OiAxcHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiA0MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IGMtZGltbWVyKCRjLWdvb2QpO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCgyKSB7XG4gIGhlaWdodDogNjAlO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCgzKSB7XG4gIGhlaWdodDogODAlO1xufVxuXG5zaWduYWwgPiBpOm50aC1jaGlsZCg0KSB7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuc2lnbmFsLnExID4gaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWJhZDtcbn1cblxuc2lnbmFsLnEyID4gaSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLXdhcm47XG59XG5cbnNpZ25hbCA+IGkub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtc2hhZGU7XG59XG4iLCIjcG93ZXJUaXAsXG4jbWluaUdhbWUge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzLWZvcmNlLCAlcG9wdXAtc2hhZG93O1xuXG4gIHdpZHRoOiAyMHJlbTtcbiAgbWluLWhlaWdodDogM2VtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1wb3B1cDtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiB6KCdwb3dlcnRpcCcpO1xuXG4gIC5taW5pLWdhbWVfX3BsYXllciB7XG4gICAgcGFkZGluZzogM3B4IDAuNWVtIDAuM2VtIDAuN2VtO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nOiAwLjNlbSAwLjVlbSAzcHggMC43ZW07XG4gICAgfVxuICB9XG59XG5cbi51cHQge1xuICAmX19pbmZvIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGhlaWdodDogODNweDtcbiAgICBib2R5Lm5vLXJhdGluZyAmIHtcbiAgICAgIGhlaWdodDogMzBweDtcbiAgICB9XG4gICAgcGFkZGluZzogMC40ZW0gMC41ZW0gMC4zZW0gMC41ZW07XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJl9fdG9wIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgLmxlZnQge1xuICAgICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG4gICAgICB9XG5cbiAgICAgICZfX2NvdW50cnkge1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41ZW07XG4gICAgICB9XG5cbiAgICAgIC51c2VyLWxpbmsge1xuICAgICAgICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAubGluZSB7XG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmX19jb3VudHJ5IHtcbiAgICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICAgICAgZm9udC1zaXplOiAwLjllbTtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19yYXRpbmdzIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgICAgbWFyZ2luLXRvcDogM3B4O1xuXG4gICAgICA+IHNwYW4ge1xuICAgICAgICBmbGV4OiAwIDAgMjUlO1xuICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgICAgcGFkZGluZzogMnB4IDNweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX193YXJuaW5nIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICB9XG5cbiAgJl9fc2NvcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX2FjdGlvbnMuYnRuLXJhY2sge1xuICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHN0cmV0Y2g7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICBhIHtcbiAgICAgIGZsZXg6IDAgMCAxOCU7XG5cbiAgICAgICYucmVsYXRpb24tYnV0dG9uIHtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fbW9kIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgJl9fbWFya3Mge1xuICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogMC4zZW0gMC41ZW0gMC4zZW0gMC41ZW07XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG59XG5cbiNtaW5pR2FtZSB7XG4gIG1pbi1oZWlnaHQ6IDI2MnB4O1xuXG4gIC5zcGlubmVyIHtcbiAgICBtYXJnaW46IDgycHggYXV0byAwIGF1dG87XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxufVxuIiwiLm1pbmktZ2FtZSB7XG4gIEBleHRlbmQgJW5vd3JhcC1oaWRkZW47XG5cbiAgZGlzcGxheTogYmxvY2s7XG5cbiAgJixcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gIH1cblxuICAmX19wbGF5ZXIge1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2Vlbi1ub3dyYXA7XG4gICAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG5cbiAgICBwYWRkaW5nOiAzcHggMnB4IDAgMnB4O1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBwYWRkaW5nOiAwIDJweCAycHggMnB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3VzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAubmFtZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gIC5yYXRpbmcge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgbWFyZ2luLWxlZnQ6IDFjaDtcbiAgfVxuXG4gICZfX2Nsb2NrIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBwYWRkaW5nLWxlZnQ6IDJjaDtcblxuICAgICYuY2xvY2stLXJ1biB7XG4gICAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICB9XG5cbiAgJl9fcmVzdWx0IHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW4tcmlnaHQ6IDFjaDtcbiAgfVxufVxuIiwiLmJ0bi1yYWNrIHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyOiAkYm9yZGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAuYnRuLXJhY2sge1xuICAgIC8qIGVtYmVkZGVkIHJhY2tzICovXG4gICAgYm9yZGVyOiBub25lO1xuICB9XG5cbiAgJl9fYnRuLFxuICBmb3JtIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXAsICVtZXRhbDtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyO1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuXG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICB9XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIEBleHRlbmQgJWJveC1yYWRpdXMtbGVmdDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgQGV4dGVuZCAlYm94LXJhZGl1cy1yaWdodDtcblxuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIGkge1xuICAgICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTFweDtcbiAgICB9XG4gIH1cblxuICAmX19idG4ge1xuICAgIHBhZGRpbmc6IDAgMC42ZW07XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBAZXh0ZW5kICVhY3RpdmU7XG5cbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxufVxuIiwiLyogY2lyY3VsYXIgbG9hZGVyICovXG4kbGVuMTogMzMuOTY7XG4kbGVuMjogNDIuNjtcbiRsZW4zOiAxMDQuMzE7XG4kdG90YWxfbGVuOiAkbGVuMSArICRsZW4yICsgJGxlbjM7XG5cbkBrZXlmcmFtZXMgbWFzazEge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6ICR0b3RhbF9sZW47XG4gIH1cbiAgMTAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0kdG90YWxfbGVuO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgbWFzazIge1xuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6ICR0b3RhbF9sZW4gKyAkbGVuMTtcbiAgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLSR0b3RhbF9sZW4gKyAkbGVuMTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG1hc2szIHtcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAkdG90YWxfbGVuICsgJGxlbjEgKyAkbGVuMjtcbiAgfVxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLSR0b3RhbF9sZW4gKyAkbGVuMSArICRsZW4yO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1jb2xvciB7XG4gIDAlLFxuICAxMDAlIHtcbiAgICBzdHJva2U6ICRjLXByaW1hcnk7XG4gIH1cbiAgMjUlIHtcbiAgICBzdHJva2U6ICRjLWVycm9yO1xuICB9XG4gIDUwJSB7XG4gICAgc3Ryb2tlOiAkYy1zZWNvbmRhcnk7XG4gIH1cbiAgNzUlIHtcbiAgICBzdHJva2U6ICRjLWJyYWc7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzcGlubmVyLWNvbG9yIHtcbiAgMCUsXG4gIDEwMCUge1xuICAgIHN0cm9rZTogIzQyYTVmNTtcbiAgfVxuICAyNSUge1xuICAgIHN0cm9rZTogI2Y0NDMzNjtcbiAgfVxuICA1MCUge1xuICAgIHN0cm9rZTogI2ZkZDgzNTtcbiAgfVxuICA3NSUge1xuICAgIHN0cm9rZTogIzRjYWY1MDtcbiAgfVxufVxuXG4uc3Bpbm5lciB7XG4gIHdpZHRoOiA3MHB4O1xuICBoZWlnaHQ6IDcwcHg7XG4gIG1hcmdpbjogYXV0bztcblxuICBwYXRoIHtcbiAgICBhbmltYXRpb246IG1hc2sxIDIuNzVzIGN1YmljLWJlemllcigwLjQ5LCAwLjY3LCAwLjQ1LCAwLjI5KSBpbmZpbml0ZTtcbiAgfVxuICBwYXRoOm50aC1jaGlsZCgyKSB7XG4gICAgYW5pbWF0aW9uLW5hbWU6IG1hc2syO1xuICB9XG4gIHBhdGg6bnRoLWNoaWxkKDMpIHtcbiAgICBhbmltYXRpb24tbmFtZTogbWFzazM7XG4gIH1cblxuICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIHBhdGgge1xuICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgZyB7XG4gICAgYW5pbWF0aW9uOiBzcGlubmVyLWNvbG9yIDExcyBzdGVwcygxKSBpbmZpbml0ZTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAkdG90YWxfbGVuICR0b3RhbF9sZW47XG4gIH1cblxuICAud2hpdGUgJiBwYXRoIHtcbiAgICBzdHJva2U6ICNmZmY7XG4gIH1cbn1cblxuLyogc21hbGwgaG9yaXpvbnRhbCBsb2FkZXIgKi9cbkBrZXlmcmFtZXMgZGRsb2FkZXIge1xuICAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0O1xuICB9XG59XG5cbi5kZGxvYWRlciB7XG4gIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgIGJhY2tncm91bmQ6IGltZy11cmwoJ2xvYWRlci9ibGFja3gxLnBuZycpIG5vLXJlcGVhdDtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZDogaW1nLXVybCgnbG9hZGVyL3doaXRleDEucG5nJykgbm8tcmVwZWF0O1xuICB9XG5cbiAgYW5pbWF0aW9uOiBkZGxvYWRlciAwLjVzIHN0ZXBzKDE1KSBpbmZpbml0ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMzJweDtcbiAgaGVpZ2h0OiA4cHg7XG59XG4iLCIkcmVjb24taGVpZ2h0OiAyLjVyZW07XG5cbkBrZXlmcmFtZXMgcmVjb25uZWN0ZWQge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgkcmVjb24taGVpZ2h0KTtcbiAgfVxufVxuXG4jcmVjb25uZWN0aW5nIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwLCAlcG9wdXAtc2hhZG93O1xuXG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgY29sb3I6ICRjLWJhZC1vdmVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAkcmVjb24taGVpZ2h0O1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7XG4gIHotaW5kZXg6IHooJ3JlY29ubmVjdGluZycpO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoJHJlY29uLWhlaWdodCk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBmb250LXNpemU6IDEuM2VtO1xuICB9XG5cbiAgLm9mZmxpbmUgJiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAub25saW5lLnJlY29ubmVjdGVkICYge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgYW5pbWF0aW9uOiByZWNvbm5lY3RlZCAyLjVzIGVhc2Utb3V0IDEuNXMgYmFja3dhcmRzO1xuICB9XG5cbiAgLm9ubGluZSAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugL0nO1xuICB9XG59XG4iLCIjYW5ub3VuY2Uge1xuICBAZXh0ZW5kICVmbGV4LWJldHdlZW4sICVwb3B1cC1zaGFkb3c7XG5cbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICBjb2xvcjogJGMtcHJpbWFyeS1vdmVyO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcGFkZGluZzogMC43cmVtIDFyZW07XG4gIHotaW5kZXg6IHooJ3RvdXItcmVtaW5kZXInKTtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4O1xuICB9XG5cbiAgYSB7XG4gICAgY29sb3I6ICRjLXByaW1hcnktb3ZlcjtcbiAgfVxuXG4gIHRpbWUge1xuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICB9XG5cbiAgLmFjdGlvbnMge1xuICAgIGEge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFubm91bmNlIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICB9XG59XG4iLCIuYXR0YWNrLXRyYWluaW5nIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxcmVtO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19oZWFkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2hlYWRlciBoMSB7XG4gIGNvbG9yOiB2YXIoLS1jLWJyYWcpO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2hlYWRlciBwIHtcbiAgY29sb3I6IHZhcigtLWMtZm9udC1kaW1tZXIpO1xuICBmb250LXNpemU6IDEuMXJlbTtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fZ2FtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogMnJlbTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZC13cmFwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogMS40ZW07XG4gIHBhZGRpbmctbGVmdDogMS40ZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIHtcbiAgd2lkdGg6IDQ4MHB4O1xuICBoZWlnaHQ6IDQ4MHB4O1xuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19maWxlcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiA0ODBweDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIHNwYW4ge1xuICAgIGZsZXg6IDE7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS4xNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiB2YXIoLS1jLWZvbnQtZGltKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxufVxuXG4uYXR0YWNrLXRyYWluaW5nX19yYW5rcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMS40ZW07XG4gIGhlaWdodDogNDgwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHNwYW4ge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS4xNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiB2YXIoLS1jLWZvbnQtZGltKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxufVxuXG4uYXR0YWNrLXRyYWluaW5nX19zaWRlYmFyIHtcbiAgbWluLXdpZHRoOiAyODBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxLjVyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3N0YXRzIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYy1iZy16ZWJyYSk7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19zdGF0cyA+IGRpdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXNpemU6IDEuMXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3N0YXRzID4gZGl2Omxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX190aW1lciAudGltZXIge1xuICBjb2xvcjogdmFyKC0tYy1icmFnKTtcbiAgZm9udC1zaXplOiAxLjNyZW07XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3RpbWVyIC50aW1lci53YXJuaW5nIHtcbiAgY29sb3I6IHZhcigtLWMtYmFkKTtcbiAgYW5pbWF0aW9uOiBwdWxzZSAxcyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfVxuICA1MCUgeyBvcGFjaXR5OiAwLjU7IH1cbn1cblxuLmF0dGFjay10cmFpbmluZ19fc2NvcmUgLnNjb3JlIHtcbiAgY29sb3I6IHZhcigtLWMtZ29vZCk7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3Njb3JlIC5zY29yZS5uZWdhdGl2ZSB7XG4gIGNvbG9yOiB2YXIoLS1jLWJhZCk7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2hpZ2gtc2NvcmUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgZm9udC1zaXplOiAxLjFyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gIC5oaWdoLXNjb3JlLXZhbHVlIHtcbiAgICBjb2xvcjogI2Y1YTYyMztcbiAgfVxuXG4gIC5oaWdoLXNjb3JlLWRhdGUge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGNvbG9yOiB2YXIoLS1jLWZvbnQtZGltKTtcbiAgfVxufVxuXG4uYXR0YWNrLXRyYWluaW5nX19wb3NpdGlvbi1jb21wbGV0ZSB7XG4gIG1hcmdpbi10b3A6IDAuNHJlbTtcbiAgcGFkZGluZzogMC4zcmVtIDAuNnJlbTtcbiAgYmFja2dyb3VuZDogIzJlY2M3MTtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbmltYXRpb246IGZhZGVJbk91dCAxcyBlYXNlIGZvcndhcmRzO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbk91dCB7XG4gIDAlIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOyB9XG4gIDE1JSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxuICA3NSUgeyBvcGFjaXR5OiAxOyB9XG4gIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG59XG5cbi5uZXctaGlnaC1zY29yZSB7XG4gIGNvbG9yOiAjZjVhNjIzICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMS4zcmVtICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19jb250cm9scyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC41cmVtO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jLWJnLXplYnJhMik7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYy1ib3JkZXIpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMgaDMge1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jLWZvbnQtY2xlYXIpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMgdWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmctbGVmdDogMS4ycmVtO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19pbnN0cnVjdGlvbnMgbGkge1xuICBtYXJnaW4tYm90dG9tOiAwLjNyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX3Jlc3VsdHMge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHZhcigtLWMtYmctemVicmEpO1xuICBwYWRkaW5nOiAycmVtO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWMtYm9yZGVyKTtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fcmVzdWx0cyBoMiB7XG4gIGNvbG9yOiB2YXIoLS1jLWJyYWcpO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4ucmVzdWx0cy1zdGF0cyB7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnJlc3VsdHMtc3RhdHMgcCB7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbn1cblxuLnJlc3VsdHMtc3RhdHMgc3BhbiB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogdmFyKC0tYy1nb29kKTtcbn1cblxuLyogUGllY2Ugc2VsZWN0aW9uIHN0YXRlcyAqL1xuLmF0dGFjay10cmFpbmluZ19fYm9hcmQgLnBpZWNlLnNlbGVjdGFibGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5waWVjZS5zZWxlY3RhYmxlOmhvdmVyIHtcbiAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMyk7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5waWVjZS5zZWxlY3RlZCB7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDhweCB2YXIoLS1jLWdvb2QpKTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZCAucGllY2UuaW5jb3JyZWN0IHtcbiAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgOHB4IHZhcigtLWMtYmFkKSk7XG4gIGFuaW1hdGlvbjogc2hha2UgMC41cyBlYXNlLWluLW91dDtcbn1cblxuLyogU3F1YXJlIHNlbGVjdGlvbiBmb3IgQXR0YWNrIFRyYWluaW5nICovXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZCBzcXVhcmUge1xuICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fYm9hcmQgc3F1YXJlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMCwgMC4yKSAhaW1wb3J0YW50O1xufVxuXG4uYXR0YWNrLXRyYWluaW5nX19ib2FyZCBzcXVhcmUuc2VsZWN0ZWQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDI1NSwgMCwgMC41KSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLmF0dGFjay10cmFpbmluZ19fYm9hcmQgc3F1YXJlLm1pc3NlZDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDAsIDAuNikgIWltcG9ydGFudDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHotaW5kZXg6IDI7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIHNxdWFyZS5pbmNvcnJlY3Q6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMC41KSAhaW1wb3J0YW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLyogQWx0ZXJuYXRpdmUgYXBwcm9hY2ggdXNpbmcgY29vcmRpbmF0ZS1iYXNlZCBzZWxlY3RvcnMgKi9cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5jZy13cmFwIHNxdWFyZS5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMjU1LCAwLCAwLjUpICFpbXBvcnRhbnQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5jZy13cmFwIHNxdWFyZS5taXNzZWQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAwLCAwLjYpICFpbXBvcnRhbnQ7XG59XG5cbi5hdHRhY2stdHJhaW5pbmdfX2JvYXJkIC5jZy13cmFwIHNxdWFyZS5pbmNvcnJlY3Qge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMC41KSAhaW1wb3J0YW50O1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH1cbiAgMjUlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOyB9XG4gIDc1JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpOyB9XG59XG5cbi8qIFJlc3BvbnNpdmUgZGVzaWduICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5hdHRhY2stdHJhaW5pbmdfX2dhbWUge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICBcbiAgLmF0dGFjay10cmFpbmluZ19fYm9hcmQge1xuICAgIHdpZHRoOiA0MDBweDtcbiAgICBoZWlnaHQ6IDQwMHB4O1xuICB9XG4gIFxuICAuYXR0YWNrLXRyYWluaW5nX19zaWRlYmFyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuYXR0YWNrLXRyYWluaW5nX19ib2FyZCB7XG4gICAgd2lkdGg6IDMyMHB4O1xuICAgIGhlaWdodDogMzIwcHg7XG4gIH1cbiAgXG4gIC5hdHRhY2stdHJhaW5pbmdfX3NpZGViYXIge1xuICAgIG1heC13aWR0aDogMzIwcHg7XG4gIH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBRUVBLFlBQVk7QUFrQlosNkRBQTZEO0FBYzdELG1CQUFtQjtBQU1uQixrQ0FBa0M7QUFFbEMsc0JBQXNCO0FBTXRCLG9DQUFvQztBQUVwQyxvQkFBb0I7QUFNcEIsaUNBQWlDO0FBRWpDLGdCQUFnQjtBQUloQiwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxnQkFBZ0I7QUFJaEIsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUQ1R2IsNkRB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Q0FBQztFQUNMLFFBQVEsQ0FBQSxRQUFDO0VBQ1QsUUFBUSxDQUFBLFFBQUM7RUFDVCxPQUFPLENBQUEsS0FBQztDQUNUOztBQWxCTCxBQUNFLE1BREksQ0FBQyxLQUFLLENBQ1YsUUFBUSxDQUFDO0VBTVAsZ0JBQWdCLEUzQ0xaLGdDQUE0QjtDMkNNakM7O0FBUkgsQUFjSSxNQWRFLENBQUMsS0FBSyxDQWNSLE1BQU0sQ0FBQztFQUNMLFFBQVEsQ0FBQSxRQUFDO0VBQ1QsUUFBUSxDQUFBLFFBQUM7RUFDVCxPQUFPLENBQUEsS0FBQztDQUNUOztBQWxCTCxBQUNFLE1BREksQ0FBQyxLQUFLLENBQ1YsUUFBUSxDQUFDO0VBTVAsZ0JBQWdCLEUzQ0xaLGdDQUE0QjtDMkNNakM7O0FBUkgsQUFjSSxNQWRFLENBQUMsS0FBSyxDQWNSLE1BQU0sQ0FBQztFQUNMLFFBQVEsQ0FBQSxRQUFDO0VBQ1QsUUFBUSxDQUFBLFFBQUM7RUFDVCxPQUFPLENBQUEsS0FBQztDQUNUOztBQWxCTCxBQUNFLE9BREssQ0FBQyxLQUFLLENBQ1gsUUFBUSxDQUFDO0VBTVAsZ0JBQWdCLEUzQ0xaLGlDQUE0QjtDMkNNakM7O0FBUkgsQUFjSSxPQWRHLENBQUMsS0FBSyxDQWNULE1BQU0sQ0FBQztFQUNMLFFBQVEsQ0FBQSxRQUFDO0VBQ1QsUUFBUSxDQUFBLFFBQUM7RUFDVCxPQUFPLENBQUEsS0FBQztDQUNUOztBQWxCTCxBQUNFLFFBRE0sQ0FBQyxLQUFLLENBQ1osUUFBUSxDQUFDO0VBTVAsZ0JBQWdCLEUzQ0xaLGtDQUE0QjtDMkNNakM7O0FBUkgsQUFjSSxRQWRJLENBQUMsS0FBSyxDQWNWLE1BQU0sQ0FBQztFQUNMLFFBQVEsQ0FBQSxRQUFDO0VBQ1QsUUFBUSxDQUFBLFFBQUM7RUFDVCxPQUFPLENBQUEsS0FBQztDQUNUOztBQWxCTCxBQUNFLE1BREksQ0FBQyxLQUFLLENBQ1YsUUFBUSxDQUFDO0VBTVAsZ0JBQWdCLEUzQ0xaLG9DQUE0QjtDMkNNakM7O0FBUkgsQUFjSSxNQWRFLENBQUMsS0FBSyxDQWNSLE1BQU0s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 */
