@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 */
.activity section h2 {
  font-family: 'Noto Sans', Sans-Serif;
}

.game-row .header__text strong, .ublog-post-card__intro, .sub-ratings h3, .number-menu .nm-item, .activity rating {
  font-family: 'Roboto', Sans-Serif;
}

/* text printed directly on the page background deserves special treatment (transp theme) */
.sub-ratings a {
  color: #999999;
}

.crosstable__users, .crosstable__score, .crosstable povs:hover, .cmn-toggle + label::after, .user-show .angles {
  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;
}

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

#us_profile .bio, .activity .sub {
  overflow: hidden;
}

#us_profile .col2 > a, .activity .line {
  white-space: nowrap;
}

.user-show .claim-title {
  padding: 5vh var(--box-padding);
}

.user-show .flash {
  padding: 0 var(--box-padding);
}

.ublog-post-card__intro, #us_profile .bio, .note-zone .note {
  overflow-wrap: break-word;
  word-break: break-word;
}

#us_profile .col2 > a, .activity .line, .crosstable__users {
  overflow: hidden;
  text-overflow: ellipsis;
}

.flash__content::before, .flash-warning .flash__content::before, .flash-failure .flash__content::before, .cmn-toggle + label::before {
  font-size: 1.2em;
  vertical-align: middle;
  font-family: 'lichess';
  font-style: normal;
  font-weight: normal;
  text-transform: none;
  speak: none;
  content: attr(data-icon);
  opacity: 0.9;
}

.game-row__overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}

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

.game-row .header, #us_profile, .note-zone .mod-note, .note-zone .mod-note > div, .user-show .angles .nm-item {
  /* extends %flex-wrap */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
}

.sub-ratings a, #us_profile .warning, #us_profile .insight, .user-show__social .relation-actions {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.user-show__social, .user-show .claim-title form {
  /* extends %flex-center */
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  justify-content: space-between;
}

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

.crosstable povs, .crosstable__users, .crosstable__score, .crosstable__matchup, .sub-ratings a > span, #us_profile .profile-side {
  display: flex;
  flex-flow: column;
}

.crosstable, .ublog-post-card, .flash__content, #us_profile .warning, .activity score strong {
  border-radius: 3px;
}

.crosstable, .ublog-post-card {
  overflow: hidden;
  /* helps with clipping background into border-radius */
}

.crosstable .sep, .sub-ratings a {
  border-radius: 3px 0 0 3px;
}

.number-menu--tabs .nm-item {
  border-radius: 3px 3px 0 0;
}

.crosstable, .ublog-post-card, .sub-ratings a.active {
  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);
}

.fire-trophy, .trophy.streaming, .trophy.patron:hover {
  text-shadow: 0 0.008em 0.127em #fefcc9, 0.055em -0.066em 0.2em #feec85, -0.111em -0.127em 0.272em #ffae34, 0.111em -0.272em 0.411em #ec760c, -0.111em -0.456em 0.416em #cd4606, 0 -0.533em 0.577em #973716, 0.055em -0.55em 0.533em #451b0e;
}

@keyframes fire-trophy {
  0% {
    text-shadow: 0 0.008em 0.127em #fefcc9, 0.055em -0.066em 0.2em #feec85, -0.111em -0.127em 0.272em #ffae34, 0.111em -0.272em 0.411em #ec760c, -0.111em -0.456em 0.416em #cd4606, 0 -0.533em 0.577em #973716, 0.055em -0.55em 0.533em #451b0e;
  }
  100% {
    text-shadow: 0 0 0.111em #fefcc9, 0.055em -0.055em 0.166em #fefcc9, -0.111em -0.111em 0.222em #feec85, 0.122em -0.233em 0.333em #ffae34, -0.122em -0.322em 0.277em #ec760c, 0 -0.456em 0.444em #cd4606, 0.055em -0.5em 0.444em #973716;
  }
}

.fire-trophy {
  color: #bababa;
  font-size: 90px;
  display: block;
}

.fire-trophy:hover {
  animation: fire-trophy 1.5s ease-in-out infinite alternate;
}

.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;
}

.hover-text::after {
  content: attr(title);
}

.hover-text:hover::after {
  content: attr(data-hover-text);
}

.crosstable__users {
  flex: 1 1 auto;
}

.crosstable {
  width: 100%;
  line-height: 1.9em;
  display: flex;
}

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

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

.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;
}

.flash {
  margin: 1em 0 2em 0;
}

.flash__content {
  padding: 1em 2em;
  background: #629924;
  color: #fff;
}

.flash__content::before {
  content: '';
  margin-right: 1em;
  font-size: 1.5em;
}

.flash__content a {
  color: #fff;
}

.flash-warning .flash__content {
  background: #bf811d;
  color: #fff;
}

.flash-warning .flash__content::before {
  content: '';
}

.flash-failure .flash__content {
  background: #cc3333;
  color: #fff;
}

.flash-failure .flash__content::before {
  content: '';
}

.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;
}

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;
}

.game-row {
  display: flex;
  align-items: stretch;
  height: 17rem;
  padding: 0.5em 1em;
  border-bottom: 1px solid #404040;
  position: relative;
  transition: background 150ms;
}

.game-row:nth-child(odd) {
  background: #302e2c;
}

.game-row:hover {
  background: #293a49;
}

.game-row__board {
  flex: 0 0 16rem;
  margin-right: 1em;
}

@media (max-width: 799px) {
  .game-row__board {
    display: none;
  }
}

.game-row__infos {
  flex: 1 1 100%;
  display: flex;
  flex-flow: column;
  justify-content: space-between;
  margin: 0.5em 0;
  overflow: hidden;
}

.game-row__infos .notes {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.game-row .header::before {
  font-size: 3em;
  opacity: 0.7;
  margin-right: 0.7rem;
}

.game-row .header__text strong {
  font-weight: normal;
  font-size: 1.4em;
  text-transform: uppercase;
  display: block;
}

.game-row .versus {
  display: flex;
  justify-content: center;
  align-items: center;
}

.game-row .versus .swords {
  width: 2.5em;
  text-align: center;
  font-size: 2em;
  opacity: 0.7;
}

.game-row .versus .player {
  font-size: 1.3em;
  text-align: right;
}

.game-row .versus .player.black {
  text-align: left;
}

.game-row .versus a {
  font-weight: bold;
  position: relative;
  z-index: 3;
}

.game-row .versus .anon {
  line-height: 2em;
}

.game-row .result {
  display: block;
  text-align: center;
}

.game-row .win {
  color: #629924;
}

.game-row .loss {
  color: #cc3333;
}

.ublog-post-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(22em, 1fr));
  grid-gap: 3vmin;
}

.ublog-post-card {
  transition: box-shadow 150ms;
  background: #302e2c;
  color: #bababa;
  position: relative;
}

.ublog-post-card--link:hover {
  box-shadow: 0 0 5px #3692e7, 0 0 20px #3692e7;
}

.ublog-post-card__over-image {
  position: absolute;
  top: 0;
  padding: 0.2em 0.5em 0.3em 0.5em;
  background: rgba(0, 0, 0, 0.65);
  color: #ddd;
  text-shadow: 0 1px 1px black;
  opacity: 1;
}

.ublog-post-card time {
  left: 0;
  border-radius: 0 0 3px 0;
}

.ublog-post-card .user-link {
  right: 0;
  border-radius: 0 0 0 3px;
}

.ublog-post-card__image {
  width: 100%;
  height: auto;
}

.ublog-post-card__image.ublog-post-image-default {
  background-image: url("../images/placeholder-margin.png");
  background-size: cover;
  background-position: center;
}

.ublog-post-card__content {
  padding: 3% 3% 4% 6%;
  display: block;
  max-height: 12em;
}

.ublog-post-card__title {
  font-size: 1.3em;
  color: #cccccc;
  display: block;
}

.ublog-post-card__intro {
  color: #bababa;
  margin-top: 1em;
  display: block;
}

.sub-ratings a {
  padding: 0.7em 2vmin 0.7em 0.4em;
  white-space: nowrap;
  transition: all 150ms;
}

.sub-ratings a.empty {
  opacity: 0.5;
}

.sub-ratings a::before {
  font-size: 3em;
  opacity: 0.5;
  margin-right: 0.2em;
  transition: all 150ms;
}

.sub-ratings a[href]:hover {
  background: #1e1d1a;
}

.sub-ratings a[href]:hover::before {
  color: #3692e7;
  opacity: 0.7;
}

.sub-ratings a.active {
  background: #262421;
}

.sub-ratings a.active::before {
  color: #d64f00;
  opacity: 0.7;
}

.sub-ratings a > span {
  flex: 1 1 100%;
  margin-right: 0.5em;
}

.sub-ratings a rating span,
.sub-ratings a .rank {
  font-size: 0.9em;
}

.sub-ratings a i {
  font-size: 0.75em;
  opacity: 0.2;
  color: #999999;
  transition: all 150ms;
}

.sub-ratings a:hover i {
  color: #3692e7;
  opacity: 0.7;
}

.sub-ratings a.active i {
  display: none;
}

.sub-ratings a .shy {
  font-size: 0.8em;
  opacity: 0.6;
  line-height: 1em;
}

.sub-ratings hr {
  margin: 2vmin auto;
  width: 80%;
}

.sub-ratings h3 {
  font-size: 1.1em;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0;
  display: inline-block;
}

.sub-ratings strong {
  color: #999999;
  font-weight: bold;
  font-size: 1.2em;
}

@media (max-width: 979px) {
  .sub-ratings a {
    padding: 0.3em;
  }
  .sub-ratings a > i,
  .sub-ratings h3,
  .sub-ratings hr,
  .sub-ratings rating .rp,
  .sub-ratings rating span {
    display: none;
  }
}

@media (max-width: 799px) {
  .sub-ratings {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9ch, 1fr));
  }
  .sub-ratings hr,
  .sub-ratings .rank {
    display: none;
  }
  .sub-ratings a {
    display: flex;
    justify-content: center;
  }
  .sub-ratings a::before {
    opacity: 0.8;
    font-size: 1.5em;
  }
  .sub-ratings a > span {
    flex: 0 0 auto;
    margin-right: 0;
  }
  .sub-ratings a strong {
    font-weight: normal;
  }
}

.user-show__header {
  background: #302e2c;
  padding: 2em 1.5em 1em 1.5em;
  flex-flow: row nowrap;
}

.user-show__header h1 {
  flex: 0 0 auto;
  font-size: 2em;
  margin-top: 0;
}

.user-show__header .connected {
  color: #629924;
}

.user-show__header .closed {
  color: #cc3333;
  font-weight: bold;
  margin-right: 1em;
}

.user-show__header .line {
  vertical-align: top;
}

.trophies {
  position: absolute;
  top: 35px;
  right: 1.5em;
  height: 40px;
  display: flex;
  flex-flow: row wrap;
  align-items: flex-start;
  justify-content: flex-end;
  margin-top: 0 !important;
}

@media (max-width: 799px) {
  .trophies {
    display: none;
  }
}

.trophy.award {
  font-family: 'lichess';
  speak: none;
  line-height: 100%;
}

.trophy {
  display: flex;
  align-items: flex-end;
  height: 40px;
}

.trophy img {
  height: 80px;
}

.trophy.top1 {
  filter: drop-shadow(0 0 6px #bf811d);
}

.trophy,
.shield-trophy {
  transition: transform 0.2s;
}

.trophy:not(.patron):hover,
.shield-trophy:not(.patron):hover {
  transform: translateY(-3px);
}

.stacked {
  height: 40px;
  display: flex;
  align-items: flex-end;
}

.stacked .trophy {
  width: 65px;
  height: 65px;
  font-size: 65px;
}

.fire-trophy {
  opacity: 0.9;
  height: 80px;
  position: relative;
}

.fire-trophy, .fire-trophy:hover {
  color: #cccccc;
}

.fire-trophy:hover {
  opacity: 1;
}

.fire-trophy.marathonWinner, .fire-trophy.marathonTopTen, .fire-trophy.marathonTopFifty {
  filter: hue-rotate(190deg);
  color: #998b85;
}

.fire-trophy.marathonTopTen {
  font-size: 58px;
  width: 55px;
  height: 55px;
  margin-top: 22px;
}

.fire-trophy.marathonTopFifty, .fire-trophy.marathonTopHundred, .fire-trophy.marathonTopFivehundred {
  font-size: 50px;
  height: 50px;
  width: 50px;
  margin-top: 30px;
  animation: none;
}

.fire-trophy.marathonTopFifty {
  text-shadow: 0 0 5px #ffae34, 0 0 6.25px #ec760c, 0 0 7.5px #cd4606;
}

.fire-trophy.marathonTopHundred {
  text-shadow: none;
  color: #066ccd;
}

.fire-trophy.marathonTopFivehundred {
  text-shadow: none;
}

.packed .trophy {
  margin-right: -8px;
}

.packed .stacked {
  margin-right: 30px;
}

.packed .stacked .trophy {
  margin-right: -30px;
}

.trophy.icon3d {
  width: 40px;
  height: 40px;
  font-size: 39px;
  color: #6b6b6b;
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
}

.trophy.streaming {
  color: #bf811d;
  animation: fire-trophy 1.25s ease-in-out infinite alternate;
}

.trophy.patron {
  flex: 0 0 auto;
  font-size: 60px;
  margin: 0 -10px 0 30px;
  transform: scale(-1, 1);
  color: #bf811d;
  transition: margin-top 0.5s;
}

.trophy.patron:hover {
  animation: fire-trophy 1.25s ease-in-out infinite alternate;
}

.combo-trophy {
  width: 60px;
  height: 60px;
  background-size: contain;
  background-repeat: no-repeat;
  font-family: 'lichess';
  text-align: center;
}

.shield-trophy {
  width: 50px;
  background-image: url(../images/trophy/shield-gold.png);
  font-size: 30px;
  line-height: 60px;
  color: #333 !important;
  text-shadow: 0 0 6px #fff;
  margin-top: -20px;
  filter: drop-shadow(0 0 6px #bf811d);
}

.revol_trophy {
  background-image: url(../images/trophy/round-star.png);
  font-size: 24px;
  line-height: 68px;
  color: #fff !important;
  text-shadow: 0 0 4px #444;
  margin-top: -18px;
}

#us_profile {
  border-top: 1px solid #404040;
}

#us_profile .warning {
  padding: 0.7em;
  background: #372623;
  border: 1px solid #582927;
  color: #cc3333;
}

#us_profile .warning span {
  margin-right: 0.2em;
  font-size: 2.7em;
}

#us_profile .tos_warning {
  margin: 10px 0;
}

#us_profile .rating-history {
  flex: 1 1 58%;
  margin: -10px 0 -14px -8px;
  height: 350px;
}

#us_profile .rating-history .spinner {
  width: 90px;
  height: 90px;
  margin: 120px auto 0 auto;
}

#us_profile .profile-side {
  flex: 1 0 300px;
  height: 332px;
  border-left: 1px solid #404040;
  overflow: hidden;
}

#us_profile .country img {
  vertical-align: text-bottom;
  margin: 0 0.3em;
}

#us_profile .user-infos {
  overflow-y: auto;
  flex: 1 1 auto;
  padding: 0.8em;
  overflow: auto;
}

@media (hover: hover) {
  #us_profile .user-infos:not(:hover) {
    scrollbar-width: none;
  }
  #us_profile .user-infos:not(:hover)::-webkit-scrollbar {
    display: none;
  }
}

#us_profile .insight {
  /* no point linking to insights on devices that can't properly display it */
  flex: 0 0 auto;
  padding: 0.3em 1em;
  border-top: 1px solid #404040;
  color: #3692e7;
}

@media (max-width: 979px) {
  #us_profile .insight {
    display: none;
  }
}

#us_profile .insight strong {
  display: block;
  font-weight: normal;
  font-size: 1.5em;
}

#us_profile .insight em {
  display: block;
}

#us_profile .insight::before {
  font-size: 2.5em;
  margin-right: 1rem;
}

#us_profile .insight:hover, #us_profile .insight:hover::before {
  transition: all 150ms;
  background: #3692e7;
  color: #fff;
}

#us_profile .col2 {
  display: flex;
  flex-flow: row wrap;
}

#us_profile .col2 > a {
  flex: 0 0 50%;
}

#us_profile .bio {
  font-style: italic;
}

#us_profile .bio img {
  max-width: 100%;
}

.number-menu {
  display: flex;
  user-select: none;
}

.number-menu .nm-item {
  flex: 1 1 auto;
  color: #bababa;
  text-align: center;
  line-height: 1.4em;
  padding: 0.5em 5px;
  text-transform: capitalize;
  white-space: normal;
  font-size: 0.9em;
}

.number-menu .nm-item:hover {
  color: #3692e7;
}

.number-menu--tabs .nm-item {
  margin-top: 0.7em;
  padding-bottom: 0.8em;
  transition: all 150ms;
  border-bottom: 1px solid #404040;
}

.number-menu--tabs .nm-item:first-child {
  border-top-left-radius: 0;
  border-left: 0 !important;
}

.number-menu--tabs .nm-item:last-child {
  border-top-right-radius: 0;
  border-right: 0 !important;
}

.number-menu--tabs .nm-item:hover {
  background: #282f35;
  color: #cccccc;
}

.number-menu--tabs .nm-item.active {
  color: #cccccc;
  border: 1px solid #404040;
  border-bottom: 0;
  background: #262421;
}

.number-menu strong {
  font-weight: normal;
  font-size: 1.1em;
}

.note-zone {
  display: none;
  margin: 1em 1.5em;
  padding-bottom: 1em;
}

.note-zone textarea {
  width: 100%;
  height: 5em;
}

.note-zone .note {
  padding-top: 1em;
  border-top: 1px solid #404040;
  margin-top: 1em;
}

.note-zone .note__meta {
  text-align: right;
  margin: 0 1em;
  white-space: nowrap;
}

.note-zone .note__text {
  flex: 1 1 auto;
  min-height: 2.7em;
}

.note-zone .mod-note > div {
  margin-left: 1.5em;
}

.note-zone .mod-note > div > label {
  margin-left: 0.5em;
  cursor: pointer;
}

.activity section {
  font-size: 1.2em;
  margin-left: 2rem;
  padding-top: 1rem;
}

@media (max-width: 799px) {
  .activity section {
    margin-right: 2em;
  }
}

.activity section h2 {
  color: #bf811d;
  font-size: 1.2em;
}

.activity section h2 time {
  font-weight: bold;
  text-transform: uppercase;
}

.activity .entries {
  margin-top: 0;
  padding-top: 10px;
  position: relative;
}

.activity .entry {
  padding: 1em 0 1em;
}

.activity .entry > i {
  font-size: 24px;
  float: left;
  width: 50px;
  height: 50px;
  margin-top: -10px;
  margin-left: -72px;
  line-height: 39px;
  text-align: center;
  background-color: #a87626;
  border: 3px solid #262421;
  border-radius: 50%;
  color: #fff;
}

@media (min-width: 500px) {
  .activity .entries {
    margin: 30px 50px 0 50px;
    border-left: 3px solid #a87626;
  }
  .activity .entry {
    padding-left: 45px;
  }
}

.activity .sub {
  margin: 3px 0;
  font-size: 1rem;
}

.activity .sub:last-child {
  margin-bottom: -7px;
}

.activity .sub > div {
  overflow: hidden;
}

