/******************************************************
* Optional Google map showing walk locations
******************************************************/
/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

#map-container {
  display: none;
  /*Hide by default (unhidden by show_map script if JS enabled)*/
  margin-bottom: 16px;
  clear: left;
}

#google-map {
  width: 100%;
  height: 400px;
}

/******************************************************
* Optional main image
******************************************************/
/**
* Display a full-width photo with a white border
*/
#main-photo {
  display: inline-block;
  position: relative;
  margin-bottom: 8px;
  width: 100%;
}

#main-photo img {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
}

#main-photo .image-border {
  display: block;
  position: absolute;
  left: 10px;
  top: 10px;
  right: 10px;
  bottom: 10px;
  border: 1px solid white;
}

#main-photo + div p:first-child {
  margin-top: 0;
}

/*****************************************************************
 App intro shown for new users
*****************************************************************/
.app-formats {
  display: table;
  margin: 0 auto;
  width: 100%;
}

@media screen and (min-width: 60em) {
  .app-formats .app-button {
    display: none !important;
  }
}

@media screen and (max-width: 59.99em) {
  .app-formats .text {
    display: none !important;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats .icon {
    visibility: hidden;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats {
    display: block;
    width: 100%;
  }
  .app-formats .icon {
    display: none !important;
  }
}

.app-formats > div.store-link {
  display: table-cell;
}

.app-formats > div.store-link .inner {
  left: 50%;
  transform: translateX(-50%);
  position: relative;
  width: 98%;
  width: calc(100% - 12px);
  border-radius: 10px;
  display: table;
  table-layout: fixed;
}

@media screen and (min-width: 37.5em) {
  .app-formats > div.store-link .inner {
    margin: 8px 0 0 0;
    padding: 8px 0 4px 0;
    border: 1px solid #aaaaaa;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner {
    position: relative;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 46.24em) {
  .app-formats > div.store-link .inner {
    padding: 4px 0 8px 0;
  }
}

@media screen and (min-width: 60em) {
  .app-formats > div.store-link:hover {
    cursor: pointer;
  }
  .app-formats > div.store-link:hover a {
    text-decoration: underline;
  }
}

.app-formats > div.store-link.ios .icon {
  padding-left: 42px;
}

@media screen and (min-width: 46.25em) {
  .app-formats > div.store-link.android .icon img {
    margin-left: 12px;
  }
}

.app-formats > div.store-link.android .icon {
  padding-left: 24px !important;
}

.app-formats > div.store-link .inner > div {
  display: table-cell;
  vertical-align: middle;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div {
    display: block;
  }
}

.app-formats > div.store-link .inner > div.icon {
  text-align: left;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-right: 16px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.icon {
    display: none;
  }
}

.app-formats > div.store-link .inner > div.text {
  text-align: center;
  font-size: 17px;
  font-variant: small-caps;
  color: white;
}

.app-formats > div.store-link .inner > div.text a {
  color: white;
  text-decoration: none;
}

.app-formats > div.store-link .inner > div.qr {
  text-align: right;
  padding-left: 18px;
  padding-right: 8px;
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.qr {
    text-align: center;
  }
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.qr {
    display: none !important;
  }
}

.app-formats > div.store-link .inner > div.qr img {
  max-width: 100px;
}

@media screen and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.qr img {
    width: 100%;
  }
}

@media screen and (min-width: 46.25em) and (max-width: 59.99em) {
  .app-formats > div.store-link .inner > div.app-button {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
    text-align: left;
  }
}

@media screen and (max-width: 46.24em) {
  .app-formats > div.store-link .inner > div.app-button {
    text-align: center;
  }
}

.app-formats > div.store-link .inner > div.app-button a {
  padding-left: 42px;
}

@media screen and (max-width: 37.49em) {
  .app-formats > div.store-link .inner > div.app-button a {
    margin: 12px 0 0 0;
  }
}

#app-intro {
  background-color: #131;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  /*
 * Responsive slideshow widget using Slick carousel
 */
  /******************************************************
* Slick Carousel default theme overrides
******************************************************/
  padding: 4px 0 0 0;
  margin-bottom: 16px;
  display: none;
}

#app-intro, #app-intro a {
  color: white;
}

#app-intro:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#2e802e, #174517);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

#app-intro:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#184719, #113311);
  z-index: -1;
}

#app-intro > * {
  z-index: 2;
}

body:not(.fullscreen) #app-intro > * {
  position: relative;
}

#app-intro .slick-prev,
#app-intro .slick-next {
  z-index: 1;
  width: auto !important;
  height: auto !important;
}

#app-intro .slick-prev:before,
#app-intro .slick-next:before {
  background-color: black;
  border-radius: 20px;
}

#app-intro .slick-prev {
  left: 16px;
}

#app-intro .slick-prev:before {
  content: "\f104";
  font: 40px/1 'FontAwesome';
  padding: 0 16px 2px 12px;
}

#app-intro .slick-next {
  right: 16px;
  text-align: right;
}

#app-intro .slick-next:before {
  content: "\f105";
  font: 40px/1 'FontAwesome';
  padding: 0 12px 2px 16px;
}

#app-intro .slick-prev:hover:before,
#app-intro .slick-next:hover:before {
  color: #7e7e7e;
}

@media (pointer: coarse) and (hover: none) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

@media screen and (max-width: 48.615em) {
  #app-intro .slick-prev:hover:before,
  #app-intro .slick-next:hover:before {
    color: white;
    opacity: 0.75;
  }
}

#app-intro .slideshow {
  margin: 0 auto 0 auto;
  width: 100%;
}

#app-intro .slideshow:not(.initialised) .slide {
  display: none !important;
}

#app-intro .slideshow:not(.initialised) .slide:first-child {
  display: block !important;
}

#app-intro .slideshow.loading {
  width: 100%;
}

body:not(.fullscreen) #app-intro .slideshow.loading {
  position: relative;
}

#app-intro .slideshow.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

