@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 CSS modules */
/* Widths */
/* Heights */
/* Orientations */
/* Capabilities */
/* Aliases */
/* Uniboard: keep the same page layout across pages */
/* when the width is appropriate for col1, but landscape prevents it */
.piece-letter u8t {
  font-family: 'Noto Sans', Sans-Serif;
}

u8t draw, .mchat__tab, .mchat__messages a:not(.user-link), .game__tournament .clock, .rclock .time, i5z {
  font-family: 'Roboto', Sans-Serif;
}

u8t {
  font-family: 'Noto Chess', 'Noto Sans';
}

u8t draw {
  margin-left: 1ch;
  font-weight: normal;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.chat__members, .rclock .tour-rank, .round__now-playing .now-playing {
  color: #999999;
}

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .rcontrols .rematch.fbt, #powerTip .forecast-info .title {
  background: linear-gradient(to bottom, #3c3934, #33312e 100%);
}

.cmn-toggle:hover:not(:disabled) + label::after {
  background: linear-gradient(to bottom, #44413b, #3b3935 100%);
  color: #cccccc;
}

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

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

.mchat__tab input {
  -webkit-appearance: none;
  background: #161512;
  border: 1px solid #3c3934;
  display: inline-block;
  padding: 0.5em;
}

.mchat__tab input:checked {
  background: #3b5c16;
  border-color: #4f7a1d;
}

.cmn-toggle:focus:not(:disabled) + label, .cmn-toggle:hover:not(:disabled) + label {
  box-shadow: 0 0 12px #999999;
}

.context-streamer, .mchat__tab {
  white-space: nowrap;
  overflow: hidden;
}

.mchat__tab span, .game__meta .user-tv {
  white-space: nowrap;
}

.mchat__messages {
  overflow-wrap: break-word;
  word-break: break-word;
}

.mchat__tab span, .game__meta .user-tv, .crosstable__users, .ruser a {
  overflow: hidden;
  text-overflow: ellipsis;
}

.cmn-toggle + label::before {
  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;
}

.cmn-toggle, rm6 {
  touch-action: manipulation;
}

.expiration, .rclock .tour-rank,
.rclock .moretime,
.rclock .berserked, .rcontrols .suggestion, .round__now-playing .switcher {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.context-streamer, .chat__members__number, .game__meta__infos, .ruser .line, .material, .rcontrols .pending, .rcontrols .negotiation, .rcontrols .rematch-decline, .keyboard-move {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.round__now-playing h3 {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .mchat, .mchat__content, .round__side, rm6, .rcontrols .follow-up {
  display: flex;
  flex-flow: column;
}

.mchat__tab input, .crosstable, .mchat, .game__meta {
  border-radius: 3px;
}

.crosstable, .mchat, .game__meta {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.crosstable .sep {
  border-radius: 3px 0 0 3px;
}

.round__app__table, .rcontrols .rematch-decline {
  border-radius: 0 3px 3px 0;
}

.mchat__tab, .rclock-top .time {
  border-radius: 3px 3px 0 0;
}

.context-streamer, .rclock-bottom .time {
  border-radius: 0 0 3px 3px;
}

.crosstable, .mchat, .game__meta, .context-streamer, .round__app__table, .rclock .time, rm6 .buttons, .rcontrols .rematch-decline {
  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);
}

coords {
  /* handle hidden coords */
  /* handle inner coords */
  position: absolute;
  display: flex;
  pointer-events: none;
  user-select: none;
  color: #fff;
  text-shadow: 0 1px 2px #000;
  font-weight: bold;
  /* negate inner coords colors */
}

.coords-no coords {
  display: none;
}

coords {
  font-size: 8px;
}

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

@media (min-width: 1200px) {
  coords {
    font-size: 12px;
  }
}

coords.ranks {
  flex-flow: column-reverse;
  top: 1px;
  right: 0;
  height: 100%;
  width: 0.8em;
}

coords.ranks.black {
  flex-flow: column;
}

coords.files {
  bottom: 0px;
  left: 0;
  text-align: left;
  flex-flow: row;
  width: 100%;
  height: 1.4em;
}

coords.files.black {
  flex-flow: row-reverse;
}

coords.files coord {
  padding-left: 4px;
}

coords coord {
  flex: 1 1 auto;
}

coords .is3d .cg-wrap coords coord {
  color: #fff !important;
  text-shadow: 0 1px 2px #000 !important;
}

coords .is3d .cg-wrap coords.files {
  bottom: calc(1px - 2.5%);
}

coords .is3d .cg-wrap coords.files coord {
  padding-left: 3px;
}

coords {
  text-shadow: var(--cg-cs, 0 1px 2px #000);
}

.orientation-white .files coord:nth-child(2n + 1),
.orientation-white .ranks coord:nth-child(2n),
.orientation-black .files coord:nth-child(2n),
.orientation-black .ranks coord:nth-child(2n + 1) {
  color: var(--cg-ccw, #fff);
}

.orientation-white .files coord:nth-child(2n),
.orientation-white .ranks coord:nth-child(2n + 1),
.orientation-black .files coord:nth-child(2n + 1),
.orientation-black .ranks coord:nth-child(2n) {
  color: var(--cg-ccb, #fff);
}

/* handle outer coords */
@media (min-width: 800px), (orientation: landscape) {
  .coords-out coords {
    text-shadow: none;
  }
  .coords-out coords.ranks {
    right: -15px;
    top: 0;
    width: 12px;
  }
  .coords-out coords.ranks coord {
    transform: translateY(42%);
  }
  .coords-out coords.files {
    bottom: -15px;
    left: 0;
    text-align: center;
  }
  .coords-out coords.ranks coord,
  .coords-out .is2d coords.files coord {
    color: #999999 !important;
  }
}

body {
  --board-scale: 1;
}

@media (min-width: 800px) and (min-height: 500px) {
  body {
    --board-scale: calc((var(--zoom) / 100) * 0.7 + 0.3);
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  body {
    --col1: 1;
  }
  .main-board cg-board {
    border-radius: 0;
  }
}

body.resizing {
  user-select: none;
}

cg-resize {
  display: none;
}

@media (min-width: 800px) {
  cg-resize {
    display: block;
    position: absolute;
    right: -9px;
    bottom: -9px;
    width: 22px;
    height: 22px;
    cursor: nwse-resize;
    z-index: 10;
  }
  cg-resize::before, cg-resize::after {
    background: #000;
    content: '';
    position: absolute;
    width: 12px;
    height: 1px;
  }
  cg-resize::before {
    width: 5px;
    transform: translate(7px, 8px) rotate(-45deg);
  }
  cg-resize::after {
    transform: translate(1px, 6px) rotate(-45deg);
  }
  cg-resize:hover {
    border-radius: 50%;
    background: rgba(214, 79, 0, 0.5);
  }
  .resizing cg-resize {
    border-radius: 50%;
    background: rgba(98, 153, 36, 0.5);
  }
}

.color-icon.white::before {
  content: '';
}

.color-icon.black::before {
  content: '';
}

.color-icon.random::before {
  content: '';
}

.crosstable__users {
  flex: 1 1 auto;
}

.crosstable {
  width: 100%;
  line-height: 1.9em;
  display: flex;
  flex-wrap: wrap;
  /* ─── Tab bar (full width first row, rest unwrapped on second row) ─── */
  /* ─── Filtered view: hide non-matching povs ─── */
}

.crosstable fill,
.crosstable povs {
  background: #262421;
  flex: 1 1 auto;
}

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup {
  text-align: center;
}

.crosstable__tabs {
  flex: 0 0 100%;
  display: flex;
  background: #262421;
  border-bottom: 1px solid #404040;
}

.crosstable__tab {
  flex: 1 1 50%;
  text-align: center;
  padding: 0.2em 0.5em;
  cursor: pointer;
  font-size: 0.85em;
  color: #999999;
  transition: background 0.15s, color 0.15s;
}

.crosstable__tab:hover {
  background: #282f35;
}

.crosstable__tab.active {
  background: #3692e7;
  color: #fff;
  font-weight: bold;
}

.crosstable--filtered povs:not(.matching) {
  display: none !important;
}

.crosstable__users {
  max-width: 40vw;
  text-align: left;
}

.crosstable__users a {
  padding-left: 2vmin;
}

.crosstable__score {
  flex: 0 0 auto;
  font-weight: bold;
}

.crosstable__score span {
  padding: 0 2vmin;
}

.crosstable__matchup {
  flex: 1 1 auto;
  font-weight: bold;
  background: #293a49;
}

.crosstable povs a {
  color: #999999;
  flex: 0 0 50%;
}

.crosstable povs:hover a {
  opacity: 1 !important;
}

.crosstable povs a.loss {
  opacity: 0.2;
}

.crosstable povs.current a {
  background: #a1420a;
  color: #fff;
  opacity: 1 !important;
}

.crosstable povs.new {
  border: #404040;
}

.crosstable povs a.loss {
  opacity: 0.2;
}

@media (max-width: 649px) {
  .crosstable povs {
    display: none;
  }
  .crosstable povs:nth-last-child(-n + 12) {
    display: flex;
  }
}

.crosstable .sep {
  border-left: 1px solid #404040;
  margin-left: 0.3em;
}

.crosstable .win {
  font-weight: bold;
  color: #629924;
}

.crosstable .loss {
  color: #cc3333;
}

.crosstable .unavailable {
  margin-top: 40px;
  opacity: 0.7;
}

.fbt {
  text-transform: uppercase;
  line-height: 1.5;
  transition: all 150ms;
}

@media (hover: hover) {
  .fbt:hover:not(.disabled):not([disabled]) {
    background: #537c23;
    color: #fff;
  }
}

.fbt.active {
  background: #629924 !important;
  color: #fff;
}

.fbt.disabled, .fbt[disabled] {
  opacity: 0.5;
  cursor: default;
}

@keyframes glowing {
  42% {
    background: none;
  }
  50% {
    background: #293a49;
  }
  58% {
    background: none;
  }
}

.glowing {
  animation: glowing 2s ease-in-out infinite;
}

@keyframes bar-glider-anim {
  0% {
    transform: translateX(-1300px);
  }
  100% {
    transform: translateX(2100px);
  }
}

.bar-glider {
  position: relative;
  overflow: hidden;
}

.bar-glider::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 70px;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.3));
  animation: bar-glider-anim 3s linear infinite;
}

.now-playing {
  display: grid;
  --np-min-width: 200px;
  grid-template-columns: repeat(auto-fill, minmax(var(--np-min-width), 1fr));
}

@media (max-width: 499px) {
  .now-playing {
    --np-min-width: 50%;
  }
}

.now-playing > a {
  color: #bababa;
  padding: 0.3em;
}

.now-playing .indicator {
  color: #d64f00;
  margin-top: -3px;
  display: block;
}

.now-playing cg-board {
  box-shadow: none;
}

.context-streamers {
  max-height: 20vh;
  overflow-y: auto;
}

.context-streamer {
  height: 2.2em;
  color: #fff !important;
  background: #44641d;
  transition: all 150ms;
}

.context-streamer::before {
  font-size: 1.3em;
  margin-left: 0.4em;
}

.context-streamer:hover {
  background: #537e20;
}

#zentog {
  position: absolute;
  padding: 0.5em 1em;
  opacity: 0.5;
  z-index: 110;
  display: none;
  border-bottom-right-radius: 3px;
}

body.playing.zen #zentog {
  display: block;
}

#zentog:hover {
  opacity: 1;
}

.cmn-toggle {
  position: absolute;
  margin-left: -99999px;
}

.cmn-toggle + label {
  display: block;
  position: relative;
  cursor: pointer;
  outline: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  padding: 1px;
  width: 40px;
  height: 24px;
  border: 1px solid #404040;
  border-radius: 24px;
}

.cmn-toggle + label::before, .cmn-toggle + label::after {
  display: block;
  position: absolute;
  content: '';
  width: 22px;
  height: 22px;
  bottom: 0;
  left: 0;
}

.cmn-toggle + label::before {
  font-size: 1em;
  z-index: 1;
  text-align: center;
  line-height: 22px;
}

.cmn-toggle + label::after {
  border-radius: 100%;
  box-shadow: 0 1px 2.5px rgba(0, 0, 0, 0.3);
}

.cmn-toggle:not(:checked) + label {
  background-color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label {
  background-color: #6b6b6b;
}

.cmn-toggle:checked + label {
  background-color: #629924;
}

.cmn-toggle:disabled + label {
  opacity: 60%;
  cursor: not-allowed !important;
}

.cmn-toggle:hover:not(:disabled) + label {
  transition: background 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::before {
  transition: margin 150ms, color 150ms;
}

.cmn-toggle:hover:not(:disabled) + label::after {
  transition: margin 150ms;
}

.cmn-toggle:not(:checked) + label::before {
  content: '';
  color: #cc3333;
}

.cmn-toggle--subtle:not(:checked) + label::before {
  color: #6b6b6b;
}

.cmn-toggle:checked + label::before, .cmn-toggle:checked + label::after {
  margin-left: 16px;
}

.cmn-toggle:checked + label::before {
  content: '';
  color: #629924;
}

.variant-racingKings .cg-wrap.cg-wrap cg-container::before {
  background: rgba(230, 230, 230, 0.2);
  width: 100%;
  height: 12.5%;
  content: '';
  position: absolute;
  left: 0;
  z-index: 1;
  pointer-events: none;
}

.variant-racingKings .cg-wrap.orientation-white cg-container::before {
  top: 0;
}

.variant-racingKings .cg-wrap.orientation-black cg-container::before {
  bottom: 0;
}

.variant-kingOfTheHill cg-container::before {
  width: 25%;
  height: 25%;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.7);
  background: rgba(230, 230, 230, 0.2);
  content: '';
  position: absolute;
  top: 37.5%;
  left: 37.5%;
  z-index: 1;
  pointer-events: none;
}

#promotion-choice {
  background: rgba(22, 21, 18, 0.7);
  z-index: 205;
  position: absolute;
  width: var(--cg-width, 100%);
  height: var(--cg-height, 100%);
  right: 0;
}

#promotion-choice square {
  cursor: pointer;
  border-radius: 50%;
  background-color: #b0b0b0;
  box-shadow: inset 0 0 25px 3px #808080;
  transition: all 150ms;
}

#promotion-choice piece {
  pointer-events: auto;
  opacity: 1;
  /* cancels blindfold */
}

.is2d #promotion-choice piece {
  width: 100%;
  height: 100%;
  transition: all 150ms;
  transform: scale(0.8);
}

#promotion-choice square:hover {
  box-shadow: inset 0 0 48px 8px #d64f00;
  border-radius: 0%;
}

.is2d #promotion-choice square:hover piece {
  transform: none;
}

.blindfold.main-board piece,
.blindfold .now-playing piece {
  opacity: 0;
}

.blindfold.main-board .check {
  background-image: none;
}

body::-webkit-scrollbar,
body::-webkit-scrollbar-corner {
  width: 0.5rem;
  background: #262421;
}

body::-webkit-scrollbar-thumb {
  background: #4d4d4d;
}

body::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:active {
  background: #6b6b6b;
}

.mchat__tabs {
  flex: 0 0 auto;
  display: flex;
}

.mchat__tab {
  flex: 1 1 auto;
  text-align: center;
  padding: 0.4em 10px;
  cursor: pointer;
  color: #999999;
  transition: all 150ms;
}

.mchat__tab:hover {
  background: #412b1c;
}

.mchat__tab-active {
  color: #bababa;
  background: #262421 !important;
}

.mchat__tab input {
  cursor: pointer;
  display: none;
}

.mchat__tab-active input {
  display: block;
}

.mchat__tab:last-child {
  border-right: none;
}

.mchat-optional .mchat__tab.discussion {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.chat__members {
  font-size: 0.9em;
  height: 100%;
  overflow: hidden;
}

.chat__members__inner {
  display: flex;
  align-items: flex-start;
}

.chat__members__number {
  margin-right: 1ch;
}

.chat__members__number::before {
  font-size: 1em;
  color: #999999;
  margin-right: 0.2ch;
}

.mchat__messages {
  flex: 1 1 auto;
  max-height: 50vh;
  overflow-y: auto;
  overflow-x: hidden;
  cursor: initial;
  font-size: 0.9em;
}

@media (min-width: 1260px) {
  .mchat__messages {
    max-height: none;
  }
}

.mchat__messages li {
  position: relative;
  padding: 0.5em 5px 0.5em 10px;
  line-height: 1.2em;
  overflow-y: hidden;
  user-select: text;
}

.mchat__messages li.me {
  border-left: 3px solid #4f7a1d;
  padding-left: 7px;
}

.mchat__messages li.host {
  background-color: rgba(79, 122, 29, 0.4);
}

.mchat__messages .deleted {
  opacity: 0.5;
}

.mchat__messages .system {
  display: block;
  opacity: 0.8;
  font-style: italic;
  font-size: 0.9em;
  margin-left: 0;
  text-align: center;
}

.mchat__messages .announcement {
  display: block;
  font-size: 1.1em;
  margin-left: 0;
  text-align: center;
  font-weight: bold;
}

.mchat__messages .color,
.mchat__messages .user-link {
  font-weight: bold;
  padding: 0;
  color: #999999;
  letter-spacing: -1px;
  padding-right: 0.4em;
  max-width: 110px;
  text-overflow: ellipsis;
  display: inline-block;
  vertical-align: bottom;
}

.mchat__messages line.patron {
  font-size: 1.1em;
  width: 1.2em;
  text-align: left;
  color: #bf811d;
}

.mchat__messages .utitle {
  margin-right: 3px;
}

.mchat__messages i {
  display: none;
  position: absolute;
  top: 5px;
  right: 0;
  cursor: pointer;
  margin-right: 3px;
  padding: 1px 5px;
  opacity: 0.7;
  color: #d64f00;
}

.mchat__messages i:hover {
  opacity: 1;
}

.mchat__messages li:hover i {
  display: block;
  text-shadow: 0 0 2px #262421, 0 0 5px #262421, 0 0 10px #262421;
}

.mchat__messages li.me i {
  display: none !important;
}

.mchat__say {
  flex: 0 0 auto;
  border: 0;
  border-top: 1px solid #404040;
  border-radius: 0;
  padding: 3px 20px 3px 4px;
}

@media (hover: none) {
  .mchat__say {
    font-size: 16px;
  }
}

.mchat__say.whisper {
  color: #629924;
  font-weight: bold;
  font-style: italic;
}

@keyframes palantir-glowing {
  40% {
    background: none;
  }
  50% {
    background: #384722;
  }
  60% {
    background: #2b455d;
  }
  70% {
    background: none;
  }
}

.palantir {
  flex: 0 1 auto;
  animation: palantir-glowing 1.5s ease-in-out infinite;
  border-radius: 0 3px 0 0;
}

.palantir-slot {
  animation: none;
  opacity: 0.6;
}

.palantir-slot:hover {
  opacity: 1;
}

.palantir-off {
  animation: none;
}

.palantir-on {
  background: #629924;
  color: #fff;
  animation: none;
}

.palantir-on:hover {
  background: #cc3333 !important;
  color: #fff !important;
}

.palantir::after {
  top: 1px;
  left: 0;
  right: auto;
  background: none;
  box-shadow: none;
}

.mchat {
  grid-area: chat;
  justify-content: stretch;
  min-height: 15em;
}

.mchat__content {
  background: #262421;
  flex: 1 1 auto;
  overflow: hidden;
}

.mchat__content.note textarea {
  font-size: 0.9em;
  flex-grow: 1;
  border: none;
  background-color: transparent;
  line-height: 1.7em;
  outline: none;
  resize: none;
}

@media (hover: none) {
  .mchat__content.note textarea {
    font-size: 16px;
  }
}

.mchat__presets {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  flex-flow: row nowrap;
  line-height: 1.4em;
  user-select: none;
}

.mchat__presets span {
  flex: 1 1 auto;
  text-align: center;
  display: block;
  opacity: 0.8;
  border: 1px solid #404040;
  border-width: 1px 1px 0 0;
  font-size: 0.9em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 150ms;
}

.mchat__presets span.disabled {
  background: #412b1c;
  color: transparent;
  cursor: default;
}

.mchat__presets span:not(.disabled):hover {
  background: #d64f00;
  color: #fff;
  opacity: 1;
}

#main-wrap {
  --main-max-width: auto;
}

@media (max-width: 799px) and (orientation: portrait) {
  #main-wrap {
    --main-max-width: calc(
      100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 100px - 3.5em
    );
  }
}

.round {
  grid-area: main;
  display: grid;
  grid-gap: 2vmin;
  grid-template-areas: 'app' 'under' 'side' 'uchat';
}

.round__app {
  grid-area: app;
}

.round__side {
  grid-area: side;
}

.round__underboard {
  grid-area: under;
}

.round__pgn {
  margin-top: 1em;
  padding: 0 0.5em;
}

.round__pgn strong {
  display: block;
  margin-bottom: 0.3em;
  font-size: 0.9em;
  text-transform: uppercase;
  opacity: 0.7;
}

.round__pgn textarea {
  width: 100%;
  height: 6em;
  font-family: monospace;
  font-size: 0.82em;
  resize: vertical;
}

.round__underchat {
  grid-area: uchat;
}

.round__puzzle-matches {
  overflow-x: auto;
  overflow-y: auto;
}

.round__puzzle-matches__list {
  display: flex;
}

.round__puzzle-match-container {
  margin-right: 10px;
}

.round__puzzle-match {
  display: block;
  width: 200px;
  height: 200px;
}

.round__puzzle-match__board--success::before {
  position: absolute;
  display: inline-block;
  content: " ";
  background: url("/assets/images/CoinFlip.gif") no-repeat 0 0;
  background-size: 30px 30px;
  width: 30px;
  height: 30px;
  right: -2px;
  top: -33px;
  z-index: 999;
}

@media (min-width: 800px), (orientation: landscape) {
  .round {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto fit-content(0) fit-content(0);
    grid-template-areas: 'app   app' 'under side' 'under uchat';
  }
  .round__app {
    justify-self: center;
  }
}