.activity .line .more {
  flex: 0 1 auto;
}

.activity .line a {
  color: #bababa;
}

.activity .line a:hover {
  color: #3692e7;
}

.activity rating {
  margin-left: 0.7em;
}

.activity rating .rp {
  margin-left: 0.2em;
}

.activity score {
  float: right;
  font-size: 0.7em;
  margin-top: 2px;
}

.activity score > * {
  margin-left: 8px;
}

.activity score strong {
  color: #fff;
  font-size: 1.2em;
  padding: 1px 6px;
  display: inline-block;
  text-align: center;
  opacity: 0.7;
}

.activity .sub score strong {
  line-height: 1.6em;
  padding: 1px 4px;
}

.activity win strong {
  background: #629924;
}

.activity draw strong {
  background: #bf811d;
}

.activity loss strong {
  background: #cc3333;
}

.user-show .number-menu .to-playing {
  color: #d64f00;
}

.user-show .number-menu .to-playing strong {
  font-weight: bold;
}

.user-show .now-playing {
  grid-template-columns: repeat(auto-fill, minmax(250px, auto));
}

.page-menu {
  /* for the trophies. This glorious hack bypasses the .user-show overflow: hidden */
  position: relative;
}

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

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

.user-show {
  overflow: hidden;
  /* this fixes profile overflow, but cuts out the trophies */
}

.user-show__social {
  background: #302e2c;
}

.user-show__social .number-menu {
  margin: 0 0 0.2em 1em;
}

.user-show__social .user-actions {
  margin: 1em;
}

.user-show__social .user-actions form {
  display: inline;
}

.user-show__social .relation-actions {
  border-right: 1px solid #404040;
}

.user-show .claim-title {
  border-top: 1px solid #404040;
}

.user-show .claim-title h2 {
  font-size: 1.5em;
  margin-bottom: 1em;
}

.user-show .claim-title form {
  margin: 3em 0 1em 0;
}

.user-show .crosstable {
  margin: 2em 1em;
  width: auto;
}

.user-show .new-player {
  padding: 1.5em;
  overflow-y: scroll;
}

.user-show .new-player h2 {
  font-size: 1.5em;
}

.user-show .new-player p {
  margin: 1em 0;
}

.user-show .new-player li {
  list-style: disc inside;
  line-height: 1.5em;
}

.user-show .number-menu .to-games.active,
.user-show #games.number-menu {
  background: #3c3934 !important;
}

.user-show .angles {
  font-size: 1.2em;
  height: 4rem;
  border-top: 1px solid #404040;
}

.user-show .angles .nm-item {
  justify-content: center;
}

.user-show .angles .unread {
  margin-left: 0.5em;
}

.user-show .activity {
  margin-bottom: 2em;
}

.user-show__blog {
  border-top: 1px solid #404040;
  padding: 2vh 2.5%;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  grid-gap: 0 3%;
  grid-template-rows: auto;
  /* first row auto */
  grid-auto-rows: 0;
  /* all the other rows 0 */
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l0ZS9jc3MvYnVpbGQvdXNlci5zaG93LmRhcmsuY3NzIiwic291cmNlcyI6WyJzaXRlL2Nzcy9idWlsZC91c2VyLnNob3cuZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGFyay5zY3NzIiwiY29tbW9uL2Nzcy90aGVtZS9fZGVmYXVsdC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fZnVuY3Rpb25zLnNjc3MiLCJzaXRlL2Nzcy9idWlsZC9fdXNlci5zaG93LnNjc3MiLCJjb21tb24vY3NzL19wbHVnaW4uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fc2V0dGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3BhcnNlcnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3NpbmdsZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvc2luZ2xlL19kZWZhdWx0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQtcGFpci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kb3VibGUtc3RyaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL190cmlwbGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3RyaXBsZS9fZGVmYXVsdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3Jlc29sdXRpb24vX3Jlc29sdXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbm8tcXVlcnkuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19sZWdhY3ktc2V0dGluZ3Muc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2FsbC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fei1pbmRleC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWVkaWEtcXVlcmllcy5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fdmFyaWFibGVzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L191bmlib2FyZC5zY3NzIiwiY29tbW9uL2Nzcy9hYnN0cmFjdC9fbWl4aW5zLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19leHRlbmRzLnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19mbGV4LnNjc3MiLCJjb21tb24vY3NzL2Fic3RyYWN0L19ib3guc2NzcyIsImNvbW1vbi9jc3MvYWJzdHJhY3QvX2ZsdWlkLXNpemUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19maXJlLXRyb3BoeS5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX25vdy1wbGF5aW5nLnNjc3MiLCJjb21tb24vY3NzL2NvbXBvbmVudC9faG92ZXItdGV4dC5zY3NzIiwiY29tbW9uL2Nzcy9jb21wb25lbnQvX2Nyb3NzdGFibGUuc2NzcyIsImNvbW1vbi9jc3MvY29tcG9uZW50L19mbGFzaC5zY3NzIiwiY29tbW9uL2Nzcy9mb3JtL19jbW4tdG9nZ2xlLnNjc3MiLCJjb21tb24vY3NzL2Jhc2UvX3Njcm9sbGJhci5zY3NzIiwiZ2FtZS9jc3MvX3Jvdy5zY3NzIiwic2l0ZS9jc3MvdWJsb2cvX2NhcmQuc2NzcyIsInNpdGUvY3NzL3VzZXIvX3Nob3cuc2NzcyIsInNpdGUvY3NzL3VzZXIvX3N1Yi1yYXRpbmcuc2NzcyIsInNpdGUvY3NzL3VzZXIvX2hlYWRlci5zY3NzIiwic2l0ZS9jc3MvdXNlci9fdHJvcGh5LnNjc3MiLCJzaXRlL2Nzcy91c2VyL19wcm9maWxlLnNjc3MiLCJzaXRlL2Nzcy91c2VyL19udW1iZXItbWVudS5zY3NzIiwic2l0ZS9jc3MvdXNlci9fbm90ZS16b25lLnNjc3MiLCJzaXRlL2Nzcy91c2VyL19hY3Rpdml0eS5zY3NzIiwic2l0ZS9jc3MvdXNlci9fZ2FtZXMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL3RoZW1lL2RhcmsnO1xuQGltcG9ydCAndXNlci5zaG93JztcbiIsIkBpbXBvcnQgJ2RlZmF1bHQnO1xuXG4kdGhlbWU6ICdkYXJrJztcbiRjb2xvci1zY2hlbWU6ICdkYXJrJztcbiR0aGVtZS1saWdodDogZmFsc2U7XG4kdGhlbWUtZGFyazogdHJ1ZTtcblxuQGZ1bmN0aW9uIGMtZGltbWVyKCRjb2xvciwgJHdlaWdodDogMjAlKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbkBmdW5jdGlvbiBjLWNsZWFyZXIoJGNvbG9yLCAkd2VpZ2h0OiAyMCUpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkd2VpZ2h0KTtcbn1cblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDglKTtcbiRjLWJnLWhpZ2g6IGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDE0JSk7XG4kYy1iZy1sb3c6IGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyJSk7XG5cbi8qIGV2ZW4gcm93cyBpbiBsaXN0IG9yIHRhYmxlcywgc3VidGxlIHNoYWRlIG9mICRjLWJnLWhpZ2ggKi9cbiRjLWJnLXplYnJhOiBoc2woJGMtc2l0ZS1odWUsIDUlLCAxOCUpO1xuJGMtYmctemVicmEyOiBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMyUpO1xuXG4kYy1ib2R5LWdyYWRpZW50OiBoc2woJGMtc2l0ZS1odWUsIDEyJSwgMTYlKTtcblxuJGMtZm9udDogaHNsKDAsIDAlLCA3MyUpO1xuJGMtZm9udC1kaW06IGMtbGlnaHQoJGMtZm9udCwgNjAlKTtcbiRjLWZvbnQtZGltbWVyOiBjLWxpZ2h0KCRjLWZvbnQsIDQyJSk7XG4kYy1mb250LWNsZWFyOiBjLWxpZ2h0KCRjLWZvbnQsIDgwJSk7XG4kYy1mb250LWNsZWFyZXI6IGMtbGlnaHQoJGMtZm9udCwgODklKTtcbiRjLXNoYWRlOiBjLWxpZ2h0KCRjLWZvbnQsIDMwJSk7XG4kYy1mb250LXBhZ2U6ICRjLWZvbnQtZGltO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3OSUsIDU2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSwgMTUlKTtcbiRjLXByaW1hcnktY2xlYXI6IGMtY2xlYXJlcigkYy1wcmltYXJ5KTtcblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG5cbi8qIEJyYWc6IGdvbGQgKi9cbiRjLWJyYWc6IGhzbCgzNywgNzQlLCA0MyUpO1xuXG4vKiBGYW5jeTogcGluayAqL1xuJGMtZmFuY3k6IGhzbCgyOTQsIDYyJSwgNDglKTtcblxuLyogR29vZDogZ3JlZW4gKi9cbiRjLWdvb2Q6ICRjLXNlY29uZGFyeTtcbiRjLWdvb2Qtb3ZlcjogJGMtc2Vjb25kYXJ5LW92ZXI7XG5cbi8qIFdhcm46IG9yYW5nZSAqL1xuJGMtd2FybjogJGMtYnJhZztcbiRjLXdhcm4tb3ZlcjogJGMtYnJhZy1vdmVyO1xuXG4vKiBCYWQ6IHJlZCAqL1xuJGMtYmFkOiAkYy1lcnJvcjtcbiRjLWJhZC1vdmVyOiAkYy1lcnJvci1vdmVyO1xuXG4kYy1saW5rOiAkYy1wcmltYXJ5O1xuJGMtbGluay1kaW06ICRjLXByaW1hcnktZGltO1xuJGMtbGluay1jbGVhcjogJGMtcHJpbWFyeS1jbGVhcjtcbiRjLWxpbmstaG92ZXI6IGMtY2xlYXJlcihzYXR1cmF0ZSgkYy1wcmltYXJ5LCAxMDAlKSwgMjUlKTtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgMTMlKTtcblxuJGMtYmctcG9wdXA6ICRjLWJnLWxvdztcbiRjLXBvcHVwOiAkYy1mb250LWNsZWFyO1xuXG4kYy1iZy1oZWFkZXItZHJvcGRvd246ICRjLWJnLXBvcHVwO1xuJGMtaGVhZGVyLWRyb3Bkb3duOiAkYy1wb3B1cDtcblxuJGMtYm90OiAkYy1mYW5jeTtcblxuJGMtcGFnZS1pbnB1dDogJGMtYmctYm94O1xuXG4kYy1ib3JkZXI6IGhzbCgwLCAwJSwgMjUlKTtcbiRjLWJvcmRlci1wYWdlOiBoc2woMCwgMCUsIDIyJSk7XG4kYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgJGMtYm9yZGVyO1xuXG4kYy1mb250LXNoYWRvdzogYmxhY2s7XG4kdGV4dC1zaGFkb3c6IG5vbmU7XG5cbkBtaXhpbiBtZXRhbC1iZyB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIGhzbCgkYy1zaXRlLWh1ZSwgNyUsIDIyKSwgaHNsKCRjLXNpdGUtaHVlLCA1JSwgMTkpIDEwMCUpO1xufVxuXG5AbWl4aW4gbWV0YWwge1xuICBAaW5jbHVkZSBtZXRhbC1iZztcbn1cblxuQG1peGluIG1ldGFsLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgaHNsKCRjLXNpdGUtaHVlLCA3JSwgMjUpLCBoc2woJGMtc2l0ZS1odWUsIDUlLCAyMikgMTAwJSk7XG4gIGNvbG9yOiAkYy1mb250LWNsZWFyO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG5AbWl4aW4gcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIG1ldGFsLWhvdmVyO1xufVxuXG5AbWl4aW4gdGhlbWUtc3R5bGUge1xufVxuIiwiQGltcG9ydCAnLi4vYWJzdHJhY3QvZnVuY3Rpb25zJztcblxuLyogQ29sb3JzICovXG5cbkBmdW5jdGlvbiBjLWRpbW1lcigkY29sb3IsICR3ZWlnaHQ6IDE3JSkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICR3ZWlnaHQpO1xufVxuXG5AZnVuY3Rpb24gYy1jbGVhcmVyKCRjb2xvciwgJHdlaWdodDogMTclKSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHdlaWdodCk7XG59XG5cbiRjLXNpdGUtaHVlOiAzNztcblxuJGMtYmctcGFnZTogaHNsKCRjLXNpdGUtaHVlLCAxMCUsIDkyJSk7XG5cbi8vIGhzbCgyMTAsIDE3JSwgOTUlKVxuJGMtYmctaGlnaDogaHNsKDAsIDAlLCAxMDAlKTtcbiRjLWJnLWxvdzogaHNsKDAsIDAlLCA4OSUpO1xuXG4vKiBldmVuIHJvd3MgaW4gbGlzdCBvciB0YWJsZXMsIHN1YnRsZSBzaGFkZSBvZiAkYy1iZy1oaWdoICovXG4kYy1iZy16ZWJyYTogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDk2LjUlKTtcbiRjLWJnLXplYnJhMjogaHNsKCRjLXNpdGUtaHVlLCAxMiUsIDkyJSk7XG5cbiRjLWJvZHktZ3JhZGllbnQ6IGhzbCgkYy1zaXRlLWh1ZSwgMTIlLCA4NCUpO1xuXG4kYy1mb250OiBoc2woMCwgMCUsIDMwJSk7XG4kYy1mb250LWRpbTogYy1saWdodCgkYy1mb250LCA0NyUpO1xuJGMtZm9udC1kaW1tZXI6IGMtbGlnaHQoJGMtZm9udCwgNzAlKTtcbiRjLWZvbnQtY2xlYXI6IGMtbGlnaHQoJGMtZm9udCwgMTIlKTtcbiRjLWZvbnQtY2xlYXJlcjogYy1saWdodCgkYy1mb250LCAwJSk7XG4kYy1zaGFkZTogYy1kaW1tZXIoJGMtZm9udCwgODAlKTtcbiRjLWZvbnQtcGFnZTogYy1saWdodCgkYy1mb250LCAzNyUpO1xuXG4vKiBQcmltYXJ5OiBibHVlICovXG4kYy1wcmltYXJ5OiBoc2woMjA5LCA3NyUsIDQ2JSk7XG4kYy1wcmltYXJ5LWRpbTogYy1kaW1tZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LWNsZWFyOiBjLWNsZWFyZXIoJGMtcHJpbWFyeSk7XG4kYy1wcmltYXJ5LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBwcmltYXJ5IGJhY2tncm91bmQgKi9cblxuLyogU2Vjb25kYXJ5OiBncmVlbiAqL1xuJGMtc2Vjb25kYXJ5OiBoc2woODgsIDYyJSwgMzclKTtcbiRjLXNlY29uZGFyeS1kaW06IGMtZGltbWVyKCRjLXNlY29uZGFyeSk7XG4kYy1zZWNvbmRhcnktZGltbWVyOiBjLWRpbW1lcigkYy1zZWNvbmRhcnksIDQwJSk7XG4kYy1zZWNvbmRhcnktb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIHNlY29uZGFyeSBiYWNrZ3JvdW5kICovXG5cbi8qIEFjY2VudDogb3JhbmdlICovXG4kYy1hY2NlbnQ6IGhzbCgyMiwgMTAwJSwgNDIlKTtcbiRjLWFjY2VudC1kaW06IGMtZGltbWVyKCRjLWFjY2VudCk7XG4kYy1hY2NlbnQtY2xlYXI6IGMtY2xlYXJlcigkYy1hY2NlbnQpO1xuJGMtYWNjZW50LW92ZXI6ICNmZmY7XG5cbi8qIHRleHQgb3ZlciBhY2NlbnQgYmFja2dyb3VuZCAqL1xuXG4vKiBCcmFnOiBnb2xkICovXG4kYy1icmFnOiBoc2woMzcsIDc0JSwgNDglKTtcbiRjLWJyYWctb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBFcnJvcjogcmVkICovXG4kYy1yZWQ6IGhzbCgwLCA2MCUsIDUwJSk7XG4kYy1lcnJvcjogJGMtcmVkO1xuJGMtZXJyb3Itb3ZlcjogI2ZmZjtcblxuLyogdGV4dCBvdmVyIGJyYWcgYmFja2dyb3VuZCAqL1xuXG4vKiBHb29kOiBncmVlbiAqL1xuJGMtZ29vZDogJGMtc2Vjb25kYXJ5O1xuJGMtZ29vZC1vdmVyOiAkYy1zZWNvbmRhcnktb3ZlcjtcblxuLyogV2Fybjogb3JhbmdlICovXG4kYy13YXJuOiAkYy1icmFnO1xuJGMtd2Fybi1vdmVyOiAkYy1icmFnLW92ZXI7XG5cbi8qIEJhZDogcmVkICovXG4kYy1iYWQ6ICRjLWVycm9yO1xuJGMtYmFkLW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEhlYXJ0OiByZWQgKi9cbiRjLWhlYXJ0OiAkYy1lcnJvcjtcbiRjLWhlYXJ0LW92ZXI6ICRjLWVycm9yLW92ZXI7XG5cbi8qIEZhbmN5OiBwaW5rICovXG4kYy1mYW5jeTogaHNsKDI5NCwgNjElLCA2MiUpO1xuJGMtZmFuY3ktb3Zlcjogd2hpdGU7XG5cbi8qIHRleHQgb3ZlciBicmFnIGJhY2tncm91bmQgKi9cblxuJGMtbGluazogJGMtcHJpbWFyeTtcbiRjLWxpbmstZGltOiAkYy1wcmltYXJ5LWRpbTtcbiRjLWxpbmstY2xlYXI6ICRjLXByaW1hcnktY2xlYXI7XG4kYy1saW5rLWhvdmVyOiBjLWNsZWFyZXIoc2F0dXJhdGUoJGMtcHJpbWFyeSwgMTAwJSksIDM1JSk7XG4kYy1saW5rLW92ZXI6ICRjLXByaW1hcnktb3ZlcjtcblxuJGMtYmctYm94OiAkYy1iZy1oaWdoO1xuJGMtYmctYm94LW9wYXF1ZTogJGMtYmctYm94O1xuJGMtYmctaW5wdXQ6IGMtbGlnaHQoJGMtYmctcGFnZSwgOTglKTtcblxuJGMtYm9yZGVyOiBoc2woMCwgMCUsIDg1JSk7XG4kYy1ib3JkZXItcGFnZTogaHNsKDAsIDAlLCA4MCUpO1xuXG4kYy1wYWdlLW1hc2s6IGhzbGEoMCwgMCwgMCUsIDAuNik7XG5cbiRjLWJnLXBvcHVwOiAkYy1iZy1oaWdoO1xuJGMtcG9wdXA6ICRjLWZvbnQ7XG5cbiRjLWJnLWhlYWRlci1kcm9wZG93bjogJGMtYmctcG9wdXA7XG4kYy1oZWFkZXItZHJvcGRvd246ICRjLXBvcHVwO1xuXG4kYy1mb250LXNoYWRvdzogd2hpdGU7XG4kdGV4dC1zaGFkb3c6IDAgMXB4IDAgJGMtZm9udC1zaGFkb3c7XG5cbiRjLWJvdDogJGMtZmFuY3k7XG5cbiRjLXBhZ2UtaW5wdXQ6ICRjLWJnLWxvdztcblxuLyogQm9yZGVycyAqL1xuXG4kYm9yZGVyLXdpZHRoOiAxcHg7XG4kYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiRib3JkZXI6ICRib3JkZXItd2lkdGggJGJvcmRlci1zdHlsZSAkYy1ib3JkZXI7XG5cbi8qIFNoYWRvd3MgKi9cblxuJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuLy8gJGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwwLDAsLjE1Nyk7XG4iLCJAZnVuY3Rpb24gYy1saWdodCgkY29sb3IsICR2YWx1ZSkge1xuICBAcmV0dXJuIGNoYW5nZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICR2YWx1ZSk7XG59XG5cbkBmdW5jdGlvbiBpbWctdXJsKCRwYXRoKSB7XG4gIEByZXR1cm4gdXJsKCcjeyRpbWctcGF0aH0vI3skcGF0aH0nKTtcbn1cbiIsIkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvcGx1Z2luJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2ZpcmUtdHJvcGh5JztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L25vdy1wbGF5aW5nJztcbkBpbXBvcnQgJy4uLy4uLy4uL2NvbW1vbi9jc3MvY29tcG9uZW50L2hvdmVyLXRleHQnO1xuQGltcG9ydCAnLi4vLi4vLi4vY29tbW9uL2Nzcy9jb21wb25lbnQvY3Jvc3N0YWJsZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2NvbXBvbmVudC9mbGFzaCc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2Zvcm0vY21uLXRvZ2dsZSc7XG5AaW1wb3J0ICcuLi8uLi8uLi9jb21tb24vY3NzL2Jhc2Uvc2Nyb2xsYmFyJztcbkBpbXBvcnQgJy4uLy4uLy4uL2dhbWUvY3NzL3Jvdyc7XG5AaW1wb3J0ICcuLi91YmxvZy9jYXJkJztcbkBpbXBvcnQgJy4uL3VzZXIvc2hvdyc7XG4iLCIvKiBDb21tb24gaW1wb3J0cyBmb3IgYWxsIENTUyBtb2R1bGVzICovXG5cbkBpbXBvcnQgJy4uLy4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludCc7XG5cbkBpbXBvcnQgJ2Fic3RyYWN0L2FsbCc7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERlZmF1bHQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRCcmVha3BvaW50LVNldHRpbmdzOiAoXG4gICdkZWZhdWx0IG1lZGlhJzogYWxsLFxuICAnZGVmYXVsdCBmZWF0dXJlJzogbWluLXdpZHRoLFxuICAnZGVmYXVsdCBwYWlyJzogd2lkdGgsXG5cbiAgJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJzogZmFsc2UsXG4gICd0byBlbXMnOiBmYWxzZSxcbiAgJ3RyYW5zZm9ybSByZXNvbHV0aW9ucyc6IHRydWUsXG5cbiAgJ25vIHF1ZXJpZXMnOiBmYWxzZSxcbiAgJ25vIHF1ZXJ5IGZhbGxiYWNrcyc6IGZhbHNlLFxuXG4gICdiYXNlIGZvbnQgc2l6ZSc6IDE2cHgsXG5cbiAgJ2xlZ2FjeSBzeW50YXgnOiBmYWxzZVxuKTtcblxuJGJyZWFrcG9pbnQ6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcImJyZWFrcG9pbnQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvY29udGV4dCc7XG5AaW1wb3J0ICdicmVha3BvaW50L2hlbHBlcnMnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9wYXJzZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvbm8tcXVlcnknO1xuXG5AaW1wb3J0ICdicmVha3BvaW50L3Jlc3BvbmQtdG8nO1xuXG5AaW1wb3J0IFwiYnJlYWtwb2ludC9sZWdhY3ktc2V0dGluZ3NcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nO1xuXG4gIC8vIFJlc2V0IGNvbnRleHRzXG4gIEBpbmNsdWRlIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cygpO1xuXG4gICRicmVha3BvaW50OiBicmVha3BvaW50KCRxdWVyeSwgZmFsc2UpO1xuXG4gICRxdWVyeS1zdHJpbmc6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeScpO1xuICAkcXVlcnktZmFsbGJhY2s6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdmYWxsYmFjaycpO1xuXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdjb250ZXh0IGhvbGRlcicpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IG1hcC1nZXQoJGJyZWFrcG9pbnQsICdxdWVyeSBjb3VudCcpICFnbG9iYWw7XG5cbiAgLy8gQWxsb3cgZm9yIGFuIGFzLW5lZWRlZCBvdmVycmlkZSBvciB1c2FnZSBvZiBubyBxdWVyeSBmYWxsYmFjay5cbiAgQGlmICRuby1xdWVyeSAhPSBmYWxzZSB7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiAkbm8tcXVlcnk7XG4gIH1cblxuICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgnbm8tcXVlcnknLCAkcXVlcnktZmFsbGJhY2spO1xuICB9XG5cbiAgLy8gUHJpbnQgT3V0IFF1ZXJ5IFN0cmluZ1xuICBAaWYgbm90IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBtZWRpYSAjeyRxdWVyeS1zdHJpbmd9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykgIT0gZmFsc2Ugb3IgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSA9PSB0cnVlIHtcblxuICAgICR0eXBlOiB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSk7XG4gICAgJHByaW50OiBmYWxzZTtcblxuICAgIEBpZiAoJHR5cGUgPT0gJ2Jvb2wnKSB7XG4gICAgICAkcHJpbnQ6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayA9PSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICgkdHlwZSA9PSAnbGlzdCcpIHtcbiAgICAgIEBlYWNoICR3cmFwcGVyIGluIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gJHdyYXBwZXIge1xuICAgICAgICAgICRwcmludDogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdyaXRlIEZhbGxiYWNrXG4gICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIGFuZCAoJHByaW50ID09IHRydWUpIHtcbiAgICAgICR0eXBlLWZhbGxiYWNrOiB0eXBlLW9mKCRxdWVyeS1mYWxsYmFjayk7XG5cbiAgICAgIEBpZiAoJHR5cGUtZmFsbGJhY2sgIT0gJ2Jvb2wnKSB7XG4gICAgICAgICN7JHF1ZXJ5LWZhbGxiYWNrfSAmIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcbn1cblxuXG5AbWl4aW4gbXEoJHF1ZXJ5LCAkbm8tcXVlcnk6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIYXMgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50LCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRicmVha3BvaW50LCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQnJlYWtwb2ludC1TZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpZiAoc3RyLWluZGV4KCRzZXR0aW5nLCAnLScpIG9yIHN0ci1pbmRleCgkc2V0dGluZywgJ18nKSkgYW5kIHN0ci1pbmRleCgkc2V0dGluZywgJyAnKSA9PSBudWxsIHtcbiAgICBAd2FybiBcIldvcmRzIGluIEJyZWFrcG9pbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBzcGFjZXMsIG5vdCBkYXNoZXMgb3IgdW5kZXJzY29yZXMuIFBsZWFzZSByZXBsYWNlIGRhc2hlcyBhbmQgdW5kZXJzY29yZXMgYmV0d2VlbiB3b3JkcyB3aXRoIHNwYWNlcy4gU2V0dGluZ3Mgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCB1bnRpbCBjaGFuZ2VkLlwiO1xuICB9XG4gICRicmVha3BvaW50OiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnQsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkYnJlYWtwb2ludC1jaGFuZ2U6IGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJrcHQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5AbWl4aW4gYmtwdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgQGlmIGxlbmd0aCgkc2V0dGluZ3MpID09IDEge1xuICAgICRzZXR0aW5nczogbnRoKCRzZXR0aW5ncywgMSk7XG4gIH1cblxuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRicmVha3BvaW50OiBtYXAtcmVtb3ZlKCRicmVha3BvaW50LCAkc2V0dGluZykgIWdsb2JhbDtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncy4uLikge1xuICAkYnJlYWtwb2ludC1yZXNldDogYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gYmtwdC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgQnJlYWtwb2ludCBWYXJpYWJsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCk7XG4kcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgSGFzIENvbnRleHRcbi8vIFJldHVybnMgd2hldGhlciBvciBub3QgeW91IGFyZSBpbnNpZGUgYSBCcmVha3BvaW50IHF1ZXJ5XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkge1xuICBAaWYgbGVuZ3RoKCRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEdldCBDb250ZXh0XG4vLyAkZmVhdHVyZTogSW5wdXQgZmVhdHVyZSB0byBnZXQgaXQncyBjdXJyZW50IE1RIGNvbnRleHQuIFJldHVybnMgZmFsc2UgaWYgbm8gY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1nZXQtY29udGV4dCgkZmVhdHVyZSkge1xuICBAaWYgbWFwLWhhcy1rZXkoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpIHtcbiAgICAkZ2V0OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIG9mIG5vLXF1ZXJ5IGZyb20gZ2V0IHNpZGUgc28gL2ZhbHNlLyBwcmVwZW5kcyBhcmVuJ3QgcmV0dXJuZWRcbiAgICBAaWYgJGZlYXR1cmUgPT0gJ25vLXF1ZXJ5JyB7XG4gICAgICBAaWYgdHlwZS1vZigkZ2V0KSA9PSAnbGlzdCcgYW5kIGxlbmd0aCgkZ2V0KSA+IDEgYW5kIG50aCgkZ2V0LCAxKSA9PSBmYWxzZSB7XG4gICAgICAgICRnZXQ6IG50aCgkZ2V0LCBsZW5ndGgoJGdldCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuICRnZXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBicmVha3BvaW50LWhhcy1jb250ZXh0KCkgYW5kICRmZWF0dXJlID09ICdtZWRpYScge1xuICAgICAgQHJldHVybiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKSB7XG4gIEBpZiAkdmFsdWUgPT0gJ21vbm9jaHJvbWUnIHtcbiAgICAkZmVhdHVyZTogJ21vbm9jaHJvbWUnO1xuICB9XG5cbiAgJGN1cnJlbnQ6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICBAaWYgJGN1cnJlbnQgYW5kIGxlbmd0aCgkY3VycmVudCkgPT0gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZSBhbHJlYWR5IHF1ZXJpZWQgYWdhaW5zdCBgI3skZmVhdHVyZX1gLiBVbmV4cGVjdGVkIHRoaW5ncyBtYXkgaGFwcGVuIGlmIHlvdSBxdWVyeSBhZ2FpbnN0IHRoZSBzYW1lIGZlYXR1cmUgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIHNhbWUgYGFuZGAgcXVlcnkuIEJyZWFrcG9pbnQgaXMgb3ZlcndyaXRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCB3aXRoIGAjeyR2YWx1ZX1gXCI7XG4gIH1cblxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJHYtaG9sZGVyOiAoKTtcbiAgICBAZm9yICRpIGZyb20gMSB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkdi1ob2xkZXI6IG1hcC1nZXQoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgJGZlYXR1cmUpO1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBmb3IgJGkgZnJvbSAkbGVuZ3RoIHRvICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgLSAxIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHYtaG9sZGVyOiBhcHBlbmQoJHYtaG9sZGVyLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgJHZhbHVlKTtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmZWF0dXJlOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiB0cnVlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFByaXZhdGUgZnVuY3Rpb24gdG8gcmVzZXQgY29udGV4dFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzIHtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29udmVydHMgdGhlIGlucHV0IHZhbHVlIHRvIEJhc2UgRU1zXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKSB7XG4gICR2YWx1ZS11bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgLy8gV2lsbCBjb252ZXJ0IHJlbGF0aXZlIEVNcyBpbnRvIHJvb3QgRU1zLlxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykgYW5kIHR5cGUtb2YoYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykpID09ICdudW1iZXInIGFuZCAkdmFsdWUtdW5pdCA9PSAnZW0nIHtcbiAgICAkYmFzZS11bml0OiB1bml0KGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKTtcblxuICAgIEBpZiAkYmFzZS11bml0ID09ICdweCcgb3IgJGJhc2UtdW5pdCA9PSAnJScgb3IgJGJhc2UtdW5pdCA9PSAnZW0nIG9yICRiYXNlLXVuaXQgPT0gJ3B0JyB7XG4gICAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpIC8gYmFzZS1jb252ZXJzaW9uKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSAqIDFlbTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJyN7YnJlYWtwb2ludC1nZXQoXFwnYmFzZSBmb250IHNpemVcXCcpfSBpcyBub3Qgc2V0IGluIHZhbGlkIHVuaXRzIGZvciBmb250IHNpemUhJztcbiAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGJhc2UtY29udmVyc2lvbigkdmFsdWUpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSB7XG4gICR1bml0OiB1bml0KCR2YWx1ZSk7XG5cbiAgQGlmICR1bml0ID09ICdweCcge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTZweCAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnJScge1xuICAgIEByZXR1cm4gJHZhbHVlIC8gMTAwJSAqIDFlbTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAnZW0nIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAkdW5pdCA9PSAncHQnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEycHQgKiAxZW07XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuLy8gICAgQHdhcm4gJ0V2ZXJ5dGhpbmcgaXMgdGVycmlibGUhIFdoYXQgaGF2ZSB5b3UgZG9uZT8hJztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gaGF2ZSBhIG1pbi9tYXggcGFpclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1taW4tbWF4LWZlYXR1cmVzOiAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yLWluZGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1oZWlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS13aWR0aCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb25vY2hyb21lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNvbHV0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbi1tYXgoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBzdHJpbmcgdmFsdWVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc3RyaW5nLWZlYXR1cmVzOiAgJ29yaWVudGF0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY2FuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsdW1pbm9zaXR5JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmIGJyZWFrcG9pbnQtbWluLW1heCgkaXRlbSkge1xuICAgICAgQGlmICRmZWF0dXJlID09ICdtaW4tI3skaXRlbX0nIG9yICRmZWF0dXJlID09ICdtYXgtI3skaXRlbX0nIHtcbiAgICAgICAgQHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGlzIGEgbWVkaWEgdHlwZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludC1tZWRpYS10eXBlczogICdhbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJhaWxsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdlbWJvc3NlZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5kaGVsZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9qZWN0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmVlbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVlY2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAndHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R2JztcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJG1lZGlhIGluICRicmVha3BvaW50LW1lZGlhLXR5cGVzIHtcbiAgICBAaWYgKCRmZWF0dXJlID09ICRtZWRpYSkgb3IgKCRmZWF0dXJlID09ICdub3QgI3skbWVkaWF9Jykgb3IgKCRmZWF0dXJlID09ICdvbmx5ICN7JG1lZGlhfScpIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBjYW4gc3RhbmQgYWxvbmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpIHtcbiAgQGVhY2ggJGl0ZW0gaW4gJGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZy1mZWF0dXJlcyB7XG4gICAgQGlmICRmZWF0dXJlID09ICRpdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaXMtcmVzb2x1dGlvbigkZmVhdHVyZSkge1xuICAkcmVzb2x1dGlvbnM6ICdkZXZpY2UtcGl4ZWwtcmF0aW8nLCAnZHByJztcblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycpIHtcbiAgICAkcmVzb2x1dGlvbnM6IGFwcGVuZCgkcmVzb2x1dGlvbnMsICdyZXNvbHV0aW9uJyk7XG4gIH1cblxuICBAZWFjaCAkcmVzbyBpbiAkcmVzb2x1dGlvbnMge1xuICAgIEBpZiBpbmRleCgkZmVhdHVyZSwgJHJlc28pIG9yIGluZGV4KCRmZWF0dXJlLCAnbWluLSN7JHJlc299Jykgb3IgaW5kZXgoJGZlYXR1cmUsICdtYXgtI3skcmVzb30nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBhcnNlciBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInBhcnNlcnMvcXVlcnlcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3NpbmdsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvZG91YmxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy90cmlwbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL3Jlc29sdXRpb25cIjtcblxuJE1lbW8tRXhpc3RzOiBmdW5jdGlvbi1leGlzdHMobWVtby1nZXQpIGFuZCBmdW5jdGlvbi1leGlzdHMobWVtby1zZXQpO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEJyZWFrcG9pbnQgRnVuY3Rpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkY29udGV4dHMuLi4pIHtcbiAgJHJ1bjogdHJ1ZTtcbiAgJHJldHVybjogKCk7XG5cbiAgLy8gR3JhYiB0aGUgTWVtbyBPdXRwdXQgaWYgTWVtb2l6YXRpb24gY2FuIGJlIGEgdGhpbmdcbiAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgJHJldHVybjogbWVtby1nZXQoYnJlYWtwb2ludCwgYnJlYWtwb2ludCAkcXVlcnkgJGNvbnRleHRzKTtcblxuICAgIEBpZiAkcmV0dXJuICE9IG51bGwge1xuICAgICAgJHJ1bjogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQGlmIG5vdCAkTWVtby1FeGlzdHMgb3IgJHJ1biB7XG4gICAgLy8gSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgJHF1ZXJ5LXN0cmluZzogJyc7XG4gICAgJHF1ZXJ5LWZhbGxiYWNrOiBmYWxzZTtcbiAgICAkcmV0dXJuOiAoKTtcblxuICAgIC8vIFJlc2VydmUgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJGhvbGRlci1jb250ZXh0OiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyO1xuICAgICRob2xkZXItcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ7XG5cbiAgICAvLyBSZXNldCBHbG9iYWwgUHJpdmF0ZSBCcmVha3BvaW50IENvbnRleHRcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiAoKSAhZ2xvYmFsO1xuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcblxuXG4gICAgLy8gVGVzdCB0byBzZWUgaWYgaXQncyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0XG4gICAgJG9yLWxpc3Q6IGlmKGxpc3Qtc2VwYXJhdG9yKCRxdWVyeSkgPT0gJ2NvbW1hJywgdHJ1ZSwgZmFsc2UpO1xuXG5cbiAgICBAaWYgKCRvci1saXN0ID09IGZhbHNlIGFuZCBicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IGZhbHNlKSB7XG4gICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gICAgICAkbGFzdDogbnRoKCRxdWVyeSwgJGxlbmd0aCk7XG4gICAgICAkcXVlcnktZmFsbGJhY2s6IGJyZWFrcG9pbnQtbm8tcXVlcnkoJGxhc3QpO1xuXG4gICAgICBAaWYgKCRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSkge1xuICAgICAgICAkbGVuZ3RoOiAkbGVuZ3RoIC0gMTtcbiAgICAgIH1cblxuICAgICAgQGlmIChicmVha3BvaW50LWdldCgnbGVnYWN5IHN5bnRheCcpID09IHRydWUpIHtcbiAgICAgICAgJG1xOiAoKTtcblxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRtcTogYXBwZW5kKCRtcSwgbnRoKCRxdWVyeSwgJGkpLCBjb21tYSk7XG4gICAgICAgIH1cblxuICAgICAgICAkcXVlcnktc3RyaW5nOiBicmVha3BvaW50LXBhcnNlKCRtcSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgICAgICRxdWVyeS1zdHJpbmc6ICRxdWVyeS1zdHJpbmcgKyBpZigkaSA9PSAxLCAnJywgJywgJykgKyBicmVha3BvaW50LXBhcnNlKG50aCgkcXVlcnksICRpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkcmV0dXJuOiAoJ3F1ZXJ5JzogJHF1ZXJ5LXN0cmluZyxcbiAgICAgICAgJ2ZhbGxiYWNrJzogJHF1ZXJ5LWZhbGxiYWNrLFxuICAgICAgICAnY29udGV4dCBob2xkZXInOiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLFxuICAgICAgICAncXVlcnkgY291bnQnOiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50XG4gICAgKTtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZXh0cykgPiAwIGFuZCBudGgoJGNvbnRleHRzLCAxKSAhPSBmYWxzZSB7XG4gICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlIHtcbiAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgICRjb250ZXh0LW1hcDogKCk7XG4gICAgICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgICAgICAkY29udGV4dC1tYXA6IG1hcC1tZXJnZSgkY29udGV4dC1tYXAsICgkY29udGV4dDogYnJlYWtwb2ludC1nZXQtY29udGV4dCgkY29udGV4dCkpKTtcbiAgICAgIH1cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoY29udGV4dDogJGNvbnRleHQtbWFwKSk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cbiAgICBAaWYgJE1lbW8tRXhpc3RzIHtcbiAgICAgICRob2xkZXI6IG1lbW8tc2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cywgJHJldHVybik7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgQnJlYWtwb2ludCBQYXJzZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UoJHF1ZXJ5KSB7XG4gIC8vIEluY3JlYXNlIG51bWJlciBvZiAnYW5kJyBxdWVyaWVzXG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQgKyAxICFnbG9iYWw7XG5cbiAgLy8gU2V0IHVwIE1lZGlhIFR5cGVcbiAgJHF1ZXJ5LXByaW50OiAnJztcblxuICAkZm9yY2UtYWxsOiAoKGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpID09IHRydWUpIGFuZCAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSA9PSAnYWxsJykpO1xuICAkZW1wdHktbWVkaWE6IHRydWU7XG4gIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSAhPSAnYWxsJykge1xuICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICAkZW1wdHktbWVkaWE6IGZhbHNlO1xuICB9XG5cblxuICAkcXVlcnktcmVzb2x1dGlvbjogZmFsc2U7XG5cbiAgJHF1ZXJ5LWhvbGRlcjogYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpO1xuXG5cblxuICAvLyBMb29wIG92ZXIgZWFjaCBwYXJzZWQgb3V0IHF1ZXJ5IGFuZCB3cml0ZSBpdCB0byAkcXVlcnktcHJpbnRcbiAgJGZpcnN0OiB0cnVlO1xuXG4gIEBlYWNoICRmZWF0dXJlIGluICRxdWVyeS1ob2xkZXIge1xuICAgICRsZW5ndGg6IGxlbmd0aCgkZmVhdHVyZSk7XG5cbiAgICAvLyBQYXJzZSBhIHNpbmdsZSBmZWF0dXJlXG4gICAgQGlmICgkbGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIEZlYXR1cmUgaXMgY3VycmVudGx5IGEgbGlzdCwgZ3JhYiB0aGUgYWN0dWFsIHZhbHVlXG4gICAgICAkZmVhdHVyZTogbnRoKCRmZWF0dXJlLCAxKTtcblxuICAgICAgLy8gTWVkaWEgVHlwZSBtdXN0IGJ5IGNvbnZlbnRpb24gYmUgdGhlIGZpcnN0IGl0ZW0sIHNvIGl0J3Mgc2FmZSB0byBmbGF0IG92ZXJyaWRlICRxdWVyeS1wcmludCwgd2hpY2ggcmlnaHQgbm93IHNob3VsZCBvbmx5IGJlIHRoZSBkZWZhdWx0IG1lZGlhIHR5cGVcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1tZWRpYSgkZmVhdHVyZSkpIHtcbiAgICAgICAgQGlmICgkZm9yY2UtYWxsID09IHRydWUpIG9yICgkZmVhdHVyZSAhPSAnYWxsJykge1xuICAgICAgICAgIC8vIEZvcmNlIHRoZSBwcmludCBvZiB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlIGlmIChmb3JjZSBhbGwgaXMgdHJ1ZSBhbmQgZGVmYXVsdCBtZWRpYSB0eXBlIGlzIGFsbCkgb3IgKGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBub3QgYWxsKVxuICAgICAgICAgICRxdWVyeS1wcmludDogJGZlYXR1cmU7XG4gICAgICAgICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcblxuICAgICAgICAgIC8vIFNldCBDb250ZXh0XG4gICAgICAgICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWVkaWEsICRxdWVyeS1wcmludCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIGRvdWJsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMikge1xuICAgICAgQGlmIChicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpICE9IGZhbHNlKSB7XG4gICAgICAgICRxdWVyeS1yZXNvbHV0aW9uOiAkZmVhdHVyZTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHBhcnNlZDogbnVsbDtcbiAgICAgICAgLy8gSWYgaXQncyBhIHN0cmluZy9udW1iZXIgcGFpcixcbiAgICAgICAgLy8gd2UgY2hlY2sgdG8gc2VlIGlmIG9uZSBpcyBhIHNpbmdsZS1zdHJpbmcgdmFsdWUsXG4gICAgICAgIC8vIHRoZW4gd2UgcGFyc2UgaXQgYXMgYSBub3JtYWwgZG91YmxlXG4gICAgICAgICRhbHBoYTogbnRoKCRmZWF0dXJlLCAxKTtcbiAgICAgICAgJGJldGE6IG50aCgkZmVhdHVyZSwgMik7XG4gICAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGFscGhhKSBvciBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGJldGEpIHtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYWxwaGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXNpbmdsZSgkYmV0YSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICAgICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBQYXJzZSBhIHRyaXBsZSBmZWF0dXJlXG4gICAgQGVsc2UgaWYgKCRsZW5ndGggPT0gMykge1xuICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgfVxuXG4gIH1cblxuICBAaWYgKCRxdWVyeS1yZXNvbHV0aW9uICE9IGZhbHNlKSB7XG4gICAgJHF1ZXJ5LXByaW50OiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpO1xuICB9XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmVhdHVyZSB0aGF0J3MgYmVlbiBkZXRlY3RlZCBzbyBmYXIgYW5kIGFwcGVuZCAnZmFsc2UnIHRvIHRoZSB0aGUgdmFsdWUgbGlzdCB0byBpbmNyZW1lbnQgdGhlaXIgY291bnRlcnNcbiAgQGVhY2ggJGYsICR2IGluICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIge1xuICAgICR2LWhvbGRlcjogJHY7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCR2LWhvbGRlcik7XG4gICAgQGlmIGxlbmd0aCgkdi1ob2xkZXIpIDwgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IHtcbiAgICAgICAgQGlmICRmID09ICdtZWRpYScge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6IG1hcC1tZXJnZSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAoJGY6ICR2LWhvbGRlcikpICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRxdWVyeS1wcmludDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXF1ZXJ5KCRxdWVyeSkge1xuICAvLyBQYXJzZSBmZWF0dXJlcyBvdXQgb2YgYW4gaW5kaXZpZHVhbCBxdWVyeVxuICAkZmVhdHVyZS1ob2xkZXI6ICgpO1xuICAkcXVlcnktaG9sZGVyOiAoKTtcbiAgJGxlbmd0aDogbGVuZ3RoKCRxdWVyeSk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgLy8gSWYgd2UndmUgZ290IGEgc3RyaW5nL251bWJlciwgbnVtYmVyL3N0cmluZywgY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSB2YWxpZCBzdHJpbmcvbnVtYmVyIHBhaXIgb3IgdHdvIHNpbmdsZXNcbiAgICBAaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykgb3IgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuXG4gICAgICAkbnVtYmVyOiAnJztcbiAgICAgICR2YWx1ZTogJyc7XG5cbiAgICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyB7XG4gICAgICAgICRudW1iZXI6IG50aCgkcXVlcnksIDIpO1xuICAgICAgICAkdmFsdWU6IG50aCgkcXVlcnksIDEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBjYW4gYmUgYSBzaW5nbGUgdmFsdWUsIGNoZWNrIHRvIHNlZSBpZiB0aGUgbnVtYmVyIHBhc3NlZCBpbiBpcyBhIHZhbGlkIGlucHV0IGZvciBzYWlkIHNpbmdsZSB2YWx1ZS4gRm9ydHVuYXRlbHksIGFsbCBjdXJyZW50IHNpbmdsZS12YWx1ZSBvcHRpb25zIG9ubHkgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMsIHNvIHRoaXMgY2hlY2sgaXMgZWFzeS5cbiAgICAgIEBpZiBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJHZhbHVlKSB7XG4gICAgICAgIEBpZiB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJHZhbHVlLCAkbnVtYmVyLCBzcGFjZSk7XG4gICAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG1lZGlhIHR5cGUsIHNwbGl0IHRoZSBxdWVyeVxuICAgICAgQGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEoJHZhbHVlKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIElmIGl0J3Mgbm90IGEgc2luZ2xlIGZlYXR1cmUsIHdlJ3JlIGp1c3QgZ29pbmcgdG8gYXNzdW1lIGl0J3MgYSBwcm9wZXIgc3RyaW5nL3ZhbHVlIHBhaXIsIGFuZCByb2xsIHdpdGggaXQuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cblxuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggbnVtYmVycywgd2UgYXNzdW1lIGl0J3MgYSBkb3VibGUgYW5kIHJvbGwgd2l0aCB0aGF0XG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdudW1iZXInIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnbnVtYmVyJykge1xuICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgfVxuICAgIC8vIElmIHRoZXkncmUgYm90aCBzdHJpbmdzIGFuZCBuZWl0aGVyIGFyZSBzaW5nbGVzLCB3ZSByb2xsIHdpdGggdGhhdC5cbiAgICBAZWxzZSBpZiAodHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpID09ICdzdHJpbmcnKSB7XG4gICAgICBAaWYgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMikpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDMge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCB0aHJlZSBpdGVtcyBhbmQgbm9uZSBpcyBhIGxpc3QsIHdlIGNoZWNrIHRvIHNlZVxuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMikpICE9ICdsaXN0JyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAzKSkgIT0gJ2xpc3QnIHtcbiAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGl0ZW1zIGFyZSBzaW5nbGUgc3RyaW5nIHZhbHVlcyBhbmQgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSBtZWRpYSB2YWx1ZXMsIHdlJ3JlIGdvb2QuXG4gICAgICBAaWYgKG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAzKSkpIGFuZCAgKChub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAxKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDIpKSBhbmQgbm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMykpKSkge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZChudGgoJHF1ZXJ5LCAxKSwgbnRoKCRxdWVyeSwgMiksIHNwYWNlKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQoJGZlYXR1cmUtaG9sZGVyLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICAgIC8vIGxldCdzIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlyc3QgaXRlbSBpcyBhIG1lZGlhIHR5cGVcbiAgICAgIEBlbHNlIGlmIGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsIG50aCgkcXVlcnksIDEpKTtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMiksIG50aCgkcXVlcnksIDMpLCBzcGFjZSk7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBpdGVtLCBvciBpZiBpdCdzIG5vdCBhIHNwZWNpYWwgY2FzZSBkb3VibGUgb3IgdHJpcGxlLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgcXVlcnkuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJzaW5nbGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gSWYgaXQncyBhIHNpbmdsZSBmZWF0dXJlIHRoYXQgY2FuIHN0YW5kIGFsb25lLCB3ZSBsZXQgaXRcbiAgQGlmIChicmVha3BvaW50LXNpbmdsZS1zdHJpbmcoJGZlYXR1cmUpKSB7XG4gICAgJHBhcnNlZDogJGZlYXR1cmU7XG4gICAgLy8gU2V0IENvbnRleHRcbiAgICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJGZlYXR1cmUpO1xuICB9XG4gIC8vIElmIGl0J3Mgbm90IGEgc3RhbmQgYWxvbmUgZmVhdHVyZSwgd2UgcGFzcyBpdCBvZmYgdG8gdGhlIGRlZmF1bHQgaGFuZGxlci5cbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSk7XG4gIH1cblxuICBAcmV0dXJuICRsZWFkZXIgKyAnKCcgKyAkcGFyc2VkICsgJyknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdCgkZmVhdHVyZSkge1xuICAkZGVmYXVsdDogYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRkZWZhdWx0LCAkZmVhdHVyZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkgYW5kICh0eXBlLW9mKCRmZWF0dXJlKSA9PSAnbnVtYmVyJykge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAje2JyZWFrcG9pbnQtdG8tYmFzZS1lbSgkZmVhdHVyZSl9JztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAnI3skZGVmYXVsdH06ICN7JGZlYXR1cmV9JztcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnQgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdC1wYWlyXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RvdWJsZS1zdHJpbmdcIjtcbkBpbXBvcnQgXCJkb3VibGUvZGVmYXVsdFwiO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kb3VibGUoJGZlYXR1cmUsICRlbXB0eS1tZWRpYSwgJGZpcnN0KSB7XG4gICRwYXJzZWQ6ICcnO1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgJGZpcnN0OiBudGgoJGZlYXR1cmUsIDEpO1xuICAkc2Vjb25kOiBudGgoJGZlYXR1cmUsIDIpO1xuXG4gIC8vIElmIHdlJ3ZlIGdvdCB0d28gbnVtYmVycywgd2Uga25vdyB3ZSBuZWVkIHRvIHVzZSB0aGUgZGVmYXVsdCBwYWlyIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG1lZGlhIHF1ZXJpZXMgdGhhdCBoYXMgYSBtZWRpYSBmZWF0dXJlIHRoYXQgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZigkc2Vjb25kKSA9PSAnbnVtYmVyJyB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiB0aGV5IGFyZSBib3RoIHN0cmluZ3MsIHdlIHNlbmQgaXQgdGhyb3VnaCB0aGUgc3RyaW5nIHBhcnNlclxuICBAZWxzZSBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ3N0cmluZycgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ3N0cmluZycge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpO1xuICB9XG4gIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICBAZWxzZSB7XG4gICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1kb3VibGUtZGVmYXVsdCgkZmlyc3QsICRzZWNvbmQpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJHBhcnNlZDtcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQtcGFpcigkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IHBhaXInKTtcbiAgJG1pbjogJyc7XG4gICRtYXg6ICcnO1xuXG4gIC8vIFNvcnQgaW50byBtaW4gYW5kIG1heFxuICAkbWluOiBtaW4oJGZpcnN0LCAkc2Vjb25kKTtcbiAgJG1heDogbWF4KCRmaXJzdCwgJHNlY29uZCk7XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWluLSN7JGRlZmF1bHR9LCAkbWluKTtcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQobWF4LSN7JGRlZmF1bHR9LCAkbWF4KTtcblxuICAvLyBNYWtlIHRoZW0gRU1zIGlmIG5lZWQgYmVcbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICRtaW46IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWluKTtcbiAgICAkbWF4OiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1heCk7XG4gIH1cblxuICBAcmV0dXJuICcobWluLSN7JGRlZmF1bHR9OiAjeyRtaW59KSBhbmQgKG1heC0jeyRkZWZhdWx0fTogI3skbWF4fSknO1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLXN0cmluZygkZmlyc3QsICRzZWNvbmQpIHtcbiAgJGZlYXR1cmU6ICcnO1xuICAkdmFsdWU6ICcnO1xuXG4gIC8vIFRlc3QgdG8gc2VlIHdoaWNoIGlzIHRoZSBmZWF0dXJlIGFuZCB3aGljaCBpcyB0aGUgdmFsdWVcbiAgQGlmIChicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmlyc3QpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJHNlY29uZCkgPT0gdHJ1ZSkge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIk5laXRoZXIgI3skZmlyc3R9IG5vciAjeyRzZWNvbmR9IGlzIGEgdmFsaWQgbWVkaWEgcXVlcnkgbmFtZS5cIjtcbiAgfVxuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCRmZWF0dXJlLCAkdmFsdWUpO1xuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSc7XG59IiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICBAaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIHtcbiAgICAkZmVhdHVyZTogJGZpcnN0O1xuICAgICR2YWx1ZTogJHNlY29uZDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGZlYXR1cmU6ICRzZWNvbmQ7XG4gICAgJHZhbHVlOiAkZmlyc3Q7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJHZhbHVlOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJHZhbHVlKTtcbiAgfVxuXG4gIEByZXR1cm4gJygjeyRmZWF0dXJlfTogI3skdmFsdWV9KSdcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidHJpcGxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG5cbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgLy8gc2VwYXJhdGUgdGhlIHN0cmluZyBmZWF0dXJlcyBmcm9tIHRoZSB2YWx1ZSBudW1iZXJzXG4gICRzdHJpbmc6IG51bGw7XG4gICRudW1iZXJzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRmZWF0dXJlIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsKSA9PSBzdHJpbmcge1xuICAgICAgJHN0cmluZzogJHZhbDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcnMpID09ICdudWxsJyB7XG4gICAgICAgICRudW1iZXJzOiAkdmFsO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkbnVtYmVyczogYXBwZW5kKCRudW1iZXJzLCAkdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRzdHJpbmcsIG50aCgkbnVtYmVycywgMSksIG50aCgkbnVtYmVycywgMikpO1xuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG5cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZS1kZWZhdWx0KCRmZWF0dXJlLCAkZmlyc3QsICRzZWNvbmQpIHtcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRmZWF0dXJlfSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRmZWF0dXJlfSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRmZWF0dXJlfTogI3skbWlufSkgYW5kIChtYXgtI3skZmVhdHVyZX06ICN7JG1heH0pJztcbn1cbiIsIkBpbXBvcnQgXCJyZXNvbHV0aW9uL3Jlc29sdXRpb25cIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtYnVpbGQtcmVzb2x1dGlvbigkcXVlcnktcHJpbnQsICRxdWVyeS1yZXNvbHV0aW9uLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkbGVhZGVyOiAnJztcbiAgLy8gSWYgd2UncmUgZm9yY2luZ1xuICBAaWYgbm90ICgkZW1wdHktbWVkaWEpIG9yIG5vdCAoJGZpcnN0KSB7XG4gICAgJGxlYWRlcjogJ2FuZCAnO1xuICB9XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSBhbmQgJHF1ZXJ5LXJlc29sdXRpb24ge1xuICAgICRyZXNvbHV0aW9uczogYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRxdWVyeS1yZXNvbHV0aW9uKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHJlc29sdXRpb25zKTtcbiAgICAkcXVlcnktaG9sZGVyOiAnJztcblxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgICAkcXVlcnk6ICcjeyRxdWVyeS1wcmludH0gI3skbGVhZGVyfSN7bnRoKCRyZXNvbHV0aW9ucywgJGkpfSc7XG4gICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICRxdWVyeTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogJyN7JHF1ZXJ5LWhvbGRlcn0sICN7JHF1ZXJ5fSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBSZXR1cm4gd2l0aCBhdHRhY2hlZCByZXNvbHV0aW9uXG4gICAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LW1ha2UtcmVzb2x1dGlvbnMoJHJlc29sdXRpb24pIHtcbiAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9uKTtcblxuICAkb3V0cHV0OiAoKTtcblxuICBAaWYgJGxlbmd0aCA9PSAyIHtcbiAgICAkZmVhdHVyZTogJyc7XG4gICAgJHZhbHVlOiAnJztcblxuICAgIC8vIEZpbmQgd2hpY2ggaXMgbnVtYmVyXG4gICAgQGlmIHR5cGUtb2YobnRoKCRyZXNvbHV0aW9uLCAxKSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDEpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkdmFsdWU6IG50aCgkcmVzb2x1dGlvbiwgMik7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIG1pbi9tYXgvc3RhbmRhcmRcbiAgICBAaWYgaW5kZXgoJHJlc29sdXRpb24sICdtaW4tcmVzb2x1dGlvbicpIHtcbiAgICAgICRmZWF0dXJlOiAnbWluLSc7XG4gICAgfVxuICAgIEBlbHNlIGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWF4LXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21heC0nO1xuICAgIH1cblxuICAgICRzdGFuZGFyZDogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlfSknO1xuXG4gICAgLy8gSWYgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBkcHB4LFxuICAgIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ2RwcHgnIHtcbiAgICAgICRiYXNlOiA5NmRwaTtcbiAgICAgIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2RwY20nIHtcbiAgICAgICAgJGJhc2U6IDI0My44NGRwY207XG4gICAgICB9XG4gICAgICAvLyBXcml0ZSBvdXQgZmVhdHVyZSB0ZXN0c1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAkYmFzZX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0OiAnJztcbiAgICAgICRtb3o6ICcnO1xuICAgICAgJHdlYmtpdDogJygtd2Via2l0LSN7JGZlYXR1cmV9ZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJG1vejogJygjeyRmZWF0dXJlfS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyR2YWx1ZSAvIDFkcHB4fSknO1xuICAgICAgJGZhbGxiYWNrOiAnKCN7JGZlYXR1cmV9cmVzb2x1dGlvbjogI3skdmFsdWUgLyAxZHBweCAqIDk2ZHBpfSknO1xuICAgICAgLy8gQXBwZW5kIHRvIG91dHB1dFxuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRzdGFuZGFyZCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICR3ZWJraXQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkbW96LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJGZhbGxiYWNrLCBzcGFjZSk7XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1uby1xdWVyeSgkcXVlcnkpIHtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSAnbGlzdCcge1xuICAgICRrZXl3b3JkOiBudGgoJHF1ZXJ5LCAxKTtcblxuICAgIEBpZiB0eXBlLW9mKCRrZXl3b3JkKSA9PSAnc3RyaW5nJyBhbmQgKCRrZXl3b3JkID09ICduby1xdWVyeScgb3IgJGtleXdvcmQgPT0gJ25vIHF1ZXJ5JyBvciAka2V5d29yZCA9PSAnZmFsbGJhY2snKSB7XG4gICAgICBAcmV0dXJuIG50aCgkcXVlcnksIDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IHRoZSBCcmVha3BvaW50cyB2YXJpYWJsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuJEJSRUFLUE9JTlRTOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXNwb25kLXRvIEFQSSBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gcmVzcG9uZC10bygkY29udGV4dCwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaWYgbGVuZ3RoKCRicmVha3BvaW50cykgPiAwIGFuZCBsZW5ndGgoJEJSRUFLUE9JTlRTKSA9PSAwIHtcbiAgICBAd2FybiBcIkluIG9yZGVyIHRvIGF2b2lkIHZhcmlhYmxlIG5hbWVzcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBhZGQgYnJlYWtwb2ludHMgZm9yIHJlc3BvbmQtdG8uIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludCgpYCB0byBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoKWAuIFRoZSBgYWRkLWJyZWFrcG9pbnQoKWAgZnVuY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCI7XG4gICAgJEJSRUFLUE9JTlRTOiAkYnJlYWtwb2ludHMgIWdsb2JhbDtcbiAgICAkYnJlYWtwb2ludHM6ICgpICFnbG9iYWw7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkQlJFQUtQT0lOVFMpICE9ICdtYXAnIHtcbiAgICAvLyBKdXN0IGluIGNhc2Ugc29tZW9uZSB3cml0ZXMgZ2liYmVyaXNoIHRvIHRoZSAkYnJlYWtwb2ludHMgdmFyaWFibGUuXG4gICAgQHdhcm4gXCJZb3VyIGJyZWFrcG9pbnRzIGFyZW4ndCBhIG1hcCEgYHJlc3BvbmQtdG9gIGV4cGVjdHMgYSBtYXAuIFBsZWFzZSBjaGVjayB0aGUgdmFsdWUgb2YgJEJSRUFLUE9JTlRTIHZhcmlhYmxlLlwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hcC1nZXQoJEJSRUFLUE9JTlRTLCAkY29udGV4dCksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQHdhcm4gXCJgI3skY29udGV4dH1gIGlzbid0IGEgZGVmaW5lZCBicmVha3BvaW50ISBQbGVhc2UgYWRkIGl0IHVzaW5nIGAkYnJlYWtwb2ludHM6IGFkZC1icmVha3BvaW50KGAjeyRjb250ZXh0fWAsICR2YWx1ZSk7YFwiO1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIllvdSBoYXZlbid0IGNyZWF0ZWQgYW55IGJyZWFrcG9pbnRzIHlldCEgTWFrZSBzb21lIGFscmVhZHkhIGBAaW5jbHVkZSBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQpYFwiO1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWRkIEJyZWFrcG9pbnQgdG8gQnJlYWtwb2ludHNcbi8vIFRPRE86IFJlbW92ZSBmdW5jdGlvbiBpbiBuZXh0IHJlbGVhc2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID09IDAge1xuICAgIEByZXR1cm4gJG91dHB1dDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIGFuZCAkb3ZlcndyaXRlICE9IHRydWUge1xuICAgICAgQHdhcm4gXCJZb3UgYWxyZWFkeSBoYXZlIGEgYnJlYWtwb2ludCBuYW1lZCBgI3skbmFtZX1gLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgYnJlYWtwb2ludCBuYW1lLCBvciBwYXNzIGluIGAkb3ZlcndyaXRlOiB0cnVlYCB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGJyZWFrcG9pbnQuXCI7XG4gICAgICBAcmV0dXJuICRicmVha3BvaW50cztcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICBAcmV0dXJuIG1hcC1tZXJnZSgkYnJlYWtwb2ludHMsICRvdXRwdXQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0LCAkb3ZlcndyaXRlOiBmYWxzZSkge1xuICAkb3V0cHV0OiAoJG5hbWU6ICRia3B0KTtcblxuICBAaWYgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgJEJSRUFLUE9JTlRTOiAkb3V0cHV0ICFnbG9iYWw7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgJEJSRUFLUE9JTlRTOiAkQlJFQUtQT0lOVFMgIWdsb2JhbDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90IG1hcC1oYXMta2V5KCRCUkVBS1BPSU5UUywgJG5hbWUpIG9yICRvdmVyd3JpdGUgPT0gdHJ1ZSB7XG4gICAgICAkQlJFQUtQT0lOVFM6IG1hcC1tZXJnZSgkQlJFQUtQT0lOVFMsICRvdXRwdXQpICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBnZXQtYnJlYWtwb2ludCgkbmFtZTogZmFsc2UpIHtcbiAgQGlmICRuYW1lID09IGZhbHNlIHtcbiAgICBAcmV0dXJuICRCUkVBS1BPSU5UUztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJG5hbWUpO1xuICB9XG59XG4iLCJAbWl4aW4gbGVnYWN5LXNldHRpbmdzLXdhcm5pbmcge1xuICAkbGVnYWN5VmFyczogKFxuICAgICdkZWZhdWx0LW1lZGlhJzogJ2RlZmF1bHQgbWVkaWEnLFxuICAgICdkZWZhdWx0LWZlYXR1cmUnOiAnZGVmYXVsdCBmZWF0dXJlJyxcbiAgICAnZm9yY2UtbWVkaWEtYWxsJzogJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJyxcbiAgICAndG8tZW1zJzogJ3RvIGVtcycsXG4gICAgJ3Jlc29sdXRpb25zJzogJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsXG4gICAgJ25vLXF1ZXJpZXMnOiAnbm8gcXVlcmllcycsXG4gICAgJ25vLXF1ZXJ5LWZhbGxiYWNrcyc6ICdubyBxdWVyeSBmYWxsYmFja3MnLFxuICAgICdiYXNlLWZvbnQtc2l6ZSc6ICdiYXNlIGZvbnQgc2l6ZScsXG4gICAgJ2xlZ2FjeS1zeW50YXgnOiAnbGVnYWN5IHN5bnRheCdcbiAgKTtcblxuICBAZWFjaCAkbGVnYWN5LCAkbmV3IGluICRsZWdhY3lWYXJzIHtcbiAgICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC0nICsgJGxlZ2FjeSkge1xuICAgICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1zcGFjZSBjb2xsaXNpb25zLCB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHdheSB0byBjaGFuZ2Ugc2V0dGluZ3MgZm9yIEJyZWFrcG9pbnQuIFBsZWFzZSBjaGFuZ2UgYWxsIGluc3RhbmNlcyBvZiBgJGJyZWFrcG9pbnQtI3skbGVnYWN5fToge3tzZXR0aW5nfX1gIHRvIGBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnI3skbmV3fScsIHt7c2V0dGluZ319KWAuIFZhcmlhYmxlIHNldHRpbmdzLCBhcyB3ZWxsIGFzIHRoaXMgd2FybmluZyB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cIlxuICAgIH1cbiAgfTtcblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gSGFuZCBjb3JyZWN0IGVhY2ggc2V0dGluZ1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LW1lZGlhICE9IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IG1lZGlhJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlJykgYW5kICRicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBmZWF0dXJlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdkZWZhdWx0IGZlYXR1cmUnLCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCcpIGFuZCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwgIT0gYnJlYWtwb2ludC1nZXQoJ2ZvcmNlIGFsbCBtZWRpYSB0eXBlJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScsICRicmVha3BvaW50LWZvcmNlLW1lZGlhLWFsbCk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtdG8tZW1zJykgYW5kICRicmVha3BvaW50LXRvLWVtcyAhPSBicmVha3BvaW50LWdldCgndG8gZW1zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0byBlbXMnLCAkYnJlYWtwb2ludC10by1lbXMpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXJlc29sdXRpb25zJykgYW5kICRicmVha3BvaW50LXJlc29sdXRpb25zICE9IGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ3RyYW5zZm9ybSByZXNvbHV0aW9ucycsICRicmVha3BvaW50LXJlc29sdXRpb25zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyaWVzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJpZXMgIT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJpZXMnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJpZXMnLCAkYnJlYWtwb2ludC1uby1xdWVyaWVzKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MnKSBhbmQgJGJyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyeSBmYWxsYmFja3MnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycsICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtYmFzZS1mb250LXNpemUnKSBhbmQgJGJyZWFrcG9pbnQtYmFzZS1mb250LXNpemUgIT0gYnJlYWtwb2ludC1nZXQoJ2Jhc2UgZm9udCBzaXplJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdiYXNlIGZvbnQgc2l6ZScsICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4JykgYW5kICRicmVha3BvaW50LWxlZ2FjeS1zeW50YXggIT0gYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJ2xlZ2FjeSBzeW50YXgnLCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4KTtcbiAgfVxufSIsIkBpbXBvcnQgJ2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd6LWluZGV4JztcbkBpbXBvcnQgJ21lZGlhLXF1ZXJpZXMnO1xuQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ3VuaWJvYXJkJztcbkBpbXBvcnQgJ21peGlucyc7XG5AaW1wb3J0ICdleHRlbmRzJztcbkBpbXBvcnQgJ2ZsZXgnO1xuQGltcG9ydCAnYm94JztcbkBpbXBvcnQgJ2ZsdWlkLXNpemUnO1xuIiwiLy8vIFotaW5kZXhlcyBtYXAsIGdhdGhlcmluZyBhbGwgWiBsYXllcnMgb2YgdGhlIGFwcGxpY2F0aW9uXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHR5cGUgTWFwXG4vLy8gQHByb3Age1N0cmluZ30ga2V5IC0gTGF5ZXLigJlzIG5hbWVcbi8vLyBAcHJvcCB7TnVtYmVyfSB2YWx1ZSAtIFogdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXlcbiR6LWluZGV4ZXM6IChcbiAgJ2NnX19wcm9tb3Rpb24nOiAyMDUsXG4gICdjZ19fcGllY2UuZHJhZ2dpbmcnOiAyMDQsXG4gICdjZ19fYm9hcmQub3ZlcmxheSc6IDEwMCxcbiAgJ2NnX19waWVjZS5hbmltJzogMyxcbiAgJ2NnX19zdmcuY2ctc2hhcGVzJzogMixcbiAgJ2NnX19zdmcuY2ctY3VzdG9tLXN2Z3MnOiA0LFxuICAnY2dfX3BpZWNlJzogMixcbiAgJ2NnX19waWVjZS5mYWRpbmcnOiAxLFxuICAncG93ZXJ0aXAnOiAxMjAsXG4gICdjb21wbGV0ZSc6IDExMixcbiAgJ2lucXVpcnknOiAxMTEsXG4gICd6ZW4tdG9nZ2xlJzogMTEwLFxuICAnbW9kYWwnOiAxMTAsXG4gICdtc2VsZWN0JzogMTEwLFxuICAndG9wbmF2JzogMTEwLFxuICAnZnVsbHNjcmVlbi1tYXNrJzogMTA5LFxuICAnZHJvcGRvd24nOiAxMDgsXG4gICdjb250ZXh0LW1lbnUnOiAxMDcsXG4gICdzaXRlLWhlYWRlcic6IDEwNixcbiAgJ3JlY29ubmVjdGluZyc6IDEwNSxcbiAgJ3RvdXItcmVtaW5kZXInOiAxMDQsXG4gICdtei1tZW51JzogNCxcbiAgJ2Fib3ZlLWxpbmstb3ZlcmxheSc6IDMsXG4gICdmcmllbmQtYm94JzogMixcbiAgJ2xpbmstb3ZlcmxheSc6IDIsXG4gICdnYW1lLWJvb2ttYXJrJzogMixcbiAgJ3N1Ym5hdi1zaWRlJzogMixcbiAgJ2RlZmF1bHQnOiAwLFxuKTtcblxuLy8vIEdldCBhIHotaW5kZXggdmFsdWUgZnJvbSBhIGxheWVyIG5hbWVcbi8vLyBAYWNjZXNzIHB1YmxpY1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGF5ZXIgLSBMYXllcuKAmXMgbmFtZVxuLy8vIEByZXR1cm4ge051bWJlcn1cbi8vLyBAcmVxdWlyZSAkei1pbmRleGVzXG5AZnVuY3Rpb24geigkbGF5ZXIpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCR6LWluZGV4ZXMsICRsYXllcik7XG59XG4iLCIvKiBXaWR0aHMgKi9cblxuJG1xLXh4LXNtYWxsOiBtaW4td2lkdGggNTAwcHg7XG4kbXEteC1zbWFsbDogbWluLXdpZHRoIDY1MHB4O1xuJG1xLXNtYWxsOiBtaW4td2lkdGggODAwcHg7XG4kbXEtbWVkaXVtOiBtaW4td2lkdGggOTgwcHg7XG4kbXEtbGFyZ2U6IG1pbi13aWR0aCAxMTIwcHg7XG4kbXEteC1sYXJnZTogbWluLXdpZHRoIDEyNjBweDtcblxuJG1xLW5vdC14eC1zbWFsbDogbWF4LXdpZHRoIDQ5OXB4O1xuJG1xLW5vdC14LXNtYWxsOiBtYXgtd2lkdGggNjQ5cHg7XG4kbXEtbm90LXNtYWxsOiBtYXgtd2lkdGggNzk5cHg7XG4kbXEtbm90LW1lZGl1bTogbWF4LXdpZHRoIDk3OXB4O1xuJG1xLW5vdC1sYXJnZTogbWF4LXdpZHRoIDExMTlweDtcbiRtcS1ub3QteC1sYXJnZTogbWF4LXdpZHRoIDEyNTlweDtcblxuLyogSGVpZ2h0cyAqL1xuXG4kbXEteC1zaG9ydDogbWluLWhlaWdodCA0MDBweDtcbiRtcS1zaG9ydDogbWluLWhlaWdodCA1MDBweDtcbiRtcS10YWxsOiBtaW4taGVpZ2h0IDYwMHB4O1xuJG1xLXgtdGFsbDogbWluLWhlaWdodCA3MDBweDtcblxuJG1xLW5vdC14LXNob3J0OiBtYXgtaGVpZ2h0IDM5OXB4O1xuXG4vKiBPcmllbnRhdGlvbnMgKi9cblxuJG1xLXBvcnRyYWl0OiBvcmllbnRhdGlvbiBwb3J0cmFpdDtcbiRtcS1sYW5kc2NhcGU6IG9yaWVudGF0aW9uIGxhbmRzY2FwZTtcblxuLyogQ2FwYWJpbGl0aWVzICovXG5cbiRtcS1ob3Zlci15ZXM6ICdob3ZlcjogaG92ZXInO1xuJG1xLWhvdmVyLW5vOiBob3ZlciBub25lO1xuXG4vKiBBbGlhc2VzICovXG5cbiRtcS1tYWluLW1hcmdpbjogJG1xLXNtYWxsO1xuXG4kbXEtdG9wbmF2LXZpc2libGU6ICRtcS1tZWRpdW07XG4kbXEtdG9wbmF2LWhpZGRlbjogJG1xLW5vdC1tZWRpdW07XG5cbiRtcS1zaXRlLWhlYWRlci10YWxsOiAkbXEtdGFsbDtcblxuJG1xLXN1Ym5hdi10b3A6ICRtcS1ub3Qtc21hbGw7XG4kbXEtc3VibmF2LXNpZGU6ICRtcS1zbWFsbDtcblxuJG1xLXpvb20tZW5hYmxlZDogJG1xLXNtYWxsICRtcS1zaG9ydDtcbiIsIiRkZWJ1ZzogZmFsc2U7XG5cbiRmb250LXBhdGg6ICcuLi9mb250JztcbiRpbWctcGF0aDogJy4uL2ltYWdlcyc7XG5cbiR2aWV3cG9ydC1taW4td2lkdGg6IDMyMHB4O1xuXG4kYmxvY2stZ2FwOiAydm1pbjtcbiRibG9jay1nYXAtaGFsZjogMXZtaW47XG5cbiRibG9jay1nYXAtaDogMnZoO1xuJGJsb2NrLWdhcC13OiAydnc7XG4kYmxvY2stZ2FwLXctaGFsZjogMXZ3O1xuXG4kYm94LXJhZGl1cy1zaXplOiAzcHg7XG5cbiRzaXRlLWhlYWRlci10YWxsLWhlaWdodDogNjBweDtcbiRzaXRlLWhlYWRlci1zaG9ydC1oZWlnaHQ6IDQwcHg7XG5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcblxuJG1haW4tbWF4LXdpZHRoOiAxMzAwcHggIWRlZmF1bHQ7XG5cbiRtYWluLW1hcmdpbjogdmFyKC0tbWFpbi1tYXJnaW4pO1xuJHNpdGUtaGVhZGVyLWhlaWdodDogdmFyKC0tc2l0ZS1oZWFkZXItaGVpZ2h0KTtcblxuJHNpdGUtaGVhZGVyLW1hcmdpbjogdmFyKC0tc2l0ZS1oZWFkZXItbWFyZ2luKTtcblxuJHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodDogY2FsYygjeyRzaXRlLWhlYWRlci1oZWlnaHR9ICsgI3skc2l0ZS1oZWFkZXItbWFyZ2lufSk7XG4iLCIvKiBVbmlib2FyZDoga2VlcCB0aGUgc2FtZSBwYWdlIGxheW91dCBhY3Jvc3MgcGFnZXMgKi9cblxuJG1xLWJvYXJkLXJlc2l6YWJsZTogJG1xLXNtYWxsO1xuJG1xLWNvbDEtdW5pYm9hcmQ6ICRtcS1ub3Qtc21hbGwgJG1xLXBvcnRyYWl0O1xuJG1xLWNvbDItdW5pYm9hcmQ6ICRtcS1zbWFsbCwgJG1xLWxhbmRzY2FwZTtcbiRtcS1jb2wzLXVuaWJvYXJkOiAkbXEteC1sYXJnZTtcblxuLyogd2hlbiB0aGUgd2lkdGggaXMgYXBwcm9wcmlhdGUgZm9yIGNvbDEsIGJ1dCBsYW5kc2NhcGUgcHJldmVudHMgaXQgKi9cbiRtcS1jb2wyLXVuaWJvYXJkLXNxdWVlemU6ICRtcS1ub3Qtc21hbGwgJG1xLWxhbmRzY2FwZTtcblxuJGNvbDMtdW5pYm9hcmQtc2lkZTogbWlubWF4KDIzMHB4LCAyMHZ3KTtcbiRjb2wzLXVuaWJvYXJkLXRhYmxlOiBtaW5tYXgoMjQwcHgsIDQwMHB4KTtcbiRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzOiAzcmVtO1xuXG4kY29sMy11bmlib2FyZC1taW4td2lkdGg6IGNhbGMoNzB2bWluICogdmFyKC0tYm9hcmQtc2NhbGUpKTtcbiRjb2wzLXVuaWJvYXJkLW1heC13aWR0aDogY2FsYygxMDB2aCAqIHZhcigtLWJvYXJkLXNjYWxlKSAtICN7JHNpdGUtaGVhZGVyLW91dGVyLWhlaWdodH0gLSAjeyRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzfSk7XG4kY29sMy11bmlib2FyZC13aWR0aDogbWlubWF4KCRjb2wzLXVuaWJvYXJkLW1pbi13aWR0aCwgJGNvbDMtdW5pYm9hcmQtbWF4LXdpZHRoKTtcblxuJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZTogMC45O1xuXG4vLyB6b29tOiA4NSVcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWluLXdpZHRoOiA1MDBweDtcbiRjb2wzLXVuaWJvYXJkLWRlZmF1bHQtbWF4LXdpZHRoOiBjYWxjKFxuICAxMDB2aCAqICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1zY2FsZX0gLSAjeyRzaXRlLWhlYWRlci1vdXRlci1oZWlnaHR9IC0gI3skY29sMy11bmlib2FyZC1jb250cm9sc31cbik7XG4kY29sMy11bmlib2FyZC1kZWZhdWx0LXdpZHRoOiBtaW5tYXgoI3skY29sMy11bmlib2FyZC1kZWZhdWx0LW1pbi13aWR0aH0sICN7JGNvbDMtdW5pYm9hcmQtZGVmYXVsdC1tYXgtd2lkdGh9KTtcblxuJGNvbDItdW5pYm9hcmQtdGFibGU6ICRjb2wzLXVuaWJvYXJkLXRhYmxlO1xuJGNvbDItdW5pYm9hcmQtY29udHJvbHM6ICRjb2wzLXVuaWJvYXJkLWNvbnRyb2xzO1xuJGNvbDItdW5pYm9hcmQtd2lkdGg6ICRjb2wzLXVuaWJvYXJkLXdpZHRoO1xuJGNvbDItdW5pYm9hcmQtZGVmYXVsdC13aWR0aDogJGNvbDMtdW5pYm9hcmQtZGVmYXVsdC13aWR0aDtcblxuJGNvbDItdW5pYm9hcmQtc3F1ZWV6ZS10YWJsZTogbWlubWF4KDIwMHB4LCAyNDBweCk7XG4kY29sMi11bmlib2FyZC1zcXVlZXplLXdpZHRoOiBtaW5tYXgoY2FsYyg1NXZtaW4pLCBjYWxjKDEwMHZoIC0gI3skc2l0ZS1oZWFkZXItb3V0ZXItaGVpZ2h0fSAtICN7JGJsb2NrLWdhcH0pKTtcblxuJGNvbDEtdW5pYm9hcmQtY29udHJvbHM6IDVyZW07XG4iLCJAbWl4aW4gYm94LXJhZGl1cyB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemU7XG59XG5cbkBtaXhpbiBib3gtc2hhZG93IHtcbiAgYm94LXNoYWRvdzogJGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBib3gtbmVhdCB7XG4gIEBpbmNsdWRlIGJveC1yYWRpdXM7XG4gIEBpbmNsdWRlIGJveC1zaGFkb3c7XG59XG5cbkBtaXhpbiBkZWJ1Zy16b29tLWlucHV0IHtcbiAgI3pvb20taW5wdXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS16b29tLWVuYWJsZWQpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgYm90dG9tOiAzcHg7XG4gICAgICByaWdodDogM3B4O1xuICAgICAgd2lkdGg6IDEwdnc7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wOiBhbGwsICRkdXI6ICR0cmFuc2l0aW9uLWR1cmF0aW9uKSB7XG4gIHRyYW5zaXRpb246ICRwcm9wICRkdXI7XG59XG5cbkBtaXhpbiBob3ZlcmZsb3cge1xuICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gIEBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICAgJjpub3QoOmhvdmVyKSB7XG4gICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhpZGUge1xuICBkaXNwbGF5OiBub25lO1xuXG4gIC5ibGluZC1tb2RlICYge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIGVsbGlwc2lzIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbkBtaXhpbiBjcm9zc3RhYmxlLWxhcmdlIHtcbiAgLmNyb3NzdGFibGVfX3VzZXJzIHtcbiAgICBmbGV4OiA3IDEgYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gY3Jvc3N0YWJsZS1zbWFsbCB7XG4gIC5jcm9zc3RhYmxlX191c2VycyB7XG4gICAgZmxleDogMSAxIGF1dG87XG4gIH1cbn1cblxuQG1peGluIGJvZHktZml4ZWQtc2Nyb2xsIHtcbiAgYm9keSB7XG4gICAgLyogcHJldmVudHMgc2Nyb2xsIGJhciBmbGlja2VyIHdoZW4gZHJhZ2dpbmcgYSBwaWVjZSBvdXQgKi9cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIiViYXNlLWZvbnQtZmFsbGJhY2sge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiViYXNlLWZvbnQge1xuICBmb250LWZhbWlseTogJ05vdG8gU2FucycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8ge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIFNhbnMtU2VyaWY7XG59XG5cbiVyb2JvdG8tZmF0IHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBTYW5zLVNlcmlmO1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4lY2hlc3MtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiAnTm90byBDaGVzcycsICdOb3RvIFNhbnMnO1xufVxuXG4lc2FuIHtcbiAgQGV4dGVuZCAlY2hlc3MtZm9udDtcblxuICAucGllY2UtbGV0dGVyICYge1xuICAgIEBleHRlbmQgJWJhc2UtZm9udDtcbiAgfVxuXG4gIGRyYXcge1xuICAgIEBleHRlbmQgJXJvYm90bztcbiAgICBtYXJnaW4tbGVmdDogMWNoO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuLyogdGV4dCBwcmludGVkIGRpcmVjdGx5IG9uIHRoZSBwYWdlIGJhY2tncm91bmQgZGVzZXJ2ZXMgc3BlY2lhbCB0cmVhdG1lbnQgKHRyYW5zcCB0aGVtZSkgKi9cbiVwYWdlLWZvbnQge1xuICBjb2xvcjogJGMtZm9udC1wYWdlO1xufVxuXG4lcGFnZS10ZXh0IHtcbiAgQGV4dGVuZCAlcGFnZS1mb250LCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVwYWdlLWxpbmsge1xuICBAZXh0ZW5kICVwYWdlLWxpbmstZm9udCAhb3B0aW9uYWw7XG5cbiAgQGV4dGVuZCAlcGFnZS10ZXh0LXNoYWRvdyAhb3B0aW9uYWw7XG59XG5cbiVtZXRhbCB7XG4gIEBpbmNsdWRlIG1ldGFsO1xufVxuXG4lbWV0YWwtaG92ZXIge1xuICBAaW5jbHVkZSBtZXRhbC1ob3Zlcjtcbn1cblxuJXBhZ2UtbWV0YWwge1xuICBAaW5jbHVkZSBwYWdlLW1ldGFsO1xufVxuXG4lcGFnZS1tZXRhbC1ob3ZlciB7XG4gIEBpbmNsdWRlIHBhZ2UtbWV0YWw7XG59XG5cbiVtZXRhbC1iZyB7XG4gIEBpbmNsdWRlIG1ldGFsLWJnO1xufVxuXG4lYWN0aXZlLWluc2V0LXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCBoc2xhKDAsIDAsIDAsIDAuMTUpIGluc2V0O1xufVxuXG4lYWN0aXZlIHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1hY2NlbnQ7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IGJsYWNrICFpbXBvcnRhbnQ7XG59XG5cbiVhY3RpdmUtaG92ZXIge1xuICBiYWNrZ3JvdW5kOiBtaXgod2hpdGUsICRjLWFjY2VudCwgMjAlKTtcbn1cblxuJWFjdGl2ZS1zb2Z0IHtcbiAgQGV4dGVuZCAlYWN0aXZlLWluc2V0LXNoYWRvdztcblxuICBiYWNrZ3JvdW5kOiAkYy1zaGFkZTtcbiAgY29sb3I6ICRjLWZvbnQtY2xlYXJlcjtcbiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICRjLWZvbnQtc2hhZG93ICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4lZHJvcGRvd24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogLTFweCA1cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuJXBvcHVwLXNoYWRvdyB7XG4gIGJveC1zaGFkb3c6IDAgMTRweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMTBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7XG59XG5cbiVidXR0b24tc2hhZG93IHtcbiAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgaHNsYSgwLCAwLCAwJSwgMC4yMjUpO1xufVxuXG4lYnV0dG9uLXJhaXNlZC1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDRweCAxMHB4IDBweCBoc2xhKDAsIDAsIDAsIDAuMjI1KTtcbn1cblxuJWJ1dHRvbi1ub25lIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBjb2xvcjogJGMtZm9udDtcbiAgYWxpZ24taXRlbXM6IG5vcm1hbDtcbn1cblxuJWNoZWNrYm94IHtcbiAgQGV4dGVuZCAlYm94LXJhZGl1cztcblxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICRjLWJnLXBhZ2U7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJnLWxvdztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbTtcblxuICAmOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6ICRjLXNlY29uZGFyeS1kaW1tZXI7XG4gICAgYm9yZGVyLWNvbG9yOiAkYy1zZWNvbmRhcnktZGltO1xuICB9XG59XG5cbiVmb2N1cy1zaGFkb3cge1xuICBib3gtc2hhZG93OiAwIDAgMTJweCAkYy1mb250LWRpbTtcbn1cblxuJXphbGdvdmVyZmxvdyB7XG4gIC8vIG1pdGlnYXRlIHphbGdvIHRleHRcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuJW5vd3JhcC1oaWRkZW4ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4lbm93cmFwLWVsbGlwc2lzIHtcbiAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuJWJveC1wYWRkaW5nIHtcbiAgcGFkZGluZzogNXZoIHZhcigtLWJveC1wYWRkaW5nKTtcbn1cblxuJWJveC1wYWRkaW5nLWhvcml6IHtcbiAgcGFkZGluZzogMCB2YXIoLS1ib3gtcGFkZGluZyk7XG59XG5cbiVicmVhay13b3JkIHtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuJWJyZWFrLXdvcmQtaGFyZCB7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcblxuICAvKiBzdXBwb3J0OiBmaXJlZm94ICovXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbiVicmVhay1ub3BlIHtcbiAgb3ZlcmZsb3ctd3JhcDogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG5cbiVlbGxpcHNpcyB7XG4gIEBpbmNsdWRlIGVsbGlwc2lzO1xufVxuXG4lc3F1YXJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbiV2aWRlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTtcblxuICAvKiAxNi85ICovXG4gIC8vIHBhZGRpbmctYm90dG9tOiA3NSU7IC8qIDQvMyAqL1xuICB3aWR0aDogMTAwJTtcblxuICA+ICoge1xuICAgIEBleHRlbmQgJWFicy0xMDA7XG5cbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuJWdhbWUtZW1iZWQge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QteHgtc21hbGwpIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTYwJTtcbiAgfVxufVxuXG4lZGF0YS1pY29uIHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZm9udC1mYW1pbHk6ICdsaWNoZXNzJztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgc3BlYWs6IG5vbmU7XG4gIGNvbnRlbnQ6IGF0dHIoZGF0YS1pY29uKTtcbiAgb3BhY2l0eTogMC45O1xufVxuXG4lZGF0YS1pY29uLXRvcCB7XG4gICY6OmJlZm9yZSB7XG4gICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xuICB9XG59XG5cbiVmdWxsc2NyZWVuLW1hc2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogJGMtcGFnZS1tYXNrO1xuICB6LWluZGV4OiB6KCdmdWxsc2NyZWVuLW1hc2snKTtcbn1cblxuJWxpbmstb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiB6KCdsaW5rLW92ZXJsYXknKTtcbn1cblxuJWFicy0xMDAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbiVkb3VibGUtdGFwIHtcbiAgLy8gcHJldmVudCBpUGFkIHNhZmFyaSBmcm9tIHpvb21pbmcgaW4gb24gZG91YmxlIHRhcFxuICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cbiIsIiVmbGV4LXdyYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xufVxuXG4lZmxleC1jZW50ZXIge1xuICAvKiBleHRlbmRzICVmbGV4LXdyYXAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtY2VudGVyLW5vd3JhcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuJWZsZXgtYmV0d2VlbiB7XG4gIC8qIGV4dGVuZHMgJWZsZXgtY2VudGVyICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1ub3dyYXAge1xuICAvKiBleHRlbmRzICVmbGV4LWNlbnRlciAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuJWZsZXgtYmV0d2Vlbi1zdHJldGNoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuJWZsZXgtYXJvdW5kIHtcbiAgLyogZXh0ZW5kcyAlZmxleC1jZW50ZXIgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG59XG5cbiVmbGV4LWNvbHVtbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uO1xufVxuIiwiJWJveC1yYWRpdXMge1xuICBAaW5jbHVkZSBib3gtcmFkaXVzO1xufVxuXG4lYm94LXJhZGl1cy1mb3JjZSB7XG4gIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiBoZWxwcyB3aXRoIGNsaXBwaW5nIGJhY2tncm91bmQgaW50byBib3JkZXItcmFkaXVzICovXG59XG5cbiVib3gtcmFkaXVzLWxlZnQge1xuICBib3JkZXItcmFkaXVzOiAkYm94LXJhZGl1cy1zaXplIDAgMCAkYm94LXJhZGl1cy1zaXplO1xufVxuXG4lYm94LXJhZGl1cy1yaWdodCB7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGJveC1yYWRpdXMtc2l6ZSAkYm94LXJhZGl1cy1zaXplIDA7XG59XG5cbiVib3gtcmFkaXVzLXRvcCB7XG4gIGJvcmRlci1yYWRpdXM6ICRib3gtcmFkaXVzLXNpemUgJGJveC1yYWRpdXMtc2l6ZSAwIDA7XG59XG5cbiVib3gtcmFkaXVzLWJvdHRvbSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplICRib3gtcmFkaXVzLXNpemU7XG59XG5cbiVib3gtcmFkaXVzLXRvcC1sZWZ0IHtcbiAgYm9yZGVyLXJhZGl1czogJGJveC1yYWRpdXMtc2l6ZSAwIDAgMDtcbn1cblxuJWJveC1yYWRpdXMtdG9wLXJpZ2h0IHtcbiAgYm9yZGVyLXJhZGl1czogMCAkYm94LXJhZGl1cy1zaXplIDAgMDtcbn1cblxuJWJveC1zaGFkb3cge1xuICBAaW5jbHVkZSBib3gtc2hhZG93O1xufVxuXG4lYm94LW5lYXQge1xuICBAZXh0ZW5kICVib3gtc2hhZG93LCAlYm94LXJhZGl1cztcbn1cblxuJWJveC1uZWF0LXRvcCB7XG4gIEBleHRlbmQgJWJveC1zaGFkb3csICVib3gtcmFkaXVzLXRvcDtcbn1cblxuJWJveC1uZWF0LWZvcmNlIHtcbiAgQGV4dGVuZCAlYm94LXNoYWRvdywgJWJveC1yYWRpdXMtZm9yY2U7XG59XG4iLCIkdnAtbWluLXdpZHRoOiAzMjBweCAhZGVmYXVsdDtcbiR2cC1tYXgtd2lkdGg6IDEyMDBweCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XG4gIEByZXR1cm4gJHZhbHVlIC8gKCR2YWx1ZSAqIDAgKyAxKTtcbn1cblxuQG1peGluIGZsdWlkLXNpemUoJHByb3AsICRtaW4tc2l6ZSwgJG1heC1zaXplLCAkbWluLXZ3OiAkdnAtbWluLXdpZHRoLCAkbWF4LXZ3OiAkdnAtbWF4LXdpZHRoKSB7XG4gICR1MTogdW5pdCgkbWluLXZ3KTtcbiAgJHUyOiB1bml0KCRtYXgtdncpO1xuICAkdTM6IHVuaXQoJG1pbi1zaXplKTtcbiAgJHU0OiB1bml0KCRtYXgtc2l6ZSk7XG5cbiAgQGlmICR1MSA9PSAkdTIgYW5kICR1MSA9PSAkdTMgYW5kICR1MSA9PSAkdTQge1xuICAgICYge1xuICAgICAgI3skcHJvcH06ICRtaW4tc2l6ZTtcblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4tdncpIHtcbiAgICAgICAgI3skcHJvcH06IGNhbGMoXG4gICAgICAgICAgI3skbWluLXNpemV9ICsgI3tzdHJpcC11bml0KCRtYXgtc2l6ZSAtICRtaW4tc2l6ZSl9ICpcbiAgICAgICAgICAgICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1heC12dykge1xuICAgICAgICAjeyRwcm9wfTogJG1heC1zaXplO1xuICAgICAgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiZmx1aWQtc2l6ZSByZXF1aXJlcyB0aGF0IGFsbCB2YWx1ZXMgaGF2ZSB0aGUgc2FtZSB1bml0XCI7XG4gIH1cbn1cbiIsIiVmaXJlLXRyb3BoeS1zaGFkb3cge1xuICB0ZXh0LXNoYWRvdzogMCAwLjAwOGVtIDAuMTI3ZW0gI2ZlZmNjOSwgMC4wNTVlbSAtMC4wNjZlbSAwLjJlbSAjZmVlYzg1LCAtMC4xMTFlbSAtMC4xMjdlbSAwLjI3MmVtICNmZmFlMzQsXG4gICAgMC4xMTFlbSAtMC4yNzJlbSAwLjQxMWVtICNlYzc2MGMsIC0wLjExMWVtIC0wLjQ1NmVtIDAuNDE2ZW0gI2NkNDYwNiwgMCAtMC41MzNlbSAwLjU3N2VtICM5NzM3MTYsXG4gICAgMC4wNTVlbSAtMC41NWVtIDAuNTMzZW0gIzQ1MWIwZTtcbn1cblxuQGtleWZyYW1lcyBmaXJlLXRyb3BoeSB7XG4gIDAlIHtcbiAgICB0ZXh0LXNoYWRvdzogMCAwLjAwOGVtIDAuMTI3ZW0gI2ZlZmNjOSwgMC4wNTVlbSAtMC4wNjZlbSAwLjJlbSAjZmVlYzg1LCAtMC4xMTFlbSAtMC4xMjdlbSAwLjI3MmVtICNmZmFlMzQsXG4gICAgICAwLjExMWVtIC0wLjI3MmVtIDAuNDExZW0gI2VjNzYwYywgLTAuMTExZW0gLTAuNDU2ZW0gMC40MTZlbSAjY2Q0NjA2LCAwIC0wLjUzM2VtIDAuNTc3ZW0gIzk3MzcxNixcbiAgICAgIDAuMDU1ZW0gLTAuNTVlbSAwLjUzM2VtICM0NTFiMGU7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDAuMTExZW0gI2ZlZmNjOSwgMC4wNTVlbSAtMC4wNTVlbSAwLjE2NmVtICNmZWZjYzksIC0wLjExMWVtIC0wLjExMWVtIDAuMjIyZW0gI2ZlZWM4NSxcbiAgICAgIDAuMTIyZW0gLTAuMjMzZW0gMC4zMzNlbSAjZmZhZTM0LCAtMC4xMjJlbSAtMC4zMjJlbSAwLjI3N2VtICNlYzc2MGMsIDAgLTAuNDU2ZW0gMC40NDRlbSAjY2Q0NjA2LFxuICAgICAgMC4wNTVlbSAtMC41ZW0gMC40NDRlbSAjOTczNzE2O1xuICB9XG59XG5cbi5maXJlLXRyb3BoeSB7XG4gIEBleHRlbmQgJWZpcmUtdHJvcGh5LXNoYWRvdztcblxuICBjb2xvcjogJGMtZm9udDtcbiAgZm9udC1zaXplOiA5MHB4O1xuICBkaXNwbGF5OiBibG9jaztcblxuICAmOmhvdmVyIHtcbiAgICBhbmltYXRpb246IGZpcmUtdHJvcGh5IDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xuICB9XG59XG4iLCIubm93LXBsYXlpbmcge1xuICBkaXNwbGF5OiBncmlkO1xuICAtLW5wLW1pbi13aWR0aDogMjAwcHg7XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXh4LXNtYWxsKSB7XG4gICAgLS1ucC1taW4td2lkdGg6IDUwJTtcbiAgfVxuXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KHZhcigtLW5wLW1pbi13aWR0aCksIDFmcikpO1xuXG4gID4gYSB7XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgcGFkZGluZzogMC4zZW07XG4gIH1cblxuICAuaW5kaWNhdG9yIHtcbiAgICBjb2xvcjogJGMtYWNjZW50O1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICBjZy1ib2FyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxufVxuIiwiLmhvdmVyLXRleHQge1xuICAmOjphZnRlciB7XG4gICAgY29udGVudDogYXR0cih0aXRsZSk7XG4gIH1cblxuICAmOmhvdmVyOjphZnRlciB7XG4gICAgY29udGVudDogYXR0cihkYXRhLWhvdmVyLXRleHQpO1xuICB9XG59XG4iLCJAaW5jbHVkZSBjcm9zc3RhYmxlLXNtYWxsO1xuXG4uY3Jvc3N0YWJsZSB7XG4gIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gIHdpZHRoOiAxMDAlO1xuICBsaW5lLWhlaWdodDogMS45ZW07XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgZmlsbCxcbiAgcG92cyB7XG4gICAgYmFja2dyb3VuZDogJGMtYmctYm94O1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgcG92cyxcbiAgJl9fdXNlcnMsXG4gICZfX3Njb3JlLFxuICAmX19tYXRjaHVwIHtcbiAgICBAZXh0ZW5kICVmbGV4LWNvbHVtbjtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX3VzZXJzLFxuICAmX19zY29yZSB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG4gIH1cblxuICAmX191c2VycyB7XG4gICAgQGV4dGVuZCAlZWxsaXBzaXM7XG5cbiAgICBtYXgtd2lkdGg6IDQwdnc7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGEge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX3Njb3JlIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXdlaWdodDogYm9sZDtcblxuICAgIHNwYW4ge1xuICAgICAgcGFkZGluZzogMCAkYmxvY2stZ2FwO1xuICAgIH1cbiAgfVxuXG4gICZfX21hdGNodXAge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1wcmltYXJ5LCAkYy1iZy1ib3gsIDIwJSk7XG4gIH1cblxuICBwb3ZzIHtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAkYy1mb250LWRpbTtcbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICBAZXh0ZW5kICVtZXRhbDtcblxuICAgICAgYSB7XG4gICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhLmxvc3Mge1xuICAgICAgb3BhY2l0eTogMC4yO1xuICAgIH1cblxuICAgICYuY3VycmVudCBhIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1hY2NlbnQsICRjLWJnLWJveCwgNzAlKTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgICYubmV3IHtcbiAgICAgIGJvcmRlcjogJGMtYm9yZGVyO1xuICAgIH1cblxuICAgIGEubG9zcyB7XG4gICAgICBvcGFjaXR5OiAwLjI7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXgtc21hbGwpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICY6bnRoLWxhc3QtY2hpbGQoLW4gKyAxMikge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5zZXAge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXMtbGVmdDtcblxuICAgIGJvcmRlci1sZWZ0OiAkYm9yZGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbiAgfVxuXG4gIC53aW4ge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAkYy1nb29kO1xuICB9XG5cbiAgLmxvc3Mge1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cblxuICAudW5hdmFpbGFibGUge1xuICAgIG1hcmdpbi10b3A6IDQwcHg7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG59XG4iLCIuZmxhc2gge1xuICBtYXJnaW46IDFlbSAwIDJlbSAwO1xuXG4gICZfX2NvbnRlbnQge1xuICAgIEBleHRlbmQgJWJveC1yYWRpdXM7XG5cbiAgICBwYWRkaW5nOiAxZW0gMmVtO1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gICAgY29sb3I6ICRjLWdvb2Qtb3ZlcjtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBAZXh0ZW5kICVkYXRhLWljb247XG5cbiAgICAgIGNvbnRlbnQ6ICfugLgnO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWdvb2Qtb3ZlcjtcbiAgICB9XG4gIH1cblxuICAmLXdhcm5pbmcgLmZsYXNoX19jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy13YXJuO1xuICAgIGNvbG9yOiAkYy13YXJuLW92ZXI7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgQGV4dGVuZCAlZGF0YS1pY29uO1xuXG4gICAgICBjb250ZW50OiAn7oCFJztcbiAgICB9XG4gIH1cblxuICAmLWZhaWx1cmUgLmZsYXNoX19jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gICAgY29sb3I6ICRjLWJhZC1vdmVyO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIEBleHRlbmQgJWRhdGEtaWNvbjtcblxuICAgICAgY29udGVudDogJ+6BnSc7XG4gICAgfVxuICB9XG59XG4iLCIuY21uLXRvZ2dsZSB7XG4gIEBleHRlbmQgJWRvdWJsZS10YXA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC05OTk5OXB4O1xufVxuXG4uY21uLXRvZ2dsZSArIGxhYmVsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICBwYWRkaW5nOiAxcHg7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjLWJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcblxuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29udGVudDogJyc7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBAZXh0ZW5kICVkYXRhLWljb247XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgei1pbmRleDogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgQGV4dGVuZCAlbWV0YWw7XG5cbiAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDIuNXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iYWQ7XG59XG5cbi5jbW4tdG9nZ2xlLS1zdWJ0bGU6bm90KDpjaGVja2VkKSArIGxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGMtZm9udC1kaW1tZXI7XG59XG5cbi5jbW4tdG9nZ2xlOmNoZWNrZWQgKyBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjLWdvb2Q7XG59XG5cbi5jbW4tdG9nZ2xlOmRpc2FibGVkICsgbGFiZWwge1xuICBvcGFjaXR5OiA2MCU7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbn1cblxuLmNtbi10b2dnbGU6Zm9jdXM6bm90KDpkaXNhYmxlZCkgKyBsYWJlbCB7XG4gIEBleHRlbmQgJWZvY3VzLXNoYWRvdztcbn1cblxuLmNtbi10b2dnbGU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICArIGxhYmVsIHtcbiAgICBAZXh0ZW5kICVmb2N1cy1zaGFkb3c7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kKTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0cmFuc2l0aW9uOiBtYXJnaW4gJHRyYW5zaXRpb24tZHVyYXRpb24sIGNvbG9yICR0cmFuc2l0aW9uLWR1cmF0aW9uO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIEBleHRlbmQgJW1ldGFsLWhvdmVyO1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihtYXJnaW4pO1xuICAgIH1cbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICfugL8nO1xuICAgIGNvbG9yOiAkYy1iYWQ7XG4gIH1cbn1cblxuLmNtbi10b2dnbGUtLXN1YnRsZTpub3QoOmNoZWNrZWQpICsgbGFiZWwge1xuICAmOjpiZWZvcmUge1xuICAgIGNvbG9yOiAkYy1mb250LWRpbW1lcjtcbiAgfVxufVxuXG4uY21uLXRvZ2dsZTpjaGVja2VkICsgbGFiZWwge1xuICAmOjpiZWZvcmUsXG4gICY6OmFmdGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgfVxuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+6AuCc7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cbn1cbiIsImJvZHkgOjotd2Via2l0LXNjcm9sbGJhcixcbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIge1xuICB3aWR0aDogMC41cmVtO1xuICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG59XG5cbmJvZHkgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQ6ICRjLXNoYWRlO1xufVxuXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXG5ib2R5IDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogJGMtZm9udC1kaW1tZXI7XG59XG4iLCIuZ2FtZS1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgaGVpZ2h0OiAxN3JlbTtcbiAgcGFkZGluZzogMC41ZW0gMWVtO1xuICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihiYWNrZ3JvdW5kKTtcblxuICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgfVxuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDIwJSk7XG4gIH1cblxuICAmX19vdmVybGF5IHtcbiAgICBAZXh0ZW5kICVsaW5rLW92ZXJsYXk7XG4gIH1cblxuICAmX19ib2FyZCB7XG4gICAgZmxleDogMCAwIDE2cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMWVtO1xuXG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbXEtbm90LXNtYWxsKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZfX2luZm9zIHtcbiAgICBmbGV4OiAxIDEgMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW46IDAuNWVtIDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5ub3RlcyB7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gIC5oZWFkZXIge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjdyZW07XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICBzdHJvbmcge1xuICAgICAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnZlcnN1cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLnN3b3JkcyB7XG4gICAgICB3aWR0aDogMi41ZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAucGxheWVyIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAucGxheWVyLmJsYWNrIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHotaW5kZXg6IHooJ2Fib3ZlLWxpbmstb3ZlcmxheScpO1xuICAgIH1cblxuICAgIC5hbm9uIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyZW07XG4gICAgfVxuICB9XG5cbiAgLnJlc3VsdCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLndpbiB7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cblxuICAubG9zcyB7XG4gICAgY29sb3I6ICRjLWJhZDtcbiAgfVxufVxuIiwiLnVibG9nLXBvc3Qge1xuICAmLWNhcmRzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDIyZW0sIDFmcikpO1xuICAgIGdyaWQtZ2FwOiAzdm1pbjtcbiAgfVxuICAmLWNhcmQge1xuICAgIEBleHRlbmQgJWJveC1uZWF0LWZvcmNlO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihib3gtc2hhZG93KTtcblxuICAgIGJhY2tncm91bmQ6ICRjLWJnLXplYnJhO1xuICAgIGNvbG9yOiAkYy1mb250O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICYtLWxpbms6aG92ZXIge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDVweCAkYy1saW5rLCAwIDAgMjBweCAkYy1saW5rO1xuICAgIH1cblxuICAgICZfX292ZXItaW1hZ2Uge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcGFkZGluZzogMC4yZW0gMC41ZW0gMC4zZW0gMC41ZW07XG4gICAgICBAaWYgJHRoZW1lLWRhcmsge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNjUpO1xuICAgICAgICBjb2xvcjogI2RkZDtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCBibGFjaztcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpO1xuICAgICAgICBjb2xvcjogIzMzMztcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCB3aGl0ZTtcbiAgICAgIH1cbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICAgIHRpbWUge1xuICAgICAgbGVmdDogMDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAkYm94LXJhZGl1cy1zaXplIDA7XG4gICAgfVxuICAgIC51c2VyLWxpbmsge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgMCAkYm94LXJhZGl1cy1zaXplO1xuICAgIH1cblxuICAgICZfX2ltYWdlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgJi51YmxvZy1wb3N0LWltYWdlLWRlZmF1bHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWctdXJsKCdwbGFjZWhvbGRlci1tYXJnaW4ucG5nJyk7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgIHBhZGRpbmc6IDMlIDMlIDQlIDYlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXgtaGVpZ2h0OiAxMmVtO1xuICAgIH1cblxuICAgICZfX3RpdGxlIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4zZW07XG4gICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICZfX2ludHJvIHtcbiAgICAgIEBleHRlbmQgJXJvYm90bywgJWJyZWFrLXdvcmQ7XG5cbiAgICAgIGNvbG9yOiAkYy1mb250O1xuICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0ICdzdWItcmF0aW5nJztcbkBpbXBvcnQgJ2hlYWRlcic7XG5AaW1wb3J0ICd0cm9waHknO1xuQGltcG9ydCAncHJvZmlsZSc7XG5AaW1wb3J0ICdudW1iZXItbWVudSc7XG5AaW1wb3J0ICdub3RlLXpvbmUnO1xuQGltcG9ydCAnYWN0aXZpdHknO1xuQGltcG9ydCAnZ2FtZXMnO1xuXG4ucGFnZS1tZW51IHtcbiAgLyogZm9yIHRoZSB0cm9waGllcy4gVGhpcyBnbG9yaW91cyBoYWNrIGJ5cGFzc2VzIHRoZSAudXNlci1zaG93IG92ZXJmbG93OiBoaWRkZW4gKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY29oZW5jb2lucy1jb3VudGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWxlZnQ6IDAuNWVtO1xuICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVlbTtcbn1cblxuLmNvaGVuY29pbnMtY291bnRlciAuY29oZW5jb2lucy1pY29uIHtcbiAgd2lkdGg6IDIuMGVtO1xuICBoZWlnaHQ6IDIuMGVtO1xuICBtYXJnaW4tcmlnaHQ6IDAuMmVtO1xufVxuXG4udXNlci1zaG93IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvKiB0aGlzIGZpeGVzIHByb2ZpbGUgb3ZlcmZsb3csIGJ1dCBjdXRzIG91dCB0aGUgdHJvcGhpZXMgKi9cblxuICAuZmxhc2gge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nLWhvcml6O1xuICB9XG5cbiAgJl9fc29jaWFsIHtcbiAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcblxuICAgIC5udW1iZXItbWVudSB7XG4gICAgICBtYXJnaW46IDAgMCAwLjJlbSAxZW07XG4gICAgfVxuXG4gICAgLnVzZXItYWN0aW9ucyB7XG4gICAgICBtYXJnaW46IDFlbTtcblxuICAgICAgZm9ybSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAucmVsYXRpb24tYWN0aW9ucyB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWNlbnRlci1ub3dyYXA7XG5cbiAgICAgIGJvcmRlci1yaWdodDogJGJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAuY2xhaW0tdGl0bGUge1xuICAgIEBleHRlbmQgJWJveC1wYWRkaW5nO1xuXG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxuXG4gICAgZm9ybSB7XG4gICAgICBAZXh0ZW5kICVmbGV4LWJldHdlZW47XG5cbiAgICAgIG1hcmdpbjogM2VtIDAgMWVtIDA7XG4gICAgfVxuICB9XG5cbiAgLmNyb3NzdGFibGUge1xuICAgIG1hcmdpbjogMmVtIDFlbTtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIC5uZXctcGxheWVyIHtcbiAgICBwYWRkaW5nOiAxLjVlbTtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgICBoMiB7XG4gICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAxZW0gMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICBsaXN0LXN0eWxlOiBkaXNjIGluc2lkZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTtcbiAgICB9XG4gIH1cblxuICAubnVtYmVyLW1lbnUgLnRvLWdhbWVzLmFjdGl2ZSxcbiAgI2dhbWVzLm51bWJlci1tZW51IHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iZy1sb3cgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5hbmdsZXMge1xuICAgIEBleHRlbmQgJW1ldGFsO1xuXG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBoZWlnaHQ6IDRyZW07XG4gICAgYm9yZGVyLXRvcDogJGJvcmRlcjtcblxuICAgIC5ubS1pdGVtIHtcbiAgICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAudW5yZWFkIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICB9XG4gIH1cblxuICAuYWN0aXZpdHkge1xuICAgIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgfVxuXG4gICZfX2Jsb2cge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYy1ib3JkZXI7XG4gICAgcGFkZGluZzogMnZoIDIuNSU7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjUwcHgsIDFmcikpO1xuICAgIGdyaWQtZ2FwOiAwIDMlO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bzsgLyogZmlyc3Qgcm93IGF1dG8gKi9cbiAgICBncmlkLWF1dG8tcm93czogMDsgLyogYWxsIHRoZSBvdGhlciByb3dzIDAgKi9cbiAgfVxufVxuIiwiLnN1Yi1yYXRpbmdzIHtcbiAgYSB7XG4gICAgQGV4dGVuZCAlYm94LXJhZGl1cy1sZWZ0LCAlZmxleC1jZW50ZXItbm93cmFwLCAlcGFnZS10ZXh0O1xuXG4gICAgcGFkZGluZzogMC43ZW0gJGJsb2NrLWdhcCAwLjdlbSAwLjRlbTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICYuZW1wdHkge1xuICAgICAgb3BhY2l0eTogMC41O1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIG1hcmdpbi1yaWdodDogMC4yZW07XG5cbiAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgJltocmVmXTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtaXgoJGMtYmctYm94LCAkYy1iZy1wYWdlLCA1MCUpO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgIEBleHRlbmQgJWJveC1zaGFkb3c7XG5cbiAgICAgIGJhY2tncm91bmQ6ICRjLWJnLWJveDtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICRjLWFjY2VudDtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgIH1cblxuICAgID4gc3BhbiB7XG4gICAgICBmbGV4OiAxIDEgMTAwJTtcblxuICAgICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICAgIG1hcmdpbi1yaWdodDogMC41ZW07XG4gICAgfVxuXG4gICAgcmF0aW5nIHNwYW4sXG4gICAgLnJhbmsge1xuICAgICAgZm9udC1zaXplOiAwLjllbTtcbiAgICB9XG5cbiAgICBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgY29sb3I6ICRjLWZvbnQtZGltO1xuXG4gICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uO1xuICAgIH1cblxuICAgICY6aG92ZXIgaSB7XG4gICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSBpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnNoeSB7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICB9XG4gIH1cblxuICBociB7XG4gICAgbWFyZ2luOiAkYmxvY2stZ2FwIGF1dG87XG4gICAgd2lkdGg6IDgwJTtcbiAgfVxuXG4gIGgzIHtcbiAgICBAZXh0ZW5kICVyb2JvdG87XG5cbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW46IDA7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgc3Ryb25nIHtcbiAgICBjb2xvcjogJGMtZm9udC1kaW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC1tZWRpdW0pIHtcbiAgICBhIHtcbiAgICAgIHBhZGRpbmc6IDAuM2VtO1xuICAgIH1cblxuICAgIGEgPiBpLFxuICAgIGgzLFxuICAgIGhyLFxuICAgIHJhdGluZyAucnAsXG4gICAgcmF0aW5nIHNwYW4ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1zdWJuYXYtdG9wKSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDljaCwgMWZyKSk7XG5cbiAgICBocixcbiAgICAucmFuayB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgICB9XG5cbiAgICAgID4gc3BhbiB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIudXNlci1zaG93X19oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiAkYy1iZy16ZWJyYTtcbiAgcGFkZGluZzogMmVtIDEuNWVtIDFlbSAxLjVlbTtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuXG4gIGgxIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgLmNvbm5lY3RlZCB7XG4gICAgY29sb3I6ICRjLWdvb2Q7XG4gIH1cblxuICAuY2xvc2VkIHtcbiAgICBjb2xvcjogJGMtYmFkO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIG1hcmdpbi1yaWdodDogMWVtO1xuICB9XG5cbiAgLmxpbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cbn1cbiIsIi50cm9waGllcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzNXB4O1xuICByaWdodDogMS41ZW07XG4gIGhlaWdodDogNDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3Qtc21hbGwpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi50cm9waHkuYXdhcmQge1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICBzcGVhazogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDEwMCU7XG59XG5cbi50cm9waHkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGhlaWdodDogNDBweDtcblxuICBpbWcge1xuICAgIGhlaWdodDogODBweDtcbiAgfVxuXG4gICYudG9wMSB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgNnB4ICRjLWJyYWcpO1xuICB9XG59XG5cbi50cm9waHksXG4uc2hpZWxkLXRyb3BoeSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzO1xuXG4gICY6bm90KC5wYXRyb24pOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gIH1cbn1cblxuLnN0YWNrZWQge1xuICBoZWlnaHQ6IDQwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cblxuLnN0YWNrZWQgLnRyb3BoeSB7XG4gIHdpZHRoOiA2NXB4O1xuICBoZWlnaHQ6IDY1cHg7XG4gIGZvbnQtc2l6ZTogNjVweDtcbn1cblxuLmZpcmUtdHJvcGh5IHtcbiAgJixcbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IGlmKCR0aGVtZS1saWdodCwgJGMtZm9udC1kaW0sICRjLWZvbnQtY2xlYXIpO1xuICB9XG5cbiAgb3BhY2l0eTogMC45O1xuICBoZWlnaHQ6IDgwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJi5tYXJhdGhvbldpbm5lcixcbiAgJi5tYXJhdGhvblRvcFRlbixcbiAgJi5tYXJhdGhvblRvcEZpZnR5IHtcbiAgICBmaWx0ZXI6IGh1ZS1yb3RhdGUoMTkwZGVnKTtcbiAgICBjb2xvcjogYWRqdXN0LWNvbG9yKCRjLWxpbmssICRodWU6IC0xOTBkZWcsICRzYXR1cmF0aW9uOiAtNzAlKTtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BUZW4ge1xuICAgIGZvbnQtc2l6ZTogNThweDtcbiAgICB3aWR0aDogNTVweDtcbiAgICBoZWlnaHQ6IDU1cHg7XG4gICAgbWFyZ2luLXRvcDogMjJweDtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BGaWZ0eSxcbiAgJi5tYXJhdGhvblRvcEh1bmRyZWQsXG4gICYubWFyYXRob25Ub3BGaXZlaHVuZHJlZCB7XG4gICAgZm9udC1zaXplOiA1MHB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgICB3aWR0aDogNTBweDtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BGaWZ0eSB7XG4gICAgdGV4dC1zaGFkb3c6IDAgMCA1cHggI2ZmYWUzNCwgMCAwIDYuMjVweCAjZWM3NjBjLCAwIDAgNy41cHggI2NkNDYwNjtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BIdW5kcmVkIHtcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgICBjb2xvcjogIzA2NmNjZDtcbiAgfVxuXG4gICYubWFyYXRob25Ub3BGaXZlaHVuZHJlZCB7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cblxuLnBhY2tlZCAudHJvcGh5IHtcbiAgbWFyZ2luLXJpZ2h0OiAtOHB4O1xufVxuXG4ucGFja2VkIC5zdGFja2VkIHtcbiAgbWFyZ2luLXJpZ2h0OiAzMHB4O1xufVxuXG4ucGFja2VkIC5zdGFja2VkIC50cm9waHkge1xuICBtYXJnaW4tcmlnaHQ6IC0zMHB4O1xufVxuXG4udHJvcGh5Lmljb24zZCB7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGZvbnQtc2l6ZTogMzlweDtcbiAgY29sb3I6ICRjLWZvbnQtZGltbWVyO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi50cm9waHkuc3RyZWFtaW5nIHtcbiAgQGV4dGVuZCAlZmlyZS10cm9waHktc2hhZG93O1xuXG4gIGNvbG9yOiAkYy1icmFnO1xuICBhbmltYXRpb246IGZpcmUtdHJvcGh5IDEuMjVzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cblxuLnRyb3BoeS5wYXRyb24ge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgZm9udC1zaXplOiA2MHB4O1xuICBtYXJnaW46IDAgLTEwcHggMCAzMHB4O1xuICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTtcbiAgY29sb3I6ICRjLWJyYWc7XG4gIHRyYW5zaXRpb246IG1hcmdpbi10b3AgMC41cztcblxuICAmOmhvdmVyIHtcbiAgICBAZXh0ZW5kICVmaXJlLXRyb3BoeS1zaGFkb3c7XG5cbiAgICBhbmltYXRpb246IGZpcmUtdHJvcGh5IDEuMjVzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbiAgfVxufVxuXG4uY29tYm8tdHJvcGh5IHtcbiAgd2lkdGg6IDYwcHg7XG4gIGhlaWdodDogNjBweDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBmb250LWZhbWlseTogJ2xpY2hlc3MnO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zaGllbGQtdHJvcGh5IHtcbiAgd2lkdGg6IDUwcHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWFnZXMvdHJvcGh5L3NoaWVsZC1nb2xkLnBuZyk7XG4gIGZvbnQtc2l6ZTogMzBweDtcbiAgbGluZS1oZWlnaHQ6IDYwcHg7XG4gIGNvbG9yOiAjMzMzICFpbXBvcnRhbnQ7XG4gIHRleHQtc2hhZG93OiAwIDAgNnB4ICNmZmY7XG4gIG1hcmdpbi10b3A6IC0yMHB4O1xuICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMCA2cHggJGMtYnJhZyk7XG59XG5cbi5yZXZvbF90cm9waHkge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1hZ2VzL3Ryb3BoeS9yb3VuZC1zdGFyLnBuZyk7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgbGluZS1oZWlnaHQ6IDY4cHg7XG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gIHRleHQtc2hhZG93OiAwIDAgNHB4ICM0NDQ7XG4gIG1hcmdpbi10b3A6IC0xOHB4O1xufVxuIiwiI3VzX3Byb2ZpbGUge1xuICBAZXh0ZW5kICVmbGV4LWNlbnRlcjtcblxuICBib3JkZXItdG9wOiAkYm9yZGVyO1xuXG4gIC53YXJuaW5nIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLCAlZmxleC1jZW50ZXItbm93cmFwO1xuXG4gICAgcGFkZGluZzogMC43ZW07XG4gICAgYmFja2dyb3VuZDogbWl4KCRjLWJhZCwgJGMtYmctYm94LCAxMCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIG1peCgkYy1iYWQsICRjLWJnLWJveCwgMzAlKTtcbiAgICBjb2xvcjogJGMtYmFkO1xuXG4gICAgc3BhbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuMmVtO1xuICAgICAgZm9udC1zaXplOiAyLjdlbTtcbiAgICB9XG4gIH1cblxuICAudG9zX3dhcm5pbmcge1xuICAgIG1hcmdpbjogMTBweCAwO1xuICB9XG5cbiAgLnJhdGluZy1oaXN0b3J5IHtcbiAgICBmbGV4OiAxIDEgNTglO1xuICAgIG1hcmdpbjogLTEwcHggMCAtMTRweCAtOHB4O1xuICAgIGhlaWdodDogMzUwcHg7XG5cbiAgICAuc3Bpbm5lciB7XG4gICAgICB3aWR0aDogOTBweDtcbiAgICAgIGhlaWdodDogOTBweDtcbiAgICAgIG1hcmdpbjogMTIwcHggYXV0byAwIGF1dG87XG4gICAgfVxuICB9XG5cbiAgLnByb2ZpbGUtc2lkZSB7XG4gICAgQGV4dGVuZCAlZmxleC1jb2x1bW47XG5cbiAgICBmbGV4OiAxIDAgMzAwcHg7XG4gICAgaGVpZ2h0OiAzMzJweDtcbiAgICBib3JkZXItbGVmdDogJGJvcmRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLmNvdW50cnkgaW1nIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG4gICAgbWFyZ2luOiAwIDAuM2VtO1xuICB9XG5cbiAgLnVzZXItaW5mb3Mge1xuICAgIEBpbmNsdWRlIGhvdmVyZmxvdztcblxuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHBhZGRpbmc6IDAuOGVtO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG5cbiAgLmluc2lnaHQge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyLW5vd3JhcDtcblxuICAgIC8qIG5vIHBvaW50IGxpbmtpbmcgdG8gaW5zaWdodHMgb24gZGV2aWNlcyB0aGF0IGNhbid0IHByb3Blcmx5IGRpc3BsYXkgaXQgKi9cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS1ub3QtbWVkaXVtKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAuM2VtIDFlbTtcbiAgICBib3JkZXItdG9wOiAkYm9yZGVyO1xuICAgIGNvbG9yOiAkYy1saW5rO1xuXG4gICAgc3Ryb25nIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgfVxuXG4gICAgZW0ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmhvdmVyOjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbjtcblxuICAgICAgYmFja2dyb3VuZDogJGMtcHJpbWFyeTtcbiAgICAgIGNvbG9yOiAkYy1wcmltYXJ5LW92ZXI7XG4gICAgfVxuICB9XG5cbiAgLmNvbDIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcblxuICAgID4gYSB7XG4gICAgICBAZXh0ZW5kICVub3dyYXAtZWxsaXBzaXM7XG5cbiAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgfVxuICB9XG5cbiAgLmJpbyB7XG4gICAgQGV4dGVuZCAlYnJlYWstd29yZCwgJXphbGdvdmVyZmxvdztcblxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcblxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG59XG4iLCIubnVtYmVyLW1lbnUge1xuICBkaXNwbGF5OiBmbGV4O1xuICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAubm0taXRlbSB7XG4gICAgQGV4dGVuZCAlcm9ib3RvO1xuXG4gICAgZmxleDogMSAxIGF1dG87XG4gICAgY29sb3I6ICRjLWZvbnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICBwYWRkaW5nOiAwLjVlbSA1cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGMtbGluaztcbiAgICB9XG4gIH1cblxuICAmLS10YWJzIC5ubS1pdGVtIHtcbiAgICBAZXh0ZW5kICVib3gtcmFkaXVzLXRvcDtcblxuICAgIG1hcmdpbi10b3A6IDAuN2VtO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjhlbTtcblxuICAgIEBpbmNsdWRlIHRyYW5zaXRpb247XG5cbiAgICBib3JkZXItYm90dG9tOiAkYm9yZGVyO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1peCgkYy1saW5rLCAkYy1iZy1ib3gsIDEwJSk7XG4gICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGMtZm9udC1jbGVhcjtcbiAgICAgIGJvcmRlcjogJGJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICBiYWNrZ3JvdW5kOiAkYy1iZy1ib3g7XG4gICAgfVxuICB9XG5cbiAgc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gIH1cbn1cbiIsIi5ub3RlLXpvbmUge1xuICBkaXNwbGF5OiBub25lO1xuICBtYXJnaW46IDFlbSAxLjVlbTtcbiAgcGFkZGluZy1ib3R0b206IDFlbTtcblxuICB0ZXh0YXJlYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA1ZW07XG4gIH1cblxuICAubm90ZSB7XG4gICAgQGV4dGVuZCAlZmxleC1iZXR3ZWVuLW5vd3JhcCwgJWJyZWFrLXdvcmQ7XG5cbiAgICBwYWRkaW5nLXRvcDogMWVtO1xuICAgIGJvcmRlci10b3A6ICRib3JkZXI7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuXG4gICAgJl9fbWV0YSB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIG1hcmdpbjogMCAxZW07XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgICZfX3RleHQge1xuICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICBtaW4taGVpZ2h0OiAyLjdlbTtcbiAgICB9XG4gIH1cblxuICAubW9kLW5vdGUge1xuICAgIEBleHRlbmQgJWZsZXgtY2VudGVyO1xuXG4gICAgPiBkaXYge1xuICAgICAgQGV4dGVuZCAlZmxleC1jZW50ZXI7XG5cbiAgICAgIG1hcmdpbi1sZWZ0OiAxLjVlbTtcblxuICAgICAgPiBsYWJlbCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiJGMtY29udG91cnM6IG1peCgkYy1icmFnLCAkYy1zaGFkZSwgODAlKTtcblxuLmFjdGl2aXR5IHtcbiAgc2VjdGlvbiB7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbiAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1xLW5vdC1zbWFsbCkge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAyZW07XG4gICAgfVxuICB9XG5cbiAgc2VjdGlvbiBoMiB7XG4gICAgQGV4dGVuZCAlYmFzZS1mb250O1xuXG4gICAgY29sb3I6ICRjLWJyYWc7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcblxuICAgIHRpbWUge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgfVxuXG4gIC5lbnRyaWVzIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5lbnRyeSB7XG4gICAgcGFkZGluZzogMWVtIDAgMWVtO1xuXG4gICAgPiBpIHtcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgd2lkdGg6IDUwcHg7XG4gICAgICBoZWlnaHQ6IDUwcHg7XG4gICAgICBtYXJnaW4tdG9wOiAtMTBweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtNzJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzOXB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGMtY29udG91cnM7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAkYy1iZy1ib3g7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCRtcS14eC1zbWFsbCkge1xuICAgIC5lbnRyaWVzIHtcbiAgICAgIG1hcmdpbjogMzBweCA1MHB4IDAgNTBweDtcbiAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGMtY29udG91cnM7XG4gICAgfVxuXG4gICAgLmVudHJ5IHtcbiAgICAgIHBhZGRpbmctbGVmdDogNDVweDtcbiAgICB9XG4gIH1cblxuICAuc3ViIHtcbiAgICBAZXh0ZW5kICV6YWxnb3ZlcmZsb3c7XG4gICAgbWFyZ2luOiAzcHggMDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cblxuICAuc3ViOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IC03cHg7XG4gIH1cblxuICAuc3ViID4gZGl2IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG5cbiAgLmxpbmUge1xuICAgIEBleHRlbmQgJW5vd3JhcC1lbGxpcHNpcztcblxuICAgIC5tb3JlIHtcbiAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgY29sb3I6ICRjLWZvbnQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogJGMtbGluaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByYXRpbmcge1xuICAgIEBleHRlbmQgJXJvYm90bztcblxuICAgIG1hcmdpbi1sZWZ0OiAwLjdlbTtcblxuICAgIC5ycCB7XG4gICAgICBtYXJnaW4tbGVmdDogMC4yZW07XG4gICAgfVxuICB9XG5cbiAgc2NvcmUge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBmb250LXNpemU6IDAuN2VtO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgID4gKiB7XG4gICAgICBtYXJnaW4tbGVmdDogOHB4O1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICBAZXh0ZW5kICVib3gtcmFkaXVzO1xuXG4gICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICBwYWRkaW5nOiAxcHggNnB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbiAgfVxuXG4gIC5zdWIgc2NvcmUgc3Ryb25nIHtcbiAgICBsaW5lLWhlaWdodDogMS42ZW07XG4gICAgcGFkZGluZzogMXB4IDRweDtcbiAgfVxuXG4gIHdpbiBzdHJvbmcge1xuICAgIGJhY2tncm91bmQ6ICRjLWdvb2Q7XG4gIH1cblxuICBkcmF3IHN0cm9uZyB7XG4gICAgYmFja2dyb3VuZDogJGMtYnJhZztcbiAgfVxuXG4gIGxvc3Mgc3Ryb25nIHtcbiAgICBiYWNrZ3JvdW5kOiAkYy1iYWQ7XG4gIH1cbn1cbiIsIi51c2VyLXNob3cge1xuICAubnVtYmVyLW1lbnUgLnRvLXBsYXlpbmcge1xuICAgIGNvbG9yOiAkYy1hY2NlbnQ7XG5cbiAgICBzdHJvbmcge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuICB9XG5cbiAgLm5vdy1wbGF5aW5nIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNTBweCwgYXV0bykpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBRUVBLFlBQVk7QUFrQlosNkRBQTZEO0FBYzdELG1CQUFtQjtBQU1uQixrQ0FBa0M7QUFFbEMsc0JBQXNCO0FBTXRCLG9DQUFvQztBQUVwQyxvQkFBb0I7QUFNcEIsaUNBQWlDO0FBRWpDLGdCQUFnQjtBQUloQiwrQkFBK0I7QUFFL0IsZ0JBQWdCO0FBS2hCLCtCQUErQjtBQUUvQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUFJZCxnQkFBZ0I7QUFJaEIsaUJBQWlCO0FBSWpCLCtCQUErQjtBQThCL0IsYUFBYTtBQU1iLGFBQWE7QUQ1R2IsNkRBQTZEO0FBYzdELG1CQUFtQjtBQUtuQixzQkFBc0I7QUFLdEIsZ0JBQWdCO0FBR2hCLGlCQUFpQjtBQUdqQixpQkFBaUI7QUFJakIsa0JBQWtCO0FBSWxCLGNBQWM7QUl6RGQsd0NBQXdDO0FzQkF4QyxZQUFZO0FBZ0JaLGFBQWE7QUFTYixrQkFBa0I7QUFLbEIsa0JBQWtCO0FBS2xCLGFBQWE7QUVuQ2Isc0RBQXNEO0FBT3RELHVFQUF1RTtBc0JMdkUsQXBCRUEsU29CRlMsQ0FXUCxPQUFPLENBQUMsRUFBRSxDcEJURDtFQUNULFdBQVcsRUFBRSx1QkFBdUI7Q0FDckM7O0FXTkQsQVhRQSxTV1JTLENBdURKLGFBQU0sQ0FDTCxNQUFNLEVDU1AsdUJBQU8sRUVqRVosWUFBWSxDQW1GVixFQUFFLEVJbkZKLFlBQVksQ0FJVixRQUFRLEVFRlYsU0FBUyxDQXlGUCxNQUFNLENwQm5GQTtFQUNOLFdBQVcsRUFBRSxvQkFBb0I7Q0FDbEM7O0FBeUJELDRGQUE0RjtBY25DNUYsQWRvQ0EsWWNw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 */
