/*-----Responsive-----*/

/*-----Variables-----*/

/*-----use fonts-----*/

@font-face {
  font-family: "Powerful";
  src: url("/fonts/powerful/Powerful-Regular.eot");
  src: url("/fonts/powerful/Powerful-Regular.eot?#iefix") format("embedded-opentype"), url("/fonts/powerful/Powerful-Regular.woff2") format("woff2"), url("/fonts/powerful/Powerful-Regular.woff") format("woff"), url("/fonts/powerful/Powerful-Regular.svg#Powerful-Regular") format("svg");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Averta";
  src: url("/fonts/averta/Averta-Regular.eot");
  src: url("/fonts/averta/Averta-Regular.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Regular.woff2") format("woff2"), url("/fonts/averta/Averta-Regular.woff") format("woff"), url("/fonts/averta/Averta-Regular.svg#Averta-Regular") format("svg");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Averta Black";
  src: url("/fonts/averta/Averta-Black.eot");
  src: url("/fonts/averta/Averta-Black.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Black.woff2") format("woff2"), url("/fonts/averta/Averta-Black.woff") format("woff"), url("/fonts/averta/Averta-Black.svg#Averta-Black") format("svg");
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Averta Bold";
  src: url("/fonts/averta/Averta-Bold.eot");
  src: url("/fonts/averta/Averta-Bold.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Bold.woff2") format("woff2"), url("/fonts/averta/Averta-Bold.woff") format("woff"), url("/fonts/averta/Averta-Bold.svg#Averta-Bold") format("svg");
  font-weight: bold;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Averta Semibold";
  src: url("/fonts/averta/Averta-Semibold.eot");
  src: url("/fonts/averta/Averta-Semibold.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Semibold.woff2") format("woff2"), url("/fonts/averta/Averta-Semibold.woff") format("woff"), url("/fonts/averta/Averta-Semibold.svg#Averta-Semibold") format("svg");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Averta Extrabold";
  src: url("/fonts/averta/Averta-ExtraBold.eot");
  src: url("/fonts/averta/Averta-ExtraBold.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-ExtraBold.woff2") format("woff2"), url("/fonts/averta/Averta-ExtraBold.woff") format("woff"), url("/fonts/averta/Averta-ExtraBold.svg#Averta-ExtraBold") format("svg");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Averta Light";
  src: url("/fonts/averta/Averta-Light.eot");
  src: url("/fonts/averta/Averta-Light.eot?#iefix") format("embedded-opentype"), url("/fonts/averta/Averta-Light.woff2") format("woff2"), url("/fonts/averta/Averta-Light.woff") format("woff"), url("/fonts/averta/Averta-Light.svg#Averta-Light") format("svg");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

/* #### Generated By: http://www.cufonfonts.com #### */

@font-face {
  font-family: "Savoye LET Plain";
  font-style: normal;
  font-weight: normal;
  src: url("/fonts/SavoyeLETPlain.woff") format("woff");
}

main {
  overflow: hidden;
}

.slider .slides {
  list-style-type: none;
}

.slider .slides .flickity-slider {
  transform: none !important;
}

.slider .slides .slide {
  left: 0 !important;
  opacity: 0;
  transition: opacity 0.5s ease-in-out;
  z-index: -1;
}

.slider .slides .slide.is-selected {
  opacity: 1;
  z-index: 0;
}

.slider .slides:not(.flickity-enabled) li.imagebg:not(:first-child) {
  display: none;
}

.slider .slides .flickity-slider > li:not([class*=col-]) {
  width: 100%;
}

.slider .slides .flickity-prev-next-button {
  background: transparent;
}

.slider .slides .flickity-prev-next-button.previous {
  left: -2em;
}

.slider .slides .flickity-prev-next-button.next {
  right: -2em;
}

#home-banner .title {
  font-family: "Averta Extrabold";
  font-size: 2.9em;
}

@media (max-width: 767px) {
  #home-banner .title {
    font-size: 2em;
  }
}

#home-banner p {
  color: #e6e6e6;
}

@media (max-width: 767px) {
  #home-banner p {
    font-size: 0.85em;
  }
}