#app-intro .slideshow.loading .caption {
  display: none !important;
}

#app-intro .slideshow.loading .slide {
  visibility: hidden;
}

#app-intro .slideshow.loading .slide:first-child .caption {
  display: block !important;
}

#app-intro .slideshow.loading .slide img {
  display: none;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) {
  position: relative;
}

#app-intro .slideshow.initialised:not(.loading) .wrapper:not(.evaluating) .caption {
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
}

#app-intro .slideshow .slide img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}

#app-intro .slideshow .slide .caption {
  font-family: "Coming Soon";
  color: #ddd;
  padding: 8px 16px;
  display: block;
  vertical-align: middle;
  font-size: 16pt;
}

@media screen and (max-width: 37.49em) {
  #app-intro .slideshow .slide .caption {
    font-size: 12pt;
    line-height: 14pt;
  }
}

#app-intro h2 {
  border-bottom: none;
  padding: 0 8px 8px 8px;
  margin: 0;
}

#app-intro .slideshow {
  background-color: #131;
}

#app-download-links {
  padding-bottom: 8px;
}

/*****************************************************************
 Links box
*****************************************************************/
.box {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 8px;
}

.box, .box a {
  color: white;
}

.box:before {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 0;
  background: linear-gradient(#717171, #424141);
  border-radius: 4px 4px 0 0;
  z-index: -1;
}

.box:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

.box > * {
  z-index: 2;
}

body:not(.fullscreen) .box > * {
  position: relative;
}

.box a, .box strong {
  color: white;
}

.box h2 {
  border: none;
  margin: 0;
}

@media screen and (min-width: 60em) {
  #links {
    width: 300px;
    margin-left: 12px;
    margin-bottom: 12px;
    float: right;
  }
}

@media screen and (min-width: 60em) {
  #description {
    float: left;
    width: 600px;
  }
}

#description p {
  margin-top: 0px;
}

/******************************************************
* Sorting dropdown
******************************************************/
#sort-form {
  float: right;
  padding-top: 8px;
  padding-bottom: 8px;
}

/******************************************************
* Walk listing
******************************************************/
ul.walks {
  clear: both;
  margin-top: 16px;
  padding-left: 0 !important;
  margin-left: 0 !important;
}

li.walk {
  box-shadow: 4px 4px 4px #bbb;
  list-style: none;
  margin-bottom: 16px;
  page-break-inside: avoid;
}

li.walk:last-child {
  margin-bottom: 0;
}

li.walk .overview {
  padding-left: 4px;
  padding-right: 4px;
  padding-top: 2px;
  padding-bottom: 2px;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}

@media screen and (max-width: 46.24em) {
  li.walk .overview {
    display: none;
  }
}

li.walk .overview .distance {
  float: right;
  position: relative;
  top: 4px;
  color: white;
}

li.walk .overview h2 {
  font-size: 16pt;
  border: none;
  margin: 0 0 0 0;
}

li.walk .overview h2 a {
  color: white;
  text-decoration: none;
}

li.walk .detail {
  display: flex;
  background: white;
  border-bottom-right-radius: 4px;
  /*@include mqs($until: tablet) {
      align-items: center;
    }*/
}

li.walk .detail:after {
  content: '';
  display: block;
}

li.walk .detail .qr {
  float: right;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .qr {
    display: none;
  }
}

li.walk .detail .thumbnail {
  display: block;
  margin-right: 8px;
  margin-bottom: 0;
  min-width: 200px;
  min-height: 115px;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .thumbnail {
    max-width: 33%;
    min-width: 33%;
    min-height: auto;
  }
}

@media screen and (max-width: 19.99em) {
  li.walk .detail .thumbnail {
    max-width: 25%;
    min-height: auto;
  }
}

li.walk .detail .thumbnail img {
  width: 100%;
  height: 100%;
}

li.walk .detail .description {
  flex: 1;
}

@media screen and (min-width: 46.25em) {
  li.walk .detail .description .summary {
    display: none;
  }
}

li.walk .detail .description .summary h2 {
  border: none;
  margin-top: 0;
}

li.walk .detail .description .summary h2 a {
  text-decoration: none;
}

li.walk .detail .description .synopsis {
  margin-top: 0;
  margin-bottom: 0;
  padding: 4px;
}

@media screen and (max-width: 46.24em) {
  li.walk .detail .description .synopsis {
    display: none;
  }
}

.walk-grade-1 {
  background: #1a731a;
}

.walk-grade-2 {
  background: #53731a;
}

.walk-grade-3 {
  background: #73731a;
}

.walk-grade-4 {
  background: #73531a;
}

.walk-grade-5 {
  background: #731a1a;
}

/********************************************************
* Bottom promo (if active)
********************************************************/
/**
* Display a bottom promo in a light green box
*/
.bottom-promo {
  background-color: rgba(124, 197, 149, 0.65);
  border-radius: 4px;
  box-shadow: 4px 4px 4px #bbb;
  margin-top: 16px;
  padding: 8px;
}

.bottom-promo, .bottom-promo a {
  color: white;
}

.bottom-promo, .bottom-promo a {
  color: black;
}

.bottom-promo p {
  margin: 0;
}

/********************************************************
* App instructions
********************************************************/
.app-instructions {
  display: none;
  margin-top: 24px;
}

/********************************************************
* Print simplification
********************************************************/
@media print {
  #main-photo, .overview, .locality-info, #sort, .bottom-promo, .distance {
    display: none;
  }
  body, #wrapper, #page, #content {
    background-color: #607660 !important;
  }
  #content {
    padding: 8px 48px 16px 48px;
  }
  h1 {
    text-align: center;
    margin: 24px 0px 24px 0px;
    color: white;
    font-size: 2.4em;
  }
  .thumbnail {
    min-width: 0 !important;
    width: 9pc !important;
    margin-right: 12px !important;
  }
  img.qr {
    width: 78px !important;
    height: 78px !important;
    position: relative;
    top: 12px;
  }
  .synopsis {
    padding: 0 !important;
  }
  .summary h2 {
    margin-bottom: 4px;
    padding-top: 2px;
  }
  .walk {
    box-shadow: none !important;
    border: 1px solid #343;
  }
  .walk-summary {
    border-bottom-right-radius: 0;
  }
  .app-instructions {
    display: block;
    text-align: center;
    color: white;
  }
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy93YWxrc19jb25jaXNlLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vd3d3L3Njc3Mvd2Fsa3NfY29uY2lzZS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2NvbW1vbi5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3ZhcmlhYmxlcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2dlbmVyYWxfbWl4aW5zLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWVkaWEuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tcS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3RvdWNoLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWFpbl9waG90by5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2FwcF9hZF9mb3JtYXRzLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9jb21wb25lbnQvX3NsaWRlc2hvdy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19zbGlja19vdmVycmlkZXMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fbG9hZGVyLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fYm90dG9tX3Byb21vLnNjc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIE9wdGlvbmFsIEdvb2dsZSBtYXAgc2hvd2luZyB3YWxrIGxvY2F0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5AaW1wb3J0IFwiQGluY2x1ZGUvY29tbW9uXCI7XG5cbiNtYXAtY29udGFpbmVyIHtcbiAgZGlzcGxheTogbm9uZTsgLypIaWRlIGJ5IGRlZmF1bHQgKHVuaGlkZGVuIGJ5IHNob3dfbWFwIHNjcmlwdCBpZiBKUyBlbmFibGVkKSovXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGNsZWFyOiBsZWZ0O1xufVxuI2dvb2dsZS1tYXAge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0MDBweDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBPcHRpb25hbCBtYWluIGltYWdlXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbkBpbXBvcnQgXCJAaW5jbHVkZS9tYWluX3Bob3RvXCI7XG5cbiNtYWluLXBob3RvICsgZGl2IHtcblx0cDpmaXJzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBBcHAgaW50cm8gc2hvd24gZm9yIG5ldyB1c2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwiLi4vQGluY2x1ZGUvYXBwX2FkX2Zvcm1hdHNcIjtcblxuI2FwcC1pbnRybyB7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50RGFya0dyZWVuO1xuICBAaW1wb3J0IFwiLi9AaW5jbHVkZS9jb21wb25lbnQvc2xpZGVzaG93XCI7XG4gIHBhZGRpbmc6IDRweCAwIDAgMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgZGlzcGxheTogbm9uZTtcbiAgXG4gIGgye1xuXHRib3JkZXItYm90dG9tOiBub25lO1xuICAgIHBhZGRpbmc6IDAgOHB4IDhweCA4cHg7XG5cdG1hcmdpbjogMDtcbiAgfVxuICAuc2xpZGVzaG93e1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLWdyZWVuO1xuICB9XG4gIFxufVxuXG4jYXBwLWRvd25sb2FkLWxpbmtzIHtcblx0cGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gTGlua3MgYm94XG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLmJveCB7XG4gIEBpbmNsdWRlIGJveHk7XG4gIHBhZGRpbmc6IDhweDtcbn1cblxuXG4jbGlua3Mge1xuICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICB3aWR0aDogMzAwcHg7XG5cdG1hcmdpbi1sZWZ0OiAxMnB4O1xuXHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXHRmbG9hdDpyaWdodDtcbiAgfVxufVxuXG4jZGVzY3JpcHRpb24ge1xuICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcblx0ZmxvYXQ6bGVmdDtcbiAgICB3aWR0aDogNjAwcHg7XG4gIH1cbiAgXG4gIHAge1xuXHRtYXJnaW4tdG9wOiAwcHg7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBTb3J0aW5nIGRyb3Bkb3duXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNzb3J0LWZvcm0ge1xuICBmbG9hdDogcmlnaHQ7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogV2FsayBsaXN0aW5nXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbnVsLndhbGtzIHtcbiAgY2xlYXI6IGJvdGg7XG4gIG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG59XG5cbmxpLndhbGsge1xuICBAaW5jbHVkZSBib3hTaGFkb3c7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcblxuICAmOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAvLyBvdmVydmlldyBpbiBoZWFkZXIgZm9yIHRhYmxldHMgYW5kIGRlc2t0b3BzXG4gIC5vdmVydmlld3tcbiAgICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gICAgcGFkZGluZy10b3A6IDJweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMnB4O1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xuXG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5kaXN0YW5jZSB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB0b3A6IDRweDtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICBmb250LXNpemU6IDE2cHQ7XG4gICAgICBib3JkZXI6bm9uZTtcbiAgICAgIG1hcmdpbjogMCAwIDAgMDtcblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kZXRhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDtcblxuICAgIC8qQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH0qL1xuXG4gICAgJjphZnRlcntcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnFyIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRodW1ibmFpbCBpbWFnZVxuICAgIC50aHVtYm5haWwge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICBtaW4td2lkdGg6IDIwMHB4O1xuICAgICAgbWluLWhlaWdodDogMTE1cHg7XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBtYXgtd2lkdGg6IDMzJTtcbiAgICAgICAgbWluLXdpZHRoOiAzMyU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IG1vYmlsZSkge1xuICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgIH1cblxuICAgICAgaW1ne1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vICBkZXNjcmlwdGlvblxuICAgIC5kZXNjcmlwdGlvbntcbiAgICAgIGZsZXg6IDE7XG4gICAgICAvLyBzdW1tYXJ5IGZvciBwaG9uZXNcbiAgICAgIC5zdW1tYXJ5e1xuICAgICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldCkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBoMntcbiAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBhe1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzeW5vcHNpcyBmb3IgdGFibGV0cyBhbmQgZGVza3RvcHNcbiAgICAgIC5zeW5vcHNpcyB7XG4gICAgICAgIG1hcmdpbi10b3A6MDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTowO1xuICAgICAgICBwYWRkaW5nOjRweDtcblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxufVxuXG5cblxuXG5cbi53YWxrLWdyYWRlLTEge2JhY2tncm91bmQ6ICMxYTczMWF9XG4ud2Fsay1ncmFkZS0yIHtiYWNrZ3JvdW5kOiAjNTM3MzFhfVxuLndhbGstZ3JhZGUtMyB7YmFja2dyb3VuZDogIzczNzMxYX1cbi53YWxrLWdyYWRlLTQge2JhY2tncm91bmQ6ICM3MzUzMWF9XG4ud2Fsay1ncmFkZS01IHtiYWNrZ3JvdW5kOiAjNzMxYTFhfVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBCb3R0b20gcHJvbW8gKGlmIGFjdGl2ZSlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCBcIkBpbmNsdWRlL2JvdHRvbV9wcm9tb1wiO1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBBcHAgaW5zdHJ1Y3Rpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLmFwcC1pbnN0cnVjdGlvbnMge1xuICBkaXNwbGF5Om5vbmU7XG4gIG1hcmdpbi10b3A6MjRweDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIFByaW50IHNpbXBsaWZpY2F0aW9uXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuQG1lZGlhIHByaW50IHtcbiAgI21haW4tcGhvdG8sIC5vdmVydmlldywgLmxvY2FsaXR5LWluZm8sICNzb3J0LCAuYm90dG9tLXByb21vLCAuZGlzdGFuY2Uge2Rpc3BsYXk6bm9uZX1cblxuICBib2R5LCAjd3JhcHBlciwgI3BhZ2UsICNjb250ZW50IHtiYWNrZ3JvdW5kLWNvbG9yOiAjNjA3NjYwICFpbXBvcnRhbnR9XG5cbiAgI2NvbnRlbnQge3BhZGRpbmc6IDhweCA0OHB4IDE2cHggNDhweDt9XG5cbiAgaDEge3RleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAyNHB4IDBweCAyNHB4IDBweDsgY29sb3I6IHdoaXRlOyBmb250LXNpemU6Mi40ZW19XG5cbiAgLnRodW1ibmFpbCB7bWluLXdpZHRoOjAgIWltcG9ydGFudDsgd2lkdGg6OXBjICFpbXBvcnRhbnQ7IG1hcmdpbi1yaWdodDogMTJweCAhaW1wb3J0YW50fVxuICBpbWcucXIge3dpZHRoOiA3OHB4ICFpbXBvcnRhbnQ7IGhlaWdodDogNzhweCAhaW1wb3J0YW50OyBwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMTJweH1cblxuICAuc3lub3BzaXMge3BhZGRpbmc6IDAgIWltcG9ydGFudH1cbiAgLnN1bW1hcnkgaDIge21hcmdpbi1ib3R0b206IDRweDsgcGFkZGluZy10b3A6IDJweH1cbiBcbiAgLndhbGsge1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcblx0Ym9yZGVyOiAxcHggc29saWQgIzM0MztcbiAgfVxuXG4gIC53YWxrLXN1bW1hcnkge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG5cbiAgLmFwcC1pbnN0cnVjdGlvbnMge1xuICAgIGRpc3BsYXk6YmxvY2s7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Y29sb3I6IHdoaXRlO1xuICB9XG59XG4iLAoJCSIvLyBDb21tb24gc3R5bGVzXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbF9taXhpbnNcIjtcbkBpbXBvcnQgXCJtZWRpYVwiO1xuQGltcG9ydCBcInRvdWNoXCI7XG5cbmJvZHl7XG4gIHZpc2liaWxpdHk6IGluaGVyaXQ7XG59XG4iLAoJCSIvLyBWYXJpYWJsZXNcblxuJHBhZ2Utd2lkdGg6IDk2MHB4O1xuJHJlc3BvbnNpdmUtbWVudTogNzc4cHg7XG5cbiRncmV5OiAjMmYyZjJmO1xuJGRhcmstZ3JlZW46ICMxMzE7XG4kZ3JlZW46ICMyODVkMWU7XG4kYmx1ZTogIzE5NDI0YTtcbiRsaWdodC1ncmVlbjogcmdiYSgxMjQsIDE5NywgMTQ5LCAwLjY1KTtcbiRyZWQ6ICM1YzFlMWU7XG4kZGFyay1yZWQ6ICM2NjAwMDA7XG5cbi8vIEJveCBncmFkaWVudHNcbiRib3gtR3JhZC1IZWlnaHQ6IDE4cHg7XG5cbiRib3gtQkctR3JleTogJGdyZXk7XG4kYm94LUdyYWQtVXBwZXItVG9wLUdyZXk6ICM3MTcxNzE7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZXk6ICM0MjQxNDE7XG4kYm94LUdyYWQtTG93ZXItVG9wLUdyZXk6ICM0MDQwNDA7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZXk6ICMyZjJmMmY7XG5cbiRib3gtQkctR3JlZW46ICRncmVlbjtcbiRib3gtR3JhZC1VcHBlci1Ub3AtR3JlZW46ICM0Njk5MzY7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZWVuOiAjMzA3MDI1O1xuJGJveC1HcmFkLUxvd2VyLVRvcC1HcmVlbjogIzMwNzIyNTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JlZW46ICMyODVkMWU7XG5cbiRib3gtQkctQmx1ZTogIzE5NDI0YTtcbiRib3gtR3JhZC1VcHBlci1Ub3AtQmx1ZTogIzEyNjE2NztcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tQmx1ZTogIzE5NDI0YTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtQmx1ZTogIzE5NDI0YTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tQmx1ZTogIzE5NDI0YTtcblxuXG4kYm94LUJHLURhcmstR3JlZW46ICRkYXJrLWdyZWVuO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1EYXJrLUdyZWVuOiAjMmU4MDJlO1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1EYXJrLUdyZWVuOiAjMTc0NTE3O1xuJGJveC1HcmFkLUxvd2VyLVRvcC1EYXJrLUdyZWVuOiAjMTg0NzE5O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1EYXJrLUdyZWVuOiAjMTEzMzExO1xuXG4kYm94LUJHLVJlZDogJHJlZDtcbiRib3gtR3JhZC1VcHBlci1Ub3AtUmVkOiAjYTgzYjNiO1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1SZWQ6ICM2ZTI1MjU7XG4kYm94LUdyYWQtTG93ZXItVG9wLVJlZDogIzcwMjUyNTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tUmVkOiAjNWMxZTFlO1xuXG4kbXEtYnJlYWtwb2ludC1tb2JpbGU6IDMyMHB4O1xuJG1xLWJyZWFrcG9pbnQtdGFibGV0N2luY2g6IDYwMHB4O1xuJG1xLWJyZWFrcG9pbnQtdGFibGV0OiA3NDBweDtcbiRtcS1icmVha3BvaW50LWRlc2t0b3A6IDk4MHB4O1xuJG1xLWJyZWFrcG9pbnQtd2lkZTogMTMwMHB4O1xuJG1xLWJyZWFrcG9pbnQtZGVza3RvcEFkOiA4MTBweDtcbiRtcS1icmVha3BvaW50LW1vYmlsZUxhbmRzY2FwZTogNDgwcHg7XG4kbXEtYnJlYWtwb2ludC1tZWRpdW1Mb2dvOiA0NDBweDtcbiRtcS1icmVha3BvaW50LXNtYWxsTG9nbzogMzIwcHg7XG4kbXEtYnJlYWtwb2ludC1oZWFkZXJTb2NpYWxJY29uczogOTU0cHg7XG4kbXEtYnJlYWtwb2ludC1wYWdlOiAkcGFnZS13aWR0aDtcbiRtcS1icmVha3BvaW50LXJlc3BvbnNpdmVNZW51OiAkcmVzcG9uc2l2ZS1tZW51O1xuXG5cbi8vIEJyZWFrcG9pbnRzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICAgICAgbW9iaWxlOiAgJG1xLWJyZWFrcG9pbnQtbW9iaWxlLFxuICAgICAgICB0YWJsZXQ3aW5jaDogICRtcS1icmVha3BvaW50LXRhYmxldDdpbmNoLFxuICAgICAgICB0YWJsZXQ6ICAkbXEtYnJlYWtwb2ludC10YWJsZXQsXG4gICAgICAgIGRlc2t0b3A6ICRtcS1icmVha3BvaW50LWRlc2t0b3AsXG4gICAgICAgIHdpZGU6ICRtcS1icmVha3BvaW50LXdpZGUsXG5cbiAgLy8gVHdlYWtwb2ludHNcbiAgICAgICAgZGVza3RvcEFkOiAkbXEtYnJlYWtwb2ludC1kZXNrdG9wQWQsXG4gICAgICAgIG1vYmlsZUxhbmRzY2FwZTogJG1xLWJyZWFrcG9pbnQtbW9iaWxlTGFuZHNjYXBlLFxuICAgICAgICBzbWFsbExvZ286ICRtcS1icmVha3BvaW50LXNtYWxsTG9nbyxcbiAgICAgICAgcGFnZTogJG1xLWJyZWFrcG9pbnQtcGFnZSxcbiAgICAgICAgcmVzcG9uc2l2ZU1lbnU6ICRtcS1icmVha3BvaW50LXJlc3BvbnNpdmVNZW51LFxuICAgICAgICBoZWFkZXJTb2NpYWxJY29uczogJG1xLWJyZWFrcG9pbnQtaGVhZGVyU29jaWFsSWNvbnNcbik7XG5cblxuLy8gVG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KSBzZXQgJG1xLXJlc3BvbnNpdmUgdG8gZmFsc2Vcbi8vIENyZWF0ZSBhIHNlcGFyYXRlIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIHRoZXNlIGJyb3dzZXJzLFxuLy8gbWVhbmluZyBAbWVkaWEgcXVlcmllcyB3aWxsIGJlIHJhc3Rlcml6ZWQsIHJlbHlpbmcgb24gdGhlIGNhc2NhZGUgaXRzZWxmXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZTtcblxuLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIG1vYmlsZUxhbmRzY2FwZSwgdGFibGV0LCBkZXNrdG9wLCB3aWRlKTtcbiIsCgkJIkBtaXhpbiBpV2Fsa01vYmlsZUdyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjYzlkY2Y0IDAlLCM4MmI1ZWMgMjIlLCMyOThhZTMgNDYlLCMzZWMxZjcgNzAlLCMzZWMxZjcgMTAwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVZe1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG5AbWl4aW4gY2VudHJlWHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVYWXtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpICB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG5AbWl4aW4gZ3JleV9ncmFkaWVudHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgxODEsIDE4OSwgMjAwLCAxKSAwJSwgcmdiYSgxMzAsIDE0MCwgMTQ5LCAxKSAzNiUsIHJnYmEoNDAsIDUyLCA1OSwgMSkgMTAwJSk7XG59XG5cbkBtaXhpbiBncmVlbl9ncmFkaWVudHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzRlYjk0ZSAwJSwgIzEwOTAxMCAzNiUsICMwOTNlMDkgMTAwJSk7XG59XG5cbkBtaXhpbiBib3goJGJnKXtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJnO1xuICBib3JkZXItcmFkaXVzOjRweDtcbiAgJiwgYXtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cbn1cblxuQG1peGluIGJveEdyYWRpZW50KCRiZywgJHVwcGVyLXRvcCwgJHVwcGVyLWJvdHRvbSwgJGxvd2VyLXRvcCwgJGxvd2VyLWJvdHRvbSwgJGhlaWdodDogJGJveC1HcmFkLUhlaWdodCl7XG4gIEBpbmNsdWRlIGJveCgkYmcpO1xuICB6LWluZGV4OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJjpiZWZvcmV7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgkdXBwZXItdG9wLCAkdXBwZXItYm90dG9tKTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gICY6YWZ0ZXJ7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAkaGVpZ2h0O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgkbG93ZXItdG9wLCAkbG93ZXItYm90dG9tKTtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gID4gKntcbiAgICB6LWluZGV4OiAyO1xuXG4gICAgQGF0LXJvb3Qge1xuICAgICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEdyZXl7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctR3JleSwgJGJveC1HcmFkLVVwcGVyLVRvcC1HcmV5LCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZXksICRib3gtR3JhZC1Mb3dlci1Ub3AtR3JleSwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmV5KTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50R3JlZW57XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctR3JlZW4sICRib3gtR3JhZC1VcHBlci1Ub3AtR3JlZW4sICRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Ub3AtR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JlZW4pO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRCbHVle1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLUJsdWUsICRib3gtR3JhZC1VcHBlci1Ub3AtQmx1ZSwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1CbHVlLCAkYm94LUdyYWQtTG93ZXItVG9wLUJsdWUsICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tQmx1ZSk7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudERhcmtHcmVlbntcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1EYXJrLUdyZWVuLCAkYm94LUdyYWQtVXBwZXItVG9wLURhcmstR3JlZW4sICRib3gtR3JhZC1VcHBlci1Cb3R0b20tRGFyay1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLVRvcC1EYXJrLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItQm90dG9tLURhcmstR3JlZW4pO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRSZWR7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctUmVkLCAkYm94LUdyYWQtVXBwZXItVG9wLVJlZCwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1SZWQsICRib3gtR3JhZC1Mb3dlci1Ub3AtUmVkLCAkYm94LUdyYWQtTG93ZXItQm90dG9tLVJlZCk7XG59XG5cbkBtaXhpbiBib3hTaGFkb3d7XG4gIGJveC1zaGFkb3c6IDRweCA0cHggNHB4ICNiYmI7XG59XG5cbkBtaXhpbiBib3h5e1xuICBAaW5jbHVkZSBib3hHcmFkaWVudEdyZXk7XG4gIEBpbmNsdWRlIGJveFNoYWRvdztcbiAgY29sb3I6ICNlZWU7XG5cbiAgYSwgc3Ryb25nIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICBoMiB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5AbWl4aW4gbGlnaHRHcmVlbkJveHtcbiAgQGluY2x1ZGUgYm94KCRsaWdodC1ncmVlbik7XG4gICYsYXtcbiAgICBjb2xvcjogYmxhY2s7XG4gIH1cbn1cblxuIiwKCQkiXG4vKipcbiAqIEJyZWFrcG9pbnRzXG4gKi9cblxuQGltcG9ydCBcIm1xXCI7XG5cblxuQG1peGluIG1xcygkZnJvbTogZmFsc2UsICR1bnRpbDogZmFsc2Upe1xuICBAaW5jbHVkZSBtcSgkZnJvbSwgJHVudGlsLCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnB1dCBjYXBhYmlsaXRpZXNcbiAqL1xuXG4vLyBzbWFydHBob25lcyBhbmQgdGFibGV0c1xuQG1peGluIHRvdWNoLXNjcmVlbi1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKVxuICBhbmQgKGhvdmVyOiBub25lKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNb3VzZSBvciB0b3VjaCBwYWRcbkBtaXhpbiBtb3VzZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogZmluZSlcbiAgYW5kIChob3ZlcjogaG92ZXIpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNob3cgZm9yIHRvdWNoIHNjcmVlbnNcbi8vIGFuZCB1cCB1bnRpbCB0YWJsZXQgZGV2aWNlIHdpZHRoIGZvciB0YWJsZXRzIG5vdCBzdXBwb3J0aW5nIGlucHV0IG1lZGlhIHF1ZXJpZXMgaWUuIG9sZCBBbmRyb2lkIDQueFxuQG1peGluIHRvdWNoLXNjcmVlbi1kZXZpY2Vze1xuICBAaW5jbHVkZSB0b3VjaC1zY3JlZW4taW5wdXQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHJlc3BvbnNpdmVNZW51KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTmludGVuZG8gV2lpIGNvbnRyb2xsZXIsIEtpbmVjdCwgZXRjLlxuQG1peGluIGNvbnNvbGUtaW5wdXQge1xuICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSlcbiAgYW5kIChob3ZlcjogaG92ZXIpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIHN0eWx1cy1iYXNlZCBzY3JlZW5zIChDaW50aXEsIFdhY29tLCBldGMpXG5AbWl4aW4gY29uc29sZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogZmluZSlcbiAgYW5kIChob3Zlcjogbm9uZSl7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gUmV0aW5hIGRpc3BsYXlzICgyeClcbkBtaXhpbiByZXRpbmEge1xuICBAbWVkaWEgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS41KSwoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMy8yKSxcbiAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwobWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwobWluLXJlc29sdXRpb246IDEuNWRwcHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwKCQkiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChlLmcuIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgJG1xLXN0YXRpYy1icmVha3BvaW50OiB0YWJsZXQ7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjYWRkaW5nLWN1c3RvbS1icmVha3BvaW50cyBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtc3RhdGljLWJyZWFrcG9pbnQ6IGRlc2t0b3AgIWRlZmF1bHQ7XG5cbi8vLyBTaG93IGJyZWFrcG9pbnRzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy9cbi8vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLCBlLmcuIChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAdHlwZSBtYXBcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcblxuLy8vIEN1c3RvbWl6ZSB0aGUgbWVkaWEgdHlwZSAoZS5nLiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgKCRtcS1iYXNlLWZvbnQtc2l6ZSkgLSBgPGJvZHk+YCBmb250IHNpemVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKCRweCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIChmYWxzZSkgLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgKGZhbHNlKSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSAoJG1xLW1lZGlhLXR5cGUpIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50ICgkbXEtc3RhdGljLWJyZWFrcG9pbnQpXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfSBAZWxzZSB7IC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBlbmFibGVkLCBvdXRwdXQgcnVsZXMgaW5zaWRlIEBtZWRpYSBxdWVyaWVzXG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzICgkbXEtc2hvdy1icmVha3BvaW50cykgLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLAoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuKiBUb3VjaCBkZXZpY2VzXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5AaW1wb3J0IFwiZ2VuZXJhbF9taXhpbnNcIjtcclxuXHJcbkBtaXhpbiBib3gtc2hhZG93e1xyXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLC4xNSk7XHJcbn1cclxuXHJcbkBtaXhpbiB0b3VjaC1zY3JlZW4tc3R5bGVzIHtcclxuXHJcbiAgLy8gQnV0dG9uc1xyXG4gIFtkYXRhLXJvbGU9XCJidXR0b25cIl06bm90KC5ub24tcmVzcG9uc2l2ZSl7XHJcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93O1xyXG5cclxuICAgIGNvbG9yOiAjMzMzICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlO1xyXG5cclxuICAgIGJvcmRlci1jb2xvcjogI2RkZDtcclxuICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHJcblxyXG4gICAgbWFyZ2luOiAuNWVtIDA7XHJcbiAgICBwYWRkaW5nOiAuN2VtIDFlbTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuXHJcbiAgICAmOmhvdmVyLCAmOmFjdGl2ZXtcclxuICAgICAgYmFja2dyb3VuZDogI2U4ZjBmZjtcclxuICAgIH1cclxuXHJcbiAgICAmW2RhdGEtaWNvbl17XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMzJweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xyXG4gICAgICBpe1xyXG4gICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6IDhweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuZ3JlZW4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjOGRkZGEwIDAlLCAjM2RkYjhjIDUwJSwgIzhkZGRhMCAxMDAlKTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMmI2YjM3O1xyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjUpOyAvL2hlYXZpZXIgc2hhZG93IG9uIGRhcmsgZ3JlZW4gYmdcclxuICAgICAgJjpob3ZlciwgJjphY3RpdmUge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkY2Y0ZTEgMCUsICMzZGRiOGMgNTAlLCAjZGNmNGUxIDEwMCUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAmLmJsdWV7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzhkYzBkZCAwJSwjM2RhY2RiIDUwJSwjOGRjMGRkIDEwMCUpO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogIzEyNjE2NztcclxuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG4gICAgICAgICY6aG92ZXIsICY6YWN0aXZle1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RjZTFmNCAwJSwjNmVhY2ViIDUwJSwjZGNlMWY0IDEwMCUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIExpc3R2aWV3c1xyXG4gIFtkYXRhLXJvbGU9XCJsaXN0dmlld1wiXTpub3QoLm5vbi1yZXNwb25zaXZlKXtcclxuICAgIEBpbmNsdWRlIGJveHk7XHJcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG5cclxuXHJcbiAgICA+bGl7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4IDhweCA4cHggIWltcG9ydGFudDtcclxuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogI2RkZDtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMXB4O1xyXG4gICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcclxuICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgYXtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgIGNvbnRlbnQ6ICc+JztcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIHJpZ2h0OiA0cHg7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGluayBsaXN0c1xyXG4gIDpub3QoLm5vbi1yZXNwb25zaXZlKTpub3QoW2RhdGEtcm9sZV0pOm5vdChbcm9sZV0pID4gbGkgPiBhOm9ubHktY2hpbGR7XHJcbiAgICBwYWRkaW5nOiA4cHggMDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbn1cclxuXHJcblxyXG4iLAoJCSIvKipcbiogRGlzcGxheSBhIGZ1bGwtd2lkdGggcGhvdG8gd2l0aCBhIHdoaXRlIGJvcmRlclxuKi9cblxuI21haW4tcGhvdG8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICB3aWR0aDogMTAwJTtcblxuICBpbWcge1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC5pbWFnZS1ib3JkZXIge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgdG9wOiAxMHB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIGJvdHRvbTogMTBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbiAgfVx0XG59XG4iLAoJCSIuYXBwLWZvcm1hdHMge1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC8vZGVza3RvcFxuICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICAuYXBwLWJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy90YWJsZXRcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIC50ZXh0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHBhZ2UpIHtcbiAgICAuaWNvbntcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5pY29uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICA+IGRpdi5zdG9yZS1saW5rIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuXG4gICAgLmlubmVye1xuICAgICAgQGluY2x1ZGUgY2VudHJlWDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiA5OCU7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTJweCk7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKXtcbiAgICAgICAgbWFyZ2luOiA4cHggMCAwIDA7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDRweCAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhYWFhO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBwYWRkaW5nOiA0cHggMCA4cHggMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGEge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pb3N7XG4gICAgICAuaWNvbntcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYW5kcm9pZHtcbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIC5pY29uIGltZ3tcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaWNvbntcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlubmVyID4gZGl2IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgICYuaWNvbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYudGV4dCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuICAgICAgICBmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYXtcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucXJ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZ3tcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMHB4O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmFwcC1idXR0b257XG4gICAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0LCAkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgICBtYXJnaW46IDEycHggMCAwIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLAoJCSIvKlxuICogUmVzcG9uc2l2ZSBzbGlkZXNob3cgd2lkZ2V0IHVzaW5nIFNsaWNrIGNhcm91c2VsXG4gKi9cblxuQGltcG9ydCBcInNsaWNrX292ZXJyaWRlc1wiO1xuQGltcG9ydCBcImxvYWRlclwiO1xuXG4uc2xpZGVzaG93IHtcbiAgbWFyZ2luOiAwIGF1dG8gMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgJjpub3QoLmluaXRpYWxpc2VkKXtcbiAgICAuc2xpZGV7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAmOmZpcnN0LWNoaWxke1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubG9hZGluZ3tcbiAgICBAaW5jbHVkZSBsb2FkZXI7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAuY2FwdGlvbntcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2xpZGV7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQgLmNhcHRpb257XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIGltZ3tcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmluaXRpYWxpc2VkOm5vdCgubG9hZGluZyl7XG4gICAgLndyYXBwZXI6bm90KC5ldmFsdWF0aW5nKXtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgLmNhcHRpb24ge1xuICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNsaWRlIHtcblxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC5jYXB0aW9uIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBcIkNvbWluZyBTb29uXCI7XG4gICAgICBjb2xvcjogI2RkZDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgZm9udC1zaXplOiAxNnB0O1xuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB0O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRwdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogU2xpY2sgQ2Fyb3VzZWwgZGVmYXVsdCB0aGVtZSBvdmVycmlkZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLnNsaWNrLXByZXYsXG4uc2xpY2stbmV4dCB7XG4gIHotaW5kZXg6IDE7XG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuXG4gICY6YmVmb3Jle1xuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbn1cblxuLnNsaWNrLXByZXYge1xuICBsZWZ0OiAxNnB4O1xufVxuXG4uc2xpY2stcHJldjpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjEwNFwiO1xuICBmb250OiA0MHB4LzEgJ0ZvbnRBd2Vzb21lJztcbiAgcGFkZGluZzogMCAxNnB4IDJweCAxMnB4O1xufVxuXG4uc2xpY2stbmV4dCB7XG4gIHJpZ2h0OiAxNnB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnNsaWNrLW5leHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJcXGYxMDVcIjtcbiAgZm9udDogNDBweC8xICdGb250QXdlc29tZSc7XG4gIHBhZGRpbmc6IDAgMTJweCAycHggMTZweDtcbn1cblxuLnNsaWNrLXByZXY6aG92ZXI6YmVmb3JlLFxuLnNsaWNrLW5leHQ6aG92ZXI6YmVmb3JlIHtcbiAgY29sb3I6ICM3ZTdlN2U7XG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1kZXZpY2Vze1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICB9XG59IiwKCQkiLy8gTG9hZGluZyBhbmltYXRpb25cblxuJGxvYWRlci1kZWZhdWx0LXNpemU6IDUwcHg7XG4kbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzOiA1cHg7XG4kbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZDogd2hpdGU7XG4kbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjI1KTtcbiRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kLWludmVydGVkOiBibGFjaztcbiRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kLWludmVydGVkOiByZ2JhKDAsMCwwLDAuMjUpO1xuXG5AbWl4aW4gbG9hZGVyKFxuICAkc2l6ZTogJGxvYWRlci1kZWZhdWx0LXNpemUsXG4gICR0aGlja25lc3M6ICRsb2FkZXItZGVmYXVsdC10aGlja25lc3MsXG4gICRmb3JlZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZCxcbiAgJGJhY2tncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kXG4pe1xuXG4gIEBhdC1yb290e1xuICAgIGJvZHk6bm90KC5mdWxsc2NyZWVuKSAjeyZ9IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAtKCRzaXplIC8gMiArICR0aGlja25lc3MpO1xuICAgIG1hcmdpbi1sZWZ0OiAtKCRzaXplIC8gMiArICR0aGlja25lc3MpO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIGJvcmRlci1yYWRpdXM6ICRzaXplO1xuICAgIGJvcmRlcjogJHRoaWNrbmVzcyBzb2xpZCAkYmFja2dyb3VuZDtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkZm9yZWdyb3VuZDtcbiAgICBhbmltYXRpb246IGxvYWRpbmcgMXMgZWFzZSBpbmZpbml0ZTtcbiAgfVxuICBAa2V5ZnJhbWVzIGxvYWRpbmcge1xuICAgIDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBsb2FkZXItaW52ZXJ0ZWQoXG4gICRzaXplOiAkbG9hZGVyLWRlZmF1bHQtc2l6ZSxcbiAgJHRoaWNrbmVzczogJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzcyxcbiAgJGZvcmVncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kLWludmVydGVkLFxuICAkYmFja2dyb3VuZDogJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQtaW52ZXJ0ZWRcbil7XG4gIEBpbmNsdWRlIGxvYWRlcihcbiAgICAkc2l6ZTogJHNpemUsXG4gICAgJHRoaWNrbmVzczogJHRoaWNrbmVzcyxcbiAgICAkZm9yZWdyb3VuZDogJGZvcmVncm91bmQsXG4gICAgJGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kXG4gICk7XG59XG4iLAoJCSIvKipcbiogRGlzcGxheSBhIGJvdHRvbSBwcm9tbyBpbiBhIGxpZ2h0IGdyZWVuIGJveFxuKi9cblxuXG4uYm90dG9tLXByb21vIHtcbiAgICBAaW5jbHVkZSBsaWdodEdyZWVuQm94O1xuICAgIEBpbmNsdWRlIGJveFNoYWRvdztcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBwe1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iCgldLAoJIm5hbWVzIjogW10sCgkibWFwcGluZ3MiOiAiQUFBQTs7dURBRXVEO0FJRHZEOztHQUVHO0FBV0g7O0dBRUc7QUVoQkg7O3lEQUV5RDtBTEl6RCxBQUFBLElBQUksQ0FBQTtFQUNGLFVBQVUsRUFBRSxPQUFPO0NBQ3BCOztBREZELEFBQUEsY0FBYyxDQUFDO0VBQ2IsT0FBTyxFQUFFLElBQUk7RUFBRSwrREFBK0Q7RUFDOUUsYUFBYSxFQUFFLElBQUk7RUFDbkIsS0FBSyxFQUFFLElBQUk7Q0FDWjs7QUFDRCxBQUFBLFdBQVcsQ0FBQztFQUNWLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLEtBQUs7Q0FDZDs7QUFFRDs7dURBRXVEO0FPbEJ2RDs7RUFFRTtBQUVGLEFBQUEsV0FBVyxDQUFDO0VBQ1YsT0FBTyxFQUFFLFlBQVk7RUFDckIsUUFBUSxFQUFFLFFBQVE7RUFDbEIsYUFBYSxFQUFFLEdBQUc7RUFDbEIsS0FBSyxFQUFFLElBQUk7Q0FrQlo7O0FBdEJELEFBTUUsV0FOUyxDQU1ULEdB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 */