@media (min-width: 1260px) {
  .round {
    grid-template-columns: minmax(230px, 20vw) minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-rows: fit-content(0);
    grid-template-areas: 'side  app   app' 'uchat under .';
  }
  .round .crosstable__users {
    flex: 7 1 auto;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .round .crosstable {
    display: none;
  }
}

.rcontrols {
  grid-area: controls;
}

.material-top {
  grid-area: mat-top;
}

.material-bottom {
  grid-area: mat-bot;
}

.expiration-top {
  grid-area: expi-top;
}

.expiration-bottom {
  grid-area: expi-bot;
}

.ruser-top {
  grid-area: user-top;
}

.ruser-bottom {
  grid-area: user-bot;
}

.rclock-top {
  grid-area: clock-top;
}

.rclock-bottom {
  grid-area: clock-bot;
}

.mascot-bottom {
  position: absolute;
  top: 12px;
  z-index: 50;
  align-self: flex-start;
}

rm6,
.col1-rmoves-preload {
  grid-area: moves;
}

.keyboard-move {
  grid-area: kb-move;
}

.round__app {
  display: grid;
}

@media (max-width: 799px) and (orientation: portrait) {
  .round__app {
    grid-template-rows: auto auto 30px 20px auto auto 20px 30px auto;
    grid-template-areas: 'moves' 'pocket-top' 'user-top' 'mat-top' 'board' 'expi-bot' 'mat-bot' 'masc-bot' 'user-bot' 'pocket-bot' 'kb-move' 'controls';
  }
  .round__app .rclock-top {
    grid-area: 3 / 1 / 5 / 2;
  }
  .round__app .rclock-bottom {
    grid-area: 7 / 1 / 9 / 2;
  }
  .round__app cg-board {
    box-shadow: none;
  }
  .round__app .expiration-top {
    display: none;
  }
  .round__app__table {
    display: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .round__app {
    grid-template-columns: minmax(calc(70vmin * var(--board-scale)), calc(100vh * var(--board-scale) - calc(var(--site-header-height) + var(--site-header-margin)) - 3rem)) minmax(240px, 400px);
    grid-template-areas: 'board .' 'board mat-top' 'board clock-top' 'board expi-top' 'board user-top' 'board moves' 'board controls' 'board user-bot' 'board expi-bot' 'board clock-bot' 'board pgr-counter' 'board pgr-howto' 'board pgr-arrow-tog' 'board mat-bot' 'board masc-bot' 'board .' 'kb-move .';
    grid-column-gap: 2vmin;
  }
  .round__app__table {
    grid-area: 4 / 2 / 10 / 3;
  }
  .round__app .expiration-top {
    display: flex;
  }
  .round__app rm6 {
    margin-bottom: 1px;
  }
  .round__app l4x {
    display: none;
    background: none;
  }
  .round__app .keyboard-move {
    margin-top: 2vmin;
  }
}

@media (min-width: 800px) and (min-height: 500px), (orientation: landscape) and (min-height: 500px) {
  .round__app l4x {
    display: flex;
  }
}

@media (max-width: 799px) and (orientation: landscape) {
  .round__app {
    grid-template-columns: minmax(calc(55vmin), calc(100vh - calc(var(--site-header-height) + var(--site-header-margin)) - 2vmin)) minmax(200px, 240px);
    grid-column-gap: 3vmin;
  }
}

.round__app__board {
  grid-area: board;
}

.mascot {
  width: 400px;
  height: 260px;
  position: relative;
  overflow: hidden;
  pointer-events: auto;
}

/* wrapper that moves left/right */
.mascot-sprite {
  position: absolute;
  left: 0;
  top: 0;
  will-change: transform;
  /* ✅ pacing by default (moves + sets facing at bounds) */
  animation: mascotPace 6s linear infinite;
}

/* video flips based on CSS var set by mascotPace
   (JS tag-chase can override with inline transform; clear inline on chase end) */
.mascot-video {
  display: block;
  width: 280px;
  height: auto;
  will-change: transform;
  transform: scaleX(var(--mascot-flip, 1));
}

/* during tag: pause CSS pacing so JS can translate wrapper */
.mascot--paused .mascot-sprite {
  animation-play-state: paused !important;
}

@keyframes mascotPace {
  /* Move right, facing right */
  0% {
    transform: translateX(0);
    --mascot-flip: 1;
  }
  49% {
    transform: translateX(calc(400px - 280px));
    --mascot-flip: 1;
  }
  /* Flip at the right edge */
  50% {
    transform: translateX(calc(400px - 280px));
    --mascot-flip: -1;
  }
  /* Move left, facing left */
  99% {
    transform: translateX(0);
    --mascot-flip: -1;
  }
  /* Flip back at the left edge */
  100% {
    transform: translateX(0);
    --mascot-flip: 1;
  }
}

.mascot-bubble {
  position: absolute;
  left: 50%;
  top: 0px;
  transform: translateX(-50%);
  display: none;
  padding: 6px 10px;
  border-radius: 12px;
  font-size: 14px;
  line-height: 1;
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(0, 0, 0, 0.15);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  white-space: nowrap;
  pointer-events: none;
  z-index: 2;
}

.mascot-bubble::after {
  content: '';
  position: absolute;
  left: 50%;
  bottom: -6px;
  transform: translateX(-50%) rotate(45deg);
  width: 10px;
  height: 10px;
  background: rgba(255, 255, 255, 0.95);
  border-left: 1px solid rgba(0, 0, 0, 0.15);
  border-bottom: 1px solid rgba(0, 0, 0, 0.15);
}

body.playing.zen .round__underboard, body.playing.zen .round__underchat, body.playing.zen #friend_box,
body.playing.zen .site-title-nav,
body.playing.zen .site-buttons, body.playing.zen .round__side, body.playing.zen .mchat, body.playing.zen .ruser, body.playing.zen .rclock .tour-rank, .rclock body.playing.zen .tour-rank,
body.playing.zen .rclock .moretime, .rclock body.playing.zen .moretime,
body.playing.zen .rclock .berserked, .rclock body.playing.zen .berserked, body.playing.zen l4x > :not(.result-wrap) {
  display: none;
}

body.playing.zen .ricons {
  margin: 0.5em 0 1em 0;
}

body.playing.zen #top {
  justify-content: center;
}

.round__side .game__meta {
  flex: 0 0 auto;
}

.round__side .game__meta__players .team {
  margin-left: 1.7em;
}

.mchat {
  flex: 1 1 0;
  margin-top: 2vmin;
}

/* shared with analysis */
.game__meta {
  background: #262421;
  padding: 1.4vmin 2vmin;
}

.game__meta section:not(:last-child) {
  border-bottom: 1px solid #404040;
  margin-bottom: 1.33333vmin;
  padding-bottom: 1.33333vmin;
}

.game__meta__infos {
  position: relative;
  /* for bookmark */
}

.game__meta__infos::before {
  font-size: 3rem;
  margin-right: 4%;
}

.game__meta__infos p {
  margin: 0;
}

.game__meta__infos time {
  opacity: 1;
}

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

.game__meta__players {
  margin-top: 0.3rem;
  font-size: 90%;
}

.game__meta .bookmark {
  position: absolute;
  right: 0;
  z-index: 2;
  color: #999999;
}

.game__meta .bookmark ::before {
  font-size: 1.3em;
}

.game__meta .bookmark:not(.bookmarked) .on,
.game__meta .bookmark.bookmarked .off {
  display: none;
}

.game__meta .user-tv {
  font-size: 1.2em;
}

.game__tournament .clock {
  font-size: 2em;
  text-align: center;
  margin-top: 0.2em;
}

@media (hover: hover) {
  .game__meta .bookmark {
    display: none;
  }
  .game__meta:hover .bookmark {
    display: block;
  }
}

.round__app__table {
  background: #262421;
}

.round__app .draw-yes span {
  font-size: 1.2em;
}

.expiration {
  font-size: 0.9rem;
  justify-content: center;
  line-height: 2;
  background: #629924;
  color: #fff;
}

.expiration-top {
  border-top-right-radius: 3px;
}

.expiration-bottom {
  border-bottom-right-radius: 3px;
}

.expiration.emerg {
  background: #cc3333;
}

.expiration strong {
  font-size: 1rem;
  margin-right: 0.3em;
}

.ruser {
  display: flex;
  justify-content: left;
  font-size: 1.2em;
  padding: 0 0.3em;
}

.ruser:hover {
  color: #bababa;
}

.ruser a {
  color: #bababa;
}

.ruser.long a {
  letter-spacing: -0.5px;
}

.ruser rating {
  flex: 0 0 auto;
  margin: 0 0.25em 0 0.3em;
  color: #999999;
  letter-spacing: -0.5px;
}

.ruser .line {
  justify-content: center;
}

@keyframes connecting {
  0% {
    opacity: 0.1;
  }
  50% {
    opacity: 0.3;
  }
  100% {
    opacity: 0.1;
  }
}

.ruser.connecting .line {
  animation: connecting 0.9s ease-in-out infinite;
}

.ruser .rp {
  margin-right: 0.2em;
}

@media (min-width: 800px), (orientation: landscape) {
  .ruser {
    padding: 0.5em 0.5em 0.5em 0.3em;
    line-height: inherit;
  }
  .ruser a {
    flex: 1 1 auto;
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  .ruser-top {
    align-self: flex-end;
  }
  .ruser-bottom {
    align-self: flex-start;
  }
}

.ruser .premove-toggle {
  flex: 0 0 auto;
  font-size: 0.65em;
  font-weight: bold;
  padding: 0.15em 0.4em;
  border-radius: 3px;
  cursor: pointer;
  user-select: none;
  align-self: center;
  margin: 0 0.2em;
  transition: background 0.15s, color 0.15s;
}

.ruser .premove-toggle.premove-on {
  background: #4caf50;
  color: #fff;
}

.ruser .premove-toggle.premove-off {
  background: #f44336;
  color: #fff;
}

.rclock {
  position: relative;
  display: flex;
  justify-content: flex-end;
  user-select: none;
  /* overflow: hidden; is not possible because of clock bars and shadows */
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock {
    /* that weird shit is required so the clock goes above the player since they share the same grid cell */
    justify-self: flex-end;
    z-index: 1;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock {
    justify-content: space-between;
  }
  .rclock-bottom {
    /* over the table shadow */
    z-index: 0;
  }
}

.rclock-turn {
  align-self: center;
  line-height: 50px;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock-turn__text {
    background: #262421;
    padding: 0 2vmin;
    font-weight: bold;
    white-space: nowrap;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock-turn {
    height: 2.2em;
    line-height: 2.2em;
  }
}

.rclock .bar {
  display: none;
}

.rclock .bar.berserk {
  background: #cc3333;
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .bar {
    display: block;
    position: absolute;
    width: 100%;
    height: 4px;
    background: #629924;
    transform-origin: left;
  }
  .with-expiration .rclock .bar {
    display: none;
  }
  .rclock-top .bar {
    bottom: -4px;
  }
  .rclock-bottom .bar {
    top: -4px;
  }
}

.rclock .time {
  background: #262421;
  min-width: 3em;
  font-size: 2.8em;
  line-height: 50px;
  font-weight: bold;
  padding: 0 2vmin;
  white-space: nowrap;
  /* ensure updates don't redraw other parts of the document */
  will-change: transform;
  z-index: -1;
  display: flex;
}

.rclock .time.hour {
  font-size: 2.3em;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock .time {
    border-radius: 0;
    box-shadow: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .time {
    align-items: flex-end;
    line-height: 1.2em;
  }
}

@media (min-width: 500px) and (min-height: 600px) {
  .rclock .time {
    font-size: 3.6em;
    letter-spacing: 0.12em;
  }
  .rclock .time.hour {
    font-size: 2.9em;
    letter-spacing: 0.1em;
  }
}

.rclock-correspondence .time {
  font-size: 1.6em;
  letter-spacing: inherit;
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock-correspondence .time {
    line-height: 1.5em;
  }
}

@media (min-width: 500px) {
  .rclock-correspondence .time {
    font-size: 1.9em;
  }
}

.rclock tenths {
  font-size: 70%;
  margin-bottom: -0.18em;
}

.rclock huns {
  font-size: 80%;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rclock huns {
    display: none;
    /* since clock is right-aligned, huns shift it left on every move */
  }
}

.rclock sep {
  opacity: 0.5;
  font-size: 0.8em;
}

.rclock sep.low {
  opacity: 0.15;
}

.rclock.running .time {
  background: #384722;
  color: #e3e3e3;
}

.rclock.emerg .time,
.rclock.outoftime .time {
  background-color: #502826;
}

.rclock.emerg.running .time {
  background-color: #792c2a;
  color: #e3e3e3;
}

.rclock .go-berserk {
  font-size: 2.2em;
  padding: 0 0.3em;
}

.rclock .go-berserk:hover {
  color: #d64f00 !important;
  background: none !important;
}

.rclock .tour-rank,
.rclock .moretime,
.rclock .berserked {
  display: none;
}

@media (min-width: 500px) {
  .rclock .tour-rank,
  .rclock .moretime,
  .rclock .berserked {
    order: -1;
    display: flex;
    flex: 0 1 auto;
    font-size: 1.7em;
    padding: 0 0.3em;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  .rclock .tour-rank,
  .rclock .moretime,
  .rclock .berserked {
    order: inherit;
  }
}

.rclock .tour-rank {
  opacity: 0.65;
}

.rclock .moretime {
  opacity: 0.4;
}

.rclock .moretime:hover {
  opacity: 1;
}

.rclock .berserked {
  font-size: 2.2em;
  color: #d64f00;
}

.material div {
  display: inline-block;
  margin-left: 10px;
}

.material mpiece {
  margin-left: -10px;
  background-size: cover;
  display: inline-block;
}

.material mpiece.pawn {
  background-image: url(../piece/mono/P.svg);
}

.material mpiece.bishop {
  background-image: url(../piece/mono/B.svg);
}

.material mpiece.knight {
  background-image: url(../piece/mono/N.svg);
}

.material mpiece.rook {
  background-image: url(../piece/mono/R.svg);
}

.material mpiece.queen {
  background-image: url(../piece/mono/Q.svg);
}

.material mpiece.king {
  background-image: url(../piece/mono/K.svg);
}

.material score {
  font-family: 'Roboto';
}

.material {
  align-self: center;
  height: 40px;
  line-height: 0;
  white-space: nowrap;
}

.material div {
  display: inline-block;
  margin-left: 10px;
}

.material mpiece {
  margin-left: -10px;
  width: 32px;
  height: 32px;
  background-size: cover;
  display: inline-block;
}

.material mpiece.pawn {
  margin-left: -15px;
}

.material score {
  font-family: 'Roboto';
  line-height: 32px;
  vertical-align: top;
}

@media (max-width: 799px) and (orientation: portrait) {
  .material {
    height: 20px;
    margin-left: 3vmin;
  }
  .material div {
    margin-left: 8px;
  }
  .material mpiece {
    width: 15px;
    height: 15px;
    margin-left: -8px !important;
  }
}

rm6 {
  /* context: .rmoves */
  /* context: rm6 */
}

rm6 .buttons {
  flex: 0 0 auto;
  display: flex;
  justify-content: stretch;
  background: #302e2c;
  font-size: 0.9em;
  order: 2;
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 .buttons {
    order: 0;
  }
}

rm6 .fbt,
rm6 .noop {
  padding: 5px 0;
  flex: 0 0 calc(100% / 6);
  text-align: center;
}

rm6 l4x,
rm6 .message {
  flex: 0 0 7.4rem;
}

@media (max-width: 799px) and (orientation: portrait) {
  rm6 {
    overflow: hidden;
  }
  rm6 .col1-moves {
    flex: 0 0 3.5em;
    display: flex;
    justify-content: space-between;
  }
  rm6 .col1-moves .fbt {
    flex: 0 0 auto;
    padding: 0 1.3em;
  }
  body.playing.zen rm6 .col1-moves {
    visibility: hidden;
  }
  rm6 l4x {
    flex: 1 1 100%;
    display: flex;
    align-items: stretch;
    white-space: nowrap;
    overflow-x: scroll;
    color: #999999;
    box-shadow: 0 4px 12px #000 inset;
  }
  rm6 l4x::-webkit-scrollbar {
    height: 0px;
  }
  rm6 l4x > :first-child {
    margin-left: auto !important;
  }
  rm6 i5z,
  rm6 u8t,
  rm6 .result-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.3rem;
  }
  rm6 i5z {
    padding-right: 0.15em;
  }
  rm6 u8t {
    font-size: 1.1em;
    cursor: pointer;
  }
  rm6 u8t.a1t, rm6 u8t:hover {
    background: #302e2c;
  }
  rm6 u8t.a1t {
    color: #e3e3e3;
  }
  rm6 .buttons {
    display: none;
  }
  rm6 .result {
    margin: 0;
    font-weight: bold;
    font-size: 1.1em;
  }
  rm6 .message {
    flex: 0 0 3.5em;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1.2;
  }
  rm6 .message br {
    display: none;
  }
  rm6 .message strong {
    margin-left: 0.5em;
  }
  rm6 .message::before {
    margin-right: 0.3em;
  }
  body.playing.zen rm6 .message {
    visibility: hidden;
  }
  rm6 .status {
    display: none;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 {
    background: #262421;
  }
  rm6 l4x {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    position: relative;
    /* required by autoScroll */
    overflow-y: auto;
    align-content: flex-start;
    will-change: scroll-position;
    user-select: none;
    line-height: 1.7;
    font-size: 1.1em;
  }
  rm6 l4x::-webkit-scrollbar {
    width: 0px;
  }
  rm6 i5z {
    /* Edge 18: flex: 0 0 calc(100% / 6); causes wrap */
    flex: 0 0 16.666%;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    background: #302e2c;
  }
  rm6 u8t {
    /* Edge 18: flex: 0 0 calc(100% * 5 / 12); causes wrap */
    flex: 0 0 41.666%;
    padding-left: 0.7em;
    cursor: pointer;
  }
  rm6 u8t:hover {
    background: #3692e7;
    color: #fff;
  }
  rm6 u8t.a1t {
    font-weight: bold;
    background: #293a49;
    color: #cccccc;
  }
  rm6 u8t span {
    cursor: pointer;
    margin-right: 0.35em;
  }
  rm6 u8t span:hover {
    color: #fff;
    background: #3692e7;
  }
  rm6 u8t span.a1t {
    font-weight: bold;
    background: #293a49;
    color: #cccccc;
  }
  rm6 div.pgr {
    display: flex;
    align-items: flex-start;
    width: 100%;
  }
  rm6 div.pgr i5z {
    flex: 0 0 10%;
    display: flex;
    justify-content: center;
    padding-top: 0.2em;
    background: #302e2c;
    align-self: stretch;
  }
  rm6 div.pgr .pgr-sym {
    flex: 0 0 10%;
    display: flex;
    justify-content: center;
    padding-top: 0.2em;
    font-size: 1.1em;
  }
  rm6 div.pgr .pgr-cnt {
    flex: 0 0 12%;
    display: flex;
    justify-content: center;
    padding-top: 0.2em;
    color: #999999;
    font-size: 0.85em;
  }
  rm6 div.pgr u8t {
    flex: 1;
    align-self: flex-start;
  }
  rm6 .message {
    display: flex;
    align-items: center;
    margin: 1em;
  }
  rm6 .message::before {
    color: #999999;
    font-size: 3em;
    margin-right: 12px;
  }
  rm6 .result-wrap {
    width: 100%;
    text-align: center;
  }
  rm6 .result {
    border-top: 1px solid #404040;
    font-weight: bold;
    font-size: 1.2em;
    padding: 5px 0 3px 0;
    margin: 0;
  }
  rm6 .status {
    font-style: italic;
    margin-bottom: 0.5em;
  }
}

@media (min-width: 800px) and (min-width: 800px), (orientation: landscape) and (min-width: 800px), (min-width: 800px) and (orientation: landscape), (orientation: landscape) and (orientation: landscape) {
  .pgr-counter {
    grid-area: pgr-counter;
    width: 100%;
    padding: 1.2em 0.8em 0.5em;
    background: #262421;
    border-top: 1px solid #404040;
    display: flex;
    align-items: center;
    gap: 0.6em;
  }
  .pgr-counter__label {
    font-size: 1.1em;
    color: #999999;
    flex-shrink: 0;
  }
  .pgr-counter__pips {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
  }
  .pgr-counter__pip {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #4caf50;
    opacity: 1;
  }
  .pgr-counter__pip.used {
    background: #c9a227;
    opacity: 0.6;
  }
  .pgr-arrow {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-left: auto;
    flex-shrink: 0;
    pointer-events: none;
    transition: color 0.3s;
  }
  .pgr-arrow--green {
    color: #4caf50;
  }
  .pgr-arrow--yellow {
    color: #ffc107;
  }
  .pgr-arrow__shaft {
    width: 8px;
    height: 28px;
    background: currentColor;
    border-radius: 2px;
  }
  .pgr-arrow__head {
    width: 0;
    height: 0;
    border-left: 13px solid transparent;
    border-right: 13px solid transparent;
  }
  .pgr-arrow--up .pgr-arrow__head {
    border-bottom: 18px solid currentColor;
  }
  .pgr-arrow--down .pgr-arrow__head {
    border-top: 18px solid currentColor;
    order: 1;
  }
  .pgr-arrow--down .pgr-arrow__shaft {
    order: -1;
  }
  .pgr-how-to-play {
    grid-area: pgr-howto;
  }
  .pgr-arrow-toggle {
    grid-area: pgr-arrow-tog;
    width: 100%;
    padding: 0.5em 0.8em;
    background: #262421;
    border-top: 1px solid #404040;
    display: flex;
    align-items: center;
  }
}

@media (min-width: 800px), (orientation: landscape) {
  rm6 .pgr-how-to-play {
    grid-area: pgr-howto;
    width: 100%;
    padding: 0.6em 0.8em 0.8em;
    font-size: 0.82em;
    color: #999999;
    background: #262421;
    border-radius: 0 0 3px 3px;
  }
  rm6 .pgr-how-to-play strong {
    display: block;
    font-size: 1.05em;
    color: #bababa;
    margin-bottom: 0.35em;
  }
  rm6 .pgr-how-to-play ol {
    margin: 0 0 0.4em 1.2em;
    padding: 0;
    line-height: 1.6;
  }
  rm6 .pgr-how-to-play p {
    margin: 0;
    line-height: 1.5;
  }
  rm6 .pgr-arrow-toggle {
    grid-area: pgr-arrow-tog;
    width: 100%;
    padding: 0.5em 0.8em;
    background: #262421;
    border-radius: 0 0 3px 3px;
  }
  rm6 .pgr-arrow-toggle__switcher {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }
  rm6 .pgr-arrow-toggle__switcher label:first-child {
    cursor: default;
    font-size: 0.9em;
    color: #999999;
  }
  rm6 .pgr-arrow-toggle__switcher .switch {
    display: flex;
    align-items: center;
    gap: 0.5em;
  }
}

@media (max-width: 799px) and (orientation: portrait) {
  .col1-rmoves-preload {
    height: 2.5em;
  }
}

.rcontrols {
  text-align: center;
  width: 100%;
}

.rcontrols p {
  margin: 0;
}

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

.rcontrols .ddloader {
  margin: 20px auto 10px auto;
}

.rcontrols .suggestion,
.rcontrols .pending,
.rcontrols .negotiation {
  padding: 0.5em 3%;
  background: #302e2c;
  border: 1px solid #404040;
  border-width: 0 1px;
}

.rcontrols .suggestion {
  justify-content: space-around;
}

.rcontrols .suggestion p {
  width: 100%;
}

.rcontrols .suggestion .button {
  margin: 0.5em 0 0 0;
}

.rcontrols .pending p {
  flex: 3 1;
  margin-right: 7px;
}

.rcontrols .pending .button {
  flex: 1 1;
}

@keyframes flash-once {
  from {
    background: #d64f00;
    color: #fff;
  }
  to {
    background: #302e2c;
    color: #bababa;
  }
}

.rcontrols .negotiation {
  animation: flash-once 1s ease-in;
  padding: 1px;
}

.rcontrols .negotiation p {
  flex: 3 1 auto;
}

.rcontrols .negotiation a {
  flex: 1 0 3rem;
  font-size: 1.5em;
  line-height: 3em;
  background: #262421;
}

.rcontrols .negotiation .accept {
  color: #629924;
  margin-right: 1px;
}

.rcontrols .negotiation .decline {
  color: #cc3333;
}

.rcontrols .negotiation a:hover {
  color: #fff;
  background: #629924;
}

.rcontrols .negotiation a.decline:hover {
  background: #cc3333;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .negotiation {
    padding: 3px;
  }
  .rcontrols .negotiation a {
    line-height: 1.6em;
    flex: 0 0 2.5rem;
    padding: 0 1.2em;
  }
}

.rcontrols .glowing:hover {
  animation: none;
}

.rcontrols .follow-up {
  border-bottom: 1px solid #404040;
  position: relative;
  /* for rematch-decline */
}

.rcontrols .follow-up .fbt {
  padding: 12px 0;
  margin: 1px 1px 0 1px;
}

.rcontrols .follow-up > .fbt:first-child {
  margin-top: 0;
}

.rcontrols .follow-up .fbt.strong {
  padding: 2em 0;
  font-size: 1.2em;
}

.rcontrols .follow-up .weak {
  font-weight: normal;
  padding: 6px 0;
}

.rcontrols .follow-up .weak::before {
  opacity: 0.7;
}

.rcontrols .follow-up form .fbt {
  width: 100%;
}

.rcontrols .follow-up .spinner {
  width: 40px;
  height: 40px;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .follow-up {
    margin-top: 2vmin;
  }
}

.rcontrols .analysis {
  display: none;
}

@media (max-width: 799px) and (orientation: portrait) {
  .rcontrols .analysis {
    display: block;
    margin-left: 2em;
  }
}

.rcontrols .rematch.fbt {
  font-size: 1.2em;
  height: 6rem;
  transition: all 150ms;
}

.rcontrols .rematch.me {
  background: #337cc0;
}

@keyframes rubber-band {
  from {
    transform: scale3d(1, 1, 1);
  }
  6% {
    transform: scale3d(1.25, 0.75, 1);
  }
  8% {
    transform: scale3d(0.75, 1.25, 1);
  }
  10% {
    transform: scale3d(1.15, 0.85, 1);
  }
  13% {
    transform: scale3d(0.95, 1.05, 1);
  }
  15% {
    transform: scale3d(1.05, 0.95, 1);
  }
  20% {
    transform: scale3d(1, 1, 1);
  }
}

@keyframes button-glowing {
  0% {
    opacity: 0;
  }
  60% {
    opacity: 0.2;
  }
  85% {
    opacity: 0;
  }
}

.rcontrols .rematch.glowing {
  position: relative;
  animation: none;
  color: #cccccc;
}

.rcontrols .rematch.glowing::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  pointer-events: none;
  background: #3692e7;
  opacity: 0;
  animation: button-glowing 2s ease-in-out infinite;
}

.rcontrols .rematch.glowing span {
  display: block;
  animation: rubber-band 5s infinite;
}

.rcontrols .rematch.fbt:not(.disabled):hover {
  background: #3171ac;
  color: #fff;
  animation: none;
}

.rcontrols .rematch-decline {
  background: #302e2c;
  justify-content: center;
  position: absolute;
  top: 0;
  right: -25px;
  width: 25px;
  height: 6rem;
  border: 0;
  opacity: 0.7;
  background: #792c2a;
  transition: all 150ms;
  display: none;
}

@media (min-width: 800px), (orientation: landscape) {
  .rcontrols .rematch-decline {
    display: block;
  }
}

.rcontrols .rematch-decline:hover {
  background: #cc3333;
  color: #fff;
  right: -36px;
  width: 35px;
}

.ricons {
  display: flex;
  justify-content: center;
  margin-top: 10px;
}

.ricons .fbt {
  font-size: 1.4em;
  padding: 0.1em 1em;
}

.ricons.confirm > button {
  visibility: hidden;
}

.ricons .act-confirm {
  visibility: visible;
  position: relative;
  width: 60px;
}

.ricons .act-confirm .fbt.no {
  padding: 0.1em 0;
  width: 30px;
  text-align: center;
  position: absolute;
  top: 0;
  right: -34px;
}

.ricons .act-confirm .fbt.yes {
  position: absolute;
  right: 0;
  top: -3px;
  border-radius: 8px;
  color: #fff;
  text-decoration: none;
  background: #d64f00;
  border-bottom: 5px solid #963700;
  text-shadow: 0 -1px #963700;
  transition: all 150ms;
  transform: translate(0px, 0px);
}

.ricons .act-confirm .fbt.yes:hover {
  filter: brightness(1.07);
}

.ricons .act-confirm .fbt.yes:active {
  transform: translate(0px, 5px);
  border-bottom-width: 1px;
  text-shadow: 0 0 #963700;
  filter: brightness(1);
}

.round__now-playing h3 {
  margin: 1em 0 0.5em 0;
}

@media (max-width: 799px) and (orientation: portrait) {
  .round__now-playing h3 {
    margin: 1em 2vmin 0.5em 2vmin;
  }
}

.round__now-playing .simul span {
  font-weight: bold;
  margin: 0 0.5em;
}

.round__now-playing .simul .win {
  color: #629924;
}

.round__now-playing .simul .draw {
  color: #bf811d;
}

.round__now-playing .simul .loss {
  color: #cc3333;
}

.round__now-playing .switcher label {
  cursor: pointer;
}

.round__now-playing .switcher .switch {
  margin-left: 10px;
}

.keyboard-move input {
  width: 4.5em;
  font-size: 1.1em;
  font-weight: bold;
  margin-right: 1rem;
  border: 1px solid #404040;
  transition: all 150ms;
}

.keyboard-move input.wrong {
  background: #cc3333;
  color: #fff;
}

.keyboard-move em {
  color: #999999;
}

#powerTip .forecast-info .title {
  display: block;
  padding: 0.7em;
  border-bottom: 1px solid #404040;
  text-align: center;
}

#powerTip .forecast-info .content {
  display: block;
  padding: 1em;
}

@keyframes round-goat-run-ltr {
  from {
    transform: translateX(-200px) translateY(-50%);
  }
  to {
    transform: translateX(calc(100vw + 200px)) translateY(-50%);
  }
}

@keyframes round-goat-run-rtl {
  from {
    transform: translateX(calc(100vw + 200px)) translateY(-50%);
  }
  to {
    transform: translateX(-200px) translateY(-50%);
  }
}

.round__goat-run {
  position: fixed;
  top: 50%;
  left: 0;
  z-index: 9999;
  pointer-events: none;
}

.round__goat-run--ltr {
  animation: round-goat-run-ltr 4.5s linear forwards;
}

.round__goat-run--rtl {
  animation: round-goat-run-rtl 4.5s linear forwards;
}

.round__goat-run__img {
  height: 143px;
  display: block;
}

.round__goat-run__img--flipped {
  transform: scaleX(-1);
}

button.fbt.goat .goat-icon {
  height: 22px;
  vertical-align: middle;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQvY3NzL2J1aWxkL3JvdW5kLmRhcmsuY3NzIiwic291cmNlcyI6WyJyb3VuZC9jc3MvYnVpbGQvcm91bmQuZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJyb3VuZC9jc3MvYnVpbGQvX3JvdW5kLnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMuc2NzcyIsImNvbW1vbi9jc3MvdmVuZG9yL2NoZXNzZ3JvdW5kL19jb29yZHMtY29sb3JzLnNjc3MiLCJjb21tb24vY3NzL2xheW91dC9fdW5pYm9hcmQuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19ib2FyZC1yZXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb2xvci1pY29uLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fY3Jvc3N0YWJsZS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2ZidC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2dsb3dpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19iYXItZ2xpZGVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbm93LXBsYXlpbmcuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19jb250ZXh0LXN0cmVhbWVyLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9femVuLXRvZ2dsZS5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19jbW4tdG9nZ2xlLnNjc3MiLCJjaGVzcy9jc3MvX3ZhcmlhbnQtc3R5bGUuc2NzcyIsImNoZXNzL2Nzcy9fcHJvbW90aW9uLnNjc3MiLCJjaGVzcy9jc3MvX2JsaW5kZm9sZC5zY3NzIiwiY2hhdC9jc3MvX2NoYXQuc2NzcyIsImNvbW1vbi9jc3MvYmFzZS9fc2Nyb2xsYmFyLnNjc3MiLCJjaGF0L2Nzcy9fdGFiLnNjc3MiLCJjaGF0L2Nzcy9fbWVtYmVycy5zY3NzIiwiY2hhdC9jc3MvX2Rpc2N1c3Npb24uc2NzcyIsImNoYXQvY3NzL19wYWxhbnRpci5zY3NzIiwiY2hhdC9jc3MvX3ByZXNldC5zY3NzIiwicm91bmQvY3NzL19yb3VuZC5zY3NzIiwicm91bmQvY3NzL19jb25zdGFudHMuc2NzcyIsInJvdW5kL2Nzcy9fbGF5b3V0LnNjc3MiLCJyb3VuZC9jc3MvX2FwcC1sYXlvdXQuc2NzcyIsInJvdW5kL2Nzcy9femVuLnNjc3MiLCJyb3VuZC9jc3MvX3NpZGUuc2NzcyIsInJvdW5kL2Nzcy9fbWV0YS5zY3NzIiwicm91bmQvY3NzL190YWJsZS5zY3NzIiwicm91bmQvY3NzL191c2VyLnNjc3MiLCJyb3VuZC9jc3MvX2Nsb2NrLnNjc3MiLCJyb3VuZC9jc3MvX21hdGVyaWFsLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9fbWF0ZXJpYWwuc2NzcyIsInJvdW5kL2Nzcy9fbW92ZXMuc2NzcyIsInJvdW5kL2Nzcy9fbW92ZXMtY29sMS5zY3NzIiwicm91bmQvY3NzL19tb3Zlcy1jb2wyLnNjc3MiLCJyb3VuZC9jc3MvX2NvbnRyb2wuc2NzcyIsInJvdW5kL2Nzcy9faWNvbi5zY3NzIiwicm91bmQvY3NzL19ub3ctcGxheWluZy5zY3NzIiwicm91bmQvY3NzL19rZXlib2FyZC1tb3ZlLnNjc3MiLCJyb3VuZC9jc3MvX2ZvcmVjYXN0LWluZm8uc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3RoZW1lL2RhcmsnO1xuQGltcG9ydCAncm91bmQnO1xuIiwiQGltcG9ydCAnZGVmYXVsdCc7XG5cbiR0aGVtZTogJ2RhcmsnO1xuJGNvbG9yLXNjaGVtZTogJ2RhcmsnO1xuJHRoZW1lLWxpZ2h0OiBmYWxzZTtcbiR0aGVtZS1kYXJrOiB0cnVlO1xuXG5AZnVuY3Rpb24gYy1kaW1tZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuQGZ1bmN0aW9uIGMtY2xlYXJlcigkY29sb3IsICR3ZWlnaHQ6IDIwJSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOCUpO1xuJGMtYmctaGlnaDogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMTQlKTtcbiRjLWJnLWxvdzogaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIlKTtcblxuLyogZXZlbiByb3dzIGluIGxpc3Qgb3IgdGFibGVzLCBzdWJ0bGUgc2hhZGUgb2YgJGMtYmctaGlnaCAqL1xuJGMtYmctemVicmE6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDE4JSk7XG4kYy1iZy16ZWJyYTI6IGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIzJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCAxNiUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDczJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA2MCUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNDIlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCA4OSUpO1xuJGMtc2hhZGU6IGMtbGlnaHQoJGMtZm9udCwgMzAlKTtcbiRjLWZvbnQtcGFnZTogJGMtZm9udC1kaW07XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc5JSwgNTYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5LCAxNSUpO1xuJGMtcHJpbWFyeS1jbGVhcjogYy1jbGVhcmVyKCRjLXByaW1hcnkpO1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcblxuLyogQnJhZzogZ29sZCAqL1xuJGMtYnJhZzogaHNsKDM3LCA3NCUsIDQzJSk7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjIlLCA0OCUpO1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbiRjLWxpbms6ICRjLXByaW1hcnk7XG4kYy1saW5rLWRpbTogJGMtcHJpbWFyeS1kaW07XG4kYy1saW5rLWNsZWFyOiAkYy1wcmltYXJ5LWNsZWFyO1xuJGMtbGluay1ob3ZlcjogYy1jbGVhcmVyKHNhdHVyYXRlKCRjLXByaW1hcnksIDEwMCUpLCAyNSUpO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCAxMyUpO1xuXG4kYy1iZy1wb3B1cDogJGMtYmctbG93O1xuJGMtcG9wdXA6ICRjLWZvbnQtY2xlYXI7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1ib3Q6ICRjLWZhbmN5O1xuXG4kYy1wYWdlLWlucHV0OiAkYy1iZy1ib3g7XG5cbiRjLWJvcmRlcjogaHNsKDAsIDAlLCAyNSUpO1xuJGMtYm9yZGVyLXBhZ2U6IGhzbCgwLCAwJSwgMjIlKTtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbiRjLWZvbnQtc2hhZG93OiBibGFjaztcbiR0ZXh0LXNoYWRvdzogbm9uZTtcblxuQG1peGluIG1ldGFsLWJnIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjIpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOSkgMTAwJSk7XG59XG5cbkBtaXhpbiBtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG5AbWl4aW4gbWV0YWwtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBoc2woJGMtc2l0ZS1odWUsIDclLCAyNSksIGhzbCgkYy1zaXRlLWh1ZSwgNSUsIDIyKSAxMDAlKTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbkBtaXhpbiBwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgbWV0YWwtaG92ZXI7XG59XG5cbkBtaXhpbiB0aGVtZS1zdHlsZSB7XG59XG4iLCJAaW1wb3J0ICcuLi9hYnN0cmFjdC9mdW5jdGlvbnMnO1xuXG4vKiBDb2xvcnMgKi9cblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCNmZmYsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAxNyUpIHtcbiAgQHJldHVybiBtaXgoIzAwMCwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtc2l0ZS1odWU6IDM3O1xuXG4kYy1iZy1wYWdlOiBoc2woJGMtc2l0ZS1odWUsIDEwJSwgOTIlKTtcblxuLy8gaHNsKDIxMCwgMTclLCA5NSUpXG4kYy1iZy1oaWdoOiBoc2woMCwgMCUsIDEwMCUpO1xuJGMtYmctbG93OiBoc2woMCwgMCUsIDg5JSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTYuNSUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgOTIlKTtcblxuJGMtYm9keS1ncmFkaWVudDogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDg0JSk7XG5cbiRjLWZvbnQ6IGhzbCgwLCAwJSwgMzAlKTtcbiRjLWZvbnQtZGltOiBjLWxpZ2h0KCRjLWZvbnQsIDQ3JSk7XG4kYy1mb250LWRpbW1lcjogYy1saWdodCgkYy1mb250LCA3MCUpO1xuJGMtZm9udC1jbGVhcjogYy1saWdodCgkYy1mb250LCAxMiUpO1xuJGMtZm9udC1jbGVhcmVyOiBjLWxpZ2h0KCRjLWZvbnQsIDAlKTtcbiRjLXNoYWRlOiBjLWRpbW1lcigkYy1mb250LCA4MCUpO1xuJGMtZm9udC1wYWdlOiBjLWxpZ2h0KCRjLWZvbnQsIDM3JSk7XG5cbi8qIFByaW1hcnk6IGJsdWUgKi9cbiRjLXByaW1hcnk6IGhzbCgyMDksIDc3JSwgNDYlKTtcbiRjLXByaW1hcnktZGltOiBjLWRpbW1lcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcbiRjLXByaW1hcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHByaW1hcnkgYmFja2dyb3VuZCAqL1xuXG4vKiBTZWNvbmRhcnk6IGdyZWVuICovXG4kYy1zZWNvbmRhcnk6IGhzbCg4OCwgNjIlLCAzNyUpO1xuJGMtc2Vjb25kYXJ5LWRpbTogYy1kaW1tZXIoJGMtc2Vjb25kYXJ5KTtcbiRjLXNlY29uZGFyeS1kaW1tZXI6IGMtZGltbWVyKCRjLXNlY29uZGFyeSwgNDAlKTtcbiRjLXNlY29uZGFyeS1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgc2Vjb25kYXJ5IGJhY2tncm91bmQgKi9cblxuLyogQWNjZW50OiBvcmFuZ2UgKi9cbiRjLWFjY2VudDogaHNsKDIyLCAxMDAlLCA0MiUpO1xuJGMtYWNjZW50LWRpbTogYy1kaW1tZXIoJGMtYWNjZW50KTtcbiRjLWFjY2VudC1jbGVhcjogYy1jbGVhcmVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGFjY2VudCBiYWNrZ3JvdW5kICovXG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0OCUpO1xuJGMtYnJhZy1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEVycm9yOiByZWQgKi9cbiRjLXJlZDogaHNsKDAsIDYwJSwgNTAlKTtcbiRjLWVycm9yOiAkYy1yZWQ7XG4kYy1lcnJvci1vdmVyOiAjZmZmO1xuXG4vKiB0ZXh0IG92ZXIgYnJhZyBiYWNrZ3JvdW5kICovXG5cbi8qIEdvb2Q6IGdyZWVuICovXG4kYy1nb29kOiAkYy1zZWNvbmRhcnk7XG4kYy1nb29kLW92ZXI6ICRjLXNlY29uZGFyeS1vdmVyO1xuXG4vKiBXYXJuOiBvcmFuZ2UgKi9cbiRjLXdhcm46ICRjLWJyYWc7XG4kYy13YXJuLW92ZXI6ICRjLWJyYWctb3ZlcjtcblxuLyogQmFkOiByZWQgKi9cbiRjLWJhZDogJGMtZXJyb3I7XG4kYy1iYWQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogSGVhcnQ6IHJlZCAqL1xuJGMtaGVhcnQ6ICRjLWVycm9yO1xuJGMtaGVhcnQtb3ZlcjogJGMtZXJyb3Itb3ZlcjtcblxuLyogRmFuY3k6IHBpbmsgKi9cbiRjLWZhbmN5OiBoc2woMjk0LCA2MSUsIDYyJSk7XG4kYy1mYW5jeS1vdmVyOiB3aGl0ZTtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMzUlKTtcbiRjLWxpbmstb3ZlcjogJGMtcHJpbWFyeS1vdmVyO1xuXG4kYy1iZy1ib3g6ICRjLWJnLWhpZ2g7XG4kYy1iZy1ib3gtb3BhcXVlOiAkYy1iZy1ib3g7XG4kYy1iZy1pbnB1dDogYy1saWdodCgkYy1iZy1wYWdlLCA5OCUpO1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgODUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDgwJSk7XG5cbiRjLXBhZ2UtbWFzazogaHNsYSgwLCAwLCAwJSwgMC42KTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWhpZ2g7XG4kYy1wb3B1cDogJGMtZm9udDtcblxuJGMtYmctaGVhZGVyLWRyb3Bkb3duOiAkYy1iZy1wb3B1cDtcbiRjLWhlYWRlci1kcm9wZG93bjogJGMtcG9wdXA7XG5cbiRjLWZvbnQtc2hhZG93OiB3aGl0ZTtcbiR0ZXh0LXNoYWRvdzogMCAxcHggMCAkYy1mb250LXNoYWRvdztcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctbG93O1xuXG4vKiBCb3JkZXJzICovXG5cbiRib3JkZXItd2lkdGg6IDFweDtcbiRib3JkZXItc3R5bGU6IHNvbGlkO1xuJGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlICRjLWJvcmRlcjtcblxuLyogU2hhZG93cyAqL1xuXG4kYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4vLyAkYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLDAsMCwuMTU3KTtcbiIsIkBmdW5jdGlvbiBjLWxpZ2h0KCRjb2xvciwgJHZhbHVlKSB7XG4gIEByZXR1cm4gY2hhbmdlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJHZhbHVlKTtcbn1cblxuQGZ1bmN0aW9uIGltZy11cmwoJHBhdGgpIHtcbiAgQHJldHVybiB1cmwoJyN7JGltZy1wYXRofS8jeyRwYXRofScpO1xufVxuIiwiQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9wbHVnaW4nO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy92ZW5kb3IvY2hlc3Nncm91bmQvY29vcmRzJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvbGF5b3V0L3VuaWJvYXJkJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2JvYXJkLXJlc2l6ZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb2xvci1pY29uJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2Nyb3NzdGFibGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvZmJ0JztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2dsb3dpbmcnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvYmFyLWdsaWRlcic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9ub3ctcGxheWluZyc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9jb250ZXh0LXN0cmVhbWVyJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L3plbi10b2dnbGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9mb3JtL2Ntbi10b2dnbGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY2hlc3MvY3NzL3ZhcmlhbnQtc3R5bGUnO1xuQGltcG9ydCAnLi4vLi4vLi4vY2hlc3MvY3NzL3Byb21vdGlvbic7XG5AaW1wb3J0ICcuLi8uLi8uLi9jaGVzcy9jc3MvYmxpbmRmb2xkJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NoYXQvY3NzL2NoYXQnO1xuQGltcG9ydCAnLi4vLi4vLi4vY2hhdC9jc3MvcHJlc2V0JztcbkBpbXBvcnQgJy4uL3JvdW5kJztcbiIsIi8qIENvbW1vbiBpbXBvcnRzIGZvciBhbGwgQ1NTIG1vZHVsZXMgKi9cblxuQGltcG9ydCAnLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50JztcblxuQGltcG9ydCAnYWJzdHJhY3QvYWxsJztcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJEJyZWFrcG9pbnQtU2V0dGluZ3M6IChcbiAgJ2RlZmF1bHQgbWVkaWEnOiBhbGwsXG4gICdkZWZhdWx0IGZlYXR1cmUnOiBtaW4td2lkdGgsXG4gICdkZWZhdWx0IHBhaXInOiB3aWR0aCxcblxuICAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnOiBmYWxzZSxcbiAgJ3RvIGVtcyc6IGZhbHNlLFxuICAndHJhbnNmb3JtIHJlc29sdXRpb25zJzogdHJ1ZSxcblxuICAnbm8gcXVlcmllcyc6IGZhbHNlLFxuICAnbm8gcXVlcnkgZmFsbGJhY2tzJzogZmFsc2UsXG5cbiAgJ2Jhc2UgZm9udCBzaXplJzogMTZweCxcblxuICAnbGVnYWN5IHN5bnRheCc6IGZhbHNlXG4pO1xuXG4kYnJlYWtwb2ludDogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9zZXR0aW5nc1wiO1xuQGltcG9ydCAnYnJlYWtwb2ludC9jb250ZXh0JztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvaGVscGVycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L3BhcnNlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9uby1xdWVyeSc7XG5cbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcmVzcG9uZC10byc7XG5cbkBpbXBvcnQgXCJicmVha3BvaW50L2xlZ2FjeS1zZXR0aW5nc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgbGVnYWN5LXNldHRpbmdzLXdhcm5pbmc7XG5cbiAgLy8gUmVzZXQgY29udGV4dHNcbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG5cbiAgJGJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQoJHF1ZXJ5LCBmYWxzZSk7XG5cbiAgJHF1ZXJ5LXN0cmluZzogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5Jyk7XG4gICRxdWVyeS1mYWxsYmFjazogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2ZhbGxiYWNrJyk7XG5cbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLWdldCgkYnJlYWtwb2ludCwgJ2NvbnRleHQgaG9sZGVyJykgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogbWFwLWdldCgkYnJlYWtwb2ludCwgJ3F1ZXJ5IGNvdW50JykgIWdsb2JhbDtcblxuICAvLyBBbGxvdyBmb3IgYW4gYXMtbmVlZGVkIG92ZXJyaWRlIG9yIHVzYWdlIG9mIG5vIHF1ZXJ5IGZhbGxiYWNrLlxuICBAaWYgJG5vLXF1ZXJ5ICE9IGZhbHNlIHtcbiAgICAkcXVlcnktZmFsbGJhY2s6ICRuby1xdWVyeTtcbiAgfVxuXG4gIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gIH1cblxuICAvLyBQcmludCBPdXQgUXVlcnkgU3RyaW5nXG4gIEBpZiBub3QgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQG1lZGlhICN7JHF1ZXJ5LXN0cmluZ30ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSAhPSBmYWxzZSBvciBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpID09IHRydWUge1xuXG4gICAgJHR5cGU6IHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpKTtcbiAgICAkcHJpbnQ6IGZhbHNlO1xuXG4gICAgQGlmICgkdHlwZSA9PSAnYm9vbCcpIHtcbiAgICAgICRwcmludDogdHJ1ZTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgKCR0eXBlID09ICdsaXN0Jykge1xuICAgICAgQGVhY2ggJHdyYXBwZXIgaW4gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSAkd3JhcHBlciB7XG4gICAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgRmFsbGJhY2tcbiAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkgYW5kICgkcHJpbnQgPT0gdHJ1ZSkge1xuICAgICAgJHR5cGUtZmFsbGJhY2s6IHR5cGUtb2YoJHF1ZXJ5LWZhbGxiYWNrKTtcblxuICAgICAgQGlmICgkdHlwZS1mYWxsYmFjayAhPSAnYm9vbCcpIHtcbiAgICAgICAgI3skcXVlcnktZmFsbGJhY2t9ICYge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xufVxuXG5cbkBtaXhpbiBtcSgkcXVlcnksICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhhcyBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldCgkc2V0dGluZykge1xuICBAaWYgYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnQsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCcmVha3BvaW50LVNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGlmIChzdHItaW5kZXgoJHNldHRpbmcsICctJykgb3Igc3RyLWluZGV4KCRzZXR0aW5nLCAnXycpKSBhbmQgc3RyLWluZGV4KCRzZXR0aW5nLCAnICcpID09IG51bGwge1xuICAgIEB3YXJuIFwiV29yZHMgaW4gQnJlYWtwb2ludCBzZXR0aW5ncyBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm90IGRhc2hlcyBvciB1bmRlcnNjb3Jlcy4gUGxlYXNlIHJlcGxhY2UgZGFzaGVzIGFuZCB1bmRlcnNjb3JlcyBiZXR3ZWVuIHdvcmRzIHdpdGggc3BhY2VzLiBTZXR0aW5ncyB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIHVudGlsIGNoYW5nZWQuXCI7XG4gIH1cbiAgJGJyZWFrcG9pbnQ6IG1hcC1tZXJnZSgkYnJlYWtwb2ludCwgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRicmVha3BvaW50LWNoYW5nZTogYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYmtwdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cbkBtaXhpbiBia3B0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICBAaWYgbGVuZ3RoKCRzZXR0aW5ncykgPT0gMSB7XG4gICAgJHNldHRpbmdzOiBudGgoJHNldHRpbmdzLCAxKTtcbiAgfVxuXG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGJyZWFrcG9pbnQ6IG1hcC1yZW1vdmUoJGJyZWFrcG9pbnQsICRzZXR0aW5nKSAhZ2xvYmFsO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBia3B0LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBCcmVha3BvaW50IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKTtcbiRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBIYXMgQ29udGV4dFxuLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB5b3UgYXJlIGluc2lkZSBhIEJyZWFrcG9pbnQgcXVlcnlcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSB7XG4gIEBpZiBsZW5ndGgoJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCkge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgR2V0IENvbnRleHRcbi8vICRmZWF0dXJlOiBJbnB1dCBmZWF0dXJlIHRvIGdldCBpdCdzIGN1cnJlbnQgTVEgY29udGV4dC4gUmV0dXJucyBmYWxzZSBpZiBubyBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWdldC1jb250ZXh0KCRmZWF0dXJlKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICRnZXQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgb2Ygbm8tcXVlcnkgZnJvbSBnZXQgc2lkZSBzbyAvZmFsc2UvIHByZXBlbmRzIGFyZW4ndCByZXR1cm5lZFxuICAgIEBpZiAkZmVhdHVyZSA9PSAnbm8tcXVlcnknIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRnZXQpID09ICdsaXN0JyBhbmQgbGVuZ3RoKCRnZXQpID4gMSBhbmQgbnRoKCRnZXQsIDEpID09IGZhbHNlIHtcbiAgICAgICAgJGdldDogbnRoKCRnZXQsIGxlbmd0aCgkZ2V0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIEByZXR1cm4gJGdldDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIGJyZWFrcG9pbnQtaGFzLWNvbnRleHQoKSBhbmQgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICBAcmV0dXJuIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byBzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpIHtcbiAgQGlmICR2YWx1ZSA9PSAnbW9ub2Nocm9tZScge1xuICAgICRmZWF0dXJlOiAnbW9ub2Nocm9tZSc7XG4gIH1cblxuICAkY3VycmVudDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gIEBpZiAkY3VycmVudCBhbmQgbGVuZ3RoKCRjdXJyZW50KSA9PSAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICBAd2FybiBcIllvdSBoYXZlIGFscmVhZHkgcXVlcmllZCBhZ2FpbnN0IGAjeyRmZWF0dXJlfWAuIFVuZXhwZWN0ZWQgdGhpbmdzIG1heSBoYXBwZW4gaWYgeW91IHF1ZXJ5IGFnYWluc3QgdGhlIHNhbWUgZmVhdHVyZSBtb3JlIHRoYW4gb25jZSBpbiB0aGUgc2FtZSBgYW5kYCBxdWVyeS4gQnJlYWtwb2ludCBpcyBvdmVyd3JpdGluZyB0aGUgY3VycmVudCBjb250ZXh0IHdpdGggYCN7JHZhbHVlfWBcIjtcbiAgfVxuXG4gIEBpZiBub3QgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkdi1ob2xkZXI6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAxIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR2LWhvbGRlcjogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCAtIDEge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCAkdmFsdWUpO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGZlYXR1cmU6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUHJpdmF0ZSBmdW5jdGlvbiB0byByZXNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMge1xuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb252ZXJ0cyB0aGUgaW5wdXQgdmFsdWUgdG8gQmFzZSBFTXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpIHtcbiAgJHZhbHVlLXVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICAvLyBXaWxsIGNvbnZlcnQgcmVsYXRpdmUgRU1zIGludG8gcm9vdCBFTXMuXG4gIEBpZiBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSBhbmQgdHlwZS1vZihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgPT0gJ251bWJlcicgYW5kICR2YWx1ZS11bml0ID09ICdlbScge1xuICAgICRiYXNlLXVuaXQ6IHVuaXQoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpO1xuXG4gICAgQGlmICRiYXNlLXVuaXQgPT0gJ3B4JyBvciAkYmFzZS11bml0ID09ICclJyBvciAkYmFzZS11bml0ID09ICdlbScgb3IgJGJhc2UtdW5pdCA9PSAncHQnIHtcbiAgICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkgLyBiYXNlLWNvbnZlcnNpb24oYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpICogMWVtO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAnI3ticmVha3BvaW50LWdldChcXCdiYXNlIGZvbnQgc2l6ZVxcJyl9IGlzIG5vdCBzZXQgaW4gdmFsaWQgdW5pdHMgZm9yIGZvbnQgc2l6ZSEnO1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIHtcbiAgJHVuaXQ6IHVuaXQoJHZhbHVlKTtcblxuICBAaWYgJHVuaXQgPT0gJ3B4JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxNnB4ICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICclJyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMDAlICogMWVtO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdlbScge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG4gIEBlbHNlIGlmICR1bml0ID09ICdwdCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTJwdCAqIDFlbTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4vLyAgICBAd2FybiAnRXZlcnl0aGluZyBpcyB0ZXJyaWJsZSEgV2hhdCBoYXZlIHlvdSBkb25lPyEnO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgbWluL21heCBwYWlyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWhlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluLW1heCgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIHN0cmluZyB2YWx1ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXM6ICAnb3JpZW50YXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2x1bWlub3NpdHknO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgYnJlYWtwb2ludC1taW4tbWF4KCRpdGVtKSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21pbi0jeyRpdGVtfScgb3IgJGZlYXR1cmUgPT0gJ21heC0jeyRpdGVtfScge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgaXMgYSBtZWRpYSB0eXBlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LW1lZGlhLXR5cGVzOiAgJ2FsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdicmFpbGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VtYm9zc2VkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbmRoZWxkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2plY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWVjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHYnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkge1xuICBAZWFjaCAkbWVkaWEgaW4gJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXMge1xuICAgIEBpZiAoJGZlYXR1cmUgPT0gJG1lZGlhKSBvciAoJGZlYXR1cmUgPT0gJ25vdCAjeyRtZWRpYX0nKSBvciAoJGZlYXR1cmUgPT0gJ29ubHkgI3skbWVkaWF9Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBzdGFuZCBhbG9uZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncmlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nLWZlYXR1cmVzIHtcbiAgICBAaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSB7XG4gICRyZXNvbHV0aW9uczogJ2RldmljZS1waXhlbC1yYXRpbycsICdkcHInO1xuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgICRyZXNvbHV0aW9uczogYXBwZW5kKCRyZXNvbHV0aW9ucywgJ3Jlc29sdXRpb24nKTtcbiAgfVxuXG4gIEBlYWNoICRyZXNvIGluICRyZXNvbHV0aW9ucyB7XG4gICAgQGlmIGluZGV4KCRmZWF0dXJlLCAkcmVzbykgb3IgaW5kZXgoJGZlYXR1cmUsICdtaW4tI3skcmVzb30nKSBvciBpbmRleCgkZmVhdHVyZSwgJ21heC0jeyRyZXNvfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGFyc2VyIFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwicGFyc2Vycy9xdWVyeVwiO1xuQGltcG9ydCBcInBhcnNlcnMvc2luZ2xlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9kb3VibGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3RyaXBsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvcmVzb2x1dGlvblwiO1xuXG4kTWVtby1FeGlzdHM6IGZ1bmN0aW9uLWV4aXN0cyhtZW1vLWdldCkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhtZW1vLXNldCk7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBGdW5jdGlvblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkcXVlcnksICRjb250ZXh0cy4uLikge1xuICAkcnVuOiB0cnVlO1xuICAkcmV0dXJuOiAoKTtcblxuICAvLyBHcmFiIHRoZSBNZW1vIE91dHB1dCBpZiBNZW1vaXphdGlvbiBjYW4gYmUgYSB0aGluZ1xuICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAkcmV0dXJuOiBtZW1vLWdldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMpO1xuXG4gICAgQGlmICRyZXR1cm4gIT0gbnVsbCB7XG4gICAgICAkcnVuOiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRNZW1vLUV4aXN0cyBvciAkcnVuIHtcbiAgICAvLyBJbnRlcm5hbCBWYXJpYWJsZXNcbiAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAkcXVlcnktZmFsbGJhY2s6IGZhbHNlO1xuICAgICRyZXR1cm46ICgpO1xuXG4gICAgLy8gUmVzZXJ2ZSBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkaG9sZGVyLWNvbnRleHQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI7XG4gICAgJGhvbGRlci1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDtcblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG5cbiAgICAvLyBUZXN0IHRvIHNlZSBpZiBpdCdzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3RcbiAgICAkb3ItbGlzdDogaWYobGlzdC1zZXBhcmF0b3IoJHF1ZXJ5KSA9PSAnY29tbWEnLCB0cnVlLCBmYWxzZSk7XG5cblxuICAgIEBpZiAoJG9yLWxpc3QgPT0gZmFsc2UgYW5kIGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gZmFsc2UpIHtcbiAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgICAgICRsYXN0OiBudGgoJHF1ZXJ5LCAkbGVuZ3RoKTtcbiAgICAgICRxdWVyeS1mYWxsYmFjazogYnJlYWtwb2ludC1uby1xdWVyeSgkbGFzdCk7XG5cbiAgICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSB7XG4gICAgICAgICRsZW5ndGg6ICRsZW5ndGggLSAxO1xuICAgICAgfVxuXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4JykgPT0gdHJ1ZSkge1xuICAgICAgICAkbXE6ICgpO1xuXG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJG1xOiBhcHBlbmQoJG1xLCBudGgoJHF1ZXJ5LCAkaSksIGNvbW1hKTtcbiAgICAgICAgfVxuXG4gICAgICAgICRxdWVyeS1zdHJpbmc6IGJyZWFrcG9pbnQtcGFyc2UoJG1xKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAgICAgJHF1ZXJ5LXN0cmluZzogJHF1ZXJ5LXN0cmluZyArIGlmKCRpID09IDEsICcnLCAnLCAnKSArIGJyZWFrcG9pbnQtcGFyc2UobnRoKCRxdWVyeSwgJGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRyZXR1cm46ICgncXVlcnknOiAkcXVlcnktc3RyaW5nLFxuICAgICAgICAnZmFsbGJhY2snOiAkcXVlcnktZmFsbGJhY2ssXG4gICAgICAgICdjb250ZXh0IGhvbGRlcic6ICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsXG4gICAgICAgICdxdWVyeSBjb3VudCc6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnRcbiAgICApO1xuICAgIEBpZiBsZW5ndGgoJGNvbnRleHRzKSA+IDAgYW5kIG50aCgkY29udGV4dHMsIDEpICE9IGZhbHNlIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2Uge1xuICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICAgICAgfVxuICAgICAgJGNvbnRleHQtbWFwOiAoKTtcbiAgICAgIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgICAgICRjb250ZXh0LW1hcDogbWFwLW1lcmdlKCRjb250ZXh0LW1hcCwgKCRjb250ZXh0OiBicmVha3BvaW50LWdldC1jb250ZXh0KCRjb250ZXh0KSkpO1xuICAgICAgfVxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sIChjb250ZXh0OiAkY29udGV4dC1tYXApKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuICAgIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICAgJGhvbGRlcjogbWVtby1zZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzLCAkcmV0dXJuKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhbCBCcmVha3BvaW50IFBhcnNlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpIHtcbiAgLy8gSW5jcmVhc2UgbnVtYmVyIG9mICdhbmQnIHF1ZXJpZXNcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCArIDEgIWdsb2JhbDtcblxuICAvLyBTZXQgdXAgTWVkaWEgVHlwZVxuICAkcXVlcnktcHJpbnQ6ICcnO1xuXG4gICRmb3JjZS1hbGw6ICgoYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykgPT0gdHJ1ZSkgYW5kIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpID09ICdhbGwnKSk7XG4gICRlbXB0eS1tZWRpYTogdHJ1ZTtcbiAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yIChicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpICE9ICdhbGwnKSB7XG4gICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG4gIH1cblxuXG4gICRxdWVyeS1yZXNvbHV0aW9uOiBmYWxzZTtcblxuICAkcXVlcnktaG9sZGVyOiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSk7XG5cblxuXG4gIC8vIExvb3Agb3ZlciBlYWNoIHBhcnNlZCBvdXQgcXVlcnkgYW5kIHdyaXRlIGl0IHRvICRxdWVyeS1wcmludFxuICAkZmlyc3Q6IHRydWU7XG5cbiAgQGVhY2ggJGZlYXR1cmUgaW4gJHF1ZXJ5LWhvbGRlciB7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRmZWF0dXJlKTtcblxuICAgIC8vIFBhcnNlIGEgc2luZ2xlIGZlYXR1cmVcbiAgICBAaWYgKCRsZW5ndGggPT0gMSkge1xuICAgICAgLy8gRmVhdHVyZSBpcyBjdXJyZW50bHkgYSBsaXN0LCBncmFiIHRoZSBhY3R1YWwgdmFsdWVcbiAgICAgICRmZWF0dXJlOiBudGgoJGZlYXR1cmUsIDEpO1xuXG4gICAgICAvLyBNZWRpYSBUeXBlIG11c3QgYnkgY29udmVudGlvbiBiZSB0aGUgZmlyc3QgaXRlbSwgc28gaXQncyBzYWZlIHRvIGZsYXQgb3ZlcnJpZGUgJHF1ZXJ5LXByaW50LCB3aGljaCByaWdodCBub3cgc2hvdWxkIG9ubHkgYmUgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZVxuICAgICAgQGlmIChicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSkge1xuICAgICAgICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKCRmZWF0dXJlICE9ICdhbGwnKSB7XG4gICAgICAgICAgLy8gRm9yY2UgdGhlIHByaW50IG9mIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGUgaWYgKGZvcmNlIGFsbCBpcyB0cnVlIGFuZCBkZWZhdWx0IG1lZGlhIHR5cGUgaXMgYWxsKSBvciAoZGVmYXVsdCBtZWRpYSB0eXBlIGlzIG5vdCBhbGwpXG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAkZmVhdHVyZTtcbiAgICAgICAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuXG4gICAgICAgICAgLy8gU2V0IENvbnRleHRcbiAgICAgICAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtZWRpYSwgJHF1ZXJ5LXByaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgZG91YmxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAyKSB7XG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkgIT0gZmFsc2UpIHtcbiAgICAgICAgJHF1ZXJ5LXJlc29sdXRpb246ICRmZWF0dXJlO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcGFyc2VkOiBudWxsO1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLFxuICAgICAgICAvLyB3ZSBjaGVjayB0byBzZWUgaWYgb25lIGlzIGEgc2luZ2xlLXN0cmluZyB2YWx1ZSxcbiAgICAgICAgLy8gdGhlbiB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgICAgICAgJGFscGhhOiBudGgoJGZlYXR1cmUsIDEpO1xuICAgICAgICAkYmV0YTogbnRoKCRmZWF0dXJlLCAyKTtcbiAgICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYWxwaGEpIG9yIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkYmV0YSkge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRhbHBoYSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRiZXRhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFBhcnNlIGEgdHJpcGxlIGZlYXR1cmVcbiAgICBAZWxzZSBpZiAoJGxlbmd0aCA9PSAzKSB7XG4gICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuXG4gIEBpZiAoJHF1ZXJ5LXJlc29sdXRpb24gIT0gZmFsc2UpIHtcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gIH1cblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBmZWF0dXJlIHRoYXQncyBiZWVuIGRldGVjdGVkIHNvIGZhciBhbmQgYXBwZW5kICdmYWxzZScgdG8gdGhlIHRoZSB2YWx1ZSBsaXN0IHRvIGluY3JlbWVudCB0aGVpciBjb3VudGVyc1xuICBAZWFjaCAkZiwgJHYgaW4gJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciB7XG4gICAgJHYtaG9sZGVyOiAkdjtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAaWYgbGVuZ3RoKCR2LWhvbGRlcikgPCAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgICBAaWYgJGYgPT0gJ21lZGlhJyB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZjogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KSB7XG4gIC8vIFBhcnNlIGZlYXR1cmVzIG91dCBvZiBhbiBpbmRpdmlkdWFsIHF1ZXJ5XG4gICRmZWF0dXJlLWhvbGRlcjogKCk7XG4gICRxdWVyeS1ob2xkZXI6ICgpO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgYSBzdHJpbmcvbnVtYmVyLCBudW1iZXIvc3RyaW5nLCBjaGVjayB0byBzZWUgaWYgaXQncyBhIHZhbGlkIHN0cmluZy9udW1iZXIgcGFpciBvciB0d28gc2luZ2xlc1xuICAgIEBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSBvciAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG5cbiAgICAgICRudW1iZXI6ICcnO1xuICAgICAgJHZhbHVlOiAnJztcblxuICAgICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMik7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDEpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDIpO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIHZhbHVlIGNhbiBiZSBhIHNpbmdsZSB2YWx1ZSwgY2hlY2sgdG8gc2VlIGlmIHRoZSBudW1iZXIgcGFzc2VkIGluIGlzIGEgdmFsaWQgaW5wdXQgZm9yIHNhaWQgc2luZ2xlIHZhbHVlLiBGb3J0dW5hdGVseSwgYWxsIGN1cnJlbnQgc2luZ2xlLXZhbHVlIG9wdGlvbnMgb25seSBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycywgc28gdGhpcyBjaGVjayBpcyBlYXN5LlxuICAgICAgQGlmIGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkdmFsdWUpIHtcbiAgICAgICAgQGlmIHVuaXRsZXNzKCRudW1iZXIpIHtcbiAgICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgbWVkaWEgdHlwZSwgc3BsaXQgdGhlIHF1ZXJ5XG4gICAgICBAaWYgYnJlYWtwb2ludC1pcy1tZWRpYSgkdmFsdWUpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDIpKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQncyBub3QgYSBzaW5nbGUgZmVhdHVyZSwgd2UncmUganVzdCBnb2luZyB0byBhc3N1bWUgaXQncyBhIHByb3BlciBzdHJpbmcvdmFsdWUgcGFpciwgYW5kIHJvbGwgd2l0aCBpdC5cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuXG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBudW1iZXJzLCB3ZSBhc3N1bWUgaXQncyBhIGRvdWJsZSBhbmQgcm9sbCB3aXRoIHRoYXRcbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdudW1iZXInKSB7XG4gICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIHN0cmluZ3MgYW5kIG5laXRoZXIgYXJlIHNpbmdsZXMsIHdlIHJvbGwgd2l0aCB0aGF0LlxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7XG4gICAgLy8gSWYgd2UndmUgZ290IHRocmVlIGl0ZW1zIGFuZCBub25lIGlzIGEgbGlzdCwgd2UgY2hlY2sgdG8gc2VlXG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDMpKSAhPSAnbGlzdCcge1xuICAgICAgLy8gSWYgbm9uZSBvZiB0aGUgaXRlbXMgYXJlIHNpbmdsZSBzdHJpbmcgdmFsdWVzIGFuZCBub25lIG9mIHRoZSB2YWx1ZXMgYXJlIG1lZGlhIHZhbHVlcywgd2UncmUgZ29vZC5cbiAgICAgIEBpZiAobm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDMpKSkgYW5kICAoKG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMikpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAzKSkpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkZmVhdHVyZS1ob2xkZXIsIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgICAgLy8gbGV0J3MgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBpdGVtIGlzIGEgbWVkaWEgdHlwZVxuICAgICAgQGVsc2UgaWYgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAyKSwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlcik7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGl0ZW0sIG9yIGlmIGl0J3Mgbm90IGEgc3BlY2lhbCBjYXNlIGRvdWJsZSBvciB0cmlwbGUsIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSBxdWVyeS5cbiAgQHJldHVybiAkcXVlcnk7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInNpbmdsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBJZiBpdCdzIGEgc2luZ2xlIGZlYXR1cmUgdGhhdCBjYW4gc3RhbmQgYWxvbmUsIHdlIGxldCBpdFxuICBAaWYgKGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZygkZmVhdHVyZSkpIHtcbiAgICAkcGFyc2VkOiAkZmVhdHVyZTtcbiAgICAvLyBTZXQgQ29udGV4dFxuICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkZmVhdHVyZSk7XG4gIH1cbiAgLy8gSWYgaXQncyBub3QgYSBzdGFuZCBhbG9uZSBmZWF0dXJlLCB3ZSBwYXNzIGl0IG9mZiB0byB0aGUgZGVmYXVsdCBoYW5kbGVyLlxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICcoJyArICRwYXJzZWQgKyAnKSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0KCRmZWF0dXJlKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJyk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGRlZmF1bHQsICRmZWF0dXJlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSBhbmQgKHR5cGUtb2YoJGZlYXR1cmUpID09ICdudW1iZXInKSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7YnJlYWtwb2ludC10by1iYXNlLWVtKCRmZWF0dXJlKX0nO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3skZmVhdHVyZX0nO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0LXBhaXJcIjtcbkBpbXBvcnQgXCJkb3VibGUvZG91YmxlLXN0cmluZ1wiO1xuQGltcG9ydCBcImRvdWJsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAkZmlyc3Q6IG50aCgkZmVhdHVyZSwgMSk7XG4gICRzZWNvbmQ6IG50aCgkZmVhdHVyZSwgMik7XG5cbiAgLy8gSWYgd2UndmUgZ290IHR3byBudW1iZXJzLCB3ZSBrbm93IHdlIG5lZWQgdG8gdXNlIHRoZSBkZWZhdWx0IHBhaXIgYmVjYXVzZSB0aGVyZSBhcmUgbm8gbWVkaWEgcXVlcmllcyB0aGF0IGhhcyBhIG1lZGlhIGZlYXR1cmUgdGhhdCBpcyBhIG51bWJlclxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdudW1iZXInIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIHRoZXkgYXJlIGJvdGggc3RyaW5ncywgd2Ugc2VuZCBpdCB0aHJvdWdoIHRoZSBzdHJpbmcgcGFyc2VyXG4gIEBlbHNlIGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnc3RyaW5nJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpciwgd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgcGFpcicpO1xuICAkbWluOiAnJztcbiAgJG1heDogJyc7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZGVmYXVsdH0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZGVmYXVsdH0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZGVmYXVsdH06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGRlZmF1bHR9OiAjeyRtYXh9KSc7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtc3RyaW5nKCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgLy8gVGVzdCB0byBzZWUgd2hpY2ggaXMgdGhlIGZlYXR1cmUgYW5kIHdoaWNoIGlzIHRoZSB2YWx1ZVxuICBAaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmaXJzdCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkc2Vjb25kKSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiTmVpdGhlciAjeyRmaXJzdH0gbm9yICN7JHNlY29uZH0gaXMgYSB2YWxpZCBtZWRpYSBxdWVyeSBuYW1lLlwiO1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJztcbn0iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycge1xuICAgICRmZWF0dXJlOiAkZmlyc3Q7XG4gICAgJHZhbHVlOiAkc2Vjb25kO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkdmFsdWU6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkdmFsdWUpO1xuICB9XG5cbiAgQHJldHVybiAnKCN7JGZlYXR1cmV9OiAjeyR2YWx1ZX0pJ1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0cmlwbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcblxuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICAvLyBzZXBhcmF0ZSB0aGUgc3RyaW5nIGZlYXR1cmVzIGZyb20gdGhlIHZhbHVlIG51bWJlcnNcbiAgJHN0cmluZzogbnVsbDtcbiAgJG51bWJlcnM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJGZlYXR1cmUge1xuICAgIEBpZiB0eXBlLW9mKCR2YWwpID09IHN0cmluZyB7XG4gICAgICAkc3RyaW5nOiAkdmFsO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgdHlwZS1vZigkbnVtYmVycykgPT0gJ251bGwnIHtcbiAgICAgICAgJG51bWJlcnM6ICR2YWw7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRudW1iZXJzOiBhcHBlbmQoJG51bWJlcnMsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJHN0cmluZywgbnRoKCRudW1iZXJzLCAxKSwgbnRoKCRudW1iZXJzLCAyKSk7XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcblxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlLWRlZmF1bHQoJGZlYXR1cmUsICRmaXJzdCwgJHNlY29uZCkge1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGZlYXR1cmV9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGZlYXR1cmV9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGZlYXR1cmV9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRmZWF0dXJlfTogI3skbWF4fSknO1xufVxuIiwiQGltcG9ydCBcInJlc29sdXRpb24vcmVzb2x1dGlvblwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRsZWFkZXI6ICcnO1xuICAvLyBJZiB3ZSdyZSBmb3JjaW5nXG4gIEBpZiBub3QgKCRlbXB0eS1tZWRpYSkgb3Igbm90ICgkZmlyc3QpIHtcbiAgICAkbGVhZGVyOiAnYW5kICc7XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIGFuZCAkcXVlcnktcmVzb2x1dGlvbiB7XG4gICAgJHJlc29sdXRpb25zOiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHF1ZXJ5LXJlc29sdXRpb24pO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbnMpO1xuICAgICRxdWVyeS1ob2xkZXI6ICcnO1xuXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICRxdWVyeTogJyN7JHF1ZXJ5LXByaW50fSAjeyRsZWFkZXJ9I3tudGgoJHJlc29sdXRpb25zLCAkaSl9JztcbiAgICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJHF1ZXJ5O1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAnI3skcXVlcnktaG9sZGVyfSwgI3skcXVlcnl9JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIFJldHVybiB3aXRoIGF0dGFjaGVkIHJlc29sdXRpb25cbiAgICBAcmV0dXJuICRxdWVyeS1wcmludDtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcmVzb2x1dGlvbikge1xuICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb24pO1xuXG4gICRvdXRwdXQ6ICgpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgICRmZWF0dXJlOiAnJztcbiAgICAkdmFsdWU6ICcnO1xuXG4gICAgLy8gRmluZCB3aGljaCBpcyBudW1iZXJcbiAgICBAaWYgdHlwZS1vZihudGgoJHJlc29sdXRpb24sIDEpKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAyKTtcbiAgICB9XG5cbiAgICAvLyBEZXRlcm1pbmUgbWluL21heC9zdGFuZGFyZFxuICAgIEBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21pbi1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtaW4tJztcbiAgICB9XG4gICAgQGVsc2UgaWYgaW5kZXgoJHJlc29sdXRpb24sICdtYXgtcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWF4LSc7XG4gICAgfVxuXG4gICAgJHN0YW5kYXJkOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWV9KSc7XG5cbiAgICAvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGRwcHgsXG4gICAgQGlmIHVuaXQoJHZhbHVlKSAhPSAnZHBweCcge1xuICAgICAgJGJhc2U6IDk2ZHBpO1xuICAgICAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZHBjbScge1xuICAgICAgICAkYmFzZTogMjQzLjg0ZHBjbTtcbiAgICAgIH1cbiAgICAgIC8vIFdyaXRlIG91dCBmZWF0dXJlIHRlc3RzXG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvICRiYXNlfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gMWRwcHh9KSc7XG4gICAgICAkZmFsbGJhY2s6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZSAvIDFkcHB4ICogOTZkcGl9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkZmFsbGJhY2ssIHNwYWNlKTtcbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW5vLXF1ZXJ5KCRxdWVyeSkge1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09ICdsaXN0JyB7XG4gICAgJGtleXdvcmQ6IG50aCgkcXVlcnksIDEpO1xuXG4gICAgQGlmIHR5cGUtb2YoJGtleXdvcmQpID09ICdzdHJpbmcnIGFuZCAoJGtleXdvcmQgPT0gJ25vLXF1ZXJ5JyBvciAka2V5d29yZCA9PSAnbm8gcXVlcnknIG9yICRrZXl3b3JkID09ICdmYWxsYmFjaycpIHtcbiAgICAgIEByZXR1cm4gbnRoKCRxdWVyeSwgMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgdGhlIEJyZWFrcG9pbnRzIHZhcmlhYmxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4kQlJFQUtQT0lOVFM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlc3BvbmQtdG8gQVBJIE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiByZXNwb25kLXRvKCRjb250ZXh0LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA+IDAgYW5kIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtZXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGFkZCBicmVha3BvaW50cyBmb3IgcmVzcG9uZC10by4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KClgIHRvIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgpYC4gVGhlIGBhZGQtYnJlYWtwb2ludCgpYCBmdW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIjtcbiAgICAkQlJFQUtQT0lOVFM6ICRicmVha3BvaW50cyAhZ2xvYmFsO1xuICAgICRicmVha3BvaW50czogKCkgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRCUkVBS1BPSU5UUykgIT0gJ21hcCcge1xuICAgIC8vIEp1c3QgaW4gY2FzZSBzb21lb25lIHdyaXRlcyBnaWJiZXJpc2ggdG8gdGhlICRicmVha3BvaW50cyB2YXJpYWJsZS5cbiAgICBAd2FybiBcIllvdXIgYnJlYWtwb2ludHMgYXJlbid0IGEgbWFwISBgcmVzcG9uZC10b2AgZXhwZWN0cyBhIG1hcC4gUGxlYXNlIGNoZWNrIHRoZSB2YWx1ZSBvZiAkQlJFQUtQT0lOVFMgdmFyaWFibGUuXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFwLWdldCgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAd2FybiBcImAjeyRjb250ZXh0fWAgaXNuJ3QgYSBkZWZpbmVkIGJyZWFrcG9pbnQhIFBsZWFzZSBhZGQgaXQgdXNpbmcgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoYCN7JGNvbnRleHR9YCwgJHZhbHVlKTtgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiWW91IGhhdmVuJ3QgY3JlYXRlZCBhbnkgYnJlYWtwb2ludHMgeWV0ISBNYWtlIHNvbWUgYWxyZWFkeSEgYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdClgXCI7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBZGQgQnJlYWtwb2ludCB0byBCcmVha3BvaW50c1xuLy8gVE9ETzogUmVtb3ZlIGZ1bmN0aW9uIGluIG5leHQgcmVsZWFzZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPT0gMCB7XG4gICAgQHJldHVybiAkb3V0cHV0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgIEByZXR1cm4gJGJyZWFrcG9pbnRzO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgIEByZXR1cm4gbWFwLW1lcmdlKCRicmVha3BvaW50cywgJG91dHB1dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICAkQlJFQUtQT0lOVFM6ICRvdXRwdXQgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICAkQlJFQUtQT0lOVFM6ICRCUkVBS1BPSU5UUyAhZ2xvYmFsO1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgb3IgJG92ZXJ3cml0ZSA9PSB0cnVlIHtcbiAgICAgICRCUkVBS1BPSU5UUzogbWFwLW1lcmdlKCRCUkVBS1BPSU5UUywgJG91dHB1dCkgIWdsb2JhbDtcbiAgICB9XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGdldC1icmVha3BvaW50KCRuYW1lOiBmYWxzZSkge1xuICBAaWYgJG5hbWUgPT0gZmFsc2Uge1xuICAgIEByZXR1cm4gJEJSRUFLUE9JTlRTO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkbmFtZSk7XG4gIH1cbn1cbiIsIkBtaXhpbiBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZyB7XG4gICRsZWdhY3lWYXJzOiAoXG4gICAgJ2RlZmF1bHQtbWVkaWEnOiAnZGVmYXVsdCBtZWRpYScsXG4gICAgJ2RlZmF1bHQtZmVhdHVyZSc6ICdkZWZhdWx0IGZlYXR1cmUnLFxuICAgICdmb3JjZS1tZWRpYS1hbGwnOiAnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLFxuICAgICd0by1lbXMnOiAndG8gZW1zJyxcbiAgICAncmVzb2x1dGlvbnMnOiAndHJhbnNmb3JtIHJlc29sdXRpb25zJyxcbiAgICAnbm8tcXVlcmllcyc6ICdubyBxdWVyaWVzJyxcbiAgICAnbm8tcXVlcnktZmFsbGJhY2tzJzogJ25vIHF1ZXJ5IGZhbGxiYWNrcycsXG4gICAgJ2Jhc2UtZm9udC1zaXplJzogJ2Jhc2UgZm9udCBzaXplJyxcbiAgICAnbGVnYWN5LXN5bnRheCc6ICdsZWdhY3kgc3ludGF4J1xuICApO1xuXG4gIEBlYWNoICRsZWdhY3ksICRuZXcgaW4gJGxlZ2FjeVZhcnMge1xuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LScgKyAkbGVnYWN5KSB7XG4gICAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbXNwYWNlIGNvbGxpc2lvbnMsIHdlIGhhdmUgdXBkYXRlZCB0aGUgd2F5IHRvIGNoYW5nZSBzZXR0aW5ncyBmb3IgQnJlYWtwb2ludC4gUGxlYXNlIGNoYW5nZSBhbGwgaW5zdGFuY2VzIG9mIGAkYnJlYWtwb2ludC0jeyRsZWdhY3l9OiB7e3NldHRpbmd9fWAgdG8gYEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCcjeyRuZXd9Jywge3tzZXR0aW5nfX0pYC4gVmFyaWFibGUgc2V0dGluZ3MsIGFzIHdlbGwgYXMgdGhpcyB3YXJuaW5nIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgfVxuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBIYW5kIGNvcnJlY3QgZWFjaCBzZXR0aW5nXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgbWVkaWEnLCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2RlZmF1bHQgZmVhdHVyZScsICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsJykgYW5kICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCAhPSBicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJywgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC10by1lbXMnKSBhbmQgJGJyZWFrcG9pbnQtdG8tZW1zICE9IGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RvIGVtcycsICRicmVha3BvaW50LXRvLWVtcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtcmVzb2x1dGlvbnMnKSBhbmQgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMgIT0gYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJywgJGJyZWFrcG9pbnQtcmVzb2x1dGlvbnMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJpZXMnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcmllcycsICRicmVha3BvaW50LW5vLXF1ZXJpZXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbm8gcXVlcnkgZmFsbGJhY2tzJywgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZScpIGFuZCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSAhPSBicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2Jhc2UgZm9udCBzaXplJywgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWxlZ2FjeS1zeW50YXgnKSBhbmQgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCAhPSBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnbGVnYWN5IHN5bnRheCcsICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXgpO1xuICB9XG59IiwiQGltcG9ydCAnZnVuY3Rpb25zJztcbkBpbXBvcnQgJ3otaW5kZXgnO1xuQGltcG9ydCAnbWVkaWEtcXVlcmllcyc7XG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAndW5pYm9hcmQnO1xuQGltcG9ydCAnbWl4aW5zJztcbkBpbXBvcnQgJ2V4dGVuZHMnO1xuQGltcG9ydCAnZmxleCc7XG5AaW1wb3J0ICdib3gnO1xuQGltcG9ydCAnZmx1aWQtc2l6ZSc7XG4iLCIvLy8gWi1pbmRleGVzIG1hcCwgZ2F0aGVyaW5nIGFsbCBaIGxheWVycyBvZiB0aGUgYXBwbGljYXRpb25cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLyBAdHlwZSBNYXBcbi8vLyBAcHJvcCB7U3RyaW5nfSBrZXkgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEBwcm9wIHtOdW1iZXJ9IHZhbHVlIC0gWiB2YWx1ZSBtYXBwZWQgdG8gdGhlIGtleVxuJHotaW5kZXhlczogKFxuICAnY2dfX3Byb21vdGlvbic6IDIwNSxcbiAgJ2NnX19waWVjZS5kcmFnZ2luZyc6IDIwNCxcbiAgJ2NnX19ib2FyZC5vdmVybGF5JzogMTAwLFxuICAnY2dfX3BpZWNlLmFuaW0nOiAzLFxuICAnY2dfX3N2Zy5jZy1zaGFwZXMnOiAyLFxuICAnY2dfX3N2Zy5jZy1jdXN0b20tc3Zncyc6IDQsXG4gICdjZ19fcGllY2UnOiAyLFxuICAnY2dfX3BpZWNlLmZhZGluZyc6IDEsXG4gICdwb3dlcnRpcCc6IDEyMCxcbiAgJ2NvbXBsZXRlJzogMTEyLFxuICAnaW5xdWlyeSc6IDExMSxcbiAgJ3plbi10b2dnbGUnOiAxMTAsXG4gICdtb2RhbCc6IDExMCxcbiAgJ21zZWxlY3QnOiAxMTAsXG4gICd0b3BuYXYnOiAxMTAsXG4gICdmdWxsc2NyZWVuLW1hc2snOiAxMDksXG4gICdkcm9wZG93bic6IDEwOCxcbiAgJ2NvbnRleHQtbWVudSc6IDEwNyxcbiAgJ3NpdGUtaGVhZGVyJzogMTA2LFxuICAncmVjb25uZWN0aW5nJzogMTA1LFxuICAndG91ci1yZW1pbmRlcic6IDEwNCxcbiAgJ216LW1lbnUnOiA0LFxuICAnYWJvdmUtbGluay1vdmVybGF5JzogMyxcbiAgJ2ZyaWVuZC1ib3gnOiAyLFxuICAnbGluay1vdmVybGF5JzogMixcbiAgJ2dhbWUtYm9va21hcmsnOiAyLFxuICAnc3VibmF2LXNpZGUnOiAyLFxuICAnZGVmYXVsdCc6IDAsXG4pO1xuXG4vLy8gR2V0IGEgei1pbmRleCB2YWx1ZSBmcm9tIGEgbGF5ZXIgbmFtZVxuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRsYXllciAtIExheWVy4oCZcyBuYW1lXG4vLy8gQHJldHVybiB7TnVtYmVyfVxuLy8vIEByZXF1aXJlICR6LWluZGV4ZXNcbkBmdW5jdGlvbiB6KCRsYXllcikge1xuICBAcmV0dXJuIG1hcC1nZXQoJHotaW5kZXhlcywgJGxheWVyKTtcbn1cbiIsIi8qIFdpZHRocyAqL1xuXG4kbXEteHgtc21hbGw6IG1pbi13aWR0aCA1MDBweDtcbiRtcS14LXNtYWxsOiBtaW4td2lkdGggNjUwcHg7XG4kbXEtc21hbGw6IG1pbi13aWR0aCA4MDBweDtcbiRtcS1tZWRpdW06IG1pbi13aWR0aCA5ODBweDtcbiRtcS1sYXJnZTogbWluLXdpZHRoIDExMjBweDtcbiRtcS14LWxhcmdlOiBtaW4td2lkdGggMTI2MHB4O1xuXG4kbXEtbm90LXh4LXNtYWxsOiBtYXgtd2lkdGggNDk5cHg7XG4kbXEtbm90LXgtc21hbGw6IG1heC13aWR0aCA2NDlweDtcbiRtcS1ub3Qtc21hbGw6IG1heC13aWR0aCA3OTlweDtcbiRtcS1ub3QtbWVkaXVtOiBtYXgtd2lkdGggOTc5cHg7XG4kbXEtbm90LWxhcmdlOiBtYXgtd2lkdGggMTExOXB4O1xuJG1xLW5vdC14LWxhcmdlOiBtYXgtd2lkdGggMTI1OXB4O1xuXG4vKiBIZWlnaHRzICovXG5cbiRtcS14LXNob3J0OiBtaW4taGVpZ2h0IDQwMHB4O1xuJG1xLXNob3J0OiBtaW4taGVpZ2h0IDUwMHB4O1xuJG1xLXRhbGw6IG1pbi1oZWlnaHQgNjAwcHg7XG4kbXEteC10YWxsOiBtaW4taGVpZ2h0IDcwMHB4O1xuXG4kbXEtbm90LXgtc2hvcnQ6IG1heC1oZWlnaHQgMzk5cHg7XG5cbi8qIE9yaWVudGF0aW9ucyAqL1xuXG4kbXEtcG9ydHJhaXQ6IG9yaWVudGF0aW9uIHBvcnRyYWl0O1xuJG1xLWxhbmRzY2FwZTogb3JpZW50YXRpb24gbGFuZHNjYXBlO1xuXG4vKiBDYXBhYmlsaXRpZXMgKi9cblxuJG1xLWhvdmVyLXllczogJ2hvdmVyOiBob3Zlcic7XG4kbXEtaG92ZXItbm86IGhvdmVyIG5vbmU7XG5cbi8qIEFsaWFzZXMgKi9cblxuJG1xLW1haW4tbWFyZ2luOiAkbXEtc21hbGw7XG5cbiRtcS10b3BuYXYtdmlzaWJsZTogJG1xLW1lZGl1bTtcbiRtcS10b3BuYXYtaGlkZGVuOiAkbXEtbm90LW1lZGl1bTtcblxuJG1xLXNpdGUtaGVhZGVyLXRhbGw6ICRtcS10YWxsO1xuXG4kbXEtc3VibmF2LXRvcDogJG1xLW5vdC1zbWFsbDtcbiRtcS1zdWJuYXYtc2lkZTogJG1xLXNtYWxsO1xuXG4kbXEtem9vbS1lbmFibGVkOiAkbXEtc21hbGwgJG1xLXNob3J0O1xuIiwiJGRlYnVnOiBmYWxzZTtcblxuJGZvbnQtcGF0aDogJy4uL2ZvbnQnO1xuJGltZy1wYXRoOiAnLi4vaW1hZ2VzJztcblxuJHZpZXdwb3J0LW1pbi13aWR0aDogMzIwcHg7XG5cbiRibG9jay1nYXA6IDJ2bWluO1xuJGJsb2NrLWdhcC1oYWxmOiAxdm1pbjtcblxuJGJsb2NrLWdhcC1oOiAydmg7XG4kYmxvY2stZ2FwLXc6IDJ2dztcbiRibG9jay1nYXAtdy1oYWxmOiAxdnc7XG5cbiRib3gtcmFkaXVzLXNpemU6IDNweDtcblxuJHNpdGUtaGVhZGVyLXRhbGwtaGVpZ2h0OiA2MHB4O1xuJHNpdGUtaGVhZGVyLXNob3J0LWhlaWdodDogNDBweDtcblxuJHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xuXG4kbWFpbi1tYXgtd2lkdGg6IDEzMDBweCAhZGVmYXVsdDtcblxuJG1haW4tbWFyZ2luOiB2YXIoLS1tYWluLW1hcmdpbik7XG4kc2l0ZS1oZWFkZXItaGVpZ2h0OiB2YXIoLS1zaXRlLWhlYWRlci1oZWlnaHQpO1xuXG4kc2l0ZS1oZWFkZXItbWFyZ2luOiB2YXIoLS1zaXRlLWhlYWRlci1tYXJnaW4pO1xuXG4kc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0OiBjYWxjKCN7JHNpdGUtaGVhZGVyLWhlaWdodH0gKyAjeyRzaXRlLWhlYWRlci1tYXJnaW59KTtcbiIsIi8qIFVuaWJvYXJkOiBrZWVwIHRoZSBzYW1lIHBhZ2UgbGF5b3V0IGFjcm9zcyBwYWdlcyAqL1xuXG4kbXEtYm9hcmQtcmVzaXphYmxlOiAkbXEtc21hbGw7XG4kbXEtY29sMS11bmlib2FyZDogJG1xLW5vdC1zbWFsbCAkbXEtcG9ydHJhaXQ7XG4kbXEtY29sMi11bmlib2FyZDogJG1xLXNtYWxsLCAkbXEtbGFuZHNjYXBlO1xuJG1xLWNvbDMtdW5pYm9hcmQ6ICRtcS14LWxhcmdlO1xuXG4vKiB3aGVuIHRoZSB3aWR0aCBpcyBhcHByb3ByaWF0ZSBmb3IgY29sMSwgYnV0IGxhbmRzY2FwZSBwcmV2ZW50cyBpdCAqL1xuJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZTogJG1xLW5vdC1zbWFsbCAkbXEtbGFuZHNjYXBlO1xuXG4kY29sMy11bmlib2FyZC1zaWRlOiBtaW5tYXgoMjMwcHgsIDIwdncpO1xuJGNvbDMtdW5pYm9hcmQtdGFibGU6IG1pbm1heCgyNDBweCwgNDAwcHgpO1xuJGNvbDMtdW5pYm9hcmQtY29udHJvbHM6IDNyZW07XG5cbiRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aDogY2FsYyg3MHZtaW4gKiB2YXIoLS1ib2FyZC1zY2FsZSkpO1xuJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoOiBjYWxjKDEwMHZoICogdmFyKC0tYm9hcmQtc2NhbGUpIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDMtdW5pYm9hcmQtY29udHJvbHN9KTtcbiRjb2wzLXVuaWJvYXJkLXdpZHRoOiBtaW5tYXgoJGNvbDMtdW5pYm9hcmQtbWluLXdpZHRoLCAkY29sMy11bmlib2FyZC1tYXgtd2lkdGgpO1xuXG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlOiAwLjk7XG5cbi8vIHpvb206IDg1JVxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1taW4td2lkdGg6IDUwMHB4O1xuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGg6IGNhbGMoXG4gIDEwMHZoICogI3skY29sMy11bmlib2FyZC1kZWZhdWx0LXNjYWxlfSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfVxuKTtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtd2lkdGg6IG1pbm1heCgjeyRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRofSwgI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1heC13aWR0aH0pO1xuXG4kY29sMi11bmlib2FyZC10YWJsZTogJGNvbDMtdW5pYm9hcmQtdGFibGU7XG4kY29sMi11bmlib2FyZC1jb250cm9sczogJGNvbDMtdW5pYm9hcmQtY29udHJvbHM7XG4kY29sMi11bmlib2FyZC13aWR0aDogJGNvbDMtdW5pYm9hcmQtd2lkdGg7XG4kY29sMi11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiAkY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoO1xuXG4kY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlOiBtaW5tYXgoMjAwcHgsIDI0MHB4KTtcbiRjb2wyLXVuaWJvYXJkLXNxdWVlemUtd2lkdGg6IG1pbm1heChjYWxjKDU1dm1pbiksIGNhbGMoMTAwdmggLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skYmxvY2stZ2FwfSkpO1xuXG4kY29sMS11bmlib2FyZC1jb250cm9sczogNXJlbTtcbiIsIkBtaXhpbiBib3gtcmFkaXVzIHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuQG1peGluIGJveC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAkYm94LXNoYWRvdztcbn1cblxuQG1peGluIGJveC1uZWF0IHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuQG1peGluIGRlYnVnLXpvb20taW5wdXQge1xuICAjem9vbS1pbnB1dCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXpvb20tZW5hYmxlZCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDNweDtcbiAgICAgIHJpZ2h0OiAzcHg7XG4gICAgICB3aWR0aDogMTB2dztcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24oJHByb3A6IGFsbCwgJGR1cjogJHRyYW5zaXRpb24tZHVyYXRpb24pIHtcbiAgdHJhbnNpdGlvbjogJHByb3AgJGR1cjtcbn1cblxuQG1peGluIGhvdmVyZmxvdyB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOm5vdCg6aG92ZXIpIHtcbiAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgLmJsaW5kLW1vZGUgJiB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gZWxsaXBzaXMge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuQG1peGluIGNyb3NzdGFibGUtbGFyZ2Uge1xuICAuY3Jvc3N0YWJsZV9fdXNlcnMge1xuICAgIGZsZXg6IDcgMSBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLXNtYWxsIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gYm9keS1maXhlZC1zY3JvbGwge1xuICBib2R5IHtcbiAgICAvKiBwcmV2ZW50cyBzY3JvbGwgYmFyIGZsaWNrZXIgd2hlbiBkcmFnZ2luZyBhIHBpZWNlIG91dCAqL1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxufVxuIiwiJWJhc2UtZm9udC1mYWxsYmFjayB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJWJhc2UtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBTYW5zJywgU2Fucy1TZXJpZjtcbn1cblxuJXJvYm90byB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgU2Fucy1TZXJpZjtcbn1cblxuJXJvYm90by1mYXQge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiVjaGVzcy1mb250IHtcbiAgZm9udC1mYW1pbHk6ICdOb3RvIENoZXNzJywgJ05vdG8gU2Fucyc7XG59XG5cbiVzYW4ge1xuICBAZXh0ZW5kICVjaGVzcy1mb250O1xuXG4gIC5waWVjZS1sZXR0ZXIgJiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuICB9XG5cbiAgZHJhdyB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuICAgIG1hcmdpbi1sZWZ0OiAxY2g7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG4vKiB0ZXh0IHByaW50ZWQgZGlyZWN0bHkgb24gdGhlIHBhZ2UgYmFja2dyb3VuZCBkZXNlcnZlcyBzcGVjaWFsIHRyZWF0bWVudCAodHJhbnNwIHRoZW1lKSAqL1xuJXBhZ2UtZm9udCB7XG4gIGNvbG9yOiAkYy1mb250LXBhZ2U7XG59XG5cbiVwYWdlLXRleHQge1xuICBAZXh0ZW5kICVwYWdlLWZvbnQsICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJXBhZ2UtbGluayB7XG4gIEBleHRlbmQgJXBhZ2UtbGluay1mb250ICFvcHRpb25hbDtcblxuICBAZXh0ZW5kICVwYWdlLXRleHQtc2hhZG93ICFvcHRpb25hbDtcbn1cblxuJW1ldGFsIHtcbiAgQGluY2x1ZGUgbWV0YWw7XG59XG5cbiVtZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG4lcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVwYWdlLW1ldGFsLWhvdmVyIHtcbiAgQGluY2x1ZGUgcGFnZS1tZXRhbDtcbn1cblxuJW1ldGFsLWJnIHtcbiAgQGluY2x1ZGUgbWV0YWwtYmc7XG59XG5cbiVhY3RpdmUtaW5zZXQtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IGhzbGEoMCwgMCwgMCwgMC4xNSkgaW5zZXQ7XG59XG5cbiVhY3RpdmUge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLWFjY2VudDtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAwIDFweCAxcHggYmxhY2sgIWltcG9ydGFudDtcbn1cblxuJWFjdGl2ZS1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IG1peCh3aGl0ZSwgJGMtYWNjZW50LCAyMCUpO1xufVxuXG4lYWN0aXZlLXNvZnQge1xuICBAZXh0ZW5kICVhY3RpdmUtaW5zZXQtc2hhZG93O1xuXG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xuICBjb2xvcjogJGMtZm9udC1jbGVhcmVyO1xuICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggJGMtZm9udC1zaGFkb3cgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbiVkcm9wZG93bi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAtMXB4IDVweCA2cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4lcG9wdXAtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAxNHB4IDI4cHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCAxMHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIyKTtcbn1cblxuJWJ1dHRvbi1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDJweCA1cHggMCBoc2xhKDAsIDAsIDAlLCAwLjIyNSk7XG59XG5cbiVidXR0b24tcmFpc2VkLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggMHB4IGhzbGEoMCwgMCwgMCwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLW5vbmUge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGNvbG9yOiAkYy1mb250O1xuICBhbGlnbi1pdGVtczogbm9ybWFsO1xufVxuXG4lY2hlY2tib3gge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYmFja2dyb3VuZDogJGMtYmctcGFnZTtcbiAgYm9yZGVyOiAxcHggc29saWQgJGMtYmctbG93O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAuNWVtO1xuXG4gICY6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5LWRpbW1lcjtcbiAgICBib3JkZXItY29sb3I6ICRjLXNlY29uZGFyeS1kaW07XG4gIH1cbn1cblxuJWZvY3VzLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICRjLWZvbnQtZGltO1xufVxuXG4lemFsZ292ZXJmbG93IHtcbiAgLy8gbWl0aWdhdGUgemFsZ28gdGV4dFxuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWhpZGRlbiB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiVub3dyYXAtZWxsaXBzaXMge1xuICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4lYm94LXBhZGRpbmcge1xuICBwYWRkaW5nOiA1dmggdmFyKC0tYm94LXBhZGRpbmcpO1xufVxuXG4lYm94LXBhZGRpbmctaG9yaXoge1xuICBwYWRkaW5nOiAwIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJyZWFrLXdvcmQge1xuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuXG4lYnJlYWstd29yZC1oYXJkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xuXG4gIC8qIHN1cHBvcnQ6IGZpcmVmb3ggKi9cbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLW5vcGUge1xuICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcbn1cblxuJWVsbGlwc2lzIHtcbiAgQGluY2x1ZGUgZWxsaXBzaXM7XG59XG5cbiVzcXVhcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuJXZpZGVvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXG4gIC8qIDE2LzkgKi9cbiAgLy8gcGFkZGluZy1ib3R0b206IDc1JTsgLyogNC8zICovXG4gIHdpZHRoOiAxMDAlO1xuXG4gID4gKiB7XG4gICAgQGV4dGVuZCAlYWJzLTEwMDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4lZ2FtZS1lbWJlZCB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIHBhZGRpbmctYm90dG9tOiAxNjAlO1xuICB9XG59XG5cbiVkYXRhLWljb24ge1xuICBmb250LXNpemU6IDEuMmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICBjb250ZW50OiBhdHRyKGRhdGEtaWNvbik7XG4gIG9wYWNpdHk6IDAuOTtcbn1cblxuJWRhdGEtaWNvbi10b3Age1xuICAmOjpiZWZvcmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxufVxuXG4lZnVsbHNjcmVlbi1tYXNrIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQ6ICRjLXBhZ2UtbWFzaztcbiAgei1pbmRleDogeignZnVsbHNjcmVlbi1tYXNrJyk7XG59XG5cbiVsaW5rLW92ZXJsYXkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogeignbGluay1vdmVybGF5Jyk7XG59XG5cbiVhYnMtMTAwIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4lZG91YmxlLXRhcCB7XG4gIC8vIHByZXZlbnQgaVBhZCBzYWZhcmkgZnJvbSB6b29taW5nIGluIG9uIGRvdWJsZSB0YXBcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG59XG4iLCIlZmxleC13cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbn1cblxuJWZsZXgtY2VudGVyIHtcbiAgLyogZXh0ZW5kcyAlZmxleC13cmFwICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWNlbnRlci1ub3dyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbiVmbGV4LWJldHdlZW4ge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tbm93cmFwIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbiVmbGV4LWJldHdlZW4tc3RyZXRjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbiVmbGV4LWFyb3VuZCB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4lZmxleC1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbjtcbn1cbiIsIiVib3gtcmFkaXVzIHtcbiAgQGluY2x1ZGUgYm94LXJhZGl1cztcbn1cblxuJWJveC1yYWRpdXMtZm9yY2Uge1xuICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLyogaGVscHMgd2l0aCBjbGlwcGluZyBiYWNrZ3JvdW5kIGludG8gYm9yZGVyLXJhZGl1cyAqL1xufVxuXG4lYm94LXJhZGl1cy1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgJGJveC1yYWRpdXMtc2l6ZTtcbn1cblxuJWJveC1yYWRpdXMtcmlnaHQge1xuICBib3JkZXItcmFkaXVzOiAwICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwO1xufVxuXG4lYm94LXJhZGl1cy10b3Age1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemUgMCAwO1xufVxuXG4lYm94LXJhZGl1cy1ib3R0b20ge1xuICBib3JkZXItcmFkaXVzOiAwIDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy10b3AtbGVmdCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgMCAwIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtc2hhZG93IHtcbiAgQGluY2x1ZGUgYm94LXNoYWRvdztcbn1cblxuJWJveC1uZWF0IHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXM7XG59XG5cbiVib3gtbmVhdC10b3Age1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cy10b3A7XG59XG5cbiVib3gtbmVhdC1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLWZvcmNlO1xufVxuIiwiJHZwLW1pbi13aWR0aDogMzIwcHggIWRlZmF1bHQ7XG4kdnAtbWF4LXdpZHRoOiAxMjAwcHggIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCR2YWx1ZSkge1xuICBAcmV0dXJuICR2YWx1ZSAvICgkdmFsdWUgKiAwICsgMSk7XG59XG5cbkBtaXhpbiBmbHVpZC1zaXplKCRwcm9wLCAkbWluLXNpemUsICRtYXgtc2l6ZSwgJG1pbi12dzogJHZwLW1pbi13aWR0aCwgJG1heC12dzogJHZwLW1heC13aWR0aCkge1xuICAkdTE6IHVuaXQoJG1pbi12dyk7XG4gICR1MjogdW5pdCgkbWF4LXZ3KTtcbiAgJHUzOiB1bml0KCRtaW4tc2l6ZSk7XG4gICR1NDogdW5pdCgkbWF4LXNpemUpO1xuXG4gIEBpZiAkdTEgPT0gJHUyIGFuZCAkdTEgPT0gJHUzIGFuZCAkdTEgPT0gJHU0IHtcbiAgICAmIHtcbiAgICAgICN7JHByb3B9OiAkbWluLXNpemU7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluLXZ3KSB7XG4gICAgICAgICN7JHByb3B9OiBjYWxjKFxuICAgICAgICAgICN7JG1pbi1zaXplfSArICN7c3RyaXAtdW5pdCgkbWF4LXNpemUgLSAkbWluLXNpemUpfSAqXG4gICAgICAgICAgICAoKDEwMHZ3IC0gI3skbWluLXZ3fSkgLyAje3N0cmlwLXVuaXQoJG1heC12dyAtICRtaW4tdncpfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtYXgtdncpIHtcbiAgICAgICAgI3skcHJvcH06ICRtYXgtc2l6ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcImZsdWlkLXNpemUgcmVxdWlyZXMgdGhhdCBhbGwgdmFsdWVzIGhhdmUgdGhlIHNhbWUgdW5pdFwiO1xuICB9XG59XG4iLCJjb29yZHMge1xuICAvKiBoYW5kbGUgaGlkZGVuIGNvb3JkcyAqL1xuICAuY29vcmRzLW5vICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvKiBoYW5kbGUgaW5uZXIgY29vcmRzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgQGluY2x1ZGUgZmx1aWQtc2l6ZSgnZm9udC1zaXplJywgOHB4LCAxMnB4KTtcblxuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtc2hhZG93OiAwIDFweCAycHggIzAwMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgJi5yYW5rcyB7XG4gICAgZmxleC1mbG93OiBjb2x1bW4tcmV2ZXJzZTtcbiAgICB0b3A6IDFweDtcbiAgICByaWdodDogMDtcblxuICAgIC8vIGEgbmVnYXRpdmUgdmFsdWUgY3JlYXRlcyBlbXB0eSBzcGFjZSBvbiB0aGUgcmlnaHQgc2lkZSBpbiBtb2JpbGUgYnJvd3NlcnNcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDAuOGVtO1xuXG4gICAgJi5ibGFjayB7XG4gICAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICAmLmZpbGVzIHtcbiAgICBib3R0b206IDBweDtcbiAgICBsZWZ0OiAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgZmxleC1mbG93OiByb3c7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxLjRlbTtcblxuICAgICYuYmxhY2sge1xuICAgICAgZmxleC1mbG93OiByb3ctcmV2ZXJzZTtcbiAgICB9XG5cbiAgICBjb29yZCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAgICB9XG4gIH1cblxuICBjb29yZCB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cblxuICAvKiBuZWdhdGUgaW5uZXIgY29vcmRzIGNvbG9ycyAqL1xuICAuaXMzZCAuY2ctd3JhcCBjb29yZHMgY29vcmQge1xuICAgIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCAjMDAwICFpbXBvcnRhbnQ7XG4gIH1cblxuICAuaXMzZCAuY2ctd3JhcCBjb29yZHMuZmlsZXMge1xuICAgIGJvdHRvbTogY2FsYygxcHggLSAyLjUlKTtcblxuICAgIGNvb3JkIHtcbiAgICAgIHBhZGRpbmctbGVmdDogM3B4O1xuICAgIH1cbiAgfVxufVxuXG5AaW1wb3J0ICdjb29yZHMtY29sb3JzJztcblxuLyogaGFuZGxlIG91dGVyIGNvb3JkcyAqL1xuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMi11bmlib2FyZCkge1xuICAuY29vcmRzLW91dCBjb29yZHMge1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuXG4gICAgJi5yYW5rcyB7XG4gICAgICByaWdodDogLTE1cHg7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMTJweDtcblxuICAgICAgY29vcmQge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDIlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZpbGVzIHtcbiAgICAgIGJvdHRvbTogLTE1cHg7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIC5jb29yZHMtb3V0IGNvb3Jkcy5yYW5rcyxcbiAgLmNvb3Jkcy1vdXQgLmlzMmQgY29vcmRzLmZpbGVzIHtcbiAgICBjb29yZCB7XG4gICAgICBjb2xvcjogJGMtZm9udC1wYWdlICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLCIkY29vcmQtY29sb3ItZGVmYXVsdDogI2ZmZjtcbiRjb29yZC1zaGFkb3ctZGVmYXVsdDogMCAxcHggMnB4ICMwMDA7XG5cbmNvb3JkcyB7XG4gIHRleHQtc2hhZG93OiB2YXIoLS1jZy1jcywgJGNvb3JkLXNoYWRvdy1kZWZhdWx0KTtcbn1cblxuLm9yaWVudGF0aW9uLXdoaXRlIC5maWxlcyBjb29yZDpudGgtY2hpbGQoMm4gKyAxKSxcbi5vcmllbnRhdGlvbi13aGl0ZSAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuKSxcbi5vcmllbnRhdGlvbi1ibGFjayAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuKSxcbi5vcmllbnRhdGlvbi1ibGFjayAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuICsgMSkge1xuICBjb2xvcjogdmFyKC0tY2ctY2N3LCAkY29vcmQtY29sb3ItZGVmYXVsdCk7XG59XG5cbi5vcmllbnRhdGlvbi13aGl0ZSAuZmlsZXMgY29vcmQ6bnRoLWNoaWxkKDJuKSxcbi5vcmllbnRhdGlvbi13aGl0ZSAucmFua3MgY29vcmQ6bnRoLWNoaWxkKDJuICsgMSksXG4ub3JpZW50YXRpb24tYmxhY2sgLmZpbGVzIGNvb3JkOm50aC1jaGlsZCgybiArIDEpLFxuLm9yaWVudGF0aW9uLWJsYWNrIC5yYW5rcyBjb29yZDpudGgtY2hpbGQoMm4pIHtcbiAgY29sb3I6IHZhcigtLWNnLWNjYiwgJGNvb3JkLWNvbG9yLWRlZmF1bHQpO1xufVxuIiwiYm9keSB7XG4gIC0tYm9hcmQtc2NhbGU6IDE7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtem9vbS1lbmFibGVkKSB7XG4gICAgLy8gLS16b29tOiA4MDsgZGVmaW5lZCBpbiB0aGUgSFRNTCwgbG9hZGVkIGZyb20gc2VydmVyXG4gICAgLS1ib2FyZC1zY2FsZTogY2FsYygodmFyKC0tem9vbSkgLyAxMDApICogMC43ICsgMC4zKTtcbiAgfVxufVxuXG5AaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxLXVuaWJvYXJkKSB7XG4gIGJvZHkge1xuICAgIC0tY29sMTogMTtcbiAgfVxuXG4gIC5tYWluLWJvYXJkIGNnLWJvYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG59XG4iLCJib2R5LnJlc2l6aW5nIHtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbmNnLXJlc2l6ZSB7XG4gICRyZXNpemUtd2lkdGg6IDIycHg7XG5cbiAgZGlzcGxheTogbm9uZTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ib2FyZC1yZXNpemFibGUpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6ICN7MTNweCAtICRyZXNpemUtd2lkdGh9O1xuICAgIGJvdHRvbTogI3sxM3B4IC0gJHJlc2l6ZS13aWR0aH07XG4gICAgd2lkdGg6ICRyZXNpemUtd2lkdGg7XG4gICAgaGVpZ2h0OiAkcmVzaXplLXdpZHRoO1xuICAgIGN1cnNvcjogbndzZS1yZXNpemU7XG4gICAgei1pbmRleDogMTA7XG5cbiAgICAmOjpiZWZvcmUsXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZDogIzAwMDtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEycHg7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgd2lkdGg6IDVweDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDdweCwgOHB4KSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxcHgsIDZweCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBiYWNrZ3JvdW5kOiBmYWRlLW91dCgkYy1hY2NlbnQsIDAuNSk7XG4gICAgfVxuXG4gICAgLnJlc2l6aW5nICYge1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogZmFkZS1vdXQoJGMtc2Vjb25kYXJ5LCAwLjUpO1xuICAgIH1cbiAgfVxufVxuIiwiLmNvbG9yLWljb24ge1xuICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICAmLndoaXRlOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ+6Avic7XG4gICAgfVxuXG4gICAgJi5ibGFjazo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL0nO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJi53aGl0ZTo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICfugL0nO1xuICAgIH1cblxuICAgICYuYmxhY2s6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn7oC+JztcbiAgICB9XG4gIH1cblxuICAmLnJhbmRvbTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAn7oGfJztcbiAgfVxufVxuIiwiQGluY2x1ZGUgY3Jvc3N0YWJsZS1zbWFsbDtcblxuLmNyb3NzdGFibGUge1xuICBAZXh0ZW5kICVib3gtbmVhdC1mb3JjZTtcblxuICB3aWR0aDogMTAwJTtcbiAgbGluZS1oZWlnaHQ6IDEuOWVtO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgZmlsbCxcbiAgcG92cyB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgcG92cyxcbiAgJl9fdXNlcnMsXG4gICZfX3Njb3JlLFxuICAmX19tYXRjaHVwIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC8qIOKUgOKUgOKUgCBUYWIgYmFyIChmdWxsIHdpZHRoIGZpcnN0IHJvdywgcmVzdCB1bndyYXBwZWQgb24gc2Vjb25kIHJvdykg4pSA4pSA4pSAICovXG4gICZfX3RhYnMge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gIH1cblxuICAmX190YWIge1xuICAgIGZsZXg6IDEgMSA1MCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuMmVtIDAuNWVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDAuODVlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cywgY29sb3IgMC4xNXM7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG4gIH1cblxuICAvKiDilIDilIDilIAgRmlsdGVyZWQgdmlldzogaGlkZSBub24tbWF0Y2hpbmcgcG92cyDilIDilIDilIAgKi9cbiAgJi0tZmlsdGVyZWQgcG92czpub3QoLm1hdGNoaW5nKSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgJl9fdXNlcnMsXG4gICZfX3Njb3JlIHtcbiAgICBAZXh0ZW5kICVtZXRhbDtcbiAgfVxuXG4gICZfX3VzZXJzIHtcbiAgICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICAgIG1heC13aWR0aDogNDB2dztcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgYSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRibG9jay1nYXA7XG4gICAgfVxuICB9XG5cbiAgJl9fc2NvcmUge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgc3BhbiB7XG4gICAgICBwYWRkaW5nOiAwICRibG9jay1nYXA7XG4gICAgfVxuICB9XG5cbiAgJl9fbWF0Y2h1cCB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMjAlKTtcbiAgfVxuXG4gIHBvdnMge1xuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgZmxleDogMCAwIDUwJTtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgICBhIHtcbiAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGEubG9zcyB7XG4gICAgICBvcGFjaXR5OiAwLjI7XG4gICAgfVxuXG4gICAgJi5jdXJyZW50IGEge1xuICAgICAgYmFja2dyb3VuZDogbWl4KCRjLWFjY2VudCwgJGMtYmctYm94LCA3MCUpO1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5uZXcge1xuICAgICAgYm9yZGVyOiAkYy1ib3JkZXI7XG4gICAgfVxuXG4gICAgYS5sb3NzIHtcbiAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteC1zbWFsbCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgJjpudGgtbGFzdC1jaGlsZCgtbiArIDEyKSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNlcCB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1sZWZ0O1xuXG4gICAgYm9yZGVyLWxlZnQ6ICRib3JkZXI7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xuICB9XG5cbiAgLndpbiB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cblxuICAubG9zcyB7XG4gICAgY29sb3I6ICRjLWJhZDtcbiAgfVxuXG4gIC51bmF2YWlsYWJsZSB7XG4gICAgbWFyZ2luLXRvcDogNDBweDtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cbn1cbiIsIi5mYnQge1xuICBAZXh0ZW5kICVidXR0b24tbm9uZTtcblxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMS41O1xuXG4gIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgICAmOmhvdmVyOm5vdCguZGlzYWJsZWQpOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1ib3gsIDc1JSk7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogJGMtc2Vjb25kYXJ5ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmW2Rpc2FibGVkXSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxufVxuIiwiQGtleWZyYW1lcyBnbG93aW5nIHtcbiAgNDIlIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG5cbiAgNTAlIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtbGluaywgJGMtYmctYm94LCAyMCUpO1xuICB9XG5cbiAgNTglIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG5cbi5nbG93aW5nIHtcbiAgYW5pbWF0aW9uOiBnbG93aW5nIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuIiwiQGtleWZyYW1lcyBiYXItZ2xpZGVyLWFuaW0ge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMzAwcHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIxMDBweCk7XG4gIH1cbn1cblxuLmJhci1nbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDcwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykpO1xuICAgIGFuaW1hdGlvbjogYmFyLWdsaWRlci1hbmltIDNzIGxpbmVhciBpbmZpbml0ZTtcbiAgfVxufVxuIiwiLm5vdy1wbGF5aW5nIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgLS1ucC1taW4td2lkdGg6IDIwMHB4O1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC14eC1zbWFsbCkge1xuICAgIC0tbnAtbWluLXdpZHRoOiA1MCU7XG4gIH1cblxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCh2YXIoLS1ucC1taW4td2lkdGgpLCAxZnIpKTtcblxuICA+IGEge1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBhZGRpbmc6IDAuM2VtO1xuICB9XG5cbiAgLmluZGljYXRvciB7XG4gICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICBtYXJnaW4tdG9wOiAtM3B4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgY2ctYm9hcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cbiIsIi5jb250ZXh0LXN0cmVhbWVycyB7XG4gIG1heC1oZWlnaHQ6IDIwdmg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5jb250ZXh0LXN0cmVhbWVyIHtcbiAgQGV4dGVuZCAlbm93cmFwLWhpZGRlbiwgJWJveC1yYWRpdXMtYm90dG9tLCAlYm94LXNoYWRvdywgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICBoZWlnaHQ6IDIuMmVtO1xuICBjb2xvcjogJGMtc2Vjb25kYXJ5LW92ZXIgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctcGFnZSwgNjAlKTtcblxuICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgZm9udC1zaXplOiAxLjNlbTtcbiAgICBtYXJnaW4tbGVmdDogMC40ZW07XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtc2Vjb25kYXJ5LCAkYy1iZy1wYWdlLCA4MCUpO1xuICB9XG59XG4iLCIjemVudG9nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07XG4gIG9wYWNpdHk6IDAuNTtcbiAgei1pbmRleDogeignemVuLXRvZ2dsZScpO1xuICBkaXNwbGF5OiBub25lO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcblxuICBib2R5LnBsYXlpbmcuemVuICYge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuIiwiLmNtbi10b2dnbGUge1xuICBAZXh0ZW5kICVkb3VibGUtdGFwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG1hcmdpbi1sZWZ0OiAtOTk5OTlweDtcbn1cblxuLmNtbi10b2dnbGUgKyBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3V0bGluZTogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgcGFkZGluZzogMXB4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG5cbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHdpZHRoOiAyMnB4O1xuICAgIGhlaWdodDogMjJweDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgQGV4dGVuZCAlZGF0YS1pY29uO1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIHotaW5kZXg6IDE7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgYm9yZGVyLXJhZGl1czogMTAwJTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAyLjVweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIH1cbn1cblxuLmNtbi10b2dnbGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtYmFkO1xufVxuXG4uY21uLXRvZ2dsZS0tc3VidGxlOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWZvbnQtZGltbWVyO1xufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1nb29kO1xufVxuXG4uY21uLXRvZ2dsZTpkaXNhYmxlZCArIGxhYmVsIHtcbiAgb3BhY2l0eTogNjAlO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG59XG5cbi5jbW4tdG9nZ2xlOmZvY3VzOm5vdCg6ZGlzYWJsZWQpICsgbGFiZWwge1xuICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG59XG5cbi5jbW4tdG9nZ2xlOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgKyBsYWJlbCB7XG4gICAgQGV4dGVuZCAlZm9jdXMtc2hhZG93O1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYmFja2dyb3VuZCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgdHJhbnNpdGlvbjogbWFyZ2luICR0cmFuc2l0aW9uLWR1cmF0aW9uLCBjb2xvciAkdHJhbnNpdGlvbi1kdXJhdGlvbjtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbC1ob3ZlcjtcbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obWFyZ2luKTtcbiAgICB9XG4gIH1cbn1cblxuLmNtbi10b2dnbGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAn7oC/JztcbiAgICBjb2xvcjogJGMtYmFkO1xuICB9XG59XG5cbi5jbW4tdG9nZ2xlLS1zdWJ0bGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgJjo6YmVmb3JlIHtcbiAgICBjb2xvcjogJGMtZm9udC1kaW1tZXI7XG4gIH1cbn1cblxuLmNtbi10b2dnbGU6Y2hlY2tlZCArIGxhYmVsIHtcbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gIH1cblxuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugLgnO1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICB9XG59XG4iLCIudmFyaWFudC1yYWNpbmdLaW5ncyAuY2ctd3JhcCB7XG4gICYuY2ctd3JhcCBjZy1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgQGV4dGVuZCAlcG9wdXAtc2hhZG93O1xuXG4gICAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTAlLCAwLjIpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTIuNSU7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gICYub3JpZW50YXRpb24td2hpdGUgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIHRvcDogMDtcbiAgfVxuXG4gICYub3JpZW50YXRpb24tYmxhY2sgY2ctY29udGFpbmVyOjpiZWZvcmUge1xuICAgIGJvdHRvbTogMDtcbiAgfVxufVxuXG4udmFyaWFudC1raW5nT2ZUaGVIaWxsIGNnLWNvbnRhaW5lcjo6YmVmb3JlIHtcbiAgd2lkdGg6IDI1JTtcbiAgaGVpZ2h0OiAyNSU7XG4gIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgYmFja2dyb3VuZDogaHNsYSgwLCAwJSwgOTAlLCAwLjIpO1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDM3LjUlO1xuICBsZWZ0OiAzNy41JTtcbiAgei1pbmRleDogMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4iLCIjcHJvbW90aW9uLWNob2ljZSB7XG4gIGJhY2tncm91bmQ6IGZhZGUtb3V0KCRjLWJnLXBhZ2UsIDAuMyk7XG4gIHotaW5kZXg6IHooJ2NnX19wcm9tb3Rpb24nKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiB2YXIoLS1jZy13aWR0aCwgMTAwJSk7XG4gIGhlaWdodDogdmFyKC0tY2ctaGVpZ2h0LCAxMDAlKTtcbiAgcmlnaHQ6IDA7XG5cbiAgc3F1YXJlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiMGIwYjA7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDI1cHggM3B4ICM4MDgwODA7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICB9XG5cbiAgcGllY2Uge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIG9wYWNpdHk6IDE7XG5cbiAgICAvKiBjYW5jZWxzIGJsaW5kZm9sZCAqL1xuICB9XG5cbiAgLmlzMmQgJiBwaWVjZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgfVxuXG4gIHNxdWFyZTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDQ4cHggOHB4ICRjLWFjY2VudDtcbiAgICBib3JkZXItcmFkaXVzOiAwJTtcbiAgfVxuXG4gIC5pczJkICYgc3F1YXJlOmhvdmVyIHBpZWNlIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbiIsIi5ibGluZGZvbGQge1xuICAmLm1haW4tYm9hcmQgcGllY2UsXG4gIC5ub3ctcGxheWluZyBwaWVjZSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuXG4gICYubWFpbi1ib2FyZCAuY2hlY2sge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvYmFzZS9zY3JvbGxiYXInO1xuXG5AaW1wb3J0ICd0YWInO1xuQGltcG9ydCAnbWVtYmVycyc7XG5AaW1wb3J0ICdkaXNjdXNzaW9uJztcbkBpbXBvcnQgJ3BhbGFudGlyJztcblxuLm1jaGF0IHtcbiAgQGV4dGVuZCAlYm94LW5lYXQtZm9yY2UsICVmbGV4LWNvbHVtbjtcblxuICBncmlkLWFyZWE6IGNoYXQ7XG4gIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcblxuICAmX19jb250ZW50IHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJi5ub3RlIHRleHRhcmVhIHtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjdlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICByZXNpemU6IG5vbmU7XG5cbiAgICAgIC8vIFByZXZlbnQgU2FmYXJpIGlPUyBhdXRvLXpvb20gd2hlbiBmb2N1c2VkICh0cmlnZ2VyZWQgd2hlbiBmb250LXNpemUgPCAxNnB4KVxuICAgICAgQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWluLWhlaWdodDogMTVlbTtcbn1cbiIsImJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLFxuYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHtcbiAgd2lkdGg6IDAuNXJlbTtcbiAgYmFja2dyb3VuZDogJGMtYmctYm94O1xufVxuXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcixcbmJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICRjLWZvbnQtZGltbWVyO1xufVxuIiwiLm1jaGF0IHtcbiAgJl9fdGFicyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gICZfX3RhYiB7XG4gICAgQGV4dGVuZCAlcm9ib3RvLCAlbm93cmFwLWhpZGRlbiwgJWJveC1yYWRpdXMtdG9wO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuNGVtIDEwcHg7XG5cbiAgICAvLyBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRjLWZvbnQtcGFnZTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTUlKTtcbiAgICB9XG5cbiAgICAmLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIEBleHRlbmQgJWNoZWNrYm94O1xuICAgIH1cblxuICAgICYtYWN0aXZlIGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgQGV4dGVuZCAlbm93cmFwLWVsbGlwc2lzO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi1vcHRpb25hbCAubWNoYXRfX3RhYi5kaXNjdXNzaW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG4iLCIuY2hhdF9fbWVtYmVycyB7XG4gIEBleHRlbmQgJXBhZ2UtdGV4dDtcblxuICBmb250LXNpemU6IDAuOWVtO1xuXG4gIC8vIG1pbi1oZWlnaHQ6IDVlbTtcbiAgLy8gbWF4LWhlaWdodDogOWVtO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJl9faW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICAmX19udW1iZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICBtYXJnaW4tcmlnaHQ6IDFjaDtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuMmNoO1xuICAgIH1cbiAgfVxufVxuIiwiLm1jaGF0IHtcbiAgJl9fbWVzc2FnZXMge1xuICAgIEBleHRlbmQgJWJyZWFrLXdvcmQ7XG5cbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBtYXgtaGVpZ2h0OiA1MHZoO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMy11bmlib2FyZCkge1xuICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICB9XG5cbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBjdXJzb3I6IGluaXRpYWw7XG4gICAgZm9udC1zaXplOiAwLjllbTtcblxuICAgIGxpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHBhZGRpbmc6IDAuNWVtIDVweCAwLjVlbSAxMHB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgdXNlci1zZWxlY3Q6IHRleHQ7XG5cbiAgICAgICYubWUge1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICRjLXNlY29uZGFyeS1kaW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogN3B4O1xuICAgICAgfVxuXG4gICAgICAmLmhvc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjLXNlY29uZGFyeS1kaW0sIDAuNCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmRlbGV0ZWQge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgIC5zeXN0ZW0ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFubm91bmNlbWVudCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cblxuICAgIC5jb2xvcixcbiAgICAudXNlci1saW5rIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMC40ZW07XG4gICAgICBtYXgtd2lkdGg6IDExMHB4O1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIH1cblxuICAgIGxpbmUucGF0cm9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICB3aWR0aDogMS4yZW07XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgY29sb3I6ICRjLWJyYWc7XG4gICAgfVxuXG4gICAgLnV0aXRsZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICB9XG5cbiAgICBhOm5vdCgudXNlci1saW5rKSB7XG4gICAgICBAZXh0ZW5kICVyb2JvdG87XG4gICAgfVxuXG4gICAgaSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1cHg7XG4gICAgICByaWdodDogMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgICAgcGFkZGluZzogMXB4IDVweDtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxpOmhvdmVyIGkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0ZXh0LXNoYWRvdzogMCAwIDJweCAkYy1iZy1ib3gsIDAgMCA1cHggJGMtYmctYm94LCAwIDAgMTBweCAkYy1iZy1ib3g7XG4gICAgfVxuXG4gICAgbGkubWUgaSB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJl9fc2F5IHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIHBhZGRpbmc6IDNweCAyMHB4IDNweCA0cHg7XG5cbiAgICAvLyBQcmV2ZW50IFNhZmFyaSBpT1MgYXV0by16b29tIHdoZW4gaW5wdXQgaXMgZm9jdXNlZCAodHJpZ2dlcmVkIHdoZW4gZm9udC1zaXplIDwgMTZweClcbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgJi53aGlzcGVyIHtcbiAgICAgIGNvbG9yOiAkYy1nb29kO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuICB9XG59XG4iLCJAa2V5ZnJhbWVzIHBhbGFudGlyLWdsb3dpbmcge1xuICA0MCUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gIH1cblxuICA1MCUge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1zZWNvbmRhcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIDYwJSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMzAlKTtcbiAgfVxuXG4gIDcwJSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgfVxufVxuXG4ucGFsYW50aXIge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgYW5pbWF0aW9uOiBwYWxhbnRpci1nbG93aW5nIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAgM3B4IDAgMDtcblxuICAmLXNsb3Qge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjY7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgJi1vZmYge1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gICYtb24ge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgY29sb3I6ICRjLWdvb2Qtb3ZlcjtcbiAgICBhbmltYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWJhZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6ICRjLWJhZC1vdmVyICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIHRvcDogMXB4O1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG59XG4iLCIubWNoYXQge1xuICAmX19wcmVzZXRzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgIHNwYW4ge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG9wYWNpdHk6IDAuODtcbiAgICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICAgIGJvcmRlci13aWR0aDogMXB4IDFweCAwIDA7XG4gICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgMTUlKTtcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICB9XG5cbiAgICAgICY6bm90KC5kaXNhYmxlZCk6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgICAgIGNvbG9yOiAkYy1hY2NlbnQtb3ZlcjtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5AaW1wb3J0ICdsYXlvdXQnO1xuQGltcG9ydCAnYXBwLWxheW91dCc7XG5AaW1wb3J0ICd6ZW4nO1xuQGltcG9ydCAnc2lkZSc7XG5AaW1wb3J0ICdtZXRhJztcbkBpbXBvcnQgJ3RhYmxlJztcbkBpbXBvcnQgJ3VzZXInO1xuQGltcG9ydCAnY2xvY2snO1xuQGltcG9ydCAnbWF0ZXJpYWwnO1xuQGltcG9ydCAnbW92ZXMnO1xuQGltcG9ydCAnY29udHJvbCc7XG5AaW1wb3J0ICdpY29uJztcbkBpbXBvcnQgJ25vdy1wbGF5aW5nJztcbkBpbXBvcnQgJ2tleWJvYXJkLW1vdmUnO1xuQGltcG9ydCAnZm9yZWNhc3QtaW5mbyc7XG5cbi8vIEdvYXQgcnVuIGFuaW1hdGlvbiAoU2hpZnQrRyBmb3IgbXJjb2hlbm9zKVxuQGtleWZyYW1lcyByb3VuZC1nb2F0LXJ1bi1sdHIge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDBweCkgdHJhbnNsYXRlWSgtNTAlKTsgfVxuICB0byAgIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMTAwdncgKyAyMDBweCkpIHRyYW5zbGF0ZVkoLTUwJSk7IH1cbn1cblxuQGtleWZyYW1lcyByb3VuZC1nb2F0LXJ1bi1ydGwge1xuICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMTAwdncgKyAyMDBweCkpIHRyYW5zbGF0ZVkoLTUwJSk7IH1cbiAgdG8gICB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjAwcHgpIHRyYW5zbGF0ZVkoLTUwJSk7IH1cbn1cblxuLnJvdW5kX19nb2F0LXJ1biB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDk5OTk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICYtLWx0ciB7IGFuaW1hdGlvbjogcm91bmQtZ29hdC1ydW4tbHRyIDQuNXMgbGluZWFyIGZvcndhcmRzOyB9XG4gICYtLXJ0bCB7IGFuaW1hdGlvbjogcm91bmQtZ29hdC1ydW4tcnRsIDQuNXMgbGluZWFyIGZvcndhcmRzOyB9XG5cbiAgJl9faW1nIHtcbiAgICBoZWlnaHQ6IDE0M3B4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICYtLWZsaXBwZWQgeyB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7IH1cbiAgfVxufVxuXG5idXR0b24uZmJ0LmdvYXQge1xuICAuZ29hdC1pY29uIHtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgfVxufVxuIiwiLy8gbGF5b3V0XG4kbXEtY29sMTogJG1xLWNvbDEtdW5pYm9hcmQ7XG4kbXEtY29sMjogJG1xLWNvbDItdW5pYm9hcmQ7XG4kbXEtY29sMzogJG1xLWNvbDMtdW5pYm9hcmQ7XG5cbiRjb2wxLXBsYXllci1jbG9jay1oZWlnaHQ6IDUwcHg7XG4kY29sMS11c2VyLWhlaWdodDogJGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodCAqIDMgLyA1O1xuJGNvbDEtbWF0LWhlaWdodDogJGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodCAqIDIgLyA1O1xuJGNvbDEtbW92ZXMtaGVpZ2h0OiAzLjVlbTtcbiRtb3ZlLXRhZzogJ3U4dCc7XG4kcm1vdmVzLXRhZzogJ3JtNic7XG4kbW92ZXMtdGFnOiAnbDR4JztcbiRpbmRleC10YWc6ICdpNXonO1xuJGFjdGl2ZS1jbGFzczogJ2ExdCc7XG4iLCIjbWFpbi13cmFwIHtcbiAgLS1tYWluLW1heC13aWR0aDogYXV0bztcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgLS1tYWluLW1heC13aWR0aDogY2FsYyhcbiAgICAgIDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGNvbDEtcGxheWVyLWNsb2NrLWhlaWdodCAqIDJ9IC0gI3skY29sMS1tb3Zlcy1oZWlnaHR9XG4gICAgKTtcbiAgfVxufVxuXG4ucm91bmQge1xuICBncmlkLWFyZWE6IG1haW47XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtZ2FwOiAkYmxvY2stZ2FwO1xuXG4gICZfX2FwcCB7XG4gICAgZ3JpZC1hcmVhOiBhcHA7XG4gIH1cblxuICAmX19zaWRlIHtcbiAgICBncmlkLWFyZWE6IHNpZGU7XG4gIH1cblxuICAmX191bmRlcmJvYXJkIHtcbiAgICBAZXh0ZW5kICV6ZW47XG5cbiAgICBncmlkLWFyZWE6IHVuZGVyO1xuICB9XG5cbiAgJl9fcGduIHtcbiAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgcGFkZGluZzogMCAwLjVlbTtcblxuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuM2VtO1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuXG4gICAgdGV4dGFyZWEge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDZlbTtcbiAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICBmb250LXNpemU6IDAuODJlbTtcbiAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgfVxuICB9XG5cbiAgJl9fdW5kZXJjaGF0IHtcbiAgICBAZXh0ZW5kICV6ZW47XG5cbiAgICBncmlkLWFyZWE6IHVjaGF0O1xuICB9XG5cbiAgJl9fcHV6emxlLW1hdGNoZXMge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAmX19saXN0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICB9XG5cbiAgJl9fcHV6emxlLW1hdGNoLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICB9XG5cbiAgJl9fcHV6emxlLW1hdGNoIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiAyMDBweDtcblxuICAgICZfX2JvYXJkLS1zdWNjZXNzOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9hc3NldHMvaW1hZ2VzL0NvaW5GbGlwLmdpZicpIG5vLXJlcGVhdCAwIDA7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDtcbiAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgcmlnaHQ6IC0ycHg7XG4gICAgICB0b3A6IC0zM3B4O1xuICAgICAgei1pbmRleDogOTk5O1xuICAgIH1cbiAgfVxuXG5cbiAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ2FwcCcgJ3VuZGVyJyAnc2lkZScgJ3VjaGF0JztcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byBmaXQtY29udGVudCgwKSBmaXQtY29udGVudCgwKTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnYXBwICAgYXBwJyAndW5kZXIgc2lkZScgJ3VuZGVyIHVjaGF0JztcblxuICAgICZfX2FwcCB7XG4gICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wzKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMy11bmlib2FyZC1zaWRlICRjb2wzLXVuaWJvYXJkLXdpZHRoICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogZml0LWNvbnRlbnQoMCk7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogJ3NpZGUgIGFwcCAgIGFwcCcgJ3VjaGF0IHVuZGVyIC4nO1xuXG4gICAgQGluY2x1ZGUgY3Jvc3N0YWJsZS1sYXJnZTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZSkge1xuICAgIC5jcm9zc3RhYmxlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIucmNvbnRyb2xzIHtcbiAgZ3JpZC1hcmVhOiBjb250cm9scztcbn1cblxuLm1hdGVyaWFsLXRvcCB7XG4gIGdyaWQtYXJlYTogbWF0LXRvcDtcbn1cblxuLm1hdGVyaWFsLWJvdHRvbSB7XG4gIGdyaWQtYXJlYTogbWF0LWJvdDtcbn1cblxuLmV4cGlyYXRpb24tdG9wIHtcbiAgZ3JpZC1hcmVhOiBleHBpLXRvcDtcbn1cblxuLmV4cGlyYXRpb24tYm90dG9tIHtcbiAgZ3JpZC1hcmVhOiBleHBpLWJvdDtcbn1cblxuLnJ1c2VyLXRvcCB7XG4gIGdyaWQtYXJlYTogdXNlci10b3A7XG59XG5cbi5ydXNlci1ib3R0b20ge1xuICBncmlkLWFyZWE6IHVzZXItYm90O1xufVxuXG4ucmNsb2NrLXRvcCB7XG4gIGdyaWQtYXJlYTogY2xvY2stdG9wO1xufVxuXG4ucmNsb2NrLWJvdHRvbSB7XG4gIGdyaWQtYXJlYTogY2xvY2stYm90O1xufVxuXG4ubWFzY290LWJvdHRvbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMnB4O1xuICB6LWluZGV4OiA1MDtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbn1cblxuI3skcm1vdmVzLXRhZ30sXG4uY29sMS1ybW92ZXMtcHJlbG9hZCB7XG4gIGdyaWQtYXJlYTogbW92ZXM7XG59XG5cbi5rZXlib2FyZC1tb3ZlIHtcbiAgZ3JpZC1hcmVhOiBrYi1tb3ZlO1xufVxuXG4ucm91bmRfX2FwcCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byBhdXRvICRjb2wxLXVzZXItaGVpZ2h0ICRjb2wxLW1hdC1oZWlnaHQgYXV0byBhdXRvICRjb2wxLW1hdC1oZWlnaHQgJGNvbDEtdXNlci1oZWlnaHQgYXV0bztcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnbW92ZXMnICdwb2NrZXQtdG9wJyAndXNlci10b3AnICdtYXQtdG9wJyAnYm9hcmQnICdleHBpLWJvdCcgJ21hdC1ib3QnICdtYXNjLWJvdCcgJ3VzZXItYm90JyAncG9ja2V0LWJvdCcgJ2tiLW1vdmUnICdjb250cm9scyc7XG5cbiAgICAucmNsb2NrLXRvcCB7XG4gICAgICBncmlkLWFyZWE6IDMgLyAxIC8gNSAvIDI7XG4gICAgfVxuXG4gICAgLnJjbG9jay1ib3R0b20ge1xuICAgICAgZ3JpZC1hcmVhOiA3IC8gMSAvIDkgLyAyO1xuICAgIH1cblxuICAgIGNnLWJvYXJkIHtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG4gICAgLmV4cGlyYXRpb24tdG9wIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJl9fdGFibGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAkY29sMi11bmlib2FyZC13aWR0aCAkY29sMi11bmlib2FyZC10YWJsZTtcbiAgICBncmlkLXRlbXBsYXRlLWFyZWFzOiAnYm9hcmQgLicgJ2JvYXJkIG1hdC10b3AnICdib2FyZCBjbG9jay10b3AnICdib2FyZCBleHBpLXRvcCcgJ2JvYXJkIHVzZXItdG9wJyAnYm9hcmQgbW92ZXMnICdib2FyZCBjb250cm9scycgJ2JvYXJkIHVzZXItYm90JyAnYm9hcmQgZXhwaS1ib3QnICdib2FyZCBjbG9jay1ib3QnICdib2FyZCBwZ3ItY291bnRlcicgJ2JvYXJkIHBnci1ob3d0bycgJ2JvYXJkIHBnci1hcnJvdy10b2cnICdib2FyZCBtYXQtYm90JyAnYm9hcmQgbWFzYy1ib3QnICdib2FyZCAuJyAna2ItbW92ZSAuJztcbiAgICBncmlkLWNvbHVtbi1nYXA6ICRibG9jay1nYXA7XG5cbiAgICAmX190YWJsZSB7XG4gICAgICBncmlkLWFyZWE6IDQgLyAyIC8gMTAgLyAzO1xuICAgIH1cblxuICAgIC5leHBpcmF0aW9uLXRvcCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgICN7JHJtb3Zlcy10YWd9IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgICB9XG5cbiAgICAjeyRtb3Zlcy10YWd9IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cblxuICAgIC5rZXlib2FyZC1tb3ZlIHtcbiAgICAgIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtc2hvcnQpIHtcbiAgICAgICN7JG1vdmVzLXRhZ30ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDItdW5pYm9hcmQtc3F1ZWV6ZSkge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS13aWR0aCAkY29sMi11bmlib2FyZC1zcXVlZXplLXRhYmxlO1xuICAgIGdyaWQtY29sdW1uLWdhcDogI3skYmxvY2stZ2FwICogMyAvIDJ9O1xuICB9XG5cbiAgJl9fYm9hcmQge1xuICAgIGdyaWQtYXJlYTogYm9hcmQ7XG4gIH1cbn1cblxuLm1hc2NvdCB7XG4gIHdpZHRoOiA0MDBweDtcbiAgaGVpZ2h0OiAyNjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLyogd3JhcHBlciB0aGF0IG1vdmVzIGxlZnQvcmlnaHQgKi9cbi5tYXNjb3Qtc3ByaXRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cbiAgLyog4pyFIHBhY2luZyBieSBkZWZhdWx0IChtb3ZlcyArIHNldHMgZmFjaW5nIGF0IGJvdW5kcykgKi9cbiAgYW5pbWF0aW9uOiBtYXNjb3RQYWNlIDZzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuLyogdmlkZW8gZmxpcHMgYmFzZWQgb24gQ1NTIHZhciBzZXQgYnkgbWFzY290UGFjZVxuICAgKEpTIHRhZy1jaGFzZSBjYW4gb3ZlcnJpZGUgd2l0aCBpbmxpbmUgdHJhbnNmb3JtOyBjbGVhciBpbmxpbmUgb24gY2hhc2UgZW5kKSAqL1xuLm1hc2NvdC12aWRlbyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjgwcHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcblxuICB0cmFuc2Zvcm06IHNjYWxlWCh2YXIoLS1tYXNjb3QtZmxpcCwgMSkpO1xufVxuXG4vKiBkdXJpbmcgdGFnOiBwYXVzZSBDU1MgcGFjaW5nIHNvIEpTIGNhbiB0cmFuc2xhdGUgd3JhcHBlciAqL1xuLm1hc2NvdC0tcGF1c2VkIC5tYXNjb3Qtc3ByaXRlIHtcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZCAhaW1wb3J0YW50O1xufVxuXG5Aa2V5ZnJhbWVzIG1hc2NvdFBhY2Uge1xuICAvKiBNb3ZlIHJpZ2h0LCBmYWNpbmcgcmlnaHQgKi9cbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAtLW1hc2NvdC1mbGlwOiAxO1xuICB9XG4gIDQ5JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoNDAwcHggLSAyODBweCkpO1xuICAgIC0tbWFzY290LWZsaXA6IDE7XG4gIH1cblxuICAvKiBGbGlwIGF0IHRoZSByaWdodCBlZGdlICovXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoNDAwcHggLSAyODBweCkpO1xuICAgIC0tbWFzY290LWZsaXA6IC0xO1xuICB9XG5cbiAgLyogTW92ZSBsZWZ0LCBmYWNpbmcgbGVmdCAqL1xuICA5OSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAtLW1hc2NvdC1mbGlwOiAtMTtcbiAgfVxuXG4gIC8qIEZsaXAgYmFjayBhdCB0aGUgbGVmdCBlZGdlICovXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAtLW1hc2NvdC1mbGlwOiAxO1xuICB9XG59XG5cbi5tYXNjb3QtYnViYmxlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogMHB4O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgei1pbmRleDogMjtcbn1cblxuLm1hc2NvdC1idWJibGU6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogNTAlO1xuICBib3R0b206IC02cHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSByb3RhdGUoNDVkZWcpO1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuIiwiJXplbiB7XG4gIGJvZHkucGxheWluZy56ZW4gJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5ib2R5LnBsYXlpbmcuemVuIHtcbiAgLnJpY29ucyB7XG4gICAgbWFyZ2luOiAwLjVlbSAwIDFlbSAwO1xuICB9XG5cbiAgI3RvcCB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbn1cblxuI2ZyaWVuZF9ib3gsXG4uc2l0ZS10aXRsZS1uYXYsXG4uc2l0ZS1idXR0b25zIHtcbiAgQGV4dGVuZCAlemVuO1xufVxuIiwiLnJvdW5kX19zaWRlIHtcbiAgQGV4dGVuZCAlZmxleC1jb2x1bW4sICV6ZW47XG5cbiAgLmdhbWVfX21ldGEge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuXG4gICAgJl9fcGxheWVycyAudGVhbSB7XG4gICAgICBtYXJnaW4tbGVmdDogMS43ZW07XG4gICAgfVxuICB9XG59XG5cbi5tY2hhdCB7XG4gIEBleHRlbmQgJXplbjtcblxuICBmbGV4OiAxIDEgMDtcbiAgbWFyZ2luLXRvcDogJGJsb2NrLWdhcDtcbn1cbiIsIi8qIHNoYXJlZCB3aXRoIGFuYWx5c2lzICovXG4uZ2FtZV9fbWV0YSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgcGFkZGluZzogI3skYmxvY2stZ2FwICogMC43fSAkYmxvY2stZ2FwO1xuXG4gIHNlY3Rpb246bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGJvcmRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAjeyRibG9jay1nYXAgKiAyIC8gM307XG4gICAgcGFkZGluZy1ib3R0b206ICN7JGJsb2NrLWdhcCAqIDIgLyAzfTtcbiAgfVxuXG4gICZfX2luZm9zIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvKiBmb3IgYm9va21hcmsgKi9cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgbWFyZ2luLXJpZ2h0OiA0JTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICB0aW1lIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLnN0YXR1cyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJl9fcGxheWVycyB7XG4gICAgbWFyZ2luLXRvcDogMC4zcmVtO1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICB9XG5cbiAgLmJvb2ttYXJrIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgei1pbmRleDogeignZ2FtZS1ib29rbWFyaycpO1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcblxuICAgIDo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgfVxuXG4gICAgJjpub3QoLmJvb2ttYXJrZWQpIC5vbixcbiAgICAmLmJvb2ttYXJrZWQgLm9mZiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC51c2VyLXR2IHtcbiAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICBmb250LXNpemU6IDEuMmVtO1xuICB9XG59XG5cbi5nYW1lX190b3VybmFtZW50IHtcbiAgLmNsb2NrIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmb250LXNpemU6IDJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogMC4yZW07XG4gIH1cbn1cblxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgLmdhbWVfX21ldGEgLmJvb2ttYXJrIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmdhbWVfX21ldGE6aG92ZXIgLmJvb2ttYXJrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuIiwiLnJvdW5kX19hcHAge1xuICAmX190YWJsZSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1yaWdodCwgJWJveC1zaGFkb3c7XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gIH1cblxuICAuZHJhdy15ZXMgc3BhbiB7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgfVxufVxuXG4uZXhwaXJhdGlvbiB7XG4gIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDI7XG4gIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gIGNvbG9yOiAjZmZmO1xuXG4gICYtdG9wIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbiAgfVxuXG4gICYtYm90dG9tIHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZTtcbiAgfVxuXG4gICYuZW1lcmcge1xuICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgfVxuXG4gIHN0cm9uZyB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gIH1cbn1cbiIsIi5ydXNlciB7XG4gIEBleHRlbmQgJXplbjtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIHBhZGRpbmc6IDAgMC4zZW07XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gIH1cblxuICBhIHtcbiAgICBAZXh0ZW5kICVlbGxpcHNpcztcblxuICAgIGNvbG9yOiAkYy1mb250O1xuICB9XG5cbiAgJi5sb25nIGEge1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC41cHg7XG4gIH1cblxuICByYXRpbmcge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIG1hcmdpbjogMCAwLjI1ZW0gMCAwLjNlbTtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjVweDtcbiAgfVxuXG4gIC5saW5lIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gIEBrZXlmcmFtZXMgY29ubmVjdGluZyB7XG4gICAgMCUge1xuICAgICAgb3BhY2l0eTogMC4xO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICBvcGFjaXR5OiAwLjM7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICBvcGFjaXR5OiAwLjE7XG4gICAgfVxuICB9XG5cbiAgJi5jb25uZWN0aW5nIC5saW5lIHtcbiAgICBhbmltYXRpb246IGNvbm5lY3RpbmcgMC45cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgfVxuXG4gIC5ycCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjJlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICBwYWRkaW5nOiAwLjVlbSAwLjVlbSAwLjVlbSAwLjNlbTtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcblxuICAgIGEge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAmLXRvcCB7XG4gICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICB9XG4gICAgJi1ib3R0b20ge1xuICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICB9XG4gIH1cblxuICAucHJlbW92ZS10b2dnbGUge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC42NWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHBhZGRpbmc6IDAuMTVlbSAwLjRlbTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBtYXJnaW46IDAgMC4yZW07XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cywgY29sb3IgMC4xNXM7XG5cbiAgICAmLnByZW1vdmUtb24ge1xuICAgICAgYmFja2dyb3VuZDogIzRjYWY1MDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cblxuICAgICYucHJlbW92ZS1vZmYge1xuICAgICAgYmFja2dyb3VuZDogI2Y0NDMzNjtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cbiAgfVxufVxuIiwiLnJjbG9jayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIC8qIHRoYXQgd2VpcmQgc2hpdCBpcyByZXF1aXJlZCBzbyB0aGUgY2xvY2sgZ29lcyBhYm92ZSB0aGUgcGxheWVyIHNpbmNlIHRoZXkgc2hhcmUgdGhlIHNhbWUgZ3JpZCBjZWxsICovXG4gICAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG5cbiAgLyogb3ZlcmZsb3c6IGhpZGRlbjsgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2Ugb2YgY2xvY2sgYmFycyBhbmQgc2hhZG93cyAqL1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgJi1ib3R0b20ge1xuICAgICAgLyogb3ZlciB0aGUgdGFibGUgc2hhZG93ICovXG4gICAgICB6LWluZGV4OiAwO1xuICAgIH1cbiAgfVxuXG4gICYtdHVybiB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAkY29sMS1wbGF5ZXItY2xvY2staGVpZ2h0O1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMS11bmlib2FyZCkge1xuICAgICAgJl9fdGV4dCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICAgICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBoZWlnaHQ6IDIuMmVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDIuMmVtO1xuICAgIH1cbiAgfVxuXG4gIC5iYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLmJlcnNlcmsge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmFkO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDIpIHtcbiAgICAuYmFyIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDRweDtcbiAgICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xuXG4gICAgICAud2l0aC1leHBpcmF0aW9uICYge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgICYtdG9wIC5iYXIge1xuICAgICAgYm90dG9tOiAtNHB4O1xuICAgIH1cblxuICAgICYtYm90dG9tIC5iYXIge1xuICAgICAgdG9wOiAtNHB4O1xuICAgIH1cbiAgfVxuXG4gIC50aW1lIHtcbiAgICBAZXh0ZW5kICVyb2JvdG8sICVib3gtc2hhZG93O1xuXG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIG1pbi13aWR0aDogM2VtO1xuICAgIGZvbnQtc2l6ZTogMi44ZW07XG4gICAgbGluZS1oZWlnaHQ6ICRjb2wxLXBsYXllci1jbG9jay1oZWlnaHQ7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvKiBlbnN1cmUgdXBkYXRlcyBkb24ndCByZWRyYXcgb3RoZXIgcGFydHMgb2YgdGhlIGRvY3VtZW50ICovXG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICB6LWluZGV4OiAtMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgJi5ob3VyIHtcbiAgICAgIGZvbnQtc2l6ZTogMi4zZW07XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMmVtO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsICRtcS10YWxsKSB7XG4gICAgICBmb250LXNpemU6IDMuNmVtO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMTJlbTtcblxuICAgICAgJi5ob3VyIHtcbiAgICAgICAgZm9udC1zaXplOiAyLjllbTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYtdG9wIC50aW1lIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLXRvcDtcbiAgfVxuXG4gICYtYm90dG9tIC50aW1lIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLWJvdHRvbTtcbiAgfVxuXG4gICYtY29ycmVzcG9uZGVuY2UgLnRpbWUge1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBsaW5lLWhlaWdodDogMS41ZW07XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEteHgtc21hbGwpIHtcbiAgICAgIGZvbnQtc2l6ZTogMS45ZW07XG4gICAgfVxuICB9XG5cbiAgdGVudGhzIHtcbiAgICBmb250LXNpemU6IDcwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtMC4xOGVtO1xuICB9XG5cbiAgaHVucyB7XG4gICAgZm9udC1zaXplOiA4MCU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wxKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAvKiBzaW5jZSBjbG9jayBpcyByaWdodC1hbGlnbmVkLCBodW5zIHNoaWZ0IGl0IGxlZnQgb24gZXZlcnkgbW92ZSAqL1xuICAgIH1cbiAgfVxuXG4gIHNlcCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG5cbiAgICAmLmxvdyB7XG4gICAgICBvcGFjaXR5OiAwLjE1O1xuICAgIH1cbiAgfVxuXG4gICYucnVubmluZyAudGltZSB7XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLXNlY29uZGFyeSwgJGMtYmctYm94LCAzMCUpO1xuICAgIGNvbG9yOiAkYy1mb250LWNsZWFyZXI7XG4gIH1cblxuICAmLmVtZXJnIC50aW1lLFxuICAmLm91dG9mdGltZSAudGltZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KCRjLWJhZCwgJGMtYmctYm94LCAyNSUpO1xuICB9XG5cbiAgJi5lbWVyZy5ydW5uaW5nIC50aW1lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtaXgoJGMtYmFkLCAkYy1iZy1ib3gsIDUwJSk7XG4gICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgfVxuXG4gIC5nby1iZXJzZXJrIHtcbiAgICBmb250LXNpemU6IDIuMmVtO1xuICAgIHBhZGRpbmc6IDAgMC4zZW07XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYy1hY2NlbnQgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAudG91ci1yYW5rLFxuICAubW9yZXRpbWUsXG4gIC5iZXJzZXJrZWQge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLCAlemVuO1xuXG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLXh4LXNtYWxsKSB7XG4gICAgICBvcmRlcjogLTE7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgICBmb250LXNpemU6IDEuN2VtO1xuICAgICAgcGFkZGluZzogMCAwLjNlbTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1jb2wyKSB7XG4gICAgICBvcmRlcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cblxuICAudG91ci1yYW5rIHtcbiAgICBAZXh0ZW5kICVwYWdlLXRleHQ7XG5cbiAgICBvcGFjaXR5OiAwLjY1O1xuICB9XG5cbiAgLm1vcmV0aW1lIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgLmJlcnNlcmtlZCB7XG4gICAgZm9udC1zaXplOiAyLjJlbTtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICB9XG59XG4iLCJAaW1wb3J0ICcuLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9tYXRlcmlhbCc7XG5cbi5tYXRlcmlhbCB7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgaGVpZ2h0OiA0MHB4O1xuICBsaW5lLWhlaWdodDogMDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBkaXYge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgfVxuXG4gIG1waWVjZSB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICYucGF3biB7XG4gICAgICBtYXJnaW4tbGVmdDogLTE1cHg7XG4gICAgfVxuICB9XG5cbiAgc2NvcmUge1xuICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJztcbiAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgIGhlaWdodDogJGNvbDEtbWF0LWhlaWdodDtcbiAgICBtYXJnaW4tbGVmdDogM3ZtaW47XG5cbiAgICBkaXYge1xuICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICB9XG5cbiAgICBtcGllY2Uge1xuICAgICAgd2lkdGg6ICRjb2wxLW1hdC1oZWlnaHQgKiAzLzQ7XG4gICAgICBoZWlnaHQ6ICRjb2wxLW1hdC1oZWlnaHQgKiAzLzQ7XG4gICAgICBtYXJnaW4tbGVmdDogLThweCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiLm1hdGVyaWFsIHtcbiAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gIGRpdiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB9XG5cbiAgbXBpZWNlIHtcbiAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAmLnBhd24ge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vUC5zdmcpO1xuICAgIH1cblxuICAgICYuYmlzaG9wIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL0Iuc3ZnKTtcbiAgICB9XG5cbiAgICAmLmtuaWdodCB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vcGllY2UvbW9uby9OLnN2Zyk7XG4gICAgfVxuXG4gICAgJi5yb29rIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL1Iuc3ZnKTtcbiAgICB9XG5cbiAgICAmLnF1ZWVuIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9waWVjZS9tb25vL1Euc3ZnKTtcbiAgICB9XG5cbiAgICAmLmtpbmcge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL3BpZWNlL21vbm8vSy5zdmcpO1xuICAgIH1cblxuICAgIEBpZiAkdGhlbWUgPT0gJ3RyYW5zcCcge1xuICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDEuMykgZHJvcC1zaGFkb3coMCAxcHggMXB4ICMwMDApO1xuICAgIH1cbiAgfVxuXG4gIHNjb3JlIHtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byc7XG4gIH1cbn1cbiIsIiN7JG1vdmVzLXRhZ30gPiA6bm90KC5yZXN1bHQtd3JhcCkge1xuICBAZXh0ZW5kICV6ZW47XG59XG5cbiN7JGluZGV4LXRhZ30ge1xuICBAZXh0ZW5kICVyb2JvdG87XG59XG5cbiN7JG1vdmUtdGFnfSB7XG4gIEBleHRlbmQgJXNhbjtcbn1cblxuI3skcm1vdmVzLXRhZ30ge1xuICBAZXh0ZW5kICVmbGV4LWNvbHVtbiwgJWRvdWJsZS10YXA7XG5cbiAgLmJ1dHRvbnMge1xuICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIG9yZGVyOiAyO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgb3JkZXI6IDA7XG4gICAgfVxuICB9XG5cbiAgLmZidCxcbiAgLm5vb3Age1xuICAgIHBhZGRpbmc6IDVweCAwO1xuICAgIGZsZXg6IDAgMCBjYWxjKDEwMCUgLyA2KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAjeyRtb3Zlcy10YWd9LFxuICAubWVzc2FnZSB7XG4gICAgZmxleDogMCAwIDcuNHJlbTtcbiAgfVxuXG4gIEBpbXBvcnQgJ21vdmVzLWNvbDEnO1xuICBAaW1wb3J0ICdtb3Zlcy1jb2wyJztcbn1cblxuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAuY29sMS1ybW92ZXMtcHJlbG9hZCB7XG4gICAgaGVpZ2h0OiAyLjVlbTtcbiAgfVxufVxuIiwiLyogY29udGV4dDogLnJtb3ZlcyAqL1xuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIC5jb2wxLW1vdmVzIHtcbiAgICBmbGV4OiAwIDAgJGNvbDEtbW92ZXMtaGVpZ2h0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgLmZidCB7XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICAgIHBhZGRpbmc6IDAgMS4zZW07XG4gICAgfVxuXG4gICAgYm9keS5wbGF5aW5nLnplbiAmIHtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAjeyRtb3Zlcy10YWd9IHtcbiAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuICAgIGNvbG9yOiAkYy1mb250LXBhZ2U7XG5cbiAgICBAaWYgJHRoZW1lLWxpZ2h0IHtcbiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDRweCBjLWxpZ2h0KCRjLWJnLXBhZ2UsIDc4JSkgaW5zZXQ7XG4gICAgfSBAZWxzZSB7XG4gICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4ICMwMDAgaW5zZXQ7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgaGVpZ2h0OiAwcHg7XG4gICAgfVxuXG4gICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAjeyRpbmRleC10YWd9LFxuICAjeyRtb3ZlLXRhZ30sXG4gIC5yZXN1bHQtd3JhcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAgMC4zcmVtO1xuICB9XG5cbiAgI3skaW5kZXgtdGFnfSB7XG4gICAgcGFkZGluZy1yaWdodDogMC4xNWVtO1xuICB9XG5cbiAgI3skbW92ZS10YWd9IHtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICYuI3skYWN0aXZlLWNsYXNzfSxcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpZiAkdGhlbWUtbGlnaHQge1xuICAgICAgICBiYWNrZ3JvdW5kOiBoc2woJGMtc2l0ZS1odWUsIDIwJSwgODUlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLiN7JGFjdGl2ZS1jbGFzc30ge1xuICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgICB9XG4gIH1cblxuICAuYnV0dG9ucyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5yZXN1bHQge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICB9XG5cbiAgLm1lc3NhZ2Uge1xuICAgIGZsZXg6IDAgMCAkY29sMS1tb3Zlcy1oZWlnaHQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG5cbiAgICBiciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBtYXJnaW4tbGVmdDogMC41ZW07XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gICAgfVxuXG4gICAgYm9keS5wbGF5aW5nLnplbiAmIHtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAuc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCIvKiBjb250ZXh0OiAjeyRybW92ZXMtdGFnfSAqL1xuQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG5cbiAgI3skbW92ZXMtdGFnfSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogcmVxdWlyZWQgYnkgYXV0b1Njcm9sbCAqL1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcbiAgICB3aWxsLWNoYW5nZTogc2Nyb2xsLXBvc2l0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjc7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIHdpZHRoOiAwcHg7XG4gICAgfVxuICB9XG5cbiAgI3skaW5kZXgtdGFnfSB7XG4gICAgLyogRWRnZSAxODogZmxleDogMCAwIGNhbGMoMTAwJSAvIDYpOyBjYXVzZXMgd3JhcCAqL1xuICAgIGZsZXg6IDAgMCAxNi42NjYlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICB9XG5cbiAgI3skbW92ZS10YWd9IHtcbiAgICAvKiBFZGdlIDE4OiBmbGV4OiAwIDAgY2FsYygxMDAlICogNSAvIDEyKTsgY2F1c2VzIHdyYXAgKi9cbiAgICBmbGV4OiAwIDAgNDEuNjY2JTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuN2VtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgIH1cblxuICAgICYuI3skYWN0aXZlLWNsYXNzfSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICB9XG5cbiAgICAvLyBQcm9ncmVzc2l2ZSBDaGVzczogZWFjaCBtb3ZlIGluIGEgc2VyaWVzIGlzIGEgc3BhbiB3aXRoIGRhdGEtcGx5XG4gICAgc3BhbiB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuMzVlbTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1wcmltYXJ5O1xuICAgICAgfVxuXG4gICAgICAmLiN7JGFjdGl2ZS1jbGFzc30ge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgYmFja2dyb3VuZDogbWl4KCRjLXByaW1hcnksICRjLWJnLWJveCwgMjAlKTtcbiAgICAgICAgY29sb3I6ICRjLWZvbnQtY2xlYXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUHJvZ3Jlc3NpdmUgQ2hlc3Mgcm93IHdyYXBwZXIg4oCUIG9uZSBzZXJpZXMgcGVyIHJvdzogaW5kZXggfCBwYXduIHwgY291bnQgfCBtb3Zlc1xuICBkaXYucGdyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgI3skaW5kZXgtdGFnfSB7XG4gICAgICBmbGV4OiAwIDAgMTAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZy10b3A6IDAuMmVtO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgIH1cblxuICAgIC5wZ3Itc3ltIHtcbiAgICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLXRvcDogMC4yZW07XG4gICAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIH1cblxuICAgIC5wZ3ItY250IHtcbiAgICAgIGZsZXg6IDAgMCAxMiU7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLXRvcDogMC4yZW07XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBmb250LXNpemU6IDAuODVlbTtcbiAgICB9XG5cbiAgICAjeyRtb3ZlLXRhZ30ge1xuICAgICAgZmxleDogMTtcbiAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgfVxuICB9XG5cbiAgLm1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDFlbTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICB9XG4gIH1cblxuICAucmVzdWx0LXdyYXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5yZXN1bHQge1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBwYWRkaW5nOiA1cHggMCAzcHggMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAuc3RhdHVzIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gIH1cblxuICBAYXQtcm9vdCB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgLnBnci1jb3VudGVyIHtcbiAgICAgICAgZ3JpZC1hcmVhOiBwZ3ItY291bnRlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDEuMmVtIDAuOGVtIDAuNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC42ZW07XG5cbiAgICAgICAgJl9fbGFiZWwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fcGlwcyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAmX19waXAge1xuICAgICAgICAgIHdpZHRoOiAxMHB4O1xuICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgYmFja2dyb3VuZDogIzRjYWY1MDtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAgICAgJi51c2VkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjOWEyMjc7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5wZ3ItYXJyb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzO1xuXG4gICAgICAgICYtLWdyZWVuIHsgY29sb3I6ICM0Y2FmNTA7IH1cbiAgICAgICAgJi0teWVsbG93IHsgY29sb3I6ICNmZmMxMDc7IH1cblxuICAgICAgICAmX19zaGFmdCB7XG4gICAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX2hlYWQge1xuICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItbGVmdDogMTNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAmLS11cCAmX19oZWFkIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxOHB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWRvd24gJl9faGVhZCB7XG4gICAgICAgICAgYm9yZGVyLXRvcDogMThweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gICAgICAgICAgb3JkZXI6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAmLS1kb3duICZfX3NoYWZ0IHtcbiAgICAgICAgICBvcmRlcjogLTE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnBnci1ob3ctdG8tcGxheSB7XG4gICAgICAgIGdyaWQtYXJlYTogcGdyLWhvd3RvO1xuICAgICAgfVxuXG4gICAgICAucGdyLWFycm93LXRvZ2dsZSB7XG4gICAgICAgIGdyaWQtYXJlYTogcGdyLWFycm93LXRvZztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDAuOGVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnBnci1ob3ctdG8tcGxheSB7XG4gICAgZ3JpZC1hcmVhOiBwZ3ItaG93dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMC42ZW0gMC44ZW0gMC44ZW07XG4gICAgZm9udC1zaXplOiAwLjgyZW07XG4gICAgY29sb3I6ICRjLWZvbnQtZGltO1xuICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgM3B4IDNweDtcblxuICAgIHN0cm9uZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMS4wNWVtO1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwLjM1ZW07XG4gICAgfVxuXG4gICAgb2wge1xuICAgICAgbWFyZ2luOiAwIDAgMC40ZW0gMS4yZW07XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgfVxuICB9XG5cbiAgLnBnci1hcnJvdy10b2dnbGUge1xuICAgIGdyaWQtYXJlYTogcGdyLWFycm93LXRvZztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwLjVlbSAwLjhlbTtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7XG5cbiAgICAmX19zd2l0Y2hlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgbGFiZWw6Zmlyc3QtY2hpbGQge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIH1cblxuICAgICAgLnN3aXRjaCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC41ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIucmNvbnRyb2xzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgLmRkbG9hZGVyIHtcbiAgICBtYXJnaW46IDIwcHggYXV0byAxMHB4IGF1dG87XG4gIH1cblxuICAuc3VnZ2VzdGlvbixcbiAgLnBlbmRpbmcsXG4gIC5uZWdvdGlhdGlvbiB7XG4gICAgcGFkZGluZzogMC41ZW0gMyU7XG4gICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgYm9yZGVyOiAkYm9yZGVyO1xuICAgIGJvcmRlci13aWR0aDogMCAxcHg7XG4gIH1cblxuICAuc3VnZ2VzdGlvbiB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcblxuICAgIHAge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICBtYXJnaW46IDAuNWVtIDAgMCAwO1xuICAgIH1cbiAgfVxuXG4gIC5wZW5kaW5nIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICBwIHtcbiAgICAgIGZsZXg6IDMgMTtcbiAgICAgIG1hcmdpbi1yaWdodDogN3B4O1xuICAgIH1cblxuICAgIC5idXR0b24ge1xuICAgICAgZmxleDogMSAxO1xuICAgIH1cbiAgfVxuXG4gIEBrZXlmcmFtZXMgZmxhc2gtb25jZSB7XG4gICAgZnJvbSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gICAgICBjb2xvcjogJGMtYWNjZW50LW92ZXI7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctemVicmE7XG4gICAgICBjb2xvcjogJGMtZm9udDtcbiAgICB9XG4gIH1cblxuICAubmVnb3RpYXRpb24ge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcbiAgICBhbmltYXRpb246IGZsYXNoLW9uY2UgMXMgZWFzZS1pbjtcblxuICAgIHBhZGRpbmc6IDFweDtcblxuICAgIHAge1xuICAgICAgZmxleDogMyAxIGF1dG87XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBmbGV4OiAxIDAgM3JlbTtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICBsaW5lLWhlaWdodDogM2VtO1xuICAgICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIH1cblxuICAgIC5hY2NlcHQge1xuICAgICAgY29sb3I6ICRjLWdvb2Q7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFweDtcbiAgICB9XG5cbiAgICAuZGVjbGluZSB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgIH1cblxuICAgIGE6aG92ZXIge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1nb29kO1xuICAgIH1cblxuICAgIGEuZGVjbGluZTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgYSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcbiAgICAgICAgZmxleDogMCAwIDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAxLjJlbTtcbiAgICAgIH1cblxuICAgICAgcGFkZGluZzogM3B4O1xuICAgIH1cbiAgfVxuXG4gIC5nbG93aW5nOmhvdmVyIHtcbiAgICBhbmltYXRpb246IG5vbmU7XG4gIH1cblxuICAuZm9sbG93LXVwIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLyogZm9yIHJlbWF0Y2gtZGVjbGluZSAqL1xuICAgIC5mYnQge1xuICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgICAgbWFyZ2luOiAxcHggMXB4IDAgMXB4O1xuICAgIH1cblxuICAgID4gLmZidDpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgIC5mYnQuc3Ryb25nIHtcbiAgICAgIHBhZGRpbmc6IDJlbSAwO1xuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICB9XG5cbiAgICAud2VhayB7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgcGFkZGluZzogNnB4IDA7XG4gICAgfVxuXG4gICAgLndlYWs6OmJlZm9yZSB7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxuXG4gICAgZm9ybSAuZmJ0IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5zcGlubmVyIHtcbiAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAgIG1hcmdpbi10b3A6ICRibG9jay1nYXA7XG4gICAgfVxuICB9XG5cbiAgLmFuYWx5c2lzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tbGVmdDogMmVtO1xuICAgIH1cbiAgfVxuXG4gIC5yZW1hdGNoIHtcbiAgICAmLmZidCB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICAgIGhlaWdodDogNnJlbTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICAmLm1lIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDgwJSk7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBydWJiZXItYmFuZCB7XG4gICAgICBmcm9tIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICAgICAgfVxuXG4gICAgICA2JSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjI1LCAwLjc1LCAxKTtcbiAgICAgIH1cblxuICAgICAgOCUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC43NSwgMS4yNSwgMSk7XG4gICAgICB9XG5cbiAgICAgIDEwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjE1LCAwLjg1LCAxKTtcbiAgICAgIH1cblxuICAgICAgMTMlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuOTUsIDEuMDUsIDEpO1xuICAgICAgfVxuXG4gICAgICAxNSUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4wNSwgMC45NSwgMSk7XG4gICAgICB9XG5cbiAgICAgIDIwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGJ1dHRvbi1nbG93aW5nIHtcbiAgICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgIH1cbiAgICAgIDYwJSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMjtcbiAgICAgIH1cbiAgICAgIDg1JSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5nbG93aW5nIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgIGNvbG9yOiAkYy1mb250LWNsZWFyO1xuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBidXR0b24tZ2xvd2luZyAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhbmltYXRpb246IHJ1YmJlci1iYW5kIDVzIGluZmluaXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuZmJ0Om5vdCguZGlzYWJsZWQpOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDcwJSk7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAmLWRlY2xpbmUge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXItbm93cmFwLCAlYm94LXJhZGl1cy1yaWdodCwgJWJveC1zaGFkb3c7XG5cbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogLTI1cHg7XG4gICAgICB3aWR0aDogMjVweDtcbiAgICAgIGhlaWdodDogNnJlbTtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1iYWQsICRjLWJnLWJveCwgNTAlKTtcblxuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtY29sMikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjLWJhZDtcbiAgICAgICAgY29sb3I6ICRjLWJhZC1vdmVyO1xuICAgICAgICByaWdodDogLTM2cHg7XG4gICAgICAgIHdpZHRoOiAzNXB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLnJpY29ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuXG4gIC5mYnQge1xuICAgIGZvbnQtc2l6ZTogMS40ZW07XG4gICAgcGFkZGluZzogMC4xZW0gMWVtO1xuICB9XG5cbiAgJi5jb25maXJtID4gYnV0dG9uIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAuYWN0LWNvbmZpcm0ge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA2MHB4O1xuXG4gICAgLmZidC5ubyB7XG4gICAgICBwYWRkaW5nOiAwLjFlbSAwO1xuICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogLTM0cHg7XG4gICAgfVxuXG4gICAgLmZidC55ZXMge1xuICAgICAgJGFjdC1jb25maXJtLXNoYWRlOiBtaXgoIzAwMCwgJGMtYWNjZW50LCAzMCUpO1xuXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogLTNweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogJGMtYWNjZW50O1xuICAgICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkICRhY3QtY29uZmlybS1zaGFkZTtcbiAgICAgIHRleHQtc2hhZG93OiAwIC0xcHggJGFjdC1jb25maXJtLXNoYWRlO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwcHgsIDBweCk7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wNyk7XG4gICAgICB9XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMHB4LCA1cHgpO1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG4gICAgICAgIHRleHQtc2hhZG93OiAwIDAgJGFjdC1jb25maXJtLXNoYWRlO1xuICAgICAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIucm91bmRfX25vdy1wbGF5aW5nIHtcbiAgaDMge1xuICAgIEBleHRlbmQgJWZsZXgtYmV0d2VlbjtcblxuICAgIG1hcmdpbjogMWVtIDAgMC41ZW0gMDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLWNvbDEpIHtcbiAgICAgIG1hcmdpbjogMWVtICRibG9jay1nYXAgMC41ZW0gJGJsb2NrLWdhcDtcbiAgICB9XG4gIH1cblxuICAuc2ltdWwge1xuICAgIHNwYW4ge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBtYXJnaW46IDAgMC41ZW07XG4gICAgfVxuXG4gICAgLndpbiB7XG4gICAgICBjb2xvcjogJGMtZ29vZDtcbiAgICB9XG5cbiAgICAuZHJhdyB7XG4gICAgICBjb2xvcjogJGMtYnJhZztcbiAgICB9XG5cbiAgICAubG9zcyB7XG4gICAgICBjb2xvcjogJGMtYmFkO1xuICAgIH1cbiAgfVxuXG4gIC5zd2l0Y2hlciB7XG4gICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICBsYWJlbCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnN3aXRjaCB7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG4gIH1cblxuICAubm93LXBsYXlpbmcge1xuICAgIEBleHRlbmQgJXBhZ2UtdGV4dDtcbiAgfVxufVxuIiwiLmtleWJvYXJkLW1vdmUge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgaW5wdXQge1xuICAgIHdpZHRoOiA0LjVlbTtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICBib3JkZXI6ICRib3JkZXI7XG5cbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuXG4gICAgJi53cm9uZyB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgICBjb2xvcjogJGMtYmFkLW92ZXI7XG4gICAgfVxuICB9XG5cbiAgZW0ge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgfVxufVxuIiwiI3Bvd2VyVGlwIHtcbiAgLmZvcmVjYXN0LWluZm8ge1xuICAgIC50aXRsZSB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwYWRkaW5nOiAwLjdlbTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRib3JkZXI7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbnRlbnQge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwYWRkaW5nOiAxZW07XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBRUVBLFlBQVk7QUFrQlosNkRBQTZEO0FBYzdELG1CQUFtQjtBQU1uQixrQ0FBa0M7QUFFbEMsc0JBQXNCO0FBTXRCLG9DQUFvQztBQUVwQyxvQkFBb0I7QUFNcEIsaUNBQWlDO0FBRWpDLGdCQUFnQjtBQUloQiwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxnQkFBZ0I7QUFJaEIsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUQ1R2IsNkRBQTZEO0FBYzdELG1CQUFtQjtBQUtuQixzQkFBc0I7QUFLdEIsZ0JBQWdCO0FBR2hCLGlCQUFpQjtBQUdqQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUl6RGQsd0NBQXdDO0FzQkF4QyxZQUFZO0FBZ0JaLGFBQWE7QUFTYixrQkFBa0I7QUFLbEIsa0JBQWtCO0FBS2xCLGFBQWE7QUVuQ2Isc0RBQXNEO0FBT3RELHVFQUF1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 */