.sec-data-numbers {
  background-image: linear-gradient(to bottom right, #649400, #3d5a00);
  padding: 0;
}

.sec-data-numbers .sec-data-content {
  display: flex;
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-data-content {
    display: block;
  }
}

.sec-data-numbers .first-dt,
.sec-data-numbers .sec-dt {
  padding: 0.8em 0;
}

.sec-data-numbers .first-dt *,
.sec-data-numbers .sec-dt * {
  color: #ffffff;
}

.sec-data-numbers .first-dt {
  display: inline-flex;
  align-items: center;
  flex: 0 0 30%;
  padding-left: 13%;
  background-image: linear-gradient(to right, #a5202d, #dc3f53);
  transform-origin: top left;
  transform: skew(-18deg, 0deg);
  /* SKEW */
}

.sec-data-numbers .first-dt * {
  transform: skew(18deg);
  /* UNSKEW */
}

@media (max-width: 767px) {
  .sec-data-numbers .first-dt {
    display: flex;
    flex: 0 0 100%;
    padding-left: 5%;
    padding-right: 5%;
    justify-content: center;
    transform-origin: top left;
    transform: skew(0deg);
    /* SKEW */
  }

  .sec-data-numbers .first-dt * {
    transform: skew(0);
    /* UNSKEW */
  }
}

.sec-data-numbers .sec-dt {
  padding-left: 2em;
  padding-right: 2em;
  flex: 0 0 38%;
}

.sec-data-numbers .sec-dt .dt-numbers {
  position: relative;
  display: flex;
  align-items: center;
  flex: 0 0 20%;
  flex-wrap: wrap;
  flex-direction: row;
  justify-content: center;
}

.sec-data-numbers .sec-dt .dt-numbers .dt-img {
  flex: 0 0 20%;
  margin-right: 10px;
}

.sec-data-numbers .sec-dt .dt-numbers .dt-img img {
  width: 60%;
}

.sec-data-numbers .sec-dt .dt-numbers:after {
  content: "";
  position: absolute;
  display: block;
  width: 1px;
  z-index: 1;
  height: 100%;
  border: 1px solid #a7b486;
  right: -2em;
  transform: skew(-18deg, 0deg);
  /* SKEW */
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-dt .dt-numbers:after {
    display: none;
  }
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-dt .dt-numbers {
    justify-content: center;
  }
}

.sec-data-numbers .sec-dt:last-child .dt-numbers:after {
  content: none;
}

@media (max-width: 767px) {
  .sec-data-numbers .sec-dt {
    border-bottom: 1px solid #595d61;
  }
}

.gardeners-sect {
  padding-left: 2em;
  padding-right: 2em;
  flex: 0 0 30% !important;
}

.gardeners-sect .dt-img {
  flex: 0 0 20%;
  margin-right: 16px;
}

.gardeners-sect .dt-img img {
  width: 70% !important;
}

.feat-gardeners,
.feat-flowers {
  margin-bottom: 1em;
}

.feat-gardeners a,
.feat-flowers a {
  font-size: 13px;
}

.help-section {
  overflow: hidden;
}

.help-section .background-image-holder.help-bg-hand {
  background-size: cover !important;
  background-repeat: no-repeat !important;
  background-position: 0 50% !important;
}

.help-section .parg {
  padding: 4em;
  display: flex;
  height: 100%;
}

.help-section .parg .flickity-prev-next-button .arrow {
  fill: rgba(255, 255, 255, 0.27);
}

.help-section .home-dt-list .background-image-holder {
  transform-origin: bottom left;
  transform: skewX(-10deg);
  -ms-transform: skewX(-10deg);
  /* IE 9 */
  -webkit-transform: skewX(-10deg);
  /* Safari and Chrome */
}

.help-section .home-dt-list .container {
  padding: 2em;
  padding-right: 1em;
  padding-left: 12em;
}

.help-section .hand-dt {
  display: flex;
  align-items: center;
  margin-bottom: 2em;
}

.help-section .hand-dt .first {
  flex: 0 0 15%;
  margin-right: 26px;
}

@media (max-width: 767px) {
  .help-section .hand-dt .first {
    flex: 0 0 25%;
    margin-right: 26px;
  }
}

.help-section .hand-dt .second {
  flex: 0 0 80%;
}

@media (max-width: 767px) {
  .help-section .hand-dt .second {
    flex: 0 0 60%;
  }
}

.testimonial {
  position: relative;
  overflow: hidden;
}

.testimonial .testimonial-text {
  font-family: "Averta Light";
  color: #43474a;
  margin-bottom: 1em;
}

.testimonial h6 {
  color: #888e93;
}

.testimonial .testimonial-image {
  margin-bottom: 0.9em;
  width: 2.5em;
}

.floating-article {
  position: relative;
}

.floating-article .float {
  position: absolute;
  top: -8em;
}

.floating-article .float .flower-img {
  width: 35%;
}

.floating-article .float .card {
  border: 0;
  border-radius: 0;
}

.floating-article .articles-grid {
  position: absolute;
  left: 22em;
}

.resources-calendar a {
  text-transform: unset;
  text-decoration: unset;
}

.resources-calendar a:hover {
  color: #869822 !important;
}

.message-box {
  border: 0px !important;
  box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.1);
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvc2Fzcy9mcm9udGVuZC9ob21lLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL3Nhc3MvZnJvbnRlbmQvX2ZvbnRzLnNjc3MiLCJ3ZWJwYWNrOi8vLy4vcmVzb3VyY2VzL3Nhc3MvZnJvbnRlbmQvX3Jlc3BvbnNpdmUuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFHQTs7QUFHQTs7QUNMQTtFQUNJO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQTtDREdKOztBQ0RBO0VBQ0k7RUFDQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0NEQ0o7O0FDRUE7RUFDSTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7Q0RGSjs7QUNLQTtFQUNJO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQTtDRExKOztBQ1FBO0VBQ0k7RUFDQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0NEUko7O0FDV0E7RUFDSTtFQUNBO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7Q0RYSjs7QUNjQTtFQUNJO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQTtDRGRKOztBQ2dCQTs7QUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NEYko7O0FBcEVBO0VBQ0M7Q0F1RUQ7O0FBbkVDO0VBQ0M7Q0FzRUY7O0FBckVFO0VBQ0U7Q0F3RUo7O0FBdEVFO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7Q0F5RUg7O0FBeEVHO0VBQ0M7RUFDQTtDQTJFSjs7QUF2RUc7RUFDQztDQTBFSjs7QUF2RUU7RUFDRTtDQTBFSjs7QUF4RUU7RUFDQztDQTJFSDs7QUExRUc7RUFDQztDQTZFSjs7QUEzRUc7RUFDQztDQThFSjs7QUF2RUM7RUFDQztFQUNBO0NBMEVGOztBRWtiSTtFRjlmSDtJQUlFO0dBNkVEO0NBQ0Y7O0FBM0VDO0VBQ0M7Q0E4RUY7O0FFd2FJO0VGdmZIO0lBR0U7R0FpRkQ7Q0FDRjs7QUE3RUE7RUFDQztFQUNBO0NBZ0ZEOztBQTdFQztFQUNDO0NBZ0ZGOztBRXlaSTtFRjFlSDtJQUdFO0dBbUZEO0NBQ0Y7O0FBakZDOztFQUNDO0NBcUZGOztBQW5GRTs7RUFDQztDQXVGSDs7QUFwRkM7RUFDQztFQUNHO0VBQ0g7RUFDQTtFQUNBO0VBQ0U7RUFHQztFQUErQjtDQXdGcEM7O0FBdkZJO0VBRUM7RUFBd0I7Q0EwRjdCOztBRXVYSTtFRjdkSDtJQWVFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUdHO0lBQXVCO0dBNkYzQjs7RUE1Rkk7SUFDQztJQUFvQjtHQWdHekI7Q0FDRjs7QUE3RkM7RUFFQztFQUNHO0VBQ0E7Q0ErRkw7O0FBOUZFO0VBQ0M7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNHO0VBQ0E7Q0FpR047O0FBaEdNO0VBQ0M7RUFDQTtDQW1HUDs7QUFsR087RUFDQztDQXFHUjs7QUFsR007RUFDQztFQUNIO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRztFQUNBO0VBR0E7RUFBK0I7Q0FzR3RDOztBRTJUSTtFRjVhRTtJQWFFO0dBeUdOO0NBQ0Y7O0FFcVRJO0VGM2JGO0lBZ0NLO0dBMkdMO0NBQ0Y7O0FBdEdNO0VBQ0M7Q0F5R1A7O0FFMlNJO0VGaGNIO0lBZ0RLO0dBMEdKO0NBQ0Y7O0FBckdBO0VBQ0E7RUFDQTtFQUNBO0NBd0dBOztBQXRHQztFQUNDO0VBQ0E7Q0F5R0Y7O0FBeEdFO0VBQ0k7Q0EyR047O0FBdEdBOztFQUVDO0NBeUdEOztBQXhHQzs7RUFDQztDQTRHRjs7QUF6R0E7RUFDRTtDQTRHRjs7QUExR0U7RUFDQztFQUNHO0VBQ0E7Q0E2R047O0FBMUdDO0VBQ0M7RUFDRztFQUNBO0NBNkdMOztBQTVHSztFQUNDO0NBK0dOOztBQTFHRTtFQUNDO0VBQ0E7RUFDRztFQUE4QjtFQUM5QjtFQUFrQztDQStHeEM7O0FBNUdFO0VBQ0M7RUFDQTtFQUNHO0NBK0dOOztBQTVHQztFQUNDO0VBQ0E7RUFDQTtDQStHRjs7QUE5R0U7RUFDQztFQUNBO0NBaUhIOztBRThOSTtFRmpWRjtJQUlFO0lBQ0E7R0FvSEY7Q0FDRjs7QUFsSEU7RUFDQztDQXFISDs7QUVtTkk7RUZ6VUY7SUFHRTtHQXdIRjtDQUNGOztBQWxIQTtFQUNDO0VBQ0U7Q0FxSEg7O0FBcEhHO0VBQ0M7RUFDQTtFQUNBO0NBdUhKOztBQXJIRztFQUNDO0NBd0hKOztBQXRIQztFQUNDO0VBQ0E7Q0F5SEY7O0FBckhBO0VBQ0M7Q0F3SEQ7O0FBdkhDO0VBQ0M7RUFDQTtDQTBIRjs7QUF6SEU7RUFDQztDQTRISDs7QUExSEU7RUFDQztFQUNBO0NBNkhIOztBQTFIQztFQUNDO0VBQ0c7Q0E2SEw7O0FBdkhDO0VBQ0c7RUFDQTtDQTBISjs7QUF2SEM7RUFDQztDQTBIRjs7QUF0SEE7RUFDQztFQUNBO0NBeUhEIiwiZmlsZSI6ImNzcy9ob21lLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS1SZXNwb25zaXZlLS0tLS0qL1xuQGltcG9ydCAncmVzcG9uc2l2ZSc7XG5cbi8qLS0tLS1WYXJpYWJsZXMtLS0tLSovXG5AaW1wb3J0ICd2YXJpYWJsZXMnO1xuXG4vKi0tLS0tdXNlIGZvbnRzLS0tLS0qL1xuQGltcG9ydCBcImZvbnRzXCI7XG5tYWluIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xufVxuXG4uc2xpZGVyIHtcblx0LnNsaWRlc3tcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cdFx0LmZsaWNraXR5LXNsaWRlciB7XG5cdFx0ICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcblx0XHR9XG5cdFx0LnNsaWRlIHtcblx0XHRcdGxlZnQ6IDAgIWltcG9ydGFudDtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQ7XG5cdFx0XHR6LWluZGV4OiAtMTtcblx0XHRcdCYuaXMtc2VsZWN0ZWQge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0XHR6LWluZGV4OiAwXG5cdFx0XHR9XG5cdFx0fVxuXHRcdCY6bm90KC5mbGlja2l0eS1lbmFibGVkKSB7XG5cdFx0XHRsaS5pbWFnZWJnOm5vdCg6Zmlyc3QtY2hpbGQpIHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0LmZsaWNraXR5LXNsaWRlciA+IGxpOm5vdChbY2xhc3MqPSdjb2wtJ10pIHtcblx0XHQgIHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0XHQuZmxpY2tpdHktcHJldi1uZXh0LWJ1dHRvbiB7XG5cdFx0XHRiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuXHRcdFx0Ji5wcmV2aW91cyB7XG5cdFx0XHRcdGxlZnQ6IC0yZW07XG5cdFx0XHR9XG5cdFx0XHQmLm5leHQge1xuXHRcdFx0XHRyaWdodDogLTJlbTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuI2hvbWUtYmFubmVyIHtcblx0LnRpdGxlIHtcblx0XHRmb250LWZhbWlseTogJGZvbnQtZXh0cmFib2xkO1xuXHRcdGZvbnQtc2l6ZTogMi45ZW07XG5cdFx0QGluY2x1ZGUgbWVkaWEoJHhzKXtcblx0XHRcdGZvbnQtc2l6ZTogMmVtO1xuXHRcdH1cblx0fVxuXHRwIHtcblx0XHRjb2xvcjojZTZlNmU2O1xuXHRcdEBpbmNsdWRlIG1lZGlhKCR4cyl7XG5cdFx0XHRmb250LXNpemU6IDAuODVlbTtcblx0XHR9XG5cdH1cbn1cblxuLnNlYy1kYXRhLW51bWJlcnMge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tIHJpZ2h0LCByZ2JhKDEwMCwxNDgsMCwxKSwgcmdiYSg2MSw5MCwwLDEpKTtcblx0cGFkZGluZzowO1xuXHQvLyBwYWRkaW5nLXRvcDozZW07XG5cdC8vIHBhZGRpbmctYm90dG9tOjNlbTtcblx0LnNlYy1kYXRhLWNvbnRlbnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJHhzKXtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0fVxuXHQuZmlyc3QtZHQsIC5zZWMtZHR7XG5cdFx0cGFkZGluZzogMC44ZW0gMDtcblx0XHRcblx0XHQqIHtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cdC5maXJzdC1kdCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXg6MCAwIDMwJTtcblx0XHRwYWRkaW5nLWxlZnQ6IDEzJTtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMTY1LDMyLDQ1LDEpLCByZ2JhKDIyMCw2Myw4MywxKSk7XG4gIFx0XHR0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcblx0ICAgIC1tcy10cmFuc2Zvcm06IHNrZXcoLTE4ZGVnLCAwZGVnKTtcblx0ICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC0xOGRlZywgMGRlZyk7XG5cdCAgICB0cmFuc2Zvcm06IHNrZXcoLTE4ZGVnLCAwZGVnKTsgLyogU0tFVyAqL1xuICBcdFx0KiB7XG4gIFx0XHRcdFxuICBcdFx0XHR0cmFuc2Zvcm06IHNrZXcoMThkZWcpOyAvKiBVTlNLRVcgKi9cbiAgXHRcdH1cbiAgXHRcdEBpbmNsdWRlIG1lZGlhKCR4cyl7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleDowIDAgMTAwJTtcblx0XHRcdHBhZGRpbmctbGVmdDogNSU7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiA1JTtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0dHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG5cdFx0ICAgIC1tcy10cmFuc2Zvcm06IHNrZXcoMGRlZyk7XG5cdFx0ICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KDBkZWcpO1xuXHRcdCAgICB0cmFuc2Zvcm06IHNrZXcoMGRlZyk7IC8qIFNLRVcgKi9cblx0XHQgICAgKiB7XG5cdFx0ICAgIFx0dHJhbnNmb3JtOiBza2V3KDApOyAvKiBVTlNLRVcgKi9cblx0XHQgICAgfVxuXHRcdH1cblx0fVxuXHQuc2VjLWR0IHtcblxuXHRcdHBhZGRpbmctbGVmdDoyZW07XG4gICAgXHRwYWRkaW5nLXJpZ2h0OiAyZW07XG4gICAgXHRmbGV4OiAwIDAgMzglO1xuXHRcdC5kdC1udW1iZXJzIHtcblx0XHRcdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOmNlbnRlcjtcblx0XHRcdGZsZXg6MCAwIDIwJTtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0ICAgIFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0ICAgIFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdCAgICBcdC5kdC1pbWcge1xuXHQgICAgXHRcdGZsZXg6IDAgMCAyMCU7XG5cdCAgICBcdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHQgICAgXHRcdGltZyB7XG5cdFx0ICAgIFx0XHR3aWR0aDogNjAlO1xuXHRcdCAgICBcdH1cblx0ICAgIFx0fVxuXHQgICAgXHQmOmFmdGVyIHtcblx0ICAgIFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0d2lkdGg6IDFweDtcblx0XHRcdFx0ei1pbmRleDogMTtcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuICAgIFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNhN2I0ODY7XG4gICAgXHRcdFx0cmlnaHQ6IC0yZW07XG4gICAgXHRcdFx0LW1zLXRyYW5zZm9ybTogc2tldygtMThkZWcsIDBkZWcpO1xuXHQgICAgXHRcdC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC0xOGRlZywgMGRlZyk7XG5cdCAgICBcdFx0dHJhbnNmb3JtOiBza2V3KC0xOGRlZywgMGRlZyk7IC8qIFNLRVcgKi9cblx0ICAgIFx0XHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuXHQgICAgXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0ICAgIFx0XHR9XHRcdFx0XHRcblx0ICAgIFx0fVxuXHQgICAgXHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuXHQgICAgXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHQgICAgXHR9XG5cblx0XHR9XG5cdFx0XG4gICAgXHQmOmxhc3QtY2hpbGR7XG4gICAgXHRcdC5kdC1udW1iZXJzOmFmdGVyIHtcblx0ICAgIFx0XHRjb250ZW50OiBub25lOyBcbiAgICBcdFx0fVxuICAgIFx0fVxuICAgIFx0QGluY2x1ZGUgbWVkaWEoJHhzKXtcbiAgICBcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM1OTVkNjE7XG4gICAgXHR9XG4gICAgXHRcblx0fVxufVxuXG4uZ2FyZGVuZXJzLXNlY3Qge1xucGFkZGluZy1sZWZ0OjJlbTtcbnBhZGRpbmctcmlnaHQ6IDJlbTtcbmZsZXg6IDAgMCAzMCUgIWltcG9ydGFudDtcblxuXHQuZHQtaW1nIHtcblx0XHRmbGV4OiAwIDAgMjAlO1xuXHRcdG1hcmdpbi1yaWdodDogMTZweDtcblx0XHRpbWcge1xuICAgIFx0XHR3aWR0aDogNzAlICFpbXBvcnRhbnQ7XG4gICAgXHR9XG5cdH1cbn1cblxuLmZlYXQtZ2FyZGVuZXJzLFxuLmZlYXQtZmxvd2VycyB7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcblx0YSB7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHR9XG59XG4uaGVscC1zZWN0aW9ue1xuXHQgb3ZlcmZsb3c6IGhpZGRlbjtcblx0LmJhY2tncm91bmQtaW1hZ2UtaG9sZGVye1xuXHRcdCYuaGVscC1iZy1oYW5ke1xuXHRcdFx0YmFja2dyb3VuZC1zaXplOiBjb3ZlciAhaW1wb3J0YW50O1xuXHRcdCAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XG5cdFx0ICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgNTAlICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cdC5wYXJnIHtcblx0XHRwYWRkaW5nOiA0ZW07XG5cdCAgICBkaXNwbGF5OiBmbGV4O1xuXHQgICAgaGVpZ2h0OiAxMDAlO1xuXHQgICAgLmZsaWNraXR5LXByZXYtbmV4dC1idXR0b24gLmFycm93IHtcblx0ICAgIFx0ZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LDAuMjcpO1xuXHQgICAgfVxuXG5cdH1cblx0LmhvbWUtZHQtbGlzdCB7XG5cdFx0LmJhY2tncm91bmQtaW1hZ2UtaG9sZGVye1xuXHRcdFx0dHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7XG5cdFx0XHR0cmFuc2Zvcm06IHNrZXdYKC0xMGRlZyk7IFxuXHRcdCAgICAtbXMtdHJhbnNmb3JtOiBza2V3WCgtMTBkZWcpOyAvKiBJRSA5ICovXG5cdFx0ICAgIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3WCgtMTBkZWcpOyAvKiBTYWZhcmkgYW5kIENocm9tZSAqL1xuXHRcdCAgIFxuXHRcdH1cblx0XHQuY29udGFpbmVyIHtcblx0XHRcdHBhZGRpbmc6IDJlbTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDFlbTtcbiAgICBcdFx0cGFkZGluZy1sZWZ0OiAxMmVtO1xuXHRcdH1cblx0fVxuXHQuaGFuZC1kdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczpjZW50ZXI7XG5cdFx0bWFyZ2luLWJvdHRvbTogMmVtO1xuXHRcdC5maXJzdCB7XG5cdFx0XHRmbGV4OiAwIDAgMTUlO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyNnB4O1xuXHRcdFx0QGluY2x1ZGUgbWVkaWEoJHhzKXtcblx0XHRcdFx0ZmxleDogMCAwIDI1JTtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyNnB4O1xuXHRcdFx0fVxuXHRcdH1cblx0XHQuc2Vjb25kIHtcblx0XHRcdGZsZXg6IDAgMCA4MCU7XG5cdFx0XHRAaW5jbHVkZSBtZWRpYSgkeHMpe1xuXHRcdFx0XHRmbGV4OiAwIDAgNjAlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5cbi50ZXN0aW1vbmlhbCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgXHRvdmVyZmxvdzogaGlkZGVuO1xuICBcdC50ZXN0aW1vbmlhbC10ZXh0IHtcbiAgXHRcdGZvbnQtZmFtaWx5OiAkZm9udC1ib2R5O1xuICBcdFx0Y29sb3I6ICM0MzQ3NGE7XG4gIFx0XHRtYXJnaW4tYm90dG9tOiAxZW07XG4gIFx0fVxuICBcdGg2e1xuICBcdFx0Y29sb3I6ICM4ODhlOTM7XG4gIFx0fVxuXHQudGVzdGltb25pYWwtaW1hZ2Uge1xuXHRcdG1hcmdpbi1ib3R0b206IDAuOWVtO1xuXHRcdHdpZHRoOiAyLjVlbTtcblx0fVxufVxuXG4uZmxvYXRpbmctYXJ0aWNsZSB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHQuZmxvYXQge1xuXHRcdHBvc2l0aW9uOmFic29sdXRlO1xuXHRcdHRvcDogLThlbTtcblx0XHQuZmxvd2VyLWltZyB7XG5cdFx0XHR3aWR0aDogMzUlO1xuXHRcdH1cblx0XHQuY2FyZCB7XG5cdFx0XHRib3JkZXI6MDtcblx0XHRcdGJvcmRlci1yYWRpdXM6MDtcblx0XHR9XG5cdH1cblx0LmFydGljbGVzLWdyaWQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBcdGxlZnQ6IDIyZW07XG5cdH1cbn1cblxuLnJlc291cmNlcy1jYWxlbmRhciB7XG5cblx0YXtcbiAgXHRcdHRleHQtdHJhbnNmb3JtOiB1bnNldDtcbiAgXHRcdHRleHQtZGVjb3JhdGlvbjogdW5zZXQ7XG5cdH1cblxuXHRhOmhvdmVyIHtcblx0XHRjb2xvcjogJHNlY29uZGFyeS0yICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLm1lc3NhZ2UtYm94IHtcblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogMCAxcHggMjVweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cbiIsIi8vIEZvbnRzXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ1Bvd2VyZnVsJztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL3Bvd2VyZnVsL1Bvd2VyZnVsLVJlZ3VsYXIuZW90Jyk7XG4gICAgc3JjOiB1cmwoJy9mb250cy9wb3dlcmZ1bC9Qb3dlcmZ1bC1SZWd1bGFyLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL3Bvd2VyZnVsL1Bvd2VyZnVsLVJlZ3VsYXIud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL3Bvd2VyZnVsL1Bvd2VyZnVsLVJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICB1cmwoJy9mb250cy9wb3dlcmZ1bC9Qb3dlcmZ1bC1SZWd1bGFyLnN2ZyNQb3dlcmZ1bC1SZWd1bGFyJykgZm9ybWF0KCdzdmcnKTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0F2ZXJ0YSc7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVJlZ3VsYXIuZW90Jyk7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVJlZ3VsYXIuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1SZWd1bGFyLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVJlZ3VsYXIuc3ZnI0F2ZXJ0YS1SZWd1bGFyJykgZm9ybWF0KCdzdmcnKTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnQXZlcnRhIEJsYWNrJztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQmxhY2suZW90Jyk7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJsYWNrLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQmxhY2sud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtQmxhY2sud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJsYWNrLnN2ZyNBdmVydGEtQmxhY2snKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdBdmVydGEgQm9sZCc7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJvbGQuZW90Jyk7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJvbGQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1Cb2xkLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJvbGQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUJvbGQuc3ZnI0F2ZXJ0YS1Cb2xkJykgZm9ybWF0KCdzdmcnKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0F2ZXJ0YSBTZW1pYm9sZCc7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVNlbWlib2xkLmVvdCcpO1xuICAgIHNyYzogdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1TZW1pYm9sZC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVNlbWlib2xkLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLVNlbWlib2xkLndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgdXJsKCcvZm9udHMvYXZlcnRhL0F2ZXJ0YS1TZW1pYm9sZC5zdmcjQXZlcnRhLVNlbWlib2xkJykgZm9ybWF0KCdzdmcnKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnQXZlcnRhIEV4dHJhYm9sZCc7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUV4dHJhQm9sZC5lb3QnKTtcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtRXh0cmFCb2xkLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtRXh0cmFCb2xkLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUV4dHJhQm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtRXh0cmFCb2xkLnN2ZyNBdmVydGEtRXh0cmFCb2xkJykgZm9ybWF0KCdzdmcnKTtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnQXZlcnRhIExpZ2h0JztcbiAgICBzcmM6IHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtTGlnaHQuZW90Jyk7XG4gICAgc3JjOiB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUxpZ2h0LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtTGlnaHQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICAgIHVybCgnL2ZvbnRzL2F2ZXJ0YS9BdmVydGEtTGlnaHQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgICB1cmwoJy9mb250cy9hdmVydGEvQXZlcnRhLUxpZ2h0LnN2ZyNBdmVydGEtTGlnaHQnKSBmb3JtYXQoJ3N2ZycpO1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cbi8qICMjIyMgR2VuZXJhdGVkIEJ5OiBodHRwOi8vd3d3LmN1Zm9uZm9udHMuY29tICMjIyMgKi9cblxuICAgIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnU2F2b3llIExFVCBQbGFpbic7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgc3JjOiB1cmwoJy9mb250cy9TYXZveWVMRVRQbGFpbi53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgfSIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8gICAgIF8gICAgICAgICAgICBfICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAgICAgXyBfXG4vLyAgICAoXykgICAgICAgICAgfCB8ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF8pXG4vLyAgICAgXyBfIF9fICAgX19ffCB8XyAgIF8gIF9ffCB8IF9fXyAgIF8gX18gX19fICAgX19fICBfX3wgfF8gIF9fIF9cbi8vICAgIHwgfCAnXyBcXCAvIF9ffCB8IHwgfCB8LyBfYCB8LyBfIFxcIHwgJ18gYCBfIFxcIC8gXyBcXC8gX2AgfCB8LyBfYCB8XG4vLyAgICB8IHwgfCB8IHwgKF9ffCB8IHxffCB8IChffCB8ICBfXy8gfCB8IHwgfCB8IHwgIF9fLyAoX3wgfCB8IChffCB8XG4vLyAgICB8X3xffCB8X3xcXF9fX3xffFxcX18sX3xcXF9fLF98XFxfX198IHxffCB8X3wgfF98XFxfX198XFxfXyxffF98XFxfXyxffFxuLy9cbi8vICAgICAgU2ltcGxlLCBlbGVnYW50IGFuZCBtYWludGFpbmFibGUgbWVkaWEgcXVlcmllcyBpbiBTYXNzXG4vLyAgICAgICAgICAgICAgICAgICAgICAgIHYxLjQuOVxuLy9cbi8vICAgICAgICAgICAgICAgIGh0dHA6Ly9pbmNsdWRlLW1lZGlhLmNvbVxuLy9cbi8vICAgICAgICAgQXV0aG9yczogRWR1YXJkbyBCb3VjYXMgKEBlZHVhcmRvYm91Y2FzKVxuLy8gICAgICAgICAgICAgICAgICBIdWdvIEdpcmF1ZGVsIChAaHVnb2dpcmF1ZGVsKVxuLy9cbi8vICAgICAgVGhpcyBwcm9qZWN0IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIGxpY2Vuc2VcblxuXG4vLy8vXG4vLy8gaW5jbHVkZS1tZWRpYSBsaWJyYXJ5IHB1YmxpYyBjb25maWd1cmF0aW9uXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2YgZ2xvYmFsIGJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBicmVha3BvaW50IHdpdGggdGhlIGxhYmVsIGBwaG9uZWBcbi8vLyAgJGJyZWFrcG9pbnRzOiAoJ3Bob25lJzogMzIwcHgpO1xuLy8vXG4kYnJlYWtwb2ludHM6IChcbiAgJ3Bob25lJzogMzIwcHgsXG4gICd0YWJsZXQnOiA3NjhweCxcbiAgJ2Rlc2t0b3AnOiAxMDI0cHhcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gQ3JlYXRlcyBhIGxpc3Qgb2Ygc3RhdGljIGV4cHJlc3Npb25zIG9yIG1lZGlhIHR5cGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHNpbmdsZSBtZWRpYSB0eXBlIChzY3JlZW4pXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nOiAnc2NyZWVuJyk7XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gQ3JlYXRlcyBhIHN0YXRpYyBleHByZXNzaW9uIHdpdGggbG9naWNhbCBkaXNqdW5jdGlvbiAoT1Igb3BlcmF0b3IpXG4vLy8gICRtZWRpYS1leHByZXNzaW9uczogKFxuLy8vICAgICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJ1xuLy8vICApO1xuLy8vXG4kbWVkaWEtZXhwcmVzc2lvbnM6IChcbiAgJ3NjcmVlbic6ICdzY3JlZW4nLFxuICAncHJpbnQnOiAncHJpbnQnLFxuICAnaGFuZGhlbGQnOiAnaGFuZGhlbGQnLFxuICAnbGFuZHNjYXBlJzogJyhvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdwb3J0cmFpdCc6ICcob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICdyZXRpbmEyeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KScsXG4gICdyZXRpbmEzeCc6ICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzKSwgKG1pbi1yZXNvbHV0aW9uOiAzNTBkcGkpLCAobWluLXJlc29sdXRpb246IDNkcHB4KSdcbikgIWRlZmF1bHQ7XG5cblxuLy8vXG4vLy8gRGVmaW5lcyBhIG51bWJlciB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gZWFjaCB1bml0IHdoZW4gZGVjbGFyaW5nIGJyZWFrcG9pbnRzIHdpdGggZXhjbHVzaXZlIGludGVydmFsc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciBwaXhlbHMgaXMgZGVmaW5lZCBhcyBgMWAgYnkgZGVmYXVsdFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPjEyOHB4Jykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAxMjlweCkge31cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBJbnRlcnZhbCBmb3IgZW1zIGlzIGRlZmluZWQgYXMgYDAuMDFgIGJ5IGRlZmF1bHRcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yMGVtJykge31cbi8vL1xuLy8vICAvKiBHZW5lcmF0ZXM6ICovXG4vLy8gIEBtZWRpYSAobWluLXdpZHRoOiAyMC4wMWVtKSB7fVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEludGVydmFsIGZvciByZW1zIGlzIGRlZmluZWQgYXMgYDAuMWAgYnkgZGVmYXVsdCwgdG8gYmUgdXNlZCB3aXRoIGBmb250LXNpemU6IDYyLjUlO2Bcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz4yLjByZW0nKSB7fVxuLy8vXG4vLy8gIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IDIuMXJlbSkge31cbi8vL1xuJHVuaXQtaW50ZXJ2YWxzOiAoXG4gICdweCc6IDEsXG4gICdlbSc6IDAuMDEsXG4gICdyZW0nOiAwLjEsXG4gICcnOiAwXG4pICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBEZWZpbmVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllcyBpcyBhdmFpbGFibGUsIHVzZWZ1bCBmb3IgY3JlYXRpbmcgc2VwYXJhdGUgc3R5bGVzaGVldHNcbi8vLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IG1lZGlhIHF1ZXJpZXMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRGlzYWJsZXMgc3VwcG9ydCBmb3IgbWVkaWEgcXVlcmllc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbiRpbS1tZWRpYS1zdXBwb3J0OiB0cnVlICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIGJyZWFrcG9pbnQgdG8gZW11bGF0ZSB3aGVuIHN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgaXMgZGlzYWJsZWQuIE1lZGlhIHF1ZXJpZXMgdGhhdCBzdGFydCBhdCBvclxuLy8vIGludGVyY2VwdCB0aGUgYnJlYWtwb2ludCB3aWxsIGJlIGRpc3BsYXllZCwgYW55IG90aGVycyB3aWxsIGJlIGlnbm9yZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludFxuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogR2VuZXJhdGVzOiAqL1xuLy8vICAuZm9vIHtcbi8vLyAgICBjb2xvcjogdG9tYXRvO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIE5PVCBzaG93IGJlY2F1c2UgaXQgZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBkZXNrdG9wIGJyZWFrcG9pbnRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ3RhYmxldCc7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PWRlc2t0b3AnKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIC8qIE5vIG91dHB1dCAqL1xuLy8vXG4kaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnICFkZWZhdWx0O1xuXG4vLy9cbi8vLyBTZWxlY3RzIHdoaWNoIG1lZGlhIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIGFuIGV4cHJlc3Npb24gZm9yIGl0IHRvIGJlIHVzZWQgd2hlbiBtZWRpYSBxdWVyaWVzXG4vLy8gYXJlIG5vdCBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVGhpcyBtZWRpYSBxdWVyeSB3aWxsIHNob3cgYmVjYXVzZSBpdCBpbnRlcmNlcHRzIHRoZSBzdGF0aWMgYnJlYWtwb2ludCBhbmQgY29udGFpbnMgb25seSBhY2NlcHRlZCBtZWRpYSBleHByZXNzaW9uc1xuLy8vICAkaW0tbWVkaWEtc3VwcG9ydDogZmFsc2U7XG4vLy8gICRpbS1uby1tZWRpYS1icmVha3BvaW50OiAnZGVza3RvcCc7XG4vLy8gICRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nKTtcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49dGFibGV0JywgJ3NjcmVlbicpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgIC8qIEdlbmVyYXRlczogKi9cbi8vLyAgIC5mb28ge1xuLy8vICAgICBjb2xvcjogdG9tYXRvO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFRoaXMgbWVkaWEgcXVlcnkgd2lsbCBOT1Qgc2hvdyBiZWNhdXNlIGl0IGludGVyY2VwdHMgdGhlIHN0YXRpYyBicmVha3BvaW50IGJ1dCBjb250YWlucyBhIG1lZGlhIGV4cHJlc3Npb24gdGhhdCBpcyBub3QgYWNjZXB0ZWRcbi8vLyAgJGltLW1lZGlhLXN1cHBvcnQ6IGZhbHNlO1xuLy8vICAkaW0tbm8tbWVkaWEtYnJlYWtwb2ludDogJ2Rlc2t0b3AnO1xuLy8vICAkaW0tbm8tbWVkaWEtZXhwcmVzc2lvbnM6ICgnc2NyZWVuJyk7XG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+PXRhYmxldCcsICdyZXRpbmEyeCcpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIGNvbG9yOiB0b21hdG87XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyAgLyogTm8gb3V0cHV0ICovXG4vLy9cbiRpbS1uby1tZWRpYS1leHByZXNzaW9uczogKCdzY3JlZW4nLCAncG9ydHJhaXQnLCAnbGFuZHNjYXBlJykgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBDcm9zcy1lbmdpbmUgbG9nZ2luZyBlbmdpbmVcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBMb2cgYSBtZXNzYWdlIGVpdGhlciB3aXRoIGBAZXJyb3JgIGlmIHN1cHBvcnRlZFxuLy8vIGVsc2Ugd2l0aCBgQHdhcm5gLCB1c2luZyBgZmVhdHVyZS1leGlzdHMoJ2F0LWVycm9yJylgXG4vLy8gdG8gZGV0ZWN0IHN1cHBvcnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AZnVuY3Rpb24gaW0tbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBmZWF0dXJlLWV4aXN0cygnYXQtZXJyb3InKSB7XG4gICAgQGVycm9yICRtZXNzYWdlO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAkbWVzc2FnZTtcbiAgICAkXzogbm9vcCgpO1xuICB9XG5cbiAgQHJldHVybiAkbWVzc2FnZTtcbn1cblxuXG4vLy9cbi8vLyBXcmFwcGVyIG1peGluIGZvciB0aGUgbG9nIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggYSBtb3JlIGZyaWVuZGx5XG4vLy8gQVBJIHRoYW4gYEBpZiBpbS1sb2coJy4uJykge31gIG9yIGAkXzogaW0tbG9nKCcuLicpYC4gQmFzaWNhbGx5LCB1c2UgdGhlIGZ1bmN0aW9uXG4vLy8gd2l0aGluIGZ1bmN0aW9ucyBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBpbmNsdWRlIGEgbWl4aW4gaW4gYSBmdW5jdGlvblxuLy8vIGFuZCB1c2UgdGhlIG1peGluIGV2ZXJ5d2hlcmUgZWxzZSBiZWNhdXNlIGl0J3MgbXVjaCBtb3JlIGVsZWdhbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1lc3NhZ2UgLSBNZXNzYWdlIHRvIGxvZ1xuLy8vXG5AbWl4aW4gbG9nKCRtZXNzYWdlKSB7XG4gIEBpZiBpbS1sb2coJG1lc3NhZ2UpIHt9XG59XG5cblxuLy8vXG4vLy8gRnVuY3Rpb24gd2l0aCBubyBgQHJldHVybmAgY2FsbGVkIG5leHQgdG8gYEB3YXJuYCBpbiBTYXNzIDMuM1xuLy8vIHRvIHRyaWdnZXIgYSBjb21waWxpbmcgZXJyb3IgYW5kIHN0b3AgdGhlIHByb2Nlc3MuXG4vLy9cbkBmdW5jdGlvbiBub29wKCkge31cblxuLy8vXG4vLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGEgbGlzdCBvZiBjb25kaXRpb25zIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBzdGF0aWMgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uZGl0aW9ucyBhcmUgaW50ZXJjZXB0ZWQgYnkgdGhlIHN0YXRpYyBicmVha3BvaW50XG4vLy9cbkBmdW5jdGlvbiBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSB7XG4gICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJGltLW5vLW1lZGlhLWJyZWFrcG9pbnQpO1xuXG4gIEBpZiBub3QgJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUge1xuICAgIEBpZiBpbS1sb2coJ2AjeyRpbS1uby1tZWRpYS1icmVha3BvaW50fWAgaXMgbm90IGEgdmFsaWQgYnJlYWtwb2ludC4nKSB7fVxuICB9XG5cbiAgQGVhY2ggJGNvbmRpdGlvbiBpbiAkY29uZGl0aW9ucyB7XG4gICAgQGlmIG5vdCBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRjb25kaXRpb24pIHtcbiAgICAgICRvcGVyYXRvcjogZ2V0LWV4cHJlc3Npb24tb3BlcmF0b3IoJGNvbmRpdGlvbik7XG4gICAgICAkcHJlZml4OiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKTtcbiAgICAgICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGNvbmRpdGlvbiwgJG9wZXJhdG9yKTtcblxuICAgICAgQGlmICgkcHJlZml4ID09ICdtYXgnIGFuZCAkdmFsdWUgPD0gJG5vLW1lZGlhLWJyZWFrcG9pbnQtdmFsdWUpIG9yXG4gICAgICAgICAgKCRwcmVmaXggPT0gJ21pbicgYW5kICR2YWx1ZSA+ICRuby1tZWRpYS1icmVha3BvaW50LXZhbHVlKSB7XG4gICAgICAgIEByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiBub3QgaW5kZXgoJGltLW5vLW1lZGlhLWV4cHJlc3Npb25zLCAkY29uZGl0aW9uKSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vL1xuLy8vIFBhcnNpbmcgZW5naW5lXG4vLy8gQGF1dGhvciBIdWdvIEdpcmF1ZGVsXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8vXG5cblxuLy8vXG4vLy8gR2V0IG9wZXJhdG9yIG9mIGFuIGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gZXh0cmFjdCBvcGVyYXRvciBmcm9tXG4vLy9cbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gQW55IG9mIGA+PWAsIGA+YCwgYDw9YCwgYDxgLCBg4omlYCwgYOKJpGBcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLW9wZXJhdG9yKCRleHByZXNzaW9uKSB7XG4gIEBlYWNoICRvcGVyYXRvciBpbiAoJz49JywgJz4nLCAnPD0nLCAnPCcsICfiiaUnLCAn4omkJykge1xuICAgIEBpZiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAgICAgQHJldHVybiAkb3BlcmF0b3I7XG4gICAgfVxuICB9XG5cbiAgLy8gSXQgaXMgbm90IHBvc3NpYmxlIHRvIGluY2x1ZGUgYSBtaXhpbiBpbnNpZGUgYSBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0b1xuICAvLyByZWx5IG9uIHRoZSBgaW0tbG9nKC4uKWAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIGBsb2coLi4pYCBtaXhpbi4gQmVjYXVzZVxuICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgLy8gYSBkdW1teSB2YXJpYWJsZSwgc3VjaCBhcyBgJF9gLiBJZiBhbnlib2R5IGV2ZXIgcmFpc2UgYSBzY29waW5nIGlzc3VlIHdpdGhcbiAgLy8gU2FzcyAzLjMsIGNoYW5nZSB0aGlzIGxpbmUgaW4gYEBpZiBpbS1sb2coLi4pIHt9YCBpbnN0ZWFkLlxuICAkXzogaW0tbG9nKCdObyBvcGVyYXRvciBmb3VuZCBpbiBgI3skZXhwcmVzc2lvbn1gLicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCBkaW1lbnNpb24gb2YgYW4gZXhwcmVzc2lvbiwgYmFzZWQgb24gYSBmb3VuZCBvcGVyYXRvclxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRleHByZXNzaW9uIC0gRXhwcmVzc2lvbiB0byBleHRyYWN0IGRpbWVuc2lvbiBmcm9tXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRvcGVyYXRvciAtIE9wZXJhdG9yIGZyb20gYCRleHByZXNzaW9uYFxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGB3aWR0aGAgb3IgYGhlaWdodGAgKG9yIHBvdGVudGlhbGx5IGFueXRoaW5nIGVsc2UpXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1kaW1lbnNpb24oJGV4cHJlc3Npb24sICRvcGVyYXRvcikge1xuICAkb3BlcmF0b3ItaW5kZXg6IHN0ci1pbmRleCgkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHBhcnNlZC1kaW1lbnNpb246IHN0ci1zbGljZSgkZXhwcmVzc2lvbiwgMCwgJG9wZXJhdG9yLWluZGV4IC0gMSk7XG4gICRkaW1lbnNpb246ICd3aWR0aCc7XG5cbiAgQGlmIHN0ci1sZW5ndGgoJHBhcnNlZC1kaW1lbnNpb24pID4gMCB7XG4gICAgJGRpbWVuc2lvbjogJHBhcnNlZC1kaW1lbnNpb247XG4gIH1cblxuICBAcmV0dXJuICRkaW1lbnNpb247XG59XG5cblxuLy8vXG4vLy8gR2V0IGRpbWVuc2lvbiBwcmVmaXggYmFzZWQgb24gYW4gb3BlcmF0b3Jcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvclxuLy8vXG4vLy8gQHJldHVybiB7U3RyaW5nfSAtIGBtaW5gIG9yIGBtYXhgXG4vLy9cbkBmdW5jdGlvbiBnZXQtZXhwcmVzc2lvbi1wcmVmaXgoJG9wZXJhdG9yKSB7XG4gIEByZXR1cm4gaWYoaW5kZXgoKCc8JywgJzw9JywgJ+KJpCcpLCAkb3BlcmF0b3IpLCAnbWF4JywgJ21pbicpO1xufVxuXG5cbi8vL1xuLy8vIEdldCB2YWx1ZSBvZiBhbiBleHByZXNzaW9uLCBiYXNlZCBvbiBhIGZvdW5kIG9wZXJhdG9yXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGV4cHJlc3Npb24gLSBFeHByZXNzaW9uIHRvIGV4dHJhY3QgdmFsdWUgZnJvbVxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkb3BlcmF0b3IgLSBPcGVyYXRvciBmcm9tIGAkZXhwcmVzc2lvbmBcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBBIG51bWVyaWMgdmFsdWVcbi8vL1xuQGZ1bmN0aW9uIGdldC1leHByZXNzaW9uLXZhbHVlKCRleHByZXNzaW9uLCAkb3BlcmF0b3IpIHtcbiAgJG9wZXJhdG9yLWluZGV4OiBzdHItaW5kZXgoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG4gICR2YWx1ZTogc3RyLXNsaWNlKCRleHByZXNzaW9uLCAkb3BlcmF0b3ItaW5kZXggKyBzdHItbGVuZ3RoKCRvcGVyYXRvcikpO1xuXG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgICR2YWx1ZTogbWFwLWdldCgkYnJlYWtwb2ludHMsICR2YWx1ZSk7XG4gIH0gQGVsc2Uge1xuICAgICR2YWx1ZTogdG8tbnVtYmVyKCR2YWx1ZSk7XG4gIH1cblxuICAkaW50ZXJ2YWw6IG1hcC1nZXQoJHVuaXQtaW50ZXJ2YWxzLCB1bml0KCR2YWx1ZSkpO1xuXG4gIEBpZiBub3QgJGludGVydmFsIHtcbiAgICAvLyBJdCBpcyBub3QgcG9zc2libGUgdG8gaW5jbHVkZSBhIG1peGluIGluc2lkZSBhIGZ1bmN0aW9uLCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gcmVseSBvbiB0aGUgYGltLWxvZyguLilgIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBgbG9nKC4uKWAgbWl4aW4uIEJlY2F1c2VcbiAgICAvLyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBhbnl3aGVyZSBpbiBTYXNzLCB3ZSBuZWVkIHRvIGhhY2sgdGhlIGNhbGwgaW5cbiAgICAvLyBhIGR1bW15IHZhcmlhYmxlLCBzdWNoIGFzIGAkX2AuIElmIGFueWJvZHkgZXZlciByYWlzZSBhIHNjb3BpbmcgaXNzdWUgd2l0aFxuICAgIC8vIFNhc3MgMy4zLCBjaGFuZ2UgdGhpcyBsaW5lIGluIGBAaWYgaW0tbG9nKC4uKSB7fWAgaW5zdGVhZC5cbiAgICAkXzogaW0tbG9nKCdVbmtub3duIHVuaXQgYCN7dW5pdCgkdmFsdWUpfWAuJyk7XG4gIH1cblxuICBAaWYgJG9wZXJhdG9yID09ICc+JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgKyAkaW50ZXJ2YWw7XG4gIH0gQGVsc2UgaWYgJG9wZXJhdG9yID09ICc8JyB7XG4gICAgJHZhbHVlOiAkdmFsdWUgLSAkaW50ZXJ2YWw7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuXG4vLy9cbi8vLyBQYXJzZSBhbiBleHByZXNzaW9uIHRvIHJldHVybiBhIHZhbGlkIG1lZGlhLXF1ZXJ5IGV4cHJlc3Npb25cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZXhwcmVzc2lvbiAtIEV4cHJlc3Npb24gdG8gcGFyc2Vcbi8vL1xuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBWYWxpZCBtZWRpYSBxdWVyeVxuLy8vXG5AZnVuY3Rpb24gcGFyc2UtZXhwcmVzc2lvbigkZXhwcmVzc2lvbikge1xuICAvLyBJZiBpdCBpcyBwYXJ0IG9mICRtZWRpYS1leHByZXNzaW9ucywgaXQgaGFzIG5vIG9wZXJhdG9yXG4gIC8vIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBhbnkgZnVydGhlciwganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gIEBpZiBtYXAtaGFzLWtleSgkbWVkaWEtZXhwcmVzc2lvbnMsICRleHByZXNzaW9uKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtZWRpYS1leHByZXNzaW9ucywgJGV4cHJlc3Npb24pO1xuICB9XG5cbiAgJG9wZXJhdG9yOiBnZXQtZXhwcmVzc2lvbi1vcGVyYXRvcigkZXhwcmVzc2lvbik7XG4gICRkaW1lbnNpb246IGdldC1leHByZXNzaW9uLWRpbWVuc2lvbigkZXhwcmVzc2lvbiwgJG9wZXJhdG9yKTtcbiAgJHByZWZpeDogZ2V0LWV4cHJlc3Npb24tcHJlZml4KCRvcGVyYXRvcik7XG4gICR2YWx1ZTogZ2V0LWV4cHJlc3Npb24tdmFsdWUoJGV4cHJlc3Npb24sICRvcGVyYXRvcik7XG5cbiAgQHJldHVybiAnKCN7JHByZWZpeH0tI3skZGltZW5zaW9ufTogI3skdmFsdWV9KSc7XG59XG5cbi8vL1xuLy8vIFNsaWNlIGAkbGlzdGAgYmV0d2VlbiBgJHN0YXJ0YCBhbmQgYCRlbmRgIGluZGV4ZXNcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc2xpY2Vcbi8vLyBAcGFyYW0ge051bWJlcn0gJHN0YXJ0IFsxXSAtIFN0YXJ0IGluZGV4XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRlbmQgW2xlbmd0aCgkbGlzdCldIC0gRW5kIGluZGV4XG4vLy9cbi8vLyBAcmV0dXJuIHtMaXN0fSBTbGljZWQgbGlzdFxuLy8vXG5AZnVuY3Rpb24gc2xpY2UoJGxpc3QsICRzdGFydDogMSwgJGVuZDogbGVuZ3RoKCRsaXN0KSkge1xuICBAaWYgbGVuZ3RoKCRsaXN0KSA8IDEgb3IgJHN0YXJ0ID4gJGVuZCB7XG4gICAgQHJldHVybiAoKTtcbiAgfVxuXG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgdGhyb3VnaCAkZW5kIHtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgbnRoKCRsaXN0LCAkaSkpO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLy8vXG4vLy8gU3RyaW5nIHRvIG51bWJlciBjb252ZXJ0ZXJcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vLy9cblxuXG4vLy9cbi8vLyBDYXN0cyBhIHN0cmluZyBpbnRvIGEgbnVtYmVyXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gYmUgcGFyc2VkXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9XG4vLy9cbkBmdW5jdGlvbiB0by1udW1iZXIoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnc3RyaW5nJyB7XG4gICAgJF86IGltLWxvZygnVmFsdWUgZm9yIGB0by1udW1iZXJgIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgfVxuXG4gICRmaXJzdC1jaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsIDEsIDEpO1xuICAkcmVzdWx0OiAwO1xuICAkZGlnaXRzOiAwO1xuICAkbWludXM6ICgkZmlyc3QtY2hhcmFjdGVyID09ICctJyk7XG4gICRudW1iZXJzOiAoJzAnOiAwLCAnMSc6IDEsICcyJzogMiwgJzMnOiAzLCAnNCc6IDQsICc1JzogNSwgJzYnOiA2LCAnNyc6IDcsICc4JzogOCwgJzknOiA5KTtcblxuICAvLyBSZW1vdmUgKy8tIHNpZ24gaWYgcHJlc2VudCBhdCBmaXJzdCBjaGFyYWN0ZXJcbiAgQGlmICgkZmlyc3QtY2hhcmFjdGVyID09ICcrJyBvciAkZmlyc3QtY2hhcmFjdGVyID09ICctJykge1xuICAgICR2YWx1ZTogc3RyLXNsaWNlKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0ci1sZW5ndGgoJHZhbHVlKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCR2YWx1ZSwgJGksICRpKTtcblxuICAgIEBpZiBub3QgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSAnLicpIHtcbiAgICAgIEByZXR1cm4gdG8tbGVuZ3RoKGlmKCRtaW51cywgLSRyZXN1bHQsICRyZXN1bHQpLCBzdHItc2xpY2UoJHZhbHVlLCAkaSkpXG4gICAgfVxuXG4gICAgQGlmICRjaGFyYWN0ZXIgPT0gJy4nIHtcbiAgICAgICRkaWdpdHM6IDE7XG4gICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuICAgICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3Rlcik7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgbWFwLWdldCgkbnVtYmVycywgJGNoYXJhY3RlcikgLyAkZGlnaXRzO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gaWYoJG1pbnVzLCAtJHJlc3VsdCwgJHJlc3VsdCk7XG59XG5cblxuLy8vXG4vLy8gQWRkIGAkdW5pdGAgdG8gYCR2YWx1ZWBcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBWYWx1ZSB0byBhZGQgdW5pdCB0b1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdW5pdCAtIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdW5pdFxuLy8vXG4vLy8gQHJldHVybiB7TnVtYmVyfSAtIGAkdmFsdWVgIGV4cHJlc3NlZCBpbiBgJHVuaXRgXG4vLy9cbkBmdW5jdGlvbiB0by1sZW5ndGgoJHZhbHVlLCAkdW5pdCkge1xuICAkdW5pdHM6ICgncHgnOiAxcHgsICdjbSc6IDFjbSwgJ21tJzogMW1tLCAnJSc6IDElLCAnY2gnOiAxY2gsICdwYyc6IDFwYywgJ2luJzogMWluLCAnZW0nOiAxZW0sICdyZW0nOiAxcmVtLCAncHQnOiAxcHQsICdleCc6IDFleCwgJ3Z3JzogMXZ3LCAndmgnOiAxdmgsICd2bWluJzogMXZtaW4sICd2bWF4JzogMXZtYXgpO1xuXG4gIEBpZiBub3QgaW5kZXgobWFwLWtleXMoJHVuaXRzKSwgJHVuaXQpIHtcbiAgICAkXzogaW0tbG9nKCdJbnZhbGlkIHVuaXQgYCN7JHVuaXR9YC4nKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlICogbWFwLWdldCgkdW5pdHMsICR1bml0KTtcbn1cblxuLy8vXG4vLy8gVGhpcyBtaXhpbiBhaW1zIGF0IHJlZGVmaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24ganVzdCBmb3IgdGhlIHNjb3BlIG9mXG4vLy8gdGhlIGNhbGwuIEl0IGlzIGhlbHBmdWwgd2hlbiBoYXZpbmcgYSBjb21wb25lbnQgbmVlZGluZyBhbiBleHRlbmRlZFxuLy8vIGNvbmZpZ3VyYXRpb24gc3VjaCBhcyBjdXN0b20gYnJlYWtwb2ludHMgKHJlZmVycmVkIHRvIGFzIHR3ZWFrcG9pbnRzKVxuLy8vIGZvciBpbnN0YW5jZS5cbi8vL1xuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vha3BvaW50cyBbKCldIC0gTWFwIG9mIHR3ZWFrcG9pbnRzIHRvIGJlIG1lcmdlZCB3aXRoIGAkYnJlYWtwb2ludHNgXG4vLy8gQHBhcmFtIHtNYXB9ICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucyBbKCldIC0gTWFwIG9mIHR3ZWFrZWQgbWVkaWEgZXhwcmVzc2lvbnMgdG8gYmUgbWVyZ2VkIHdpdGggYCRtZWRpYS1leHByZXNzaW9uYFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIEV4dGVuZCB0aGUgZ2xvYmFsIGJyZWFrcG9pbnRzIHdpdGggYSB0d2Vha3BvaW50XG4vLy8gIEBpbmNsdWRlIG1lZGlhLWNvbnRleHQoKCdjdXN0b20nOiA2NzhweCkpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD1jdXN0b20nKSB7XG4vLy8gICAgICAgLy8gLi4uXG4vLy8gICAgICB9XG4vLy8gICAgfVxuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gRXh0ZW5kIHRoZSBnbG9iYWwgbWVkaWEgZXhwcmVzc2lvbnMgd2l0aCBhIGN1c3RvbSBvbmVcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgnYWxsJzogJ2FsbCcpKSB7XG4vLy8gICAgLmZvbyB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSgnYWxsJywgJz5waG9uZScpIHtcbi8vLyAgICAgICAvLyAuLi5cbi8vLyAgICAgIH1cbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBFeHRlbmQgYm90aCBjb25maWd1cmF0aW9uIG1hcHNcbi8vLyAgQGluY2x1ZGUgbWVkaWEtY29udGV4dCgoJ2N1c3RvbSc6IDY3OHB4KSwgKCdhbGwnOiAnYWxsJykpIHtcbi8vLyAgICAuZm9vIHtcbi8vLyAgICAgIEBpbmNsdWRlIG1lZGlhKCdhbGwnLCAnPnBob25lJywgJzw9Y3VzdG9tJykge1xuLy8vICAgICAgIC8vIC4uLlxuLy8vICAgICAgfVxuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG5AbWl4aW4gbWVkaWEtY29udGV4dCgkdHdlYWtwb2ludHM6ICgpLCAkdHdlYWstbWVkaWEtZXhwcmVzc2lvbnM6ICgpKSB7XG4gIC8vIFNhdmUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25cbiAgJGdsb2JhbC1icmVha3BvaW50czogJGJyZWFrcG9pbnRzO1xuICAkZ2xvYmFsLW1lZGlhLWV4cHJlc3Npb25zOiAkbWVkaWEtZXhwcmVzc2lvbnM7XG5cbiAgLy8gVXBkYXRlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogbWFwLW1lcmdlKCRicmVha3BvaW50cywgJHR3ZWFrcG9pbnRzKSAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6IG1hcC1tZXJnZSgkbWVkaWEtZXhwcmVzc2lvbnMsICR0d2Vhay1tZWRpYS1leHByZXNzaW9ucykgIWdsb2JhbDtcblxuICBAY29udGVudDtcblxuICAvLyBSZXN0b3JlIGdsb2JhbCBjb25maWd1cmF0aW9uXG4gICRicmVha3BvaW50czogJGdsb2JhbC1icmVha3BvaW50cyAhZ2xvYmFsO1xuICAkbWVkaWEtZXhwcmVzc2lvbnM6ICRnbG9iYWwtbWVkaWEtZXhwcmVzc2lvbnMgIWdsb2JhbDtcbn1cblxuLy8vL1xuLy8vIGluY2x1ZGUtbWVkaWEgcHVibGljIGV4cG9zZWQgQVBJXG4vLy8gQGF1dGhvciBFZHVhcmRvIEJvdWNhc1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy8vXG5cblxuLy8vXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgYmFzZWQgb24gYSBsaXN0IG9mIGNvbmRpdGlvbnNcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gICAkY29uZGl0aW9ucyAgLSBNZWRpYSBxdWVyeSBjb25kaXRpb25zXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBhIHNpbmdsZSBzZXQgYnJlYWtwb2ludFxuLy8vICBAaW5jbHVkZSBtZWRpYSgnPnBob25lJykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCB0d28gc2V0IGJyZWFrcG9pbnRzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+cGhvbmUnLCAnPD10YWJsZXQnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBXaXRoIGN1c3RvbSB2YWx1ZXNcbi8vLyAgQGluY2x1ZGUgbWVkaWEoJz49MzU4cHgnLCAnPDg1MHB4JykgeyB9XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gV2l0aCBzZXQgYnJlYWtwb2ludHMgd2l0aCBjdXN0b20gdmFsdWVzXG4vLy8gIEBpbmNsdWRlIG1lZGlhKCc+ZGVza3RvcCcsICc8PTEzNTBweCcpIHsgfVxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFdpdGggYSBzdGF0aWMgZXhwcmVzc2lvblxuLy8vICBAaW5jbHVkZSBtZWRpYSgncmV0aW5hMngnKSB7IH1cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBNaXhpbmcgZXZlcnl0aGluZ1xuLy8vICBAaW5jbHVkZSBtZWRpYSgnPj0zNTBweCcsICc8dGFibGV0JywgJ3JldGluYTN4JykgeyB9XG4vLy9cbkBtaXhpbiBtZWRpYSgkY29uZGl0aW9ucy4uLikge1xuICBAaWYgKCRpbS1tZWRpYS1zdXBwb3J0IGFuZCBsZW5ndGgoJGNvbmRpdGlvbnMpID09IDApIG9yXG4gICAgICAobm90ICRpbS1tZWRpYS1zdXBwb3J0IGFuZCBpbS1pbnRlcmNlcHRzLXN0YXRpYy1icmVha3BvaW50KCRjb25kaXRpb25zLi4uKSkge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIGlmICgkaW0tbWVkaWEtc3VwcG9ydCBhbmQgbGVuZ3RoKCRjb25kaXRpb25zKSA+IDApIHtcbiAgICBAbWVkaWEgI3t1bnF1b3RlKHBhcnNlLWV4cHJlc3Npb24obnRoKCRjb25kaXRpb25zLCAxKSkpfSB7XG4gICAgICAvLyBSZWN1cnNpdmUgY2FsbFxuICAgICAgQGluY2x1ZGUgbWVkaWEoc2xpY2UoJGNvbmRpdGlvbnMsIDIpLi4uKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdLCJzb3VyY2VSb290IjoiIn0=*/