/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

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

/*****************************************************************
 Overview Map and summary
*****************************************************************/
#summary {
  padding: 0;
  position: relative;
}

#summary .map-button {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  background-color: transparent;
  z-index: 9000;
  position: absolute;
  top: -8px;
  height: 20px;
  width: 140px;
  padding: 4px;
  text-align: center;
  overflow: hidden;
}

#summary .map-button, #summary .map-button a {
  color: white;
}

#summary .map-button: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;
}

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

#summary .map-button > * {
  z-index: 2;
}

body:not(.fullscreen) #summary .map-button > * {
  position: relative;
}

#summary .map-button:before, #summary .map-button:after {
  z-index: 901;
}

#summary .map-button > * {
  z-index: 902;
}

#summary .map-button a {
  text-decoration: none;
}

#summary .map-button a:hover {
  text-decoration: underline;
}

#summary .map-button#full-screen-map {
  right: 0;
  border-radius: 0 0 0 4px;
  display: none;
}

#caveats {
  font-weight: bold;
  line-height: 16px;
}

#summary-container {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  padding: 8px;
}

#summary-container, #summary-container a {
  color: white;
}

#summary-container: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;
}

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

#summary-container > * {
  z-index: 2;
}

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

#map-container {
  background: white;
}

@media screen and (min-width: 37.5em) {
  #map-container {
    margin-bottom: 8px;
  }
}

#map-container .map {
  width: 520px;
  max-width: 100% !important;
  height: 440px;
}

body.walk-ready #map-container .map {
  background: none;
}

@media screen and (max-width: 59.99em) {
  #map-container .map {
    width: inherit !important;
  }
  #map-container .map, #map-container .map * {
    pointer-events: none !important;
  }
}

#map-container #osm-map a {
  color: black !important;
}

/*****************************************************************
 Directions
*****************************************************************/
#toggle-directions {
  margin-top: 16px;
  text-align: center;
  display: none;
  /* disabled as too many reports of this being abused */
}

@media screen and (min-width: 37.5em) {
  #toggle-directions {
    display: none;
  }
}

#toggle-directions [data-role="button"] {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
}

#toggle-directions [data-role="button"], #toggle-directions [data-role="button"] a {
  color: white;
}

#toggle-directions [data-role="button"]: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;
}

#toggle-directions [data-role="button"]:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

#toggle-directions [data-role="button"] > * {
  z-index: 2;
}

body:not(.fullscreen) #toggle-directions [data-role="button"] > * {
  position: relative;
}

#toggle-directions [data-role="button"] a, #toggle-directions [data-role="button"] strong {
  color: white;
}

#toggle-directions [data-role="button"] h2 {
  border: none;
  margin: 0;
}

#toggle-directions [data-role="button"] * {
  color: white !important;
}

#toggle-directions [data-role="button"] i {
  position: absolute !important;
}

#toggle-directions [data-role="button"] span {
  margin-left: 16px;
}

#directions {
  margin-top: 32px;
  clear: left;
}

@media screen and (max-width: 37.49em) {
  #directions {
    display: none;
  }
}

#directions .map-only {
  display: none;
}

#directions span.intro {
  display: none;
}

#directions h2 {
  border-bottom: 1px solid #aaa;
}

#directions > ol {
  margin-top: 16px;
  padding-left: 24px;
}

#directions > ol > li {
  margin-bottom: 16px;
}

#directions > ol > li > p {
  display: inline;
  /* only split into paragraphs in the app, not in the PDFs */
}

#directions .quote {
  border: 1px solid #ccc;
  background: white;
  font-family: Palatino, serif;
  font-size: 14pt;
  border-radius: 4px;
  padding: 4px 12px 12px 12px;
  margin-left: 16px;
  margin-right: 16px;
}

#directions .quote:before {
  content: '\201C';
  font-family: Times New Roman;
  font-size: 24pt;
  color: #ccc;
  padding-right: 8px;
}

.feature-box {
  border: 1px solid #ccc;
  border-radius: 4px;
  background: #eee;
  padding: 8px;
  margin-top: 4px;
  margin-bottom: 4px;
  /*no gap at top of first p*/
  /*...but gap on first p between multiple divs in the feature box, to space them apart*/
  /*...but not the first one*/
  /*no gap at bottom of last p*/
}

.feature-box p:first-child {
  margin-top: 0;
}

.feature-box div p:first-child {
  margin-top: 8px;
}

.feature-box div:first-child p:first-child {
  margin-top: 0;
}

.feature-box p:last-child {
  margin-bottom: 0;
}

.feature-box ul > li {
  list-style-type: square;
}

.feature-box p.more-info {
  display: none;
}

.app-only {
  display: none;
}

#like_on_facebook {
  margin-top: 24px;
}

/*****************************************************************
 Post-print contribute popup
*****************************************************************/
@media screen and (min-width: 37.5em) {
  .contribute-popup .promo-container {
    float: left;
    max-width: 320px;
  }
  .contribute-popup .body {
    margin-left: 336px;
  }
}

@media screen and (max-width: 37.49em) {
  .contribute-popup {
    max-width: calc(100vw - 20px);
  }
  .contribute-popup .promo-container {
    max-width: 100%;
  }
}

.contribute-popup .promos {
  margin: 0 auto;
}

.contribute-popup h2 {
  margin-top: 0;
}

.contribute-popup .paypal-button {
  text-align: center;
  margin-bottom: 16px;
}

.contribute-popup .paypal-button form {
  display: inline;
}

.contribute-popup .disclaimer {
  clear: left;
  margin-top: 8px;
}

/*****************************************************************
 Pre-print buy walk popup
*****************************************************************/
@media screen and (min-width: 37.5em) {
  .buy-walk-popup .buy-app, .buy-pdf-popup .buy-app {
    background-image: url("/images/graphics/buy_app.jpg");
    background-repeat: no-repeat;
    margin-bottom: 64px;
  }
  .buy-walk-popup .buy-pdf, .buy-pdf-popup .buy-pdf {
    background-image: url("/images/graphics/buy_pdf_leaflets.png");
    background-repeat: no-repeat;
  }
  .buy-walk-popup .buy-app .content, .buy-walk-popup .buy-pdf .content, .buy-pdf-popup .buy-app .content, .buy-pdf-popup .buy-pdf .content {
    margin-left: 320px;
    min-height: 250px;
  }
  .buy-walk-popup .recommended, .buy-pdf-popup .recommended {
    background-image: url("/images/graphics/recommended.png");
    background-repeat: no-repeat;
    background-position: right top;
  }
}

@media screen and (max-width: 37.49em) {
  .buy-walk-popup, .buy-pdf-popup {
    max-width: calc(100vw - 100px);
  }
}

.buy-walk-popup .paypal-button, .buy-walk-popup .buy-button, .buy-pdf-popup .paypal-button, .buy-pdf-popup .buy-button {
  text-align: center;
  margin: 36px;
}

.buy-walk-popup .paypal-button form, .buy-pdf-popup .paypal-button form {
  display: inline;
}

/*****************************************************************
 Walk photos slideshow using lightgallery - walk leaf page
*****************************************************************/
/*
 * Lightgallery photo slideshow
 */
.lightgallery {
  position: relative;
}

.lightgallery.fullscreen {
  position: static !important;
}

.lightgallery.fullscreen .lightGallery-captions p {
  font-size: 16px !important;
}

.lightgallery:not(.fullscreen) .lg-next, .lightgallery:not(.fullscreen) .lg-prev {
  display: none;
}

.lightgallery .lightGallery-captions {
  position: relative;
  color: black !important;
  text-shadow: 0 0 1px rgba(0, 0, 0, 0.5);
}

.lightgallery .lightGallery-captions::before {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  z-index: -1;
  border-radius: 4px;
  padding-bottom: 1px;
  background: white;
  opacity: 0.85;
}

body.col-dual #photos.lightgallery {
  width: 520px;
  height: 394px;
}

body.col-dual #photos.lightgallery:not(.fullscreen) .lg-container {
  width: 520px;
  height: 394px;
}

body.col-single #photos.lightgallery {
  width: auto;
  height: 0;
  padding-bottom: 75.7692307692%;
}

body.col-single #photos.lightgallery:not(.fullscreen) .lg-container {
  width: auto;
  height: 0;
  padding-bottom: 75.7692307692%;
}

#photos.lightgallery:after {
  display: none;
}

/*****************************************************************
 Walk location shown on outline map of Cornwall
*****************************************************************/
#outline-map {
  margin: 8px auto;
  position: relative;
  width: 320px;
  height: 320px;
}

#outline-map img {
  cursor: pointer;
}

#outline-map .indicator {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: red;
  box-shadow: 0 0 3px white;
  border: 1px solid white;
  transform: translate(-50%, -50%);
}

/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

#mysteries img {
  width: 100%;
}

@media screen and (min-width: 60em) {
  #mysteries img {
    display: none;
  }
}

.col, .col * {
  visibility: hidden;
}

body.col-ready .col:after {
  display: none;
}

body.col-ready .col, body.col-ready .col * {
  visibility: visible;
}

body:not(.col-ready) .col {
  width: 100%;
}

body:not(.fullscreen) .col {
  position: relative;
}

.col::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(0, 0, 0, 0.25);
  border-top-color: black;
  animation: loading 1s ease infinite;
}

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

.col:after {
  visibility: visible;
}

.left.col {
  float: left;
}

.left.col .narrow.box {
  max-width: 536px;
}

.right.col {
  float: left;
  width: 376px;
}

.box[data-col-dual="right"] {
  padding-top: 4px;
}

body.col-single [data-role="button"]:not(.non-responsive) {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
  color: #333 !important;
  background: #eee;
  border-color: #ddd;
  border-width: 1px;
  border-style: solid;
  border-radius: 5px;
  margin: .5em 0;
  padding: .7em 1em;
  display: inline-block;
  position: relative;
  overflow: hidden;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  text-align: center;
  text-overflow: ellipsis;
  text-decoration: none;
  font-weight: bold;
  font-size: 16px;
}

body.col-single [data-role="button"]:not(.non-responsive):hover, body.col-single [data-role="button"]:not(.non-responsive):active {
  background: #e8f0ff;
}

body.col-single [data-role="button"]:not(.non-responsive)[data-icon] {
  padding-left: 32px;
  padding-right: 8px;
}

body.col-single [data-role="button"]:not(.non-responsive)[data-icon] i {
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
  left: 8px;
}

body.col-single [data-role="button"]:not(.non-responsive).green {
  background: linear-gradient(to bottom, #8ddda0 0%, #3ddb8c 50%, #8ddda0 100%);
  border-color: #2b6b37;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}

body.col-single [data-role="button"]:not(.non-responsive).green:hover, body.col-single [data-role="button"]:not(.non-responsive).green:active {
  background: linear-gradient(to bottom, #dcf4e1 0%, #3ddb8c 50%, #dcf4e1 100%);
}

body.col-single [data-role="button"]:not(.non-responsive).blue {
  background: linear-gradient(to bottom, #8dc0dd 0%, #3dacdb 50%, #8dc0dd 100%);
  border-color: #126167;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

body.col-single [data-role="button"]:not(.non-responsive).blue:hover, body.col-single [data-role="button"]:not(.non-responsive).blue:active {
  background: linear-gradient(to bottom, #dce1f4 0%, #6eaceb 50%, #dce1f4 100%);
}

body.col-single [data-role="listview"]:not(.non-responsive) {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 0 !important;
  list-style: none;
}

body.col-single [data-role="listview"]:not(.non-responsive), body.col-single [data-role="listview"]:not(.non-responsive) a {
  color: white;
}

body.col-single [data-role="listview"]:not(.non-responsive):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;
}

body.col-single [data-role="listview"]:not(.non-responsive):after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#404040, #2f2f2f);
  z-index: -1;
}

body.col-single [data-role="listview"]:not(.non-responsive) > * {
  z-index: 2;
}

body:not(.fullscreen) body.col-single [data-role="listview"]:not(.non-responsive) > * {
  position: relative;
}

body.col-single [data-role="listview"]:not(.non-responsive) a, body.col-single [data-role="listview"]:not(.non-responsive) strong {
  color: white;
}

body.col-single [data-role="listview"]:not(.non-responsive) h2 {
  border: none;
  margin: 0;
}

body.col-single [data-role="listview"]:not(.non-responsive) > li {
  display: block;
  position: relative;
  overflow: visible;
  margin: 0;
  padding: 8px 16px 8px 8px !important;
  list-style: none;
  font-weight: bold;
  border-color: #ddd;
  border-style: solid;
  border-width: 1px 1px 0 1px;
  font-size: 16px !important;
}

@media screen and (max-width: 37.49em) {
  body.col-single [data-role="listview"]:not(.non-responsive) > li {
    font-size: 14px !important;
  }
}

body.col-single [data-role="listview"]:not(.non-responsive) > li a {
  margin: 0;
  text-align: left;
  text-decoration: none;
  overflow: hidden;
  font-size: 16px !important;
}

@media screen and (max-width: 37.49em) {
  body.col-single [data-role="listview"]:not(.non-responsive) > li a {
    font-size: 14px !important;
  }
}

body.col-single [data-role="listview"]:not(.non-responsive) > li a:after {
  content: '>';
  position: absolute;
  right: 4px;
  font-size: 16px !important;
}

@media screen and (max-width: 37.49em) {
  body.col-single [data-role="listview"]:not(.non-responsive) > li a:after {
    font-size: 14px !important;
  }
}

body.col-single :not(.non-responsive):not([data-role]):not([role]) > li > a:only-child {
  padding: 8px 0;
  display: inline-block;
}

@media screen and (min-width: 46.25em) {
  body.col-single .right.col {
    width: calc(100% + 8px) !important;
    margin: 0 -4px;
  }
  body.col-single .right.col .box {
    width: calc(50% - 16px);
    margin: 0 8px;
  }
  body.col-single .right.col .box:nth-child(odd) {
    float: right;
  }
  body.col-single .right.col .box:nth-child(even) {
    float: left;
  }
}

body.col-single [data-role="listview"] {
  margin: 16px 0 0 0 !important;
}

body.col-single .left.col, body.col-single .right.col {
  width: 100%;
}

body.col-dual .left.col {
  width: 536px;
  margin-right: 16px;
}

.box {
  order: 100;
}

[data-role="listview"] > li {
  padding: 2px 0;
}

/******************************************************
* Promos
******************************************************/
.promo-container {
  margin: 0 auto;
  width: 100%;
  /******************************************************
* Slick Carousel default theme overrides
******************************************************/
}

.promo-container .slick-prev,
.promo-container .slick-next {
  z-index: 1;
  width: auto !important;
  height: auto !important;
}

.promo-container .slick-prev:before,
.promo-container .slick-next:before {
  background-color: black;
  border-radius: 20px;
}

.promo-container .slick-prev {
  left: 16px;
}

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

.promo-container .slick-next {
  right: 16px;
  text-align: right;
}

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

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

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

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

.promo-container .slick-list {
  margin: 0 -8px;
}

.promo-container .slick-slide {
  margin: 0 8px;
}

body:not(.fullscreen) .promo-container:not(.loaded), .promo-container:not(.displayed) {
  position: relative;
}

.promo-container:not(.loaded)::after, .promo-container:not(.displayed)::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(0, 0, 0, 0.25);
  border-top-color: black;
  animation: loading 1s ease infinite;
}

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

.promo-container:not(.displayed) .slick-arrow {
  display: none !important;
}

body:not(.col-ready) .promo-container .promo,
.promo-container:not(.loaded) .promo {
  display: none !important;
}

.promo-container .promos {
  padding: 8px 0 4px 0;
}

@media screen and (max-width: 22.75em) {
  .promo-container .promos {
    padding: 0;
  }
}

.promo-container .promo {
  position: relative;
  text-align: center;
}

.promo-container .promo .wrapper {
  display: inline-block;
  position: relative;
  left: -1px;
  border: 1px solid #999999;
}

.promo-container .promo img {
  box-shadow: 4px 4px 4px #bbb;
  margin: 0 auto;
  width: 100%;
}

.promo-container .promo .title, .promo-container .promo .message {
  position: absolute;
  width: 100%;
  left: 0;
}

.promo-container .promo .title h2, .promo-container .promo .title p, .promo-container .promo .message h2, .promo-container .promo .message p {
  color: white;
  margin: 0;
  z-index: 2;
  background-color: rgba(0, 0, 0, 0.5);
  text-shadow: 0 0 1px black;
}

.promo-container .promo .title {
  top: 0;
}

.promo-container .promo .title h2 {
  font-size: 14pt;
  border: none;
  padding: 2px;
}

.promo-container .promo .message {
  bottom: 0;
}

.promo-container .promo .message p {
  padding: 4px 0 4px 4px;
  font-size: 10pt;
  text-align: left;
}

/*****************************************************************
 Box layout
*****************************************************************/
.box {
  margin-bottom: 16px;
}

@media screen and (min-width: 60em) {
  .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;
  }
  body:not(.fullscreen) .box {
    position: relative;
  }
  .box > p {
    margin: 0;
  }
}

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

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

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

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

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

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

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

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

.box.always > p {
  margin: 0;
}

.box h2 {
  font-weight: normal;
  font-size: 16pt;
}

@media screen and (max-width: 59.99em) {
  .box h2 {
    margin-top: 0;
  }
}

.box ul {
  padding-left: 16px;
}

/*****************************************************************
 Single column box order
*****************************************************************/
#buy {
  order: 1;
}

#app-ad {
  order: 2;
}

#summary {
  order: 3;
}

#stats {
  order: 4;
}

#location {
  order: 5;
}

#caveats {
  order: 6;
}

#dogs {
  order: 7;
}

#photos {
  order: 8;
}

#highlights {
  order: 9;
}

#walk-reviews {
  order: 10;
}

#os_maps {
  order: 11;
}

#links {
  order: 12;
}

/*****************************************************************
 Buy
*****************************************************************/
body:not(.accounts-enabled) #buy {
  display: none;
}

#buy, #buy [class*='status-'] {
  display: none;
}

#buy[class*='status-'],
#buy.status-signed-out .status-signed-out,
#buy.status-in-basket .status-in-basket,
#buy.status-owned .status-owned,
#buy.status-available .status-available,
#buy.status-error .status-error {
  display: block;
}

#buy [role="button"] {
  display: table;
  cursor: pointer;
  text-decoration: underline;
  margin-top: 8px;
}

@media (pointer: coarse) and (hover: none) {
  #buy [role="button"] {
    text-decoration: inherit;
  }
}

@media screen and (max-width: 48.615em) {
  #buy [role="button"] {
    text-decoration: inherit;
  }
}

#buy [role="button"]:first-child {
  margin-top: 0;
}

/*****************************************************************
 Social bookmarks
*****************************************************************/
#walk_sharing {
  float: right;
  margin-top: 16px;
  margin-right: 12px;
}

@media screen and (max-width: 59.99em) {
  #walk_sharing {
    display: none;
  }
}

/*****************************************************************
 Overview
*****************************************************************/
@media screen and (max-width: 37.49em) {
  #overview {
    background-color: #2f2f2f;
    border-radius: 4px;
    z-index: 0;
    position: relative;
    box-shadow: 4px 4px 4px #bbb;
    color: #eee;
    padding: 8px;
    margin-bottom: 16px;
  }
  #overview, #overview a {
    color: white;
  }
  #overview: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;
  }
  #overview:after {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 18px;
    background: linear-gradient(#404040, #2f2f2f);
    z-index: -1;
  }
  #overview > * {
    z-index: 2;
  }
  body:not(.fullscreen) #overview > * {
    position: relative;
  }
  #overview a, #overview strong {
    color: white;
  }
  #overview h2 {
    border: none;
    margin: 0;
  }
  body:not(.fullscreen) #overview {
    position: relative;
  }
  #overview > p {
    margin: 0;
  }
  #overview #main-photo {
    max-width: 100% !important;
    margin-bottom: 8px;
  }
  #overview #main-photo .image-border {
    display: none;
  }
}

@media screen and (min-width: 37.5em) {
  #overview #main-photo {
    margin-bottom: 12px;
  }
  #overview #short-description {
    display: none;
  }
}

/*****************************************************************
 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
******************************************************/
  display: none;
  padding: 4px 0 0 0;
  margin-bottom: 16px;
}

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

/*****************************************************************
 Summary
*****************************************************************/
#summary {
  display: none;
}

@media screen and (max-width: 37.49em) {
  #summary .synopsis {
    display: none;
  }
}

body.col-ready #summary {
  display: block;
}

#summary:before, #summary:after {
  z-index: -1;
}

/*****************************************************************
 Caveats and considerations
*****************************************************************/
#caveats {
  background-color: #2f2f2f;
  border-radius: 4px;
  z-index: 0;
  position: relative;
  box-shadow: 4px 4px 4px #bbb;
  color: #eee;
  padding: 8px;
  background-color: #5c1e1e;
  border-radius: 4px;
  z-index: 0;
  position: relative;
}

#caveats, #caveats a {
  color: white;
}

#caveats: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;
}

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

#caveats > * {
  z-index: 2;
}

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

#caveats a, #caveats strong {
  color: white;
}

#caveats h2 {
  border: none;
  margin: 0;
}

body:not(.fullscreen) #caveats {
  position: relative;
}

#caveats > p {
  margin: 0;
}

#caveats, #caveats a {
  color: white;
}

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

#caveats:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 18px;
  left: 0;
  top: 18px;
  background: linear-gradient(#702525, #5c1e1e);
  z-index: -1;
}

#caveats > * {
  z-index: 2;
}

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

#considerations h2 {
  background-image: url("/images/graphics/warning.png");
  background-repeat: no-repeat;
  padding-left: 40px;
}

/*****************************************************************
 Highlights
*****************************************************************/
/*****************************************************************
 Reviews
*****************************************************************/
@media screen and (min-width: 60em) {
  #walk-reviews h2 {
    margin-bottom: 8px;
  }
}

/*****************************************************************
 Links
*****************************************************************/
#links li.linking-url {
  cursor: copy;
}

#links li.linking-url .url:after {
  position: absolute;
  right: 4px;
}

@media screen and (max-width: 59.99em) {
  #links li.linking-url .url:after {
    font-family: FontAwesome;
    content: "\f0c5";
    font-size: 16px !important;
  }
}

@media screen and (max-width: 59.99em) and (max-width: 37.49em) {
  #links li.linking-url .url:after {
    font-size: 14px !important;
  }
}

@media screen and (min-width: 60em) {
  #links li.linking-url .url:after {
    content: 'Copy';
    padding: 1px 4px;
    font-size: 10pt;
    background-color: #aaaaaa;
  }
}

/*****************************************************************
 Dogs
*****************************************************************/
#dogs {
  padding-top: 4px;
}

/*****************************************************************
 QR and app promo (Desktop only)
*****************************************************************/
@media screen and (max-width: 59.99em) {
  #app-promo {
    display: none;
  }
}

#app-promo .qrcode {
  float: right;
  margin-left: 16px;
  margin-top: 4px;
  background: white;
}

#app-promo .qrcode img {
  display: block;
}

#app-promo p {
  margin: 0;
}

#app-promo .inner a {
  text-decoration: none;
  font-weight: bold;
  line-height: 16px;
}

#app-promo .os-links img {
  margin: 8px 5% 0 5%;
}

/*****************************************************************
 Stats
*****************************************************************/
#stats ul {
  clear: right;
}

/*****************************************************************
 OS Maps
*****************************************************************/
#map-images {
  margin-top: 4px;
  margin-bottom: 4px;
}

#map-images a {
  position: relative;
  height: 100%;
  display: inline-block;
}

#map-images a:after {
  content: '';
  position: absolute;
  left: -2px;
  bottom: 14px;
  width: 100%;
  height: 100%;
  background-position-x: center;
  background-position-y: bottom;
  background-size: 60px 46px;
  background-repeat: no-repeat;
}

/*****************************************************************
 Ads
*****************************************************************/
#app-ad {
  background-color: #285d1e;
  border-radius: 4px;
  z-index: 0;
  position: relative;
}

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

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

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

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

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

@media screen and (max-width: 37.49em) {
  #app-ad .text {
    display: none;
  }
  #app-ad .text > * {
    display: table-cell;
  }
  #app-ad .text * {
    vertical-align: middle;
  }
  #app-ad .text .more {
    display: none;
  }
  #app-ad .text .app-ad-phone {
    margin-right: 16px;
  }
}

@media screen and (min-width: 37.5em) {
  #app-ad .app-ad-phone {
    float: right;
    margin: 0 0 8px 8px;
    position: relative;
    z-index: 2;
  }
}

@media screen and (max-width: 59.99em) {
  #app-ad .text .download {
    display: none;
  }
}

#app-ad:hover {
  filter: brightness(1.25);
}

#app-ad #app-deeplink {
  text-align: center;
}

@media screen and (max-width: 37.49em) {
  #app-ad #app-deeplink .app-name {
    display: none;
  }
}

@media screen and (min-width: 60em) {
  #app-ad #app-deeplink {
    display: none;
  }
}

#app-ad #app-deeplink a {
  margin: 0;
}

/*****************************************************************
 PDF icon
*****************************************************************/
.pdf-icon {
  float: right;
  position: relative;
  top: -9px;
  filter: opacity(60%);
}

.pdf-icon:hover {
  cursor: pointer;
  filter: opacity(100%);
}

body.accounts-enabled .pdf-icon {
  display: none;
}

/*****************************************************************
 Sample directions
*****************************************************************/
#sample-explanation {
  background-color: #fff;
  border: 1px solid #ccc;
  padding: 16px;
  width: auto;
  font-style: italic;
}

.sample-elipses {
  width: auto;
  font-size: 36pt;
  text-align: center;
}

/*****************************************************************
 Buy walk box
*****************************************************************/
.buy-walk {
  margin-top: 12px;
  margin-bottom: 12px;
  border: 1px solid #ccc;
  padding: 16px;
  width: auto;
}

@media screen and (max-width: 37.49em) {
  .buy-walk {
    display: none;
  }
}

body.accounts-enabled .buy-walk {
  display: none;
}

.buy-walk p {
  margin: -8px 0 0 0;
}

.buy-walk p .button {
  cursor: pointer;
  margin: 8px 8px 8px 0;
}

.buy-walk p > * {
  vertical-align: middle;
}

.buy-walk p a {
  display: block;
  margin-top: 8px;
  text-align: center;
}

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

/*****************************************************************
 Print Adverts
*****************************************************************/
.print-advert {
  display: none;
  margin-top: 16px;
}

.print-advert img {
  width: 100%;
}

#ink_message {
  color: #006600;
  font-size: 8pt;
  display: none;
}

/*****************************************************************
 Misc responsive tweaks
*****************************************************************/
@media screen and (max-width: 37.49em) {
  #like_on_facebook {
    display: none;
  }
}

/*****************************************************************
 Print mods
*****************************************************************/
body.accounts-enabled .print_button {
  display: none;
}

#atic_print {
  display: none !important;
}

@media print {
  body, body *, body :before, body :after {
    background: none !important;
    color: #000 !important;
  }
  .left.col, #cutdowns, #buy, #main-photo, #photos, #app-promo, #stats, #os_maps, #highlights, #related, #nearby, #alternatives, #adjoining, #links, #pubs, #facebook-group, #like_on_facebook, #app-ad, #walk-reviews, #toggle-directions, #directions .more-info, .pdf-icon, #buy-walk, .feature-box {
    display: none;
  }
  #app-intro {
    display: none !important;
  }
  #directions {
    display: none !important;
  }
  .right.col {
    float: none;
    width: 100%;
  }
  h2 {
    border-bottom: 1px solid #aaa;
  }
  .box {
    margin: 0;
    border-radius: 0;
    box-shadow: 0 0;
  }
  #stats {
    margin-top: 16px;
    color: black;
  }
  #print-app-promo {
    display: block;
    position: relative;
    height: 200px;
  }
  #print-app-promo .qr {
    position: absolute;
  }
  #print-app-promo .content {
    position: absolute;
    margin-left: 88px;
  }
  #print-app-promo .content p {
    margin: 4px 0px 0px 0px;
  }
  .print-advert {
    display: block;
  }
  #ink_message {
    display: none;
    margin-top: 32px;
  }
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy93YWxrLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vd3d3L3Njc3Mvd2Fsay5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2NvbW1vbi5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3ZhcmlhYmxlcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2dlbmVyYWxfbWl4aW5zLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWVkaWEuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tcS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3RvdWNoLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWFpbl9waG90by5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQHdhbGsvX21hcC5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQHdhbGsvX2RpcmVjdGlvbnMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0B3YWxrL19jb250cmlidXRlLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9Ad2Fsay9fYnV5X3dhbGsuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0B3YWxrL19waG90b3Muc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fbGlnaHRnYWxsZXJ5LnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9Ad2Fsay9fb3V0bGluZV9tYXAuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0B3YWxrL19teXN0ZXJpZXMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19yZXNwb25zaXZlX2NvbHVtbnMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL2NvbXBvbmVudC9fbG9hZGVyLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9jb21wb25lbnQvX3Byb21vcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19zbGlja19vdmVycmlkZXMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19hcHBfYWRfZm9ybWF0cy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19zbGlkZXNob3cuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19ib3R0b21fcHJvbW8uc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8vIEltcG9ydCBjb21wb25lbnRzXG5AaW1wb3J0IFwiQGluY2x1ZGUvY29tbW9uXCI7XG5AaW1wb3J0IFwiQGluY2x1ZGUvbWFpbl9waG90b1wiO1xuQGltcG9ydCBcIkB3YWxrL21hcFwiO1xuQGltcG9ydCBcIkB3YWxrL2RpcmVjdGlvbnNcIjtcbkBpbXBvcnQgXCJAd2Fsay9jb250cmlidXRlXCI7XG5AaW1wb3J0IFwiQHdhbGsvYnV5X3dhbGtcIjtcbkBpbXBvcnQgXCJAd2Fsay9waG90b3NcIjtcbkBpbXBvcnQgXCJAd2Fsay9vdXRsaW5lX21hcFwiO1xuQGltcG9ydCBcIkB3YWxrL215c3Rlcmllc1wiO1xuQGltcG9ydCBcIkBpbmNsdWRlL3Jlc3BvbnNpdmVfY29sdW1uc1wiO1xuQGltcG9ydCBcIkBpbmNsdWRlL2NvbXBvbmVudC9wcm9tb3NcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQm94IGxheW91dFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbkBtaXhpbiB3YWxrLWJveHtcbiAgQGluY2x1ZGUgYm94eTtcblxuICBwYWRkaW5nOiA4cHg7XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4gID4gcHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLmJveCB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG5cbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgQGluY2x1ZGUgd2Fsay1ib3g7XG4gIH1cblxuICAmLmFsd2F5c3tcbiAgICBAaW5jbHVkZSB3YWxrLWJveDtcbiAgfVxuXG4gIGgyIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMTZwdDtcbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbiAgfVxuXG4gIHVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gU2luZ2xlIGNvbHVtbiBib3ggb3JkZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2J1eSB7XG4gIG9yZGVyOiAxO1xufVxuI2FwcC1hZCB7XG4gIG9yZGVyOiAyO1xufVxuI3N1bW1hcnl7XG4gIG9yZGVyOiAzO1xufVxuI3N0YXRzIHtcbiAgb3JkZXI6IDQ7XG59XG4jbG9jYXRpb24ge1xuICBvcmRlcjogNTtcbn1cbiNjYXZlYXRze1xuICBvcmRlcjogNjtcbn1cbiNkb2dzIHtcbiAgb3JkZXI6IDc7XG59XG4jcGhvdG9zIHtcbiAgb3JkZXI6IDg7XG59XG4jaGlnaGxpZ2h0c3tcbiAgb3JkZXI6IDk7XG59XG4jd2Fsay1yZXZpZXdze1xuICBvcmRlcjogMTA7XG59XG4jb3NfbWFwc3tcbiAgb3JkZXI6IDExO1xufVxuI2xpbmtzIHtcbiAgb3JkZXI6IDEyO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBCdXlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2J1eXtcblxuICBAYXQtcm9vdHtcbiAgICBib2R5Om5vdCguYWNjb3VudHMtZW5hYmxlZCkgI3smfSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gICYsIFtjbGFzcyo9J3N0YXR1cy0nXXtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJltjbGFzcyo9J3N0YXR1cy0nXSxcbiAgJi5zdGF0dXMtc2lnbmVkLW91dCAuc3RhdHVzLXNpZ25lZC1vdXQsXG4gICYuc3RhdHVzLWluLWJhc2tldCAuc3RhdHVzLWluLWJhc2tldCxcbiAgJi5zdGF0dXMtb3duZWQgLnN0YXR1cy1vd25lZCxcbiAgJi5zdGF0dXMtYXZhaWxhYmxlIC5zdGF0dXMtYXZhaWxhYmxlLFxuICAmLnN0YXR1cy1lcnJvciAuc3RhdHVzLWVycm9ye1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgW3JvbGU9XCJidXR0b25cIl17XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIG1hcmdpbi10b3A6IDhweDtcblxuICAgIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1kZXZpY2Vze1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICAgIH1cblxuICAgICY6Zmlyc3QtY2hpbGR7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBTb2NpYWwgYm9va21hcmtzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI3dhbGtfc2hhcmluZyB7XG4gIGZsb2F0OiByaWdodDtcbiAgbWFyZ2luLXRvcDogMTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gT3ZlcnZpZXdcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI292ZXJ2aWV3e1xuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIEBpbmNsdWRlIHdhbGstYm94O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgI21haW4tcGhvdG97XG4gICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIC5pbWFnZS1ib3JkZXJ7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQ3aW5jaCkge1xuICAgICNtYWluLXBob3Rve1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICB9XG4gICAgI3Nob3J0LWRlc2NyaXB0aW9ue1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQXBwIGludHJvIHNob3duIGZvciBuZXcgdXNlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuQGltcG9ydCBcIi4uL0BpbmNsdWRlL2FwcF9hZF9mb3JtYXRzXCI7XG5cbiNhcHAtaW50cm8ge1xuICBAaW5jbHVkZSBib3hHcmFkaWVudERhcmtHcmVlbjtcbiAgQGltcG9ydCBcIi4vQGluY2x1ZGUvY29tcG9uZW50L3NsaWRlc2hvd1wiO1xuICBkaXNwbGF5OiBub25lO1xuICBwYWRkaW5nOiA0cHggMCAwIDA7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGgye1xuXHRib3JkZXItYm90dG9tOiBub25lO1xuICAgIHBhZGRpbmc6IDAgOHB4IDhweCA4cHg7XG5cdG1hcmdpbjogMDtcbiAgfVxuICAuc2xpZGVzaG93e1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLWdyZWVuO1xuICB9XG4gIFxufVxuXG4jYXBwLWRvd25sb2FkLWxpbmtzIHtcblx0cGFkZGluZy1ib3R0b206IDhweDtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFN1bW1hcnlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI3N1bW1hcnl7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAuc3lub3BzaXN7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIGJvZHkuY29sLXJlYWR5ICZ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gQ2F2ZWF0cyBhbmQgY29uc2lkZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuI2NhdmVhdHN7XG4gICAgQGluY2x1ZGUgd2Fsay1ib3g7XG4gICAgQGluY2x1ZGUgYm94R3JhZGllbnRSZWQ7XG59XG5cbiNjb25zaWRlcmF0aW9ucyB7XG5cdGgyIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvZ3JhcGhpY3Mvd2FybmluZy5wbmcnKTtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdHBhZGRpbmctbGVmdDogNDBweDtcblx0fVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBIaWdobGlnaHRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8vI2hpZ2hsaWdodHN7fVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBSZXZpZXdzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiN3YWxrLXJldmlld3N7XG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIGgye1xuICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBMaW5rc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4jbGlua3N7XG4gIGxpLmxpbmtpbmctdXJse1xuICAgIGN1cnNvcjogY29weTtcbiAgICAudXJsOmFmdGVye1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IDRweDtcblxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXFxmMGM1XCI7XG5cbiAgICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgICAgIGNvbnRlbnQ6ICdDb3B5JztcbiAgICAgICAgcGFkZGluZzogMXB4IDRweDtcbiAgICAgICAgZm9udC1zaXplOiAxMHB0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhYWFhO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBEb2dzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI2RvZ3Mge1xuICBwYWRkaW5nLXRvcDo0cHg7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBRUiBhbmQgYXBwIHByb21vIChEZXNrdG9wIG9ubHkpXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI2FwcC1wcm9tb3tcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAucXJjb2RlIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gICAgbWFyZ2luLXRvcDo0cHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gIFxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cblxuICAuaW5uZXIgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgLm9zLWxpbmtzIGltZ3tcbiAgICBtYXJnaW46IDhweCA1JSAwIDUlO1xuICB9XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBTdGF0c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNzdGF0c3tcbiAgdWwge1xuICAgIGNsZWFyOnJpZ2h0O1xuICB9XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBPUyBNYXBzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuI21hcC1pbWFnZXMge1xuICBtYXJnaW4tdG9wOjRweDtcbiAgbWFyZ2luLWJvdHRvbTo0cHg7XG5cbiAgYXtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAmOmFmdGVye1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAtMnB4O1xuICAgICAgYm90dG9tOiAxNHB4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGNlbnRlcjtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogYm90dG9tO1xuICAgICAgYmFja2dyb3VuZC1zaXplOiA2MHB4IDQ2cHg7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBBZHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4jYXBwLWFkIHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnRHcmVlbjtcblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIC50ZXh0e1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgID4gKntcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIH1cbiAgICAgICp7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAubW9yZXtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5hcHAtYWQtcGhvbmUge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQ3aW5jaCkge1xuICAgIC5hcHAtYWQtcGhvbmUge1xuICAgICAgZmxvYXQ6cmlnaHQ7XG4gICAgICBtYXJnaW46IDAgMCA4cHggOHB4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgei1pbmRleDogMjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG5cdC50ZXh0IHtcblx0XHQuZG93bmxvYWQge1xuXHRcdFx0ZGlzcGxheTpub25lO1xuXHRcdH1cblx0fVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgZmlsdGVyOmJyaWdodG5lc3MoMS4yNSk7XG4gIH1cbiAgXG4gICNhcHAtZGVlcGxpbmt7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAgIC5hcHAtbmFtZXtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgYXtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gUERGIGljb25cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLnBkZi1pY29uIHtcblx0ZmxvYXQ6cmlnaHQ7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHR0b3A6IC05cHg7XG5cdGZpbHRlcjogb3BhY2l0eSg2MCUpO1xuXHRcblx0Jjpob3ZlciB7XG5cdFx0Y3Vyc29yOnBvaW50ZXI7XG5cdFx0ZmlsdGVyOiBvcGFjaXR5KDEwMCUpO1xuXHR9XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keS5hY2NvdW50cy1lbmFibGVkICN7Jn0ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gU2FtcGxlIGRpcmVjdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4jc2FtcGxlLWV4cGxhbmF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgcGFkZGluZzogMTZweDtcbiAgd2lkdGg6IGF1dG87XG4gIGZvbnQtc3R5bGU6aXRhbGljO1xufVxuXG4uc2FtcGxlLWVsaXBzZXMge1xuXHR3aWR0aDogYXV0bztcblx0Zm9udC1zaXplOiAzNnB0O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIEJ1eSB3YWxrIGJveFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi5idXktd2FsayAge1xuICBtYXJnaW4tdG9wOjEycHg7XG4gIG1hcmdpbi1ib3R0b206MTJweDtcblxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICBwYWRkaW5nOiAxNnB4O1xuICB3aWR0aDogYXV0bztcblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBAYXQtcm9vdHtcbiAgICBib2R5LmFjY291bnRzLWVuYWJsZWQgI3smfSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIHAge1xuXHRtYXJnaW46IC04cHggMCAwIDA7XG5cbiAgICAuYnV0dG9uIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIG1hcmdpbjogOHB4IDhweCA4cHggMDtcbiAgICB9XG5cbiAgICA+ICp7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgIGF7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuXG5cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogQm90dG9tIHByb21vIChpZiBhY3RpdmUpXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgXCJAaW5jbHVkZS9ib3R0b21fcHJvbW9cIjtcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBQcmludCBBZHZlcnRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLnByaW50LWFkdmVydCB7XG4gIGRpc3BsYXk6bm9uZTtcbiAgbWFyZ2luLXRvcDoxNnB4O1xuICBpbWcge3dpZHRoOjEwMCV9XG59XG5cbiNpbmtfbWVzc2FnZSB7XG4gIGNvbG9yOiAjMDA2NjAwO1xuICBmb250LXNpemU6IDhwdDtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gTWlzYyByZXNwb25zaXZlIHR3ZWFrc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAjbGlrZV9vbl9mYWNlYm9va3tcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFByaW50IG1vZHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLy8gaGlkZSBwcmludCBidXR0b24gd2hlbiBhY2NvdW50cyBhcmUgZW5hYmxlZCBhcyBpdCBsaW5rcyB0byBidXkgUERGXG5ib2R5LmFjY291bnRzLWVuYWJsZWQgLnByaW50X2J1dHRvbntcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLy8gSGlkZSB0aGUgQWRkIFRoaXMgUHJpbnQgYnV0dG9uXG4jYXRpY19wcmludHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5AbWVkaWEgcHJpbnQge1xuICBib2R5LCBib2R5ICosIGJvZHkgOmJlZm9yZSwgYm9keSA6YWZ0ZXJ7XG4gICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmxlZnQuY29sLCAjY3V0ZG93bnMsICNidXksICNtYWluLXBob3RvLCAjcGhvdG9zLCAjYXBwLXByb21vLCAjc3RhdHMsICNvc19tYXBzLCAjaGlnaGxpZ2h0cywgI3JlbGF0ZWQsICNuZWFyYnksICNhbHRlcm5hdGl2ZXMsICNhZGpvaW5pbmcsICNsaW5rcywgI3B1YnMsICNmYWNlYm9vay1ncm91cCwgI2xpa2Vfb25fZmFjZWJvb2ssICNhcHAtYWQsICN3YWxrLXJldmlld3MsICN0b2dnbGUtZGlyZWN0aW9ucywgI2RpcmVjdGlvbnMgLm1vcmUtaW5mbywgLnBkZi1pY29uLCAjYnV5LXdhbGssIC5mZWF0dXJlLWJveCB7XG4gICAgZGlzcGxheTogbm9uZVxuICB9XG4gIFxuICAjYXBwLWludHJvIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIFxuICAjZGlyZWN0aW9ucyB7IFxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuICBcbiAgLnJpZ2h0LmNvbCB7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgd2lkdGg6IDEwMCVcbiAgfVxuXG4gIGgyIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYVxuICB9XG5cbiAgLmJveCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm94LXNoYWRvdzogMCAwO1xuICB9XG5cblxuICAjc3RhdHMge1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgY29sb3I6IGJsYWNrXG4gIH1cblxuICAjcHJpbnQtYXBwLXByb21vIHtcbiAgICBkaXNwbGF5OiBibG9jaztcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRoZWlnaHQ6IDIwMHB4O1xuXHRcblx0LnFyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdH1cblx0XG5cdC5jb250ZW50IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bWFyZ2luLWxlZnQ6IDg4cHg7XG5cdFx0XG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDRweCAwcHggMHB4IDBweDtcblx0XHR9XG5cdH1cbiAgfVxuICBcbiAgLnByaW50LWFkdmVydCB7XG4gICAgZGlzcGxheTogYmxvY2s7ICBcbiAgfVxuICBcbiAgI2lua19tZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1hcmdpbi10b3A6IDMycHhcbiAgfVxufVxuXG4iLAoJCSIvLyBDb21tb24gc3R5bGVzXG5AaW1wb3J0IFwidmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbF9taXhpbnNcIjtcbkBpbXBvcnQgXCJtZWRpYVwiO1xuQGltcG9ydCBcInRvdWNoXCI7XG5cbmJvZHl7XG4gIHZpc2liaWxpdHk6IGluaGVyaXQ7XG59XG4iLAoJCSIvLyBWYXJpYWJsZXNcblxuJHBhZ2Utd2lkdGg6IDk2MHB4O1xuJHJlc3BvbnNpdmUtbWVudTogNzc4cHg7XG5cbiRncmV5OiAjMmYyZjJmO1xuJGRhcmstZ3JlZW46ICMxMzE7XG4kZ3JlZW46ICMyODVkMWU7XG4kYmx1ZTogIzE5NDI0YTtcbiRsaWdodC1ncmVlbjogcmdiYSgxMjQsIDE5NywgMTQ5LCAwLjY1KTtcbiRyZWQ6ICM1YzFlMWU7XG4kZGFyay1yZWQ6ICM2NjAwMDA7XG5cbi8vIEJveCBncmFkaWVudHNcbiRib3gtR3JhZC1IZWlnaHQ6IDE4cHg7XG5cbiRib3gtQkctR3JleTogJGdyZXk7XG4kYm94LUdyYWQtVXBwZXItVG9wLUdyZXk6ICM3MTcxNzE7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZXk6ICM0MjQxNDE7XG4kYm94LUdyYWQtTG93ZXItVG9wLUdyZXk6ICM0MDQwNDA7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZXk6ICMyZjJmMmY7XG5cbiRib3gtQkctR3JlZW46ICRncmVlbjtcbiRib3gtR3JhZC1VcHBlci1Ub3AtR3JlZW46ICM0Njk5MzY7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZWVuOiAjMzA3MDI1O1xuJGJveC1HcmFkLUxvd2VyLVRvcC1HcmVlbjogIzMwNzIyNTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JlZW46ICMyODVkMWU7XG5cbiRib3gtQkctQmx1ZTogIzE5NDI0YTtcbiRib3gtR3JhZC1VcHBlci1Ub3AtQmx1ZTogIzEyNjE2NztcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tQmx1ZTogIzE5NDI0YTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtQmx1ZTogIzE5NDI0YTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tQmx1ZTogIzE5NDI0YTtcblxuXG4kYm94LUJHLURhcmstR3JlZW46ICRkYXJrLWdyZWVuO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1EYXJrLUdyZWVuOiAjMmU4MDJlO1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1EYXJrLUdyZWVuOiAjMTc0NTE3O1xuJGJveC1HcmFkLUxvd2VyLVRvcC1EYXJrLUdyZWVuOiAjMTg0NzE5O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1EYXJrLUdyZWVuOiAjMTEzMzExO1xuXG4kYm94LUJHLVJlZDogJHJlZDtcbiRib3gtR3JhZC1VcHBlci1Ub3AtUmVkOiAjYTgzYjNiO1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1SZWQ6ICM2ZTI1MjU7XG4kYm94LUdyYWQtTG93ZXItVG9wLVJlZDogIzcwMjUyNTtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tUmVkOiAjNWMxZTFlO1xuXG4kbXEtYnJlYWtwb2ludC1tb2JpbGU6IDMyMHB4O1xuJG1xLWJyZWFrcG9pbnQtdGFibGV0N2luY2g6IDYwMHB4O1xuJG1xLWJyZWFrcG9pbnQtdGFibGV0OiA3NDBweDtcbiRtcS1icmVha3BvaW50LWRlc2t0b3A6IDk4MHB4O1xuJG1xLWJyZWFrcG9pbnQtd2lkZTogMTMwMHB4O1xuJG1xLWJyZWFrcG9pbnQtZGVza3RvcEFkOiA4MTBweDtcbiRtcS1icmVha3BvaW50LW1vYmlsZUxhbmRzY2FwZTogNDgwcHg7XG4kbXEtYnJlYWtwb2ludC1tZWRpdW1Mb2dvOiA0NDBweDtcbiRtcS1icmVha3BvaW50LXNtYWxsTG9nbzogMzIwcHg7XG4kbXEtYnJlYWtwb2ludC1oZWFkZXJTb2NpYWxJY29uczogOTU0cHg7XG4kbXEtYnJlYWtwb2ludC1wYWdlOiAkcGFnZS13aWR0aDtcbiRtcS1icmVha3BvaW50LXJlc3BvbnNpdmVNZW51OiAkcmVzcG9uc2l2ZS1tZW51O1xuXG5cbi8vIEJyZWFrcG9pbnRzXG4kbXEtYnJlYWtwb2ludHM6IChcbiAgICAgICAgbW9iaWxlOiAgJG1xLWJyZWFrcG9pbnQtbW9iaWxlLFxuICAgICAgICB0YWJsZXQ3aW5jaDogICRtcS1icmVha3BvaW50LXRhYmxldDdpbmNoLFxuICAgICAgICB0YWJsZXQ6ICAkbXEtYnJlYWtwb2ludC10YWJsZXQsXG4gICAgICAgIGRlc2t0b3A6ICRtcS1icmVha3BvaW50LWRlc2t0b3AsXG4gICAgICAgIHdpZGU6ICRtcS1icmVha3BvaW50LXdpZGUsXG5cbiAgLy8gVHdlYWtwb2ludHNcbiAgICAgICAgZGVza3RvcEFkOiAkbXEtYnJlYWtwb2ludC1kZXNrdG9wQWQsXG4gICAgICAgIG1vYmlsZUxhbmRzY2FwZTogJG1xLWJyZWFrcG9pbnQtbW9iaWxlTGFuZHNjYXBlLFxuICAgICAgICBzbWFsbExvZ286ICRtcS1icmVha3BvaW50LXNtYWxsTG9nbyxcbiAgICAgICAgcGFnZTogJG1xLWJyZWFrcG9pbnQtcGFnZSxcbiAgICAgICAgcmVzcG9uc2l2ZU1lbnU6ICRtcS1icmVha3BvaW50LXJlc3BvbnNpdmVNZW51LFxuICAgICAgICBoZWFkZXJTb2NpYWxJY29uczogJG1xLWJyZWFrcG9pbnQtaGVhZGVyU29jaWFsSWNvbnNcbik7XG5cblxuLy8gVG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KSBzZXQgJG1xLXJlc3BvbnNpdmUgdG8gZmFsc2Vcbi8vIENyZWF0ZSBhIHNlcGFyYXRlIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIHRoZXNlIGJyb3dzZXJzLFxuLy8gbWVhbmluZyBAbWVkaWEgcXVlcmllcyB3aWxsIGJlIHJhc3Rlcml6ZWQsIHJlbHlpbmcgb24gdGhlIGNhc2NhZGUgaXRzZWxmXG4kbXEtcmVzcG9uc2l2ZTogdHJ1ZTtcblxuLy8gSWYgeW91IHdhbnQgdG8gZGlzcGxheSB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3Bcbi8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vJG1xLXNob3ctYnJlYWtwb2ludHM6IChtb2JpbGUsIG1vYmlsZUxhbmRzY2FwZSwgdGFibGV0LCBkZXNrdG9wLCB3aWRlKTtcbiIsCgkJIkBtaXhpbiBpV2Fsa01vYmlsZUdyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjYzlkY2Y0IDAlLCM4MmI1ZWMgMjIlLCMyOThhZTMgNDYlLCMzZWMxZjcgNzAlLCMzZWMxZjcgMTAwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVZe1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG5AbWl4aW4gY2VudHJlWHtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVYWXtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpICB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG5AbWl4aW4gZ3JleV9ncmFkaWVudHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgxODEsIDE4OSwgMjAwLCAxKSAwJSwgcmdiYSgxMzAsIDE0MCwgMTQ5LCAxKSAzNiUsIHJnYmEoNDAsIDUyLCA1OSwgMSkgMTAwJSk7XG59XG5cbkBtaXhpbiBncmVlbl9ncmFkaWVudHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzRlYjk0ZSAwJSwgIzEwOTAxMCAzNiUsICMwOTNlMDkgMTAwJSk7XG59XG5cbkBtaXhpbiBib3goJGJnKXtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJnO1xuICBib3JkZXItcmFkaXVzOjRweDtcbiAgJiwgYXtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cbn1cblxuQG1peGluIGJveEdyYWRpZW50KCRiZywgJHVwcGVyLXRvcCwgJHVwcGVyLWJvdHRvbSwgJGxvd2VyLXRvcCwgJGxvd2VyLWJvdHRvbSwgJGhlaWdodDogJGJveC1HcmFkLUhlaWdodCl7XG4gIEBpbmNsdWRlIGJveCgkYmcpO1xuICB6LWluZGV4OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJjpiZWZvcmV7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgkdXBwZXItdG9wLCAkdXBwZXItYm90dG9tKTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gICY6YWZ0ZXJ7XG4gICAgY29udGVudDonJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAkaGVpZ2h0O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgkbG93ZXItdG9wLCAkbG93ZXItYm90dG9tKTtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gID4gKntcbiAgICB6LWluZGV4OiAyO1xuXG4gICAgQGF0LXJvb3Qge1xuICAgICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEdyZXl7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctR3JleSwgJGJveC1HcmFkLVVwcGVyLVRvcC1HcmV5LCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUdyZXksICRib3gtR3JhZC1Mb3dlci1Ub3AtR3JleSwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmV5KTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50R3JlZW57XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctR3JlZW4sICRib3gtR3JhZC1VcHBlci1Ub3AtR3JlZW4sICRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Ub3AtR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JlZW4pO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRCbHVle1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLUJsdWUsICRib3gtR3JhZC1VcHBlci1Ub3AtQmx1ZSwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1CbHVlLCAkYm94LUdyYWQtTG93ZXItVG9wLUJsdWUsICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tQmx1ZSk7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudERhcmtHcmVlbntcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1EYXJrLUdyZWVuLCAkYm94LUdyYWQtVXBwZXItVG9wLURhcmstR3JlZW4sICRib3gtR3JhZC1VcHBlci1Cb3R0b20tRGFyay1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLVRvcC1EYXJrLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItQm90dG9tLURhcmstR3JlZW4pO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRSZWR7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctUmVkLCAkYm94LUdyYWQtVXBwZXItVG9wLVJlZCwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1SZWQsICRib3gtR3JhZC1Mb3dlci1Ub3AtUmVkLCAkYm94LUdyYWQtTG93ZXItQm90dG9tLVJlZCk7XG59XG5cbkBtaXhpbiBib3hTaGFkb3d7XG4gIGJveC1zaGFkb3c6IDRweCA0cHggNHB4ICNiYmI7XG59XG5cbkBtaXhpbiBib3h5e1xuICBAaW5jbHVkZSBib3hHcmFkaWVudEdyZXk7XG4gIEBpbmNsdWRlIGJveFNoYWRvdztcbiAgY29sb3I6ICNlZWU7XG5cbiAgYSwgc3Ryb25nIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICBoMiB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5AbWl4aW4gbGlnaHRHcmVlbkJveHtcbiAgQGluY2x1ZGUgYm94KCRsaWdodC1ncmVlbik7XG4gICYsYXtcbiAgICBjb2xvcjogYmxhY2s7XG4gIH1cbn1cblxuIiwKCQkiXG4vKipcbiAqIEJyZWFrcG9pbnRzXG4gKi9cblxuQGltcG9ydCBcIm1xXCI7XG5cblxuQG1peGluIG1xcygkZnJvbTogZmFsc2UsICR1bnRpbDogZmFsc2Upe1xuICBAaW5jbHVkZSBtcSgkZnJvbSwgJHVudGlsLCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnB1dCBjYXBhYmlsaXRpZXNcbiAqL1xuXG4vLyBzbWFydHBob25lcyBhbmQgdGFibGV0c1xuQG1peGluIHRvdWNoLXNjcmVlbi1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKVxuICBhbmQgKGhvdmVyOiBub25lKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNb3VzZSBvciB0b3VjaCBwYWRcbkBtaXhpbiBtb3VzZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogZmluZSlcbiAgYW5kIChob3ZlcjogaG92ZXIpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNob3cgZm9yIHRvdWNoIHNjcmVlbnNcbi8vIGFuZCB1cCB1bnRpbCB0YWJsZXQgZGV2aWNlIHdpZHRoIGZvciB0YWJsZXRzIG5vdCBzdXBwb3J0aW5nIGlucHV0IG1lZGlhIHF1ZXJpZXMgaWUuIG9sZCBBbmRyb2lkIDQueFxuQG1peGluIHRvdWNoLXNjcmVlbi1kZXZpY2Vze1xuICBAaW5jbHVkZSB0b3VjaC1zY3JlZW4taW5wdXQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHJlc3BvbnNpdmVNZW51KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTmludGVuZG8gV2lpIGNvbnRyb2xsZXIsIEtpbmVjdCwgZXRjLlxuQG1peGluIGNvbnNvbGUtaW5wdXQge1xuICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSlcbiAgYW5kIChob3ZlcjogaG92ZXIpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIHN0eWx1cy1iYXNlZCBzY3JlZW5zIChDaW50aXEsIFdhY29tLCBldGMpXG5AbWl4aW4gY29uc29sZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogZmluZSlcbiAgYW5kIChob3Zlcjogbm9uZSl7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gUmV0aW5hIGRpc3BsYXlzICgyeClcbkBtaXhpbiByZXRpbmEge1xuICBAbWVkaWEgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS41KSwoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMy8yKSxcbiAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwobWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwobWluLXJlc29sdXRpb246IDEuNWRwcHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwKCQkiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChlLmcuIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgJG1xLXN0YXRpYy1icmVha3BvaW50OiB0YWJsZXQ7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjYWRkaW5nLWN1c3RvbS1icmVha3BvaW50cyBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtc3RhdGljLWJyZWFrcG9pbnQ6IGRlc2t0b3AgIWRlZmF1bHQ7XG5cbi8vLyBTaG93IGJyZWFrcG9pbnRzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy9cbi8vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLCBlLmcuIChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAdHlwZSBtYXBcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcblxuLy8vIEN1c3RvbWl6ZSB0aGUgbWVkaWEgdHlwZSAoZS5nLiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgKCRtcS1iYXNlLWZvbnQtc2l6ZSkgLSBgPGJvZHk+YCBmb250IHNpemVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKCRweCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIChmYWxzZSkgLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgKGZhbHNlKSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSAoJG1xLW1lZGlhLXR5cGUpIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50ICgkbXEtc3RhdGljLWJyZWFrcG9pbnQpXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfSBAZWxzZSB7IC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBlbmFibGVkLCBvdXRwdXQgcnVsZXMgaW5zaWRlIEBtZWRpYSBxdWVyaWVzXG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzICgkbXEtc2hvdy1icmVha3BvaW50cykgLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLAoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuKiBUb3VjaCBkZXZpY2VzXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5AaW1wb3J0IFwiZ2VuZXJhbF9taXhpbnNcIjtcclxuXHJcbkBtaXhpbiBib3gtc2hhZG93e1xyXG4gIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLC4xNSk7XHJcbn1cclxuXHJcbkBtaXhpbiB0b3VjaC1zY3JlZW4tc3R5bGVzIHtcclxuXHJcbiAgLy8gQnV0dG9uc1xyXG4gIFtkYXRhLXJvbGU9XCJidXR0b25cIl06bm90KC5ub24tcmVzcG9uc2l2ZSl7XHJcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93O1xyXG5cclxuICAgIGNvbG9yOiAjMzMzICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlO1xyXG5cclxuICAgIGJvcmRlci1jb2xvcjogI2RkZDtcclxuICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHJcblxyXG4gICAgbWFyZ2luOiAuNWVtIDA7XHJcbiAgICBwYWRkaW5nOiAuN2VtIDFlbTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuXHJcbiAgICAmOmhvdmVyLCAmOmFjdGl2ZXtcclxuICAgICAgYmFja2dyb3VuZDogI2U4ZjBmZjtcclxuICAgIH1cclxuXHJcbiAgICAmW2RhdGEtaWNvbl17XHJcbiAgICAgIHBhZGRpbmctbGVmdDogMzJweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xyXG4gICAgICBpe1xyXG4gICAgICAgIEBpbmNsdWRlIGNlbnRyZVk7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6IDhweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuZ3JlZW4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjOGRkZGEwIDAlLCAjM2RkYjhjIDUwJSwgIzhkZGRhMCAxMDAlKTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMmI2YjM3O1xyXG4gICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjUpOyAvL2hlYXZpZXIgc2hhZG93IG9uIGRhcmsgZ3JlZW4gYmdcclxuICAgICAgJjpob3ZlciwgJjphY3RpdmUge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkY2Y0ZTEgMCUsICMzZGRiOGMgNTAlLCAjZGNmNGUxIDEwMCUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAmLmJsdWV7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzhkYzBkZCAwJSwjM2RhY2RiIDUwJSwjOGRjMGRkIDEwMCUpO1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogIzEyNjE2NztcclxuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xyXG4gICAgICAgICY6aG92ZXIsICY6YWN0aXZle1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RjZTFmNCAwJSwjNmVhY2ViIDUwJSwjZGNlMWY0IDEwMCUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIExpc3R2aWV3c1xyXG4gIFtkYXRhLXJvbGU9XCJsaXN0dmlld1wiXTpub3QoLm5vbi1yZXNwb25zaXZlKXtcclxuICAgIEBpbmNsdWRlIGJveHk7XHJcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG5cclxuXHJcbiAgICA+bGl7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4IDhweCA4cHggIWltcG9ydGFudDtcclxuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogI2RkZDtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMXB4O1xyXG4gICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcclxuICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcclxuICAgICAgfVxyXG5cclxuICAgICAgYXtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgJjphZnRlcntcclxuICAgICAgICAgIGNvbnRlbnQ6ICc+JztcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIHJpZ2h0OiA0cHg7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGluayBsaXN0c1xyXG4gIDpub3QoLm5vbi1yZXNwb25zaXZlKTpub3QoW2RhdGEtcm9sZV0pOm5vdChbcm9sZV0pID4gbGkgPiBhOm9ubHktY2hpbGR7XHJcbiAgICBwYWRkaW5nOiA4cHggMDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB9XHJcbn1cclxuXHJcblxyXG4iLAoJCSIvKipcbiogRGlzcGxheSBhIGZ1bGwtd2lkdGggcGhvdG8gd2l0aCBhIHdoaXRlIGJvcmRlclxuKi9cblxuI21haW4tcGhvdG8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICB3aWR0aDogMTAwJTtcblxuICBpbWcge1xuICAgIHBvc2l0aW9uOnJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuXG4gIC5pbWFnZS1ib3JkZXIge1xuICAgIGRpc3BsYXk6YmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDEwcHg7XG4gICAgdG9wOiAxMHB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIGJvdHRvbTogMTBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbiAgfVx0XG59XG4iLAoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiBPdmVydmlldyBNYXAgYW5kIHN1bW1hcnlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4jc3VtbWFyeSB7XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAubWFwLWJ1dHRvbntcbiAgICBAaW5jbHVkZSBib3hHcmFkaWVudEdyZXk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgei1pbmRleDogOTAwMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtOHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICB3aWR0aDogMTQwcHg7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjpiZWZvcmUsICY6YWZ0ZXJ7XG4gICAgICB6LWluZGV4OiA5MDE7XG4gICAgfVxuXG4gICAgPiAqe1xuICAgICAgei1pbmRleDogOTAyO1xuICAgIH1cblxuICAgIGEge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiNmdWxsLXNjcmVlbi1tYXAge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgMCA0cHg7XG5cdCAgZGlzcGxheTogbm9uZTsgLy9UT0RPIEhpZGUgdW50aWwgbWFwIHRlbXBsYXRlIGlzIHJld29ya2VkIHRvIHVzZSBPU01cbiAgICB9XG4gIH1cbn1cblxuI2NhdmVhdHMge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG59XG5cbiNzdW1tYXJ5LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JleTtcbiAgcGFkZGluZzogOHB4O1xufVxuXG4jbWFwLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQ6d2hpdGU7XG4gIFxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICB9XG5cbiAgLm1hcCB7XG4gICAgd2lkdGg6IDUyMHB4O1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogNDQwcHg7XG5cbiAgICBAYXQtcm9vdHtcbiAgICAgIGJvZHkud2Fsay1yZWFkeSAjeyZ9IHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgICB3aWR0aDogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgJiwgKntcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjb3NtLW1hcHtcbiAgICBhe1xuICAgICAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG4iLAoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIERpcmVjdGlvbnNcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4jdG9nZ2xlLWRpcmVjdGlvbnN7XHJcbiAgbWFyZ2luLXRvcDogMTZweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgXHJcbiAgZGlzcGxheTpub25lOyAvKiBkaXNhYmxlZCBhcyB0b28gbWFueSByZXBvcnRzIG9mIHRoaXMgYmVpbmcgYWJ1c2VkICovXHJcblxyXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0N2luY2gpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICBbZGF0YS1yb2xlPVwiYnV0dG9uXCJde1xyXG4gICAgQGluY2x1ZGUgYm94eTtcclxuXHJcbiAgICAqe1xyXG4gICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBpe1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICBzcGFue1xyXG4gICAgICBtYXJnaW4tbGVmdDogMTZweDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiNkaXJlY3Rpb25zIHtcclxuICBtYXJnaW4tdG9wOiAzMnB4O1xyXG4gIGNsZWFyOmxlZnQ7XHJcblxyXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLm1hcC1vbmx5e1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIHNwYW4uaW50cm8ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIGgyIHtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhO1xyXG4gIH1cclxuXHJcbiAgPm9sIHtcclxuICAgIG1hcmdpbi10b3A6MTZweDtcclxuICAgIHBhZGRpbmctbGVmdDoyNHB4O1xyXG4gIH1cclxuICA+b2w+bGkge1xyXG4gICAgbWFyZ2luLWJvdHRvbToxNnB4O1xyXG4gIH1cclxuICA+b2w+bGk+cCB7XHJcbiAgICBkaXNwbGF5OmlubGluZTsgLyogb25seSBzcGxpdCBpbnRvIHBhcmFncmFwaHMgaW4gdGhlIGFwcCwgbm90IGluIHRoZSBQREZzICovXHJcbiAgfVxyXG5cclxuXHJcbiAgLnF1b3RlIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIGZvbnQtZmFtaWx5OiBQYWxhdGlubywgc2VyaWY7XHJcbiAgICBmb250LXNpemU6IDE0cHQ7XHJcbiAgICBib3JkZXItcmFkaXVzOjRweDtcclxuICAgIHBhZGRpbmc6IDRweCAxMnB4IDEycHggMTJweDtcclxuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJ1xcMjAxQyc7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBUaW1lcyBOZXcgUm9tYW47XHJcbiAgICAgIGZvbnQtc2l6ZTogMjRwdDtcclxuICAgICAgY29sb3I6ICNjY2M7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5mZWF0dXJlLWJveCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcclxuICBib3JkZXItcmFkaXVzOjRweDtcclxuICBiYWNrZ3JvdW5kOiAjZWVlO1xyXG4gIHBhZGRpbmc6IDhweDtcclxuICBtYXJnaW4tdG9wOiA0cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG5cclxuICAvKm5vIGdhcCBhdCB0b3Agb2YgZmlyc3QgcCovXHJcbiAgcDpmaXJzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tdG9wOjA7XHJcbiAgfVxyXG5cclxuICAvKi4uLmJ1dCBnYXAgb24gZmlyc3QgcCBiZXR3ZWVuIG11bHRpcGxlIGRpdnMgaW4gdGhlIGZlYXR1cmUgYm94LCB0byBzcGFjZSB0aGVtIGFwYXJ0Ki9cclxuICBkaXYgcDpmaXJzdC1jaGlsZCB7XHJcbiAgICBtYXJnaW4tdG9wOjhweDtcclxuICB9XHJcblxyXG4gIC8qLi4uYnV0IG5vdCB0aGUgZmlyc3Qgb25lKi9cclxuICBkaXY6Zmlyc3QtY2hpbGQgIHA6Zmlyc3QtY2hpbGQge1xyXG4gICAgbWFyZ2luLXRvcDowO1xyXG4gIH1cclxuXHJcbiAgLypubyBnYXAgYXQgYm90dG9tIG9mIGxhc3QgcCovXHJcbiAgcDpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206MDtcclxuICB9XHJcblxyXG4gIHVsPmxpIHtcclxuICAgIGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlO1xyXG4gIH1cclxuICBcclxuICBwLm1vcmUtaW5mbyB7XHJcbiAgICBkaXNwbGF5Om5vbmU7XHJcbiAgfVxyXG59XHJcblxyXG4uYXBwLW9ubHkge1xyXG4gIGRpc3BsYXk6bm9uZTtcclxufVxyXG5cclxuI2xpa2Vfb25fZmFjZWJvb2sge1xyXG4gIG1hcmdpbi10b3A6IDI0cHg7XHJcbn0iLAoJCSIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIFBvc3QtcHJpbnQgY29udHJpYnV0ZSBwb3B1cFxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuLmNvbnRyaWJ1dGUtcG9wdXB7XHJcbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQ3aW5jaCkge1xyXG4gICAgLnByb21vLWNvbnRhaW5lcntcclxuICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgIG1heC13aWR0aDogMzIwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJvZHl7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAzMzZweDtcclxuICAgIH1cclxuICB9XHJcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcclxuICAgIG1heC13aWR0aDogY2FsYygxMDB2dyAtIDIwcHgpO1xyXG4gICAgLnByb21vLWNvbnRhaW5lcntcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb21vc3tcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gIH1cclxuXHJcbiAgaDJ7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG4gIH1cclxuXHJcbiAgLnBheXBhbC1idXR0b257XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xyXG4gICAgZm9ybXtcclxuICAgICAgZGlzcGxheTppbmxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGlzY2xhaW1lcntcclxuICAgIGNsZWFyOiBsZWZ0O1xyXG4gICAgbWFyZ2luLXRvcDogOHB4O1xyXG4gIH1cclxufSIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIFByZS1wcmludCBidXkgd2FsayBwb3B1cFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4uYnV5LXdhbGstcG9wdXAsLmJ1eS1wZGYtcG9wdXAge1xuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKSB7XG5cdFxuICAgIC5idXktYXBwIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOnVybCgnL2ltYWdlcy9ncmFwaGljcy9idXlfYXBwLmpwZycpO1xuXHRcdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0XHRtYXJnaW4tYm90dG9tOjY0cHg7XG5cdH1cblx0LmJ1eS1wZGYge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6dXJsKCcvaW1hZ2VzL2dyYXBoaWNzL2J1eV9wZGZfbGVhZmxldHMucG5nJyk7ICAgICAgXG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuICAgIH1cblxuICAgIC5idXktYXBwIC5jb250ZW50LCAuYnV5LXBkZiAuY29udGVudCB7XG4gICAgICBtYXJnaW4tbGVmdDogMzIwcHg7XG5cdCAgbWluLWhlaWdodDogMjUwcHg7XG4gICAgfVxuXG5cdC5yZWNvbW1lbmRlZCB7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTp1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvcmVjb21tZW5kZWQucG5nJyk7ICAgICAgXG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IHRvcDtcbiAgICB9XG5cdFxuICB9XG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMTAwcHgpO1xuICB9XG5cbiAgLnBheXBhbC1idXR0b24sIC5idXktYnV0dG9ue1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblx0bWFyZ2luOiAzNnB4O1xuICB9XG5cbiAgLnBheXBhbC1idXR0b257XG4gICAgZm9ybXtcbiAgICAgIGRpc3BsYXk6aW5saW5lO1xuICAgIH1cbiAgfVxuXG59IiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gV2FsayBwaG90b3Mgc2xpZGVzaG93IHVzaW5nIGxpZ2h0Z2FsbGVyeSAtIHdhbGsgbGVhZiBwYWdlXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgXCIuLi9AaW5jbHVkZS9jb21wb25lbnQvbGlnaHRnYWxsZXJ5XCI7XG5cbiR3aWR0aDogNTIwcHg7XG4kaGVpZ2h0OiAzOTRweDtcbiRhc3BlY3Q6IHBlcmNlbnRhZ2UoJGhlaWdodCAvICR3aWR0aCk7XG5cblxuQG1peGluIGR1YWxDb2x7XG4gIHdpZHRoOiA1MjBweDtcbiAgaGVpZ2h0OiAzOTRweDtcbn1cblxuQG1peGluIHNpbmdsZUNvbHtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206ICRhc3BlY3Q7XG59XG5cbiNwaG90b3MubGlnaHRnYWxsZXJ5e1xuICBAYXQtcm9vdHtcbiAgICBib2R5LmNvbC1kdWFsICN7Jn0ge1xuICAgICAgQGluY2x1ZGUgZHVhbENvbDtcblxuICAgICAgJjpub3QoLmZ1bGxzY3JlZW4pIC5sZy1jb250YWluZXJ7XG4gICAgICAgIEBpbmNsdWRlIGR1YWxDb2w7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYm9keS5jb2wtc2luZ2xlICN7Jn0ge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlQ29sO1xuICAgICAgJjpub3QoLmZ1bGxzY3JlZW4pIC5sZy1jb250YWluZXJ7XG4gICAgICAgIEBpbmNsdWRlIHNpbmdsZUNvbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmFmdGVye1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxufVxuIiwKCQkiLypcbiAqIExpZ2h0Z2FsbGVyeSBwaG90byBzbGlkZXNob3dcbiAqL1xuLmxpZ2h0Z2FsbGVyeXtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICYuZnVsbHNjcmVlbntcbiAgICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7XG5cbiAgICAubGlnaHRHYWxsZXJ5LWNhcHRpb25zIHB7XG4gICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICAmOm5vdCguZnVsbHNjcmVlbil7XG4gICAgLmxnLW5leHQsIC5sZy1wcmV2e1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubGlnaHRHYWxsZXJ5LWNhcHRpb25ze1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgICB0ZXh0LXNoYWRvdzogMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgJjo6YmVmb3Jle1xuICAgICAgY29udGVudDonJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHRvcDogMDtcbiAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDFweDtcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgb3BhY2l0eTogMC44NTtcbiAgICB9XG4gIH1cbn1cblxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gV2FsayBsb2NhdGlvbiBzaG93biBvbiBvdXRsaW5lIG1hcCBvZiBDb3Jud2FsbFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4jb3V0bGluZS1tYXB7XG4gIG1hcmdpbjogOHB4IGF1dG87XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBzZXQgdG8gbWFwIGltYWdlIGRpbWVuc2lvblxuICB3aWR0aDogMzIwcHg7XG4gIGhlaWdodDogMzIwcHg7XG5cbiAgaW1ne1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5pbmRpY2F0b3J7XG4gICAgJHNpemU6IDhweDtcbiAgICAkY29sb3I6IHJlZDtcbiAgICAkYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgICAkc2hhZG93LWNvbG9yOiB3aGl0ZTtcblxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGJveC1zaGFkb3c6IDAgMCAzcHggJHNoYWRvdy1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG59XG4iLAoJCSJAaW1wb3J0IFwiLi4vQGluY2x1ZGUvY29tbW9uXCI7XHJcblxyXG4jbXlzdGVyaWVzIGltZyB7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0QGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxufSIsCgkJIkBpbXBvcnQgXCJjb21wb25lbnQvbG9hZGVyXCI7XHJcblxyXG4kbGVmdENvbFdpZHRoOiA1MzZweDtcclxuJHJpZ2h0Q29sV2lkdGg6IDM3NnB4O1xyXG5cclxuLmNvbCwgLmNvbCAqe1xyXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcclxufVxyXG5cclxuYm9keS5jb2wtcmVhZHl7XHJcbiAgLmNvbHtcclxuICAgICY6YWZ0ZXJ7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC5jb2wsIC5jb2wgKntcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgfVxyXG59XHJcblxyXG5ib2R5Om5vdCguY29sLXJlYWR5KXtcclxuICAuY29se1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4uY29se1xyXG4gIEBpbmNsdWRlIGxvYWRlci1pbnZlcnRlZDtcclxuICAmOmFmdGVye1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICB9XHJcbn1cclxuXHJcbi5sZWZ0LmNvbCB7XHJcbiAgZmxvYXQ6bGVmdDtcclxuICAubmFycm93LmJveHtcclxuICAgIG1heC13aWR0aDogJGxlZnRDb2xXaWR0aDtcclxuICB9XHJcbn1cclxuXHJcbi5yaWdodC5jb2wge1xyXG4gIGZsb2F0OmxlZnQ7XHJcbiAgd2lkdGg6ICRyaWdodENvbFdpZHRoO1xyXG59XHJcblxyXG4uYm94W2RhdGEtY29sLWR1YWw9XCJyaWdodFwiXSB7XHJcbiAgcGFkZGluZy10b3A6IDRweDtcclxufVxyXG5cclxuLy8gU2luZ2xlIGNvbCBsYXlvdXRcclxuYm9keS5jb2wtc2luZ2xle1xyXG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1zdHlsZXM7XHJcbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiB0YWJsZXQpIHtcclxuICAgIC5yaWdodC5jb2x7XHJcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyA4cHgpICFpbXBvcnRhbnQ7XHJcbiAgICAgIG1hcmdpbjogMCAtNHB4O1xyXG4gICAgICAuYm94IHtcclxuICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSAxNnB4KTtcclxuICAgICAgICBtYXJnaW46IDAgOHB4O1xyXG4gICAgICAgICY6bnRoLWNoaWxkKG9kZCl7XHJcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6bnRoLWNoaWxkKGV2ZW4pe1xyXG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBbZGF0YS1yb2xlPVwibGlzdHZpZXdcIl17XHJcbiAgICBtYXJnaW46IDE2cHggMCAwIDAgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5sZWZ0LmNvbCwgLnJpZ2h0LmNvbHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLy8gRHVhbCBjb2wgbGF5b3V0XHJcbmJvZHkuY29sLWR1YWx7XHJcbiAgLmxlZnQuY29se1xyXG4gICAgd2lkdGg6ICRsZWZ0Q29sV2lkdGg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6MTZweDtcclxuICB9XHJcbn1cclxuXHJcblxyXG4vLyBkZWZhdWx0IHNpbmdsZSBjb2x1bW4gb3JkZXI6IGF0IHRoZSBib3R0b21cclxuLmJveCB7XHJcbiAgb3JkZXI6IDEwMDtcclxufVxyXG5cclxuW2RhdGEtcm9sZT1cImxpc3R2aWV3XCJde1xyXG4gID5saXtcclxuICAgIHBhZGRpbmc6IDJweCAwO1xyXG4gIH1cclxufVxyXG4iLAoJCSIvLyBMb2FkaW5nIGFuaW1hdGlvblxuXG4kbG9hZGVyLWRlZmF1bHQtc2l6ZTogNTBweDtcbiRsb2FkZXItZGVmYXVsdC10aGlja25lc3M6IDVweDtcbiRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kOiB3aGl0ZTtcbiRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpO1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQ6IGJsYWNrO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQtaW52ZXJ0ZWQ6IHJnYmEoMCwwLDAsMC4yNSk7XG5cbkBtaXhpbiBsb2FkZXIoXG4gICRzaXplOiAkbG9hZGVyLWRlZmF1bHQtc2l6ZSxcbiAgJHRoaWNrbmVzczogJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzcyxcbiAgJGZvcmVncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kLFxuICAkYmFja2dyb3VuZDogJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmRcbil7XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgbWFyZ2luLWxlZnQ6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgYm9yZGVyLXJhZGl1czogJHNpemU7XG4gICAgYm9yZGVyOiAkdGhpY2tuZXNzIHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIGFuaW1hdGlvbjogbG9hZGluZyAxcyBlYXNlIGluZmluaXRlO1xuICB9XG4gIEBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxvYWRlci1pbnZlcnRlZChcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZFxuKXtcbiAgQGluY2x1ZGUgbG9hZGVyKFxuICAgICRzaXplOiAkc2l6ZSxcbiAgICAkdGhpY2tuZXNzOiAkdGhpY2tuZXNzLFxuICAgICRmb3JlZ3JvdW5kOiAkZm9yZWdyb3VuZCxcbiAgICAkYmFja2dyb3VuZDogJGJhY2tncm91bmRcbiAgKTtcbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogUHJvbW9zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5AaW1wb3J0IFwibG9hZGVyXCI7XG5cbi5wcm9tby1jb250YWluZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG5cbiAgQGltcG9ydCBcInNsaWNrX292ZXJyaWRlc1wiO1xuXG4gIC5zbGljay1saXN0e1xuICAgIG1hcmdpbjogMCAtOHB4O1xuICB9XG5cbiAgLnNsaWNrLXNsaWRle1xuICAgIG1hcmdpbjogMCA4cHg7XG4gIH1cblxuICAmOm5vdCgubG9hZGVkKSwgJjpub3QoLmRpc3BsYXllZCl7XG4gICAgQGluY2x1ZGUgbG9hZGVyKFxuICAgICAgICAgICAgJHNpemU6IDUwcHgsXG4gICAgICAgICAgICAkdGhpY2tuZXNzOiA1cHgsXG4gICAgICAgICAgICAkZm9yZWdyb3VuZDogYmxhY2ssXG4gICAgICAgICAgICAkYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjI1KVxuICAgICk7XG4gIH1cblxuICAmOm5vdCguZGlzcGxheWVkKXtcbiAgICAuc2xpY2stYXJyb3d7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgQGF0LXJvb3Qge1xuICAgIGJvZHk6bm90KC5jb2wtcmVhZHkpICN7Jn0sXG4gICAgI3smfTpub3QoLmxvYWRlZCl7XG4gICAgICAucHJvbW97XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAucHJvbW9ze1xuICAgIHBhZGRpbmc6IDhweCAwIDRweCAwO1xuICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IDM2NHB4KSB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgfVxuICAucHJvbW97XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAud3JhcHBlcntcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OTk5O1xuICAgIH1cbiAgICBpbWd7XG4gICAgICBAaW5jbHVkZSBib3hTaGFkb3c7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC50aXRsZSwgLm1lc3NhZ2V7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBoMiwgcHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAxcHggYmxhY2s7XG4gICAgICB9XG4gICAgfVxuICAgIC50aXRsZXtcbiAgICAgIHRvcDogMDtcbiAgICAgIGgye1xuICAgICAgICBmb250LXNpemU6IDE0cHQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZXNzYWdle1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgcHtcbiAgICAgICAgcGFkZGluZzogNHB4IDAgNHB4IDRweDtcbiAgICAgICAgZm9udC1zaXplOiAxMHB0O1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBTbGljayBDYXJvdXNlbCBkZWZhdWx0IHRoZW1lIG92ZXJyaWRlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4uc2xpY2stcHJldixcbi5zbGljay1uZXh0IHtcbiAgei1pbmRleDogMTtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgJjpiZWZvcmV7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxufVxuXG4uc2xpY2stcHJldiB7XG4gIGxlZnQ6IDE2cHg7XG59XG5cbi5zbGljay1wcmV2OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxmMTA0XCI7XG4gIGZvbnQ6IDQwcHgvMSAnRm9udEF3ZXNvbWUnO1xuICBwYWRkaW5nOiAwIDE2cHggMnB4IDEycHg7XG59XG5cbi5zbGljay1uZXh0IHtcbiAgcmlnaHQ6IDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uc2xpY2stbmV4dDpiZWZvcmUge1xuICBjb250ZW50OiBcIlxcZjEwNVwiO1xuICBmb250OiA0MHB4LzEgJ0ZvbnRBd2Vzb21lJztcbiAgcGFkZGluZzogMCAxMnB4IDJweCAxNnB4O1xufVxuXG4uc2xpY2stcHJldjpob3ZlcjpiZWZvcmUsXG4uc2xpY2stbmV4dDpob3ZlcjpiZWZvcmUge1xuICBjb2xvcjogIzdlN2U3ZTtcbiAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDAuNzU7XG4gIH1cbn0iLAoJCSIuYXBwLWZvcm1hdHMge1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC8vZGVza3RvcFxuICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICAuYXBwLWJ1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy90YWJsZXRcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIC50ZXh0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHBhZ2UpIHtcbiAgICAuaWNvbntcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5pY29uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cblxuICA+IGRpdi5zdG9yZS1saW5rIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuXG4gICAgLmlubmVye1xuICAgICAgQGluY2x1ZGUgY2VudHJlWDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiA5OCU7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMTJweCk7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoKXtcbiAgICAgICAgbWFyZ2luOiA4cHggMCAwIDA7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDRweCAwO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhYWFhO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHRhYmxldDdpbmNoLCAkdW50aWw6IHRhYmxldCkge1xuICAgICAgICBwYWRkaW5nOiA0cHggMCA4cHggMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGEge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pb3N7XG4gICAgICAuaWNvbntcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgICYuYW5kcm9pZHtcbiAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0KSB7XG4gICAgICAgIC5pY29uIGltZ3tcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMTJweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaWNvbntcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyNHB4ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlubmVyID4gZGl2IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG5cbiAgICAgICYuaWNvbiB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiA0cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7XG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYudGV4dCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxN3B4O1xuICAgICAgICBmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYXtcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYucXJ7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDE4cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDhweDtcblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGltZ3tcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMHB4O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmFwcC1idXR0b257XG4gICAgICAgIEBpbmNsdWRlIG1xcygkZnJvbTogdGFibGV0LCAkdW50aWw6IHBhZ2UpIHtcbiAgICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldCkge1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICAgICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICAgICAgICBtYXJnaW46IDEycHggMCAwIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLAoJCSIvKlxuICogUmVzcG9uc2l2ZSBzbGlkZXNob3cgd2lkZ2V0IHVzaW5nIFNsaWNrIGNhcm91c2VsXG4gKi9cblxuQGltcG9ydCBcInNsaWNrX292ZXJyaWRlc1wiO1xuQGltcG9ydCBcImxvYWRlclwiO1xuXG4uc2xpZGVzaG93IHtcbiAgbWFyZ2luOiAwIGF1dG8gMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgJjpub3QoLmluaXRpYWxpc2VkKXtcbiAgICAuc2xpZGV7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAmOmZpcnN0LWNoaWxke1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYubG9hZGluZ3tcbiAgICBAaW5jbHVkZSBsb2FkZXI7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAuY2FwdGlvbntcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuc2xpZGV7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAgICY6Zmlyc3QtY2hpbGQgLmNhcHRpb257XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIGltZ3tcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmluaXRpYWxpc2VkOm5vdCgubG9hZGluZyl7XG4gICAgLndyYXBwZXI6bm90KC5ldmFsdWF0aW5nKXtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgLmNhcHRpb24ge1xuICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnNsaWRlIHtcblxuICAgIGltZyB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxuICAgIC5jYXB0aW9uIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBcIkNvbWluZyBTb29uXCI7XG4gICAgICBjb2xvcjogI2RkZDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgZm9udC1zaXplOiAxNnB0O1xuICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB0O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRwdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8qKlxuKiBEaXNwbGF5IGEgYm90dG9tIHByb21vIGluIGEgbGlnaHQgZ3JlZW4gYm94XG4qL1xuXG5cbi5ib3R0b20tcHJvbW8ge1xuICAgIEBpbmNsdWRlIGxpZ2h0R3JlZW5Cb3g7XG4gICAgQGluY2x1ZGUgYm94U2hhZG93O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIHB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxufSIKCV0sCgkibmFtZXMiOiBbXSwKCSJtYXBwaW5ncyI6ICJBSUNBOztHQUVHO0FBV0g7O0dBRUc7QUVoQkg7O3lEQUV5RDtBTEl6RCxBQUFBLElBQUksQ0FBQTtFQUNGLFVBQVUsRUFBRSxPQUFPO0NBQ3BCOztBTVJEOztFQUVFO0FBRUYsQUFBQSxXQUFXLENBQUM7RUFDVixPQUFPLEVBQUUsWUFBWTtFQUNyQixRQUFRLEVBQUUsUUFBUTtFQUNsQixhQUFhLEVBQUUsR0FBRztFQUNsQixLQUFLLEVBQUUsSUFBSTtDQWtCWjs7QUF0QkQsQUFNRSxXQU5TLENBTVQsR0FBRyxDQUFDO0VBQ0YsUUFBUSxFQUFDLFFBQVE7RUFDakIsT0FBTyxFQUFFLEtBQUs7RUFDZCxLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJO0NBQ2I7O0FBWEgsQUFhRSxXQWJTLENBYVQsYUFBYSxDQUFDO0VBQ1osT0FBTyxFQUFDLEtBQUs7RUFDYixRQUFRLEVBQUUsUUFBUTtFQUNsQixJQUFJLEVBQUUsSUFBSTtFQUNWLEdBQUcsRUFBRSxJQUFJO0VBQ1QsS0FBSyxFQUFFLElBQUk7RUFD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 */