/**
 * Foundation for Sites
 * Version 6.8.1
 * https://get.foundation
 * Licensed under MIT Open Source
 */
/* Truncate Text */
.view.distributor-search .view-filters .heading.heading-listing {
  font-size: 1.4rem;
  line-height: 1.1667;
  font-family: "Open Sans Condensed", sans-serif;
  color: #000;
  font-weight: 700;
}

.view.distributor-search .view-filters form .form-text {
  background-repeat: no-repeat;
}
.view.distributor-search .view-filters form .form-text {
  background-position: calc(100% - 20px) 50%;
}
.view.distributor-search .view-filters form .form-text {
  padding-right: 50px;
  background-image: url("data:image/svg+xml,%3Csvg class='input-symbol__symbol' width='25' height='25' xmlns='http://www.w3.org/2000/svg'%3E%3Cg stroke-width='.1' fill-rule='nonzero' fill='%23A3A3A3' stroke='%23A3A3A3'%3E%3Cpath d='M10.617 9.725a.472.472 0 110 .943.472.472 0 010-.943z'/%3E%3Cpath d='M1.644 21.689l6.294-6.294a9.347 9.347 0 01-1.566-5.199c0-5.2 4.231-9.431 9.433-9.431 5.199 0 9.43 4.23 9.43 9.431 0 5.2-4.23 9.432-9.431 9.432a9.343 9.343 0 01-5.199-1.566l-1.74 1.74s0 0 0 0l-4.554 4.554c-.356.357-.83.553-1.334.553-.503 0-.977-.196-1.333-.552a1.873 1.873 0 01-.553-1.334c0-.504.196-.978.553-1.334zm9.183-4.62s0 0 0 0a8.415 8.415 0 004.977 1.615c4.68 0 8.488-3.807 8.488-8.488 0-4.68-3.808-8.488-8.488-8.488s-8.488 3.808-8.488 8.488c0 1.8.558 3.521 1.616 4.977a8.53 8.53 0 001.895 1.895zm-.99.427a9.603 9.603 0 01-1.333-1.334L7.166 17.5c.407.48.854.927 1.334 1.334l1.338-1.338zM2.31 23.69a.937.937 0 00.667.276.937.937 0 00.667-.276l4.187-4.188a12.52 12.52 0 01-1.333-1.333L2.31 22.356a.936.936 0 00-.276.667.936.936 0 00.276.667z'/%3E%3Cpath d='M15.804 2.651c4.16 0 7.545 3.385 7.545 7.545s-3.385 7.545-7.545 7.545-7.545-3.384-7.545-7.545c0-4.16 3.384-7.545 7.545-7.545zm0 14.147a6.61 6.61 0 006.601-6.602 6.61 6.61 0 00-6.601-6.601 6.61 6.61 0 00-6.602 6.602 6.61 6.61 0 006.602 6.602z'/%3E%3Cpath d='M10.519 8.172a5.659 5.659 0 012.045-2.613 5.619 5.619 0 013.24-1.021.472.472 0 010 .943 4.748 4.748 0 00-4.404 3.03.472.472 0 11-.88-.339z'/%3E%3C/g%3E%3C/svg%3E");
}

.foundation-mq {
  font-family: "small=0em&medium=40em&large=64em&xlarge=90em";
}

.view.distributor-search .view-filters {
  padding: 50px 0 0;
}
.view.distributor-search .view-filters .heading.heading-listing {
  margin-bottom: 0;
}
.view.distributor-search .view-filters .text {
  padding-bottom: 0;
  border: 0 transparent;
}
.view.distributor-search .view-filters form {
  padding-bottom: 50px;
}
@media print, screen and (min-width: 40em) {
  .view.distributor-search .view-filters form .form--inline > .form-item, .view.distributor-search .view-filters form .form--inline > fieldset {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: calc(50% - 1.25rem);
    margin-left: 0.625rem;
    margin-right: 0.625rem;
  }
  .view.distributor-search .view-filters form .form--inline > .form-item.form-actions, .view.distributor-search .view-filters form .form--inline > fieldset.form-actions {
    width: 100%;
  }
}
.view.distributor-search .view-filters form .form--inline > fieldset {
  padding: 0;
  border: 0;
}
.view.distributor-search .view-filters form .form--inline > fieldset legend {
  display: none;
}
.view.distributor-search .view-filters form .distance-element label {
  padding-bottom: 0;
  padding-top: 20px;
}
.view.distributor-search .view-filters form .distance-element .form-range {
  background: #fff;
  border: 2px solid #d8d8d8;
  border-radius: 14px;
  -webkit-box-shadow: 0 0 10px 0 transparent;
          box-shadow: 0 0 10px 0 transparent;
  font-size: 1rem;
  font-weight: 700;
  height: auto;
  outline: 0;
  /* padding: 1rem 30px; */
  position: relative;
  text-align: left;
  -webkit-transition: -webkit-box-shadow 0.7s;
  transition: -webkit-box-shadow 0.7s;
  transition: box-shadow 0.7s;
  transition: box-shadow 0.7s, -webkit-box-shadow 0.7s;
  width: 100%;
  background-position: calc(100% - 20px) 50%;
  background-repeat: no-repeat;
  /* padding-right: 50px */
}
.view.distributor-search .attachment-before .paragraph {
  margin-top: 0;
  margin-bottom: 0;
}
.view.distributor-search .attachment-before .paragraph > h2 {
  margin: 0;
  padding: 30px;
  text-align: center;
  font-size: 1.5rem;
  background-color: #DBE2E9;
}
@media print, screen and (min-width: 64em) {
  .view.distributor-search .attachment-before .paragraph > h2 {
    font-size: 1.875rem;
  }
}
.view.distributor-search .attachment-before .view-content {
  max-width: none;
  padding: 0;
}
.view.distributor-search .view-content-wrapper {
  padding: 100px 0;
  background-color: #DBE2E9;
}
.view.distributor-search .view__pager.view-header {
  margin-top: 0;
}
.view.distributor-search .view__pager.view-footer {
  margin-bottom: 0;
}
.view.distributor-search .view-content-wrapper .view-content .teaser {
  margin-bottom: 20px;
}
.view.distributor-search .view-content-wrapper .view-content .teaser:last-child {
  margin-bottom: 0;
}
@media print, screen and (min-width: 40em) {
  .view.distributor-search .view-content-wrapper .view-content .view-content-inner {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-flow: row wrap;
            flex-flow: row wrap;
    margin-right: -0.2953125rem;
    margin-left: -0.2953125rem;
  }
}
@media print, screen and (min-width: 40em) and (min-width: 40em) {
  .view.distributor-search .view-content-wrapper .view-content .view-content-inner {
    margin-right: -0.625rem;
    margin-left: -0.625rem;
  }
}
@media print, screen and (min-width: 40em) {
  .view.distributor-search .view-content-wrapper .view-content .view-content-inner .teaser {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: calc(33.3333333333% - 1.25rem);
    margin-left: 0.625rem;
    margin-right: 0.625rem;
    /* @include xy-cell(6); */
    margin-top: 0.2953125rem;
    margin-bottom: 0.2953125rem;
  }
}
@media print, screen and (min-width: 40em) and (min-width: 40em) {
  .view.distributor-search .view-content-wrapper .view-content .view-content-inner .teaser {
    margin-top: 0.625rem;
    margin-bottom: 0.625rem;
  }
}

.map-pins {
  padding-right: 0;
  padding-left: 0;
  max-width: 75rem;
  margin-left: auto;
  margin-right: auto;
  margin-top: 20px;
  margin-bottom: 50px;
}
@media print, screen and (max-width: 89.99875em) {
  .map-pins {
    max-width: 58.75rem;
  }
}
@media screen and (max-width: 61.25em) {
  .map-pins {
    margin-left: 20px;
    margin-right: 20px;
  }
}
@media print {
  .map-pins {
    max-width: 190mm;
    margin-left: 0;
  }
}
@media print, screen and (min-width: 64em) {
  .map-pins {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start;
    margin-top: 40px;
  }
}
.map-pins .map-pin {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  margin: 10px 0;
}
@media print, screen and (min-width: 64em) {
  .map-pins .map-pin {
    margin: 0 40px 0 0;
  }
  .map-pins .map-pin:last-child {
    margin-right: 0;
  }
}
.map-pins .map-pin img {
  width: auto;
  height: 30px;
  margin-right: 5px;
}

.teaser.distributor-teaser .media {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  width: 100%;
  height: 150px;
  padding: 20px;
  border-bottom: 2px solid #d8d8d8;
}
.teaser.distributor-teaser .media img {
  max-width: 100%;
  max-height: 108px;
  width: auto;
  height: auto;
  margin: auto;
}
.teaser.distributor-teaser .distributor__contact-info {
  margin-bottom: 15px;
}
.teaser.distributor-teaser .distributor__products {
  margin-bottom: 0;
}
.teaser.distributor-teaser .distributor__products dt {
  margin: 0;
}
.teaser.distributor-teaser .distributor__products dt::after {
  content: ": ";
}
.teaser.distributor-teaser .teaser__heading {
  margin-bottom: 0.25rem;
}
.teaser.distributor-teaser .teaser__subheading {
  margin-bottom: 0;
}
.teaser.distributor-teaser--map {
  font-family: Arial, sans-serif;
  font-size: 1rem;
  -webkit-box-shadow: none;
          box-shadow: none;
}
.teaser.distributor-teaser--map .teaser__heading {
  margin-bottom: 0;
}
.teaser.distributor-teaser--map .content {
  padding: 10px;
}
.teaser.distributor-teaser:hover {
  -webkit-transform: none;
          transform: none;
}
.teaser.distributor-teaser .product-category-banners .banner {
  margin-bottom: 5px;
}
.teaser.distributor-teaser .product-category-banners .banner img {
  height: auto;
  max-width: 300px;
}
@media screen and (max-width: 61.25em) {
  .teaser.distributor-teaser .product-category-banners .banner img {
    width: 100%;
  }
}

.section {
  margin: 100px 0;
}

.section-box {
  padding-top: 2.5rem !important;
  padding-bottom: 2.5rem !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
.section-box + .paragraph {
  margin-top: 0;
}
.in-iframe .section-box {
  padding-top: 0 !important;
}

.section-box--protruding {
  margin-bottom: 2.5rem !important;
}

.section--force {
  margin: 100px 0 !important;
}

.width-full {
  width: 100%;
}

.size-md {
  font-size: 1.875rem;
}

.type-heavy {
  font-weight: 700;
}

.reset-spacing > *:last-child {
  margin-bottom: 0;
}

.ml-0x {
  margin-left: 0 !important;
}

.mb-0x {
  margin-bottom: 0 !important;
}

.mt-0x {
  margin-top: 0 !important;
}

.mb-1x {
  margin-bottom: 10px !important;
}

.mb-2x {
  margin-bottom: 20px;
}

.mb-4x {
  margin-bottom: 40px;
}

.mb-5x {
  margin-bottom: 50px;
}

.pt-0x {
  padding-top: 0 !important;
}

.pb-0x {
  padding-bottom: 0 !important;
}

.bg-white {
  background-color: #fff !important;
}

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

.flex-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
}

.background-gray {
  background: #DBE2E9;
}

.background-blue {
  background: #003b68;
}

.background-red {
  background: #FF0000;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvZm91bmRhdGlvbi5zY3NzIiwiZ2xvYmFsL19taXhpbnMuc2NzcyIsImdsb2JhbC9fZXh0ZW5kcy5zY3NzIiwiZ2xvYmFsL19zZXR0aW5ncy5zY3NzIiwiZ2xvYmFsL19jb2xvci12YXJzLnNjc3MiLCJsb2NhdGlvbi1zZWFyY2guY3NzIiwibG9jYXRpb24tc2VhcmNoLnNjc3MiLCJjb21wb25lbnRzL2xvY2F0aW9uLXNlYXJjaC9sb2NhdGlvbi1zZWFyY2guc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy94eS1ncmlkL19jZWxsLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3h5LWdyaWQvX2d1dHRlcnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MveHktZ3JpZC9fZ3JpZC5zY3NzIiwiY29tcG9uZW50cy9tYXAtcGlucy9tYXAtcGlucy5zY3NzIiwiY29tcG9uZW50cy9sb2NhdGlvbi1zZWFyY2gvZGlzdHJpYnV0b3ItdGVhc2VyLnNjc3MiLCJjb21wb25lbnRzL191dGlsaXRpZXMuaGVscGVycy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ZvdW5kYXRpb24tc2l0ZXMvc2Nzcy91dGlsL19jb2xvci5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztFQUFBO0FDa1lBLGtCQUFBO0FDeFdBO0VBQ0UsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLDhDQ2tIbUI7RURqSG5CLFdFYk07RUZjTixnQkFBQTtBR2xCRjs7QUh5REE7RUFDRSw0QkFBQTtBR3RERjtBSHdERTtFQUNFLDBDQUFBO0FHdERKO0FIeURFO0VBQ0UsbUJBQUE7RUFDQSx5OENBQUE7QUd2REo7O0FDYkE7RUFDSSwyREFBQTtBRGdCSjs7QUUzQkU7RUFDRSxpQkFBQTtBRjhCSjtBRTVCSTtFQUdFLGdCQUFBO0FGNEJOO0FFekJJO0VBQ0UsaUJBQUE7RUFDQSxxQkFBQTtBRjJCTjtBRXhCSTtFQUNFLG9CSnlFWTtBRS9DbEI7QUd5SVE7RUQ5SkU7SUU2R1IsbUJBQUE7UUFBQSxrQkFBQTtZQUFBLGNBQUE7SUEyQ0UsMEJBVE07SUMzSEoscUJBQUE7SUFBQSxzQkFBQTtFTFFKO0VFdkJVO0lBQ0UsV0FBQTtFRnlCWjtBQUNGO0FFcEJNO0VBQ0UsVUFBQTtFQUNBLFNBQUE7QUZzQlI7QUVwQlE7RUFDRSxhQUFBO0FGc0JWO0FFVlE7RUFDRSxpQkFBQTtFQUNBLGlCQUFBO0FGWVY7QUVUUTtFQUNFLGdCSC9DRjtFR2dERSx5QkFBQTtFQUNBLG1CQUFBO0VBQ0EsMENBQUE7VUFBQSxrQ0FBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0Esd0JBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsMkNBQUE7RUFBQSxtQ0FBQTtFQUFBLDJCQUFBO0VBQUEsb0RBQUE7RUFDQSxXQUFBO0VBQ0EsMENBQUE7RUFDQSw0QkFBQTtFQUNBLHdCQUFBO0FGV1Y7QUVISTtFQUNFLGFBQUE7RUFDQSxnQkFBQTtBRktOO0FFSE07RUFDRSxTQUFBO0VBQ0EsYUpFTztFSURQLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSx5Qkg5RUs7QUNtRmI7QUdzRlE7RUR2RkE7SUFDRSxtQkFBQTtFRklSO0FBQ0Y7QUVBSTtFQUNFLGVBQUE7RUFDQSxVQUFBO0FGRU47QUVFRTtFQUNFLGdCQUFBO0VBQ0EseUJIaEdTO0FDZ0diO0FFR0U7RUFDRSxhQUFBO0FGREo7QUVJRTtFQUNFLGdCQUFBO0FGRko7QUVNSTtFQUNFLG1CSmpDUztBRTZCZjtBRU1NO0VBQ0UsZ0JBQUE7QUZKUjtBRzZEUTtFRHBERjtJSTdGSixvQkFBQTtJQUFBLG9CQUFBO0lBQUEsYUFBQTtJQUNBLDhCQUFBO0lBQUEsNkJBQUE7UUFBQSx1QkFBQTtZQUFBLG1CQUFBO0lESE0sMkJBQUE7SUFBQSwwQkFBQTtFTDZGTjtBQUNGO0FHcURRO0VEcERGO0lHL0ZFLHVCQUFBO0lBQUEsc0JBQUE7RUxtR047QUFDRjtBRytDUTtFRGhEQTtJRUROLG1CQUFBO1FBQUEsa0JBQUE7WUFBQSxjQUFBO0lBMkNFLHFDQVRNO0lDM0hKLHFCQUFBO0lBQUEsc0JBQUE7SUg0RkkseUJBQUE7SUdyR0Ysd0JBQUE7SUFBQSwyQkFBQTtFTDhHTjtBQUNGO0FHb0NRO0VEaERBO0lHbkdBLG9CQUFBO0lBQUEsdUJBQUE7RUxvSE47QUFDRjs7QU9ySkE7RUZ5Q00sZ0JBQUE7RUFBQSxlQUFBO0VDdkJKLGdCUm1EYTtFUWxEYixpQkFBQTtFQUNBLGtCQUFBO0VDakJBLGdCVG1GYTtFU2xGYixtQlRxRmdCO0FFc0VsQjtBR29CUTtFSW5MUjtJWHVPSSxtQkVqS2tCO0VFNkZwQjtBQUNGO0FHb0JRO0VJeExSO0lYMk9JLGlCRXJKVztJRnNKWCxrQkV0Slc7RUVtRmI7QUFDRjtBSnFFRTtFVy9PRjtJWGdQSSxnQkFBQTtJQUNBLGNBQUE7RUlsRUY7QUFDRjtBR0dRO0VJbkxSO0lBT0ksb0JBQUE7SUFBQSxvQkFBQTtJQUFBLGFBQUE7SUFDQSx1QkFBQTtRQUFBLG9CQUFBO1lBQUEsMkJBQUE7SUFDQSxnQlQrRWM7RUU4RmhCO0FBQ0Y7QU8zS0U7RUFDRSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLGNBQUE7QVA2S0o7QUdSUTtFSXZLTjtJQUtJLGtCQUFBO0VQOEtKO0VPNUtJO0lBQ0UsZUFBQTtFUDhLTjtBQUNGO0FPM0tJO0VBQ0UsV0FBQTtFQUNBLFlUNkRTO0VTNURULGlCVGtFVztBRTJHakI7O0FRdk1FO0VBQ0Usb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSx3QkFBQTtNQUFBLHFCQUFBO1VBQUEsdUJBQUE7RUFDQSx5QkFBQTtNQUFBLHNCQUFBO1VBQUEsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsYUFBQTtFQUNBLGFWK0VXO0VVOUVYLGdDQUFBO0FSME1KO0FReE1JO0VBQ0UsZUFBQTtFQUNBLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxZQUFBO0FSME1OO0FRck1JO0VBQ0UsbUJBQUE7QVJ1TU47QVFwTUk7RUFDRSxnQkFBQTtBUnNNTjtBUXBNTTtFQUNFLFNBQUE7QVJzTVI7QVFwTVE7RUFDRSxhQUFBO0FSc01WO0FRaE1FO0VBQ0Usc0JBQUE7QVJrTUo7QVEvTEU7RUFDRSxnQkFBQTtBUmlNSjtBUTlMRTtFQUNFLDhCVm1DZTtFVWxDZixlQUFBO0VBQ0Esd0JBQUE7VUFBQSxnQkFBQTtBUmdNSjtBUTlMSTtFQUNFLGdCQUFBO0FSZ01OO0FRN0xJO0VBQ0UsYVY4QkU7QUVpS1I7QVEzTEU7RUFDRSx1QkFBQTtVQUFBLGVBQUE7QVI2TEo7QVExTEU7RUFDRSxrQkFBQTtBUjRMSjtBUTFMSTtFQUNFLFlBQUE7RUFDQSxnQkFBQTtBUjRMTjtBUXpMSTtFQUNFO0lBQ0UsV0FBQTtFUjJMTjtBQUNGOztBU25RQTtFQUNFLGVBQUE7QVRzUUY7O0FTbFFBO0VBQ0UsOEJBQUE7RUFDQSxpQ0FBQTtFQUNBLHdCQUFBO0VBQ0EsMkJBQUE7QVRxUUY7QVNuUUU7RUFDRSxhQUFBO0FUcVFKO0FTbFFFO0VBQ0UseUJBQUE7QVRvUUo7O0FTL1BBO0VBQ0UsZ0NBQUE7QVRrUUY7O0FTL1BBO0VBQ0UsMEJBQUE7QVRrUUY7O0FTL1BBO0VBQ0UsV0FBQTtBVGtRRjs7QVMxUEE7RUFDRSxtQkFBQTtBVDZQRjs7QVMxUEE7RUFDRSxnQkFBQTtBVDZQRjs7QVNyUEk7RUFDRSxnQkFBQTtBVHdQTjs7QVNqUEE7RUFDRSx5QkFBQTtBVG9QRjs7QVNqUEE7RUFDRSwyQkFBQTtBVG9QRjs7QVNqUEE7RUFDRSx3QkFBQTtBVG9QRjs7QVNqUEE7RUFDRSw4QkFBQTtBVG9QRjs7QVNqUEE7RUFDRSxtQkFBQTtBVG9QRjs7QVNqUEE7RUFDRSxtQkFBQTtBVG9QRjs7QVNqUEE7RUFDRSxtQkFBQTtBVG9QRjs7QVMvT0E7RUFDRSx5QkFBQTtBVGtQRjs7QVMvT0E7RUFDRSw0QkFBQTtBVGtQRjs7QVM3T0E7RUFDRSxpQ0FBQTtBVGdQRjs7QVMxT0E7RUFDRSxrQkFBQTtBVDZPRjs7QVN6T0E7RUFDRSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsYUFBQTtBVDRPRjs7QVN4T0E7RUFDRSxtQlY3R1c7QUN3VmI7O0FTeE9BO0VBQ0UsbUJDRmtCO0FWNk9wQjs7QVN4T0E7RUFDRSxtQlZ6SFM7QUNvV1giLCJmaWxlIjoibG9jYXRpb24tc2VhcmNoLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm91bmRhdGlvbiBmb3IgU2l0ZXNcbiAqIFZlcnNpb24gNi44LjFcbiAqIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuICovXG5cbi8vIC0tLSBEZXBlbmRlbmNpZXMgLS0tXG5AaW1wb3J0ICd2ZW5kb3Ivbm9ybWFsaXplJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvaGVscGVycy9taXNzaW5nLWRlcGVuZGVuY2llcyc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2hlbHBlcnMvdHJ1ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9jb250YWluJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3B1cmdlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3JlbW92ZSc7XG5AaW1wb3J0ICcuLi9fdmVuZG9yL3Nhc3N5LWxpc3RzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9yZXBsYWNlJztcbkBpbXBvcnQgJy4uL192ZW5kb3Ivc2Fzc3ktbGlzdHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL3RvLWxpc3QnO1xuXG4vLyAtLS0gU2V0dGluZ3MgLS0tXG4vLyBpbXBvcnQgeW91ciBvd24gYHNldHRpbmdzYCBoZXJlIG9yXG4vLyBpbXBvcnQgYW5kIG1vZGlmeSB0aGUgZGVmYXVsdCBzZXR0aW5ncyB0aHJvdWdoXG4vLyBAaW1wb3J0ICdzZXR0aW5ncy9zZXR0aW5ncyc7XG5cbi8vIC0tLSBDb21wb25lbnRzIC0tLVxuLy8gVXRpbGl0aWVzXG5AaW1wb3J0ICd1dGlsL3V0aWwnO1xuLy8gR2xvYmFsIHN0eWxlc1xuQGltcG9ydCAnZ2xvYmFsJztcbkBpbXBvcnQgJ2Zvcm1zL2Zvcm1zJztcbkBpbXBvcnQgJ3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5cbi8vIEdyaWRzXG5AaW1wb3J0ICdncmlkL2dyaWQnO1xuQGltcG9ydCAneHktZ3JpZC94eS1ncmlkJztcbi8vIEdlbmVyaWMgY29tcG9uZW50c1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jbG9zZS1idXR0b24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9sYWJlbCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3Byb2dyZXNzLWJhcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3NsaWRlcic7XG5AaW1wb3J0ICdjb21wb25lbnRzL3N3aXRjaCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RhYmxlJztcbi8vIEJhc2ljIGNvbXBvbmVudHNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYmFkZ2UnO1xuQGltcG9ydCAnY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2NhbGxvdXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9jYXJkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24nO1xuQGltcG9ydCAnY29tcG9uZW50cy9wYWdpbmF0aW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdG9vbHRpcCc7XG5cbi8vIENvbnRhaW5lcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvYWNjb3JkaW9uJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVkaWEtb2JqZWN0JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvb3JiaXQnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXNwb25zaXZlLWVtYmVkJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvdGFicyc7XG5AaW1wb3J0ICdjb21wb25lbnRzL3RodW1ibmFpbCc7XG4vLyBNZW51LWJhc2VkIGNvbnRhaW5lcnNcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbWVudSc7XG5AaW1wb3J0ICdjb21wb25lbnRzL21lbnUtaWNvbic7XG5AaW1wb3J0ICdjb21wb25lbnRzL2FjY29yZGlvbi1tZW51JztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJpbGxkb3duJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvZHJvcGRvd24tbWVudSc7XG5cbi8vIExheW91dCBjb21wb25lbnRzXG5AaW1wb3J0ICdjb21wb25lbnRzL29mZi1jYW52YXMnO1xuQGltcG9ydCAnY29tcG9uZW50cy9yZXZlYWwnO1xuQGltcG9ydCAnY29tcG9uZW50cy9zdGlja3knO1xuQGltcG9ydCAnY29tcG9uZW50cy90aXRsZS1iYXInO1xuQGltcG9ydCAnY29tcG9uZW50cy90b3AtYmFyJztcblxuLy8gSGVscGVyc1xuQGltcG9ydCAnY29tcG9uZW50cy9mbG9hdCc7XG5AaW1wb3J0ICdjb21wb25lbnRzL2ZsZXgnO1xuQGltcG9ydCAnY29tcG9uZW50cy92aXNpYmlsaXR5JztcbkBpbXBvcnQgJ3Byb3RvdHlwZS9wcm90b3R5cGUnO1xuXG5cbkBtaXhpbiBmb3VuZGF0aW9uLWV2ZXJ5dGhpbmcoXG4gICRmbGV4OiB0cnVlLFxuICAkcHJvdG90eXBlOiBmYWxzZSxcbiAgJHh5LWdyaWQ6ICR4eS1ncmlkXG4pIHtcbiAgQGlmICRmbGV4IHtcbiAgICAkZ2xvYmFsLWZsZXhib3g6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIEBpZiAkeHktZ3JpZCB7XG4gICAgJHh5LWdyaWQ6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIC8vIEdsb2JhbCBzdHlsZXNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1nbG9iYWwtc3R5bGVzO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWZvcm1zO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXR5cG9ncmFwaHk7XG5cbiAgLy8gR3JpZHNcbiAgQGlmIG5vdCAkZmxleCB7XG4gICAgQGluY2x1ZGUgZm91bmRhdGlvbi1ncmlkO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJHh5LWdyaWQge1xuICAgICAgQGluY2x1ZGUgZm91bmRhdGlvbi14eS1ncmlkLWNsYXNzZXM7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGZvdW5kYXRpb24tZmxleC1ncmlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyaWMgY29tcG9uZW50c1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWJ1dHRvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1idXR0b24tZ3JvdXA7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2xvc2UtYnV0dG9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWxhYmVsO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb2dyZXNzLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1zbGlkZXI7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3dpdGNoO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYmxlO1xuICAvLyBCYXNpYyBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYmFkZ2U7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYnJlYWRjcnVtYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tY2FsbG91dDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1jYXJkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLWRyb3Bkb3duO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXBhZ2luYXRpb247XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdG9vbHRpcDtcblxuICAvLyBDb250YWluZXJzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tYWNjb3JkaW9uO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lZGlhLW9iamVjdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1vcmJpdDtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXNwb25zaXZlLWVtYmVkO1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRhYnM7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tdGh1bWJuYWlsO1xuICAvLyBNZW51LWJhc2VkIGNvbnRhaW5lcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1tZW51O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLW1lbnUtaWNvbjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1hY2NvcmRpb24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcmlsbGRvd24tbWVudTtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1kcm9wZG93bi1tZW51O1xuXG4gIC8vIExheW91dCBjb21wb25lbnRzXG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tb2ZmLWNhbnZhcztcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1yZXZlYWw7XG4gIEBpbmNsdWRlIGZvdW5kYXRpb24tc3RpY2t5O1xuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXRpdGxlLWJhcjtcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi10b3AtYmFyO1xuXG4gIC8vIEhlbHBlcnNcbiAgQGluY2x1ZGUgZm91bmRhdGlvbi1mbG9hdC1jbGFzc2VzO1xuICBAaWYgJGZsZXggeyBAaW5jbHVkZSBmb3VuZGF0aW9uLWZsZXgtY2xhc3NlczsgfVxuICBAaW5jbHVkZSBmb3VuZGF0aW9uLXZpc2liaWxpdHktY2xhc3NlcztcbiAgQGlmICRwcm90b3R5cGUgeyBAaW5jbHVkZSBmb3VuZGF0aW9uLXByb3RvdHlwZS1jbGFzc2VzOyB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYWwgTWl4aW5zIChwdXQgc3BlY2lmaWMgb25lcyBpbiBjb21wb25lbnQgZmlsZXMgd2hlcmUgYXBwbGljYWJsZSlcblxuLy8vIE1peGluIC0gQ2xlYXJmaXguXG4vLy8gQWRkcyBjbGVhcmZpeCBiYXNlZCBvbiBodHRwOi8vYm91cmJvbi5pby9kb2NzLyNjbGVhcmZpeFxuLy8vIHVzZSBleGFtcGxlID0gICBAaW5jbHVkZSBjbGVhZml4XG5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICB9XG59XG5cbi8vLyBNaXhpbiAtIFdyYXBwZXJcbi8vLyBPdXRlciBjb250YWluZXIgbWl4aW4gZm9yIGxhcmdlIHNjcmVlbnNcbkBtaXhpbiB3cmFwcGVyKCRjb250YWluZXItbWF4LXdpZHRoOiAkZ2xvYmFsLXdpZHRoLCAkb3V0ZXItY29udGFpbmVyLWJyZWFrOiBtZWRpdW0sICR2LW1hcmdpbjogMCwgJHYtcGFkZGluZzogMCwgJGgtcGFkZGluZzogJHNwYWNlLCAkaC1wYWRkaW5nLWxhcmdlOiAkaC1wYWRkaW5nKSB7XG4gIG1heC13aWR0aDogI3skY29udGFpbmVyLW1heC13aWR0aH07XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46ICN7JHYtbWFyZ2lufSBhdXRvO1xuICBwYWRkaW5nOiAjeyR2LXBhZGRpbmd9ICN7JGgtcGFkZGluZ307XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkb3V0ZXItY29udGFpbmVyLWJyZWFrKSB7XG4gICAgcGFkZGluZzogI3skdi1wYWRkaW5nfSAjeyRoLXBhZGRpbmctbGFyZ2V9O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkY29udGFpbmVyLW1heC13aWR0aCkge1xuICAgIHBhZGRpbmctbGVmdDogY2FsYygjeyRoLXBhZGRpbmctbGFyZ2V9ICsgY2FsYygtNTB2dyArIGNhbGMoI3skY29udGFpbmVyLW1heC13aWR0aH0gLyAyKSkpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoI3skaC1wYWRkaW5nLWxhcmdlfSArIGNhbGMoLTUwdncgKyBjYWxjKCN7JGNvbnRhaW5lci1tYXgtd2lkdGh9IC8gMikpKTtcbiAgfVxufVxuXG4vLy8gVXNlIHRoZSBicmVha291dCBtaXhpbiBmb3IgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgZWRnZS10by1lZGdlXG4vLy8gRXZlbiB3aGVuIGEgcGFyZW50IGNvbnRhaW5lciB1c2VzIHRoZSB3cmFwcGVyIG1peGluXG5AbWl4aW4gYnJlYWtvdXQoJHYtcGFkZGluZzogJHNwYWNlLWRvdWJsZSkge1xuICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSk7XG4gIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSk7XG4gIHBhZGRpbmctbGVmdDogY2FsYygjeyR2LXBhZGRpbmd9ICsgY2FsYygtNTB2dyArIDUwJSkpO1xuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKCN7JHYtcGFkZGluZ30gKyBjYWxjKC01MHZ3ICsgNTAlKSk7XG59XG5cbi8vLyBNaXhpbiAtIFN0YW5kYXJkIE1hcmdpblxuQG1peGluIG1hcmdpbiB7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuQG1peGluIG5vLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbkBtaXhpbiBib3JkZXItYXJyb3coJGRpcmVjdGlvbjogYm90dG9tLCAkc2l6ZTogOHB4LCAkYm9yZGVyLXdpZHRoOiAycHgsICRib3JkZXItY29sb3I6ICRwcmltYXJ5LWNvbG9yKSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogJHNpemU7XG4gIGhlaWdodDogJHNpemU7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogMCAwICRib3JkZXItd2lkdGggJGJvcmRlci13aWR0aDtcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuXG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgIHRyYW5zZm9ybTogcm90YXRlWig0NWRlZyk7XG4gIH1cbiAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVaKDIyNWRlZyk7XG4gIH1cbiAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3Age1xuICAgIHRyYW5zZm9ybTogcm90YXRlWigxMzVkZWcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVooLTQ1ZGVnKTtcbiAgfVxufVxuXG5AbWl4aW4gbGluaygkY29sb3I6ICRwcmltYXJ5LWNvbG9yLCAkYm9yZGVyLXNpemU6IDJweCkge1xuICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgY29sb3I6ICRjb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRjb2xvciwgJGNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLXNpemUgMC4ycztcbiAgYmFja2dyb3VuZC1zaXplOiAwIGNhbGMoMnJlbS8xNik7XG4gIHBhZGRpbmctYm90dG9tOiBjYWxjKDZyZW0vMTYpO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgY2FsYygycmVtLzE2KTtcbiAgICBjb2xvcjogJGNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBsaW5rLWhvdmVyLXByaW1hcnkoJGNvbG9yOiAkcHJpbWFyeS1jb2xvcikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJGNvbG9yLCAkY29sb3IpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDEwMCU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtc2l6ZSAwLjJzO1xuICBiYWNrZ3JvdW5kLXNpemU6IDAgY2FsYygycmVtLzE2KTtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoNnJlbS8xNik7XG5cbiAgJjpob3ZlcixcbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBjYWxjKDJyZW0vMTYpO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuQG1peGluIGxpbmstYWN0aXZlKCRjb2xvcjogJHByaW1hcnktY29sb3IpIHtcbiAgY29sb3I6ICRjb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRjb2xvciwgJGNvbG9yKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAxMDAlO1xuICB0cmFuc2l0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgY2FsYygycmVtLzE2KTtcbiAgcGFkZGluZy1ib3R0b206IGNhbGMoNnJlbS8xNik7XG5cbiAgJjpob3ZlcixcbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSBjYWxjKDJyZW0vMTYpO1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cbn1cblxuQG1peGluIGJ1dHRvbigkYmc6JHByaW1hcnktY29sb3IsICRjb2xvcjokd2hpdGUsICRob3ZlckJnOiAkd2hpdGUsICRob3ZlckNvbG9yOiAkcHJpbWFyeS1jb2xvciwgJGJvcmRlcjogMnB4IHNvbGlkICRwcmltYXJ5LWNvbG9yLCAkbWluLXdpZHRoOiAyNDdweCwgJG1pbi1oZWlnaDogNjBweCkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1pbi13aWR0aDogJG1pbi13aWR0aDtcbiAgcGFkZGluZzogJHNwYWNlIDEuNSokc3BhY2U7XG4gIGJvcmRlcjogJGJvcmRlcjtcbiAgYm9yZGVyLXJhZGl1czogJGJ1dHRvbi1yYWRpdXM7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4gIGZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJnO1xuICB0cmFuc2l0aW9uOiAkYnV0dG9uLXRyYW5zaXRpb247XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDtcblxuICAmOnZpc2l0ZWQge1xuICAgIGNvbG9yOiAkY29sb3I7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSN7cmVtLWNhbGMoNCl9KTtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAkaG92ZXJDb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaG92ZXJCZztcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIH1cblxuICAmLmRpc2FibGVkLFxuICAmW2Rpc2FibGVkXSB7XG4gICAgJixcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkbGlnaHQtZ3JheTtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHQtZ3JheTtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICBib3JkZXItY29sb3I6ICRibGFjaztcbiAgfVxufVxuXG5AbWl4aW4gYnV0dG9uLS1naG9zdCB7XG4gIEBpbmNsdWRlIGJ1dHRvbigkYmc6JHdoaXRlLCAkY29sb3I6JHByaW1hcnktY29sb3IsICRob3ZlckJnOiAkcHJpbWFyeS1jb2xvciwgJGhvdmVyQ29sb3I6ICR3aGl0ZSk7XG59XG5cbkBtaXhpbiBidXR0b24tLWFsdCB7XG4gIEBpbmNsdWRlIGJ1dHRvbigkYmc6JHdoaXRlLCAkY29sb3I6JHByaW1hcnktY29sb3IsICRob3ZlckJnOiAkcHJpbWFyeS1jb2xvciwgJGhvdmVyQ29sb3I6ICR3aGl0ZSwgJGJvcmRlcjogMCk7XG59XG5cbkBtaXhpbiBzZWFyY2gtYnV0dG9ucyB7XG4gIC8vIEB0b2RvIFdoeSAuc2VhcmNoLWZvcm1zLWFyZWEgY2xhc3MgaXMgbm90IHVzZWQgaW4gcGFnZXMsIG9ubHkgaW4gb3ZlcmxheT9cbiAgLy8gQ29weSBmcm9tIF9wYXR0ZXJucy8wMy1vcmdhbmlzbXMvc2l0ZS8xMS1zaXRlLXNlYXJjaC1mb3Jtcy1hcmVhL3NlYXJjaC1mb3Jtcy1hcmVhLnNjc3NcbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgbWFyZ2luLXRvcDogJHNwYWNlLXF1YWRydXBsZTtcblxuICAgIC5mb3JtLXN1Ym1pdCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuZm9ybS1zdWJtaXQgfiAucmVzZXQge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1hcmdpbjogJHNwYWNlLXRyaXBsZSAwIDAgMDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICBtYXJnaW46IDAgMCAwICRzcGFjZS1kb3VibGU7XG4gICAgfVxuICB9XG5cbiAgLmZvcm0tc3VibWl0ICsgLmFqYXgtcHJvZ3Jlc3Mge1xuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gIH1cbn1cblxuQG1peGluIHNob3ctYXMtYmFja2dyb3VuZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAtMTA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICB9XG5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgQGV4dGVuZCAlYmFja2dyb3VuZC1jb3Zlci1saWtlO1xuICB9XG59XG5cbkBtaXhpbiBjdXN0b20teHktZ3JpZC1jb250YWluZXIoJHdpZHRoOiAkZ3JpZC1jb250YWluZXIsICRwYWRkaW5nOiAkZ3JpZC1jb250YWluZXItcGFkZGluZykge1xuICBAaW5jbHVkZSB4eS1ncmlkLWNvbnRhaW5lcigkd2lkdGgsICRwYWRkaW5nKTtcblxuICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlIGRvd24pIHtcbiAgICBtYXgtd2lkdGg6ICRncmlkLWNvbnRhaW5lci1tZWRpdW07XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KCgkZ2xvYmFsLXdpZHRoLW1lZGl1bSArIHJlbS1jYWxjKCRzcGFjZS1xdWFkcnVwbGUpKSBkb3duKSB7XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZS1kb3VibGU7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2UtZG91YmxlO1xuICB9XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICBtYXgtd2lkdGg6IDE5MG1tO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBjdXN0b20tc2xpY2staW4tZmxleCgpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgoJGdsb2JhbC13aWR0aC1tZWRpdW0gKyByZW0tY2FsYygkc3BhY2UtcXVhZHJ1cGxlKSkgZG93bikge1xuICAgICYucGFyYWdyYXBoLWJldmVsbGVkIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOy8vZml4IGZvciBzbGljayBzbGlkZXIgYnVnIGluIGZsZXggY29udGFpbmVyc1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpY29uLWNsb3NlKCRjb2xvcjogJHByaW1hcnktY29sb3IpIHtcbiAgd2lkdGg6IDM1cHg7XG4gIGhlaWdodDogMzVweDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAuaWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDdweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdHJhbnNpdGlvbjogMC41cyBhbGw7XG5cbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDJweCwgLTJweCkgcm90YXRlKDQ1ZGVnKTtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgycHgsIC0ycHgpIHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYWdpbmctbGlzdCgkYnV0dG9uLXNpemU6ICRzcGFjZS1kb3VibGUsICRidXR0b24tZm9udC1zaXplOiAwLjYyNXJlbSkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46ICRzcGFjZS1kb3VibGUgMCAwIDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgbGkge1xuICAgIHBhZGRpbmc6IDAgJHNwYWNlO1xuICAgIGxpbmUtaGVpZ2h0OiAkc3BhY2UtZG91YmxlO1xuICB9XG5cbiAgYnV0dG9uLFxuICAucGFnZXItYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwYWdpbmctYnV0dG9uKCRidXR0b24tc2l6ZSwgJGJ1dHRvbi1mb250LXNpemUpO1xuICB9XG59XG5cbkBtaXhpbiBwYWdpbmctYnV0dG9uKCRidXR0b24tc2l6ZTogJHNwYWNlLWRvdWJsZSwgJGJ1dHRvbi1mb250LXNpemU6IDAuNjI1cmVtKSB7XG4gIHdpZHRoOiAkYnV0dG9uLXNpemU7XG4gIGhlaWdodDogJGJ1dHRvbi1zaXplO1xuICBib3JkZXI6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuNSAqICRidXR0b24tc2l6ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6ICRidXR0b24tZm9udC1zaXplO1xuICBmb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcbiAgbGluZS1oZWlnaHQ6ICRidXR0b24tc2l6ZSAtIDFweDtcbiAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay13aGl0ZTtcbiAgb3V0bGluZTogMDtcblxuICAmOmhvdmVyLFxuICAuaXMtYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICBjb2xvcjogJHdoaXRlO1xuICB9XG59XG5cbkBtaXhpbiB0aWNrKCRzaXplOiAkc3BhY2UtZG91YmxlLCAkdGljay1jb2xvcjogJHByaW1hcnktY29sb3IpIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwLjM1KiRzaXplO1xuICBoZWlnaHQ6IDAuNjUqJHNpemU7XG4gIG1hcmdpbjogMCBhdXRvIDAuMTUqJHNpemU7XG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgYm9yZGVyLWJvdHRvbTogc29saWQgM3B4ICR0aWNrLWNvbG9yO1xuICBib3JkZXItcmlnaHQ6IHNvbGlkIDNweCAkdGljay1jb2xvcjtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDtcbn1cblxuQG1peGluIGNoZWNrYm94KCRzaXplOiAkc3BhY2UtZG91YmxlLCAkYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6ICRzaXplO1xuICBoZWlnaHQ6ICRzaXplO1xuICBib3JkZXI6IDJweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbkBtaXhpbiBmb3JtLS1hY3Rpb25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWFyZ2luLXRvcDogJHNwYWNlLXF1YWRydXBsZTtcblxuICAuc3VibWl0IHtcbiAgICBtaW4td2lkdGg6IGluaXRpYWw7XG4gICAgbWFyZ2luOiAwIDAgJHNwYWNlLXRyaXBsZTtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5cbiAgJl9fc2Vjb25kYXJ5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIC8vIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcblxuICAgIGJ1dHRvbiB7XG4gICAgICBwYWRkaW5nLXRvcDogMC41KiRzcGFjZTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwLjUqJHNwYWNlO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgJi5kaXNhYmxlZDpob3ZlcixcbiAgICAgICZbZGlzYWJsZWRdOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRsaWdodC1ncmF5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2UtdHJpcGxlO1xuXG4gICAgLnN1Ym1pdCB7XG4gICAgICBtaW4td2lkdGg6IDI0N3B4O1xuICAgICAgbWFyZ2luOiAwICRzcGFjZS1kb3VibGUgMCAwO1xuICAgIH1cbiAgfVxufVxuXG4vKiBUcnVuY2F0ZSBUZXh0ICovXG5AbWl4aW4gdHJ1bmNhdGUtdGV4dCgkd2lkdGgpIHtcbiAgbWF4LXdpZHRoOiAkd2lkdGg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuIiwiQGltcG9ydCBcIm1peGluc1wiO1xuXG4lYmFja2dyb3VuZC1jb3Zlci1saWtlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC05OTk5cHg7XG4gIHJpZ2h0OiAtOTk5OXB4O1xuICBib3R0b206IC05OTk5cHg7XG4gIGxlZnQ6IC05OTk5cHg7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgbWluLXdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXJnaW46IGF1dG87XG5cbiAgQG1lZGlhIHByaW50IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIG1hcmdpbi1ib3R0b206ICRzcGFjZSAqIDQ7XG4gIH1cbn1cblxuJWIxIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4lYmxvY2stdGl0bGUge1xuICBmb250LXNpemU6IDEuNHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMTY2NztcbiAgZm9udC1mYW1pbHk6ICRoZWFkZXItZm9udC1mYW1pbHk7XG4gIGNvbG9yOiAkYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbiVmb3JtLWNoZWNrYm94IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IC0xO1xuICAgIG9wYWNpdHk6IDA7XG5cbiAgICAmICsgbGFiZWwge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgcGFkZGluZzogMCAwIDAgMi41KiRzcGFjZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkc3BhY2UtZG91YmxlO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBAaW5jbHVkZSBjaGVja2JveCgpO1xuXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmNoZWNrZWQgKyBsYWJlbDo6YWZ0ZXIge1xuICAgICAgQGluY2x1ZGUgdGljaygpO1xuXG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMnB4O1xuICAgICAgbGVmdDogNnB4O1xuICAgIH1cbiAgfVxufVxuXG4vLyBpbnB1dC0td2l0aC1pY29uLS1yaWdodCBpbnB1dC0td2l0aC1pY29uLS1tYWduaWZpZXJcbiVpbnB1dC0td2l0aC1pY29uIHtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAmLS1yaWdodCB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlIC0gMjBweCkgNTAlO1xuICB9XG5cbiAgJi0tbWFnbmlmaWVyIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA1MHB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgY2xhc3M9J2lucHV0LXN5bWJvbF9fc3ltYm9sJyB3aWR0aD0nMjUnIGhlaWdodD0nMjUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NnIHN0cm9rZS13aWR0aD0nLjEnIGZpbGwtcnVsZT0nbm9uemVybycgZmlsbD0nJTIzQTNBM0EzJyBzdHJva2U9JyUyM0EzQTNBMyclM0UlM0NwYXRoIGQ9J00xMC42MTcgOS43MjVhLjQ3Mi40NzIgMCAxMTAgLjk0My40NzIuNDcyIDAgMDEwLS45NDN6Jy8lM0UlM0NwYXRoIGQ9J00xLjY0NCAyMS42ODlsNi4yOTQtNi4yOTRhOS4zNDcgOS4zNDcgMCAwMS0xLjU2Ni01LjE5OWMwLTUuMiA0LjIzMS05LjQzMSA5LjQzMy05LjQzMSA1LjE5OSAwIDkuNDMgNC4yMyA5LjQzIDkuNDMxIDAgNS4yLTQuMjMgOS40MzItOS40MzEgOS40MzJhOS4zNDMgOS4zNDMgMCAwMS01LjE5OS0xLjU2NmwtMS43NCAxLjc0czAgMCAwIDBsLTQuNTU0IDQuNTU0Yy0uMzU2LjM1Ny0uODMuNTUzLTEuMzM0LjU1My0uNTAzIDAtLjk3Ny0uMTk2LTEuMzMzLS41NTJhMS44NzMgMS44NzMgMCAwMS0uNTUzLTEuMzM0YzAtLjUwNC4xOTYtLjk3OC41NTMtMS4zMzR6bTkuMTgzLTQuNjJzMCAwIDAgMGE4LjQxNSA4LjQxNSAwIDAwNC45NzcgMS42MTVjNC42OCAwIDguNDg4LTMuODA3IDguNDg4LTguNDg4IDAtNC42OC0zLjgwOC04LjQ4OC04LjQ4OC04LjQ4OHMtOC40ODggMy44MDgtOC40ODggOC40ODhjMCAxLjguNTU4IDMuNTIxIDEuNjE2IDQuOTc3YTguNTMgOC41MyAwIDAwMS44OTUgMS44OTV6bS0uOTkuNDI3YTkuNjAzIDkuNjAzIDAgMDEtMS4zMzMtMS4zMzRMNy4xNjYgMTcuNWMuNDA3LjQ4Ljg1NC45MjcgMS4zMzQgMS4zMzRsMS4zMzgtMS4zMzh6TTIuMzEgMjMuNjlhLjkzNy45MzcgMCAwMC42NjcuMjc2LjkzNy45MzcgMCAwMC42NjctLjI3Nmw0LjE4Ny00LjE4OGExMi41MiAxMi41MiAwIDAxLTEuMzMzLTEuMzMzTDIuMzEgMjIuMzU2YS45MzYuOTM2IDAgMDAtLjI3Ni42NjcuOTM2LjkzNiAwIDAwLjI3Ni42Njd6Jy8lM0UlM0NwYXRoIGQ9J00xNS44MDQgMi42NTFjNC4xNiAwIDcuNTQ1IDMuMzg1IDcuNTQ1IDcuNTQ1cy0zLjM4NSA3LjU0NS03LjU0NSA3LjU0NS03LjU0NS0zLjM4NC03LjU0NS03LjU0NWMwLTQuMTYgMy4zODQtNy41NDUgNy41NDUtNy41NDV6bTAgMTQuMTQ3YTYuNjEgNi42MSAwIDAwNi42MDEtNi42MDIgNi42MSA2LjYxIDAgMDAtNi42MDEtNi42MDEgNi42MSA2LjYxIDAgMDAtNi42MDIgNi42MDIgNi42MSA2LjYxIDAgMDA2LjYwMiA2LjYwMnonLyUzRSUzQ3BhdGggZD0nTTEwLjUxOSA4LjE3MmE1LjY1OSA1LjY1OSAwIDAxMi4wNDUtMi42MTMgNS42MTkgNS42MTkgMCAwMTMuMjQtMS4wMjEuNDcyLjQ3MiAwIDAxMCAuOTQzIDQuNzQ4IDQuNzQ4IDAgMDAtNC40MDQgMy4wMy40NzIuNDcyIDAgMTEtLjg4LS4zMzl6Jy8lM0UlM0MvZyUzRSUzQy9zdmclM0VcIik7XG4gIH1cbn1cblxuJWZvcm0tLWlubGluZSB7XG4gIC5mb3JtLWl0ZW0sXG4gICYgPiAuZm9ybS1pdGVtIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuICAgIC5mb3JtLWFjdGlvbnMge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgQGluY2x1ZGUgeHktZ3JpZCgpO1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJG5lZ2F0aXZlOiB0cnVlKTtcblxuICAgICYgPiAuZm9ybS1pdGVtLFxuICAgICYgPiAuZm9ybS1hY3Rpb25zIHtcbiAgICAgIEBpbmNsdWRlIHh5LWNlbGwoMTIpO1xuICAgIH1cblxuICAgICYgPiAuZm9ybS10eXBlLXNlbGVjdCB7XG4gICAgICBAaW5jbHVkZSB4eS1jZWxsKDYpO1xuICAgIH1cbiAgfVxuXG4gIC5zZWxlY3QyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuJWNhcmQtaG92ZXIge1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcblxuICAmOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSN7cmVtLWNhbGMoMTApfSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIH1cbn1cblxuJXZpc3VhbGx5LWhpZGRlbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMXB4O1xuICB3aWR0aDogMXB4O1xuICB3b3JkLXdyYXA6IG5vcm1hbDtcbn1cbiIsIi8vICBGb3VuZGF0aW9uIGZvciBTaXRlcyBTZXR0aW5nc1xuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vL1xuLy8gIFRhYmxlIG9mIENvbnRlbnRzOlxuLy9cbi8vICAgMS4gR2xvYmFsXG4vLyAgIDIuIEJyZWFrcG9pbnRzXG4vLyAgIDMuIFRoZSBHcmlkXG4vLyAgIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gICA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vICAgNi4gQWJpZGVcbi8vICAgNy4gQWNjb3JkaW9uXG4vLyAgIDguIEFjY29yZGlvbiBNZW51XG4vLyAgIDkuIEJhZGdlXG4vLyAgMTAuIEJyZWFkY3J1bWJzXG4vLyAgMTEuIEJ1dHRvblxuLy8gIDEyLiBCdXR0b24gR3JvdXBcbi8vICAxMy4gQ2FsbG91dFxuLy8gIDE0LiBDYXJkXG4vLyAgMTUuIENsb3NlIEJ1dHRvblxuLy8gIDE2LiBEcmlsbGRvd25cbi8vICAxNy4gRHJvcGRvd25cbi8vICAxOC4gRHJvcGRvd24gTWVudVxuLy8gIDE5LiBGbGV4Ym94IFV0aWxpdGllc1xuLy8gIDIwLiBGb3Jtc1xuLy8gIDIxLiBMYWJlbFxuLy8gIDIyLiBNZWRpYSBPYmplY3Rcbi8vICAyMy4gTWVudVxuLy8gIDI0LiBNZXRlclxuLy8gIDI1LiBPZmYtY2FudmFzXG4vLyAgMjYuIE9yYml0XG4vLyAgMjcuIFBhZ2luYXRpb25cbi8vICAyOC4gUHJvZ3Jlc3MgQmFyXG4vLyAgMjkuIFByb3RvdHlwZSBBcnJvd1xuLy8gIDMwLiBQcm90b3R5cGUgQm9yZGVyLUJveFxuLy8gIDMxLiBQcm90b3R5cGUgQm9yZGVyLU5vbmVcbi8vICAzMi4gUHJvdG90eXBlIEJvcmRlcmVkXG4vLyAgMzMuIFByb3RvdHlwZSBEaXNwbGF5XG4vLyAgMzQuIFByb3RvdHlwZSBGb250LVN0eWxpbmdcbi8vICAzNS4gUHJvdG90eXBlIExpc3QtU3R5bGUtVHlwZVxuLy8gIDM2LiBQcm90b3R5cGUgT3ZlcmZsb3dcbi8vICAzNy4gUHJvdG90eXBlIFBvc2l0aW9uXG4vLyAgMzguIFByb3RvdHlwZSBSb3VuZGVkXG4vLyAgMzkuIFByb3RvdHlwZSBTZXBhcmF0b3Jcbi8vICA0MC4gUHJvdG90eXBlIFNoYWRvd1xuLy8gIDQxLiBQcm90b3R5cGUgU2l6aW5nXG4vLyAgNDIuIFByb3RvdHlwZSBTcGFjaW5nXG4vLyAgNDMuIFByb3RvdHlwZSBUZXh0LURlY29yYXRpb25cbi8vICA0NC4gUHJvdG90eXBlIFRleHQtVHJhbnNmb3JtYXRpb25cbi8vICA0NS4gUHJvdG90eXBlIFRleHQtVXRpbGl0aWVzXG4vLyAgNDYuIFJlc3BvbnNpdmUgRW1iZWRcbi8vICA0Ny4gUmV2ZWFsXG4vLyAgNDguIFNsaWRlclxuLy8gIDQ5LiBTd2l0Y2hcbi8vICA1MC4gVGFibGVcbi8vICA1MS4gVGFic1xuLy8gIDUyLiBUaHVtYm5haWxcbi8vICA1My4gVGl0bGUgQmFyXG4vLyAgNTQuIFRvb2x0aXBcbi8vICA1NS4gVG9wIEJhclxuLy8gIDU2LiBYeSBHcmlkXG5cbkBpbXBvcnQgJ3V0aWwvdXRpbCc7XG5cbi8vIDEuIEdsb2JhbFxuLy8gLS0tLS0tLS0tXG5cbiRnbG9iYWwtZm9udC1zaXplOiAxMDAlO1xuJGdsb2JhbC1zaXRlLXdpZHRoOiByZW0tY2FsYygyNTYwKTtcbiRnbG9iYWwtd2lkdGg6IHJlbS1jYWxjKDEyMDApO1xuJGdsb2JhbC13aWR0aC1tZWRpdW06IHJlbS1jYWxjKDk0MCk7XG4kZ2xvYmFsLWxpbmVoZWlnaHQ6IDEuNTtcbiRmb3VuZGF0aW9uLXBhbGV0dGU6IChcbiAgcHJpbWFyeTogJHByaW1hcnktY29sb3IsXG4gIHNlY29uZGFyeTogJHNlY29uZGFyeS1jb2xvcixcbiAgc3VjY2VzczogJHN1Y2Nlc3MtY29sb3IsXG4gIHdhcm5pbmc6ICR3YXJuaW5nLWNvbG9yLFxuICBhbGVydDogJGFsZXJ0LWNvbG9yLFxuKTtcbiRib2R5LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRib2R5LWZvbnQtY29sb3I6ICRibGFjaztcbiRib2R5LWZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcbiRib2R5LWFudGlhbGlhc2VkOiB0cnVlO1xuXG4vLyBTcGFjaW5nIC0gc3BlY2lmaWMgKG5vdCBmcm9tIFpVUkIgRm91bmRhdGlvbilcbiRzcGFjZTogMTBweDtcbiRzcGFjZS1kb3VibGU6IGNhbGMoJHNwYWNlKjIpO1xuJHNwYWNlLXRyaXBsZTogY2FsYygkc3BhY2UqMyk7XG4kc3BhY2UtcXVhZHJ1cGxlOiBjYWxjKCRzcGFjZSo0KTtcbiRzcGFjZS1xdWludHVwbGU6IGNhbGMoJHNwYWNlKjUpO1xuJHNwYWNlLXNleHR1cGxlOiBjYWxjKCRzcGFjZSo2KTtcbiRzcGFjZS1zZXB0dXBsZTogY2FsYygkc3BhY2UqNyk7XG4kc3BhY2UtZGVjdXBsZTogY2FsYygkc3BhY2UqMTApO1xuJHNwYWNlLW9uZS1oYWxmOiBjYWxjKCRzcGFjZS8yKTtcbiRzcGFjZS1vbmUtZmlmdGg6IGNhbGMoJHNwYWNlLzUpO1xuJHNwYWNlLW9uZS10ZW50aDogY2FsYygkc3BhY2UvMTApO1xuXG4kZ2xvYmFsLW1hcmdpbjogJHNwYWNlO1xuJGdsb2JhbC1wYWRkaW5nOiAkc3BhY2U7XG4kZ2xvYmFsLXBvc2l0aW9uOiAkc3BhY2U7XG4kZ2xvYmFsLXdlaWdodC1ub3JtYWw6IG5vcm1hbDtcbiRnbG9iYWwtd2VpZ2h0LWJvbGQ6IGJvbGQ7XG4kZ2xvYmFsLXJhZGl1czogMTRweDtcbiRnbG9iYWwtbWVudS1wYWRkaW5nOiAwO1xuJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW46IDFyZW07XG4kZ2xvYmFsLXRleHQtZGlyZWN0aW9uOiBsdHI7XG4kZ2xvYmFsLWZsZXhib3g6IHRydWU7XG4kZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50czogZmFsc2U7XG4kZ2xvYmFsLWJ1dHRvbi1jdXJzb3I6IGF1dG87XG4kZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlOiAwO1xuJHByaW50LXRyYW5zcGFyZW50LWJhY2tncm91bmRzOiB0cnVlO1xuXG4kcHJpbnQtaHJlZnM6IHRydWU7XG5cbi8vIDIuIEJyZWFrcG9pbnRzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTQ0MHB4LFxuKTtcbiRwcmludC1icmVha3BvaW50OiBsYXJnZTtcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UgeGxhcmdlKTtcblxuLy8gMy4gVGhlIEdyaWRcbi8vIC0tLS0tLS0tLS0tXG5cbiRmbGV4OiB0cnVlO1xuJGdyaWQtcm93LXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJGdyaWQtY29sdW1uLWNvdW50OiAxMjtcbiRncmlkLWNvbHVtbi1ndXR0ZXI6IChcbiAgc21hbGw6IDkuNDVweCxcbiAgbWVkaXVtOiAyMHB4LFxuKTtcbiRncmlkLWNvbHVtbi1hbGlnbi1lZGdlOiB0cnVlO1xuJGdyaWQtY29sdW1uLWFsaWFzOiAnY29sdW1ucyc7XG4kYmxvY2stZ3JpZC1tYXg6IDg7XG5cbi8vIDQuIEJhc2UgVHlwb2dyYXBoeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRoZWFkZXItZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMgQ29uZGVuc2VkJywgc2Fucy1zZXJpZjtcbiRoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4kaGVhZGVyLWZvbnQtc3R5bGU6IG5vcm1hbDtcbiRmb250LWZhbWlseS1tb25vc3BhY2U6IENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgQ291cmllciwgbW9ub3NwYWNlO1xuJGhlYWRlci1jb2xvcjogaW5oZXJpdDtcbiRoZWFkZXItbGluZWhlaWdodDogMS40O1xuJGhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kaGVhZGVyLXN0eWxlczogKFxuICBzbWFsbDogKFxuICAgICdoMSc6ICgnZm9udC1zaXplJzogMzQsICdsaW5lLWhlaWdodCc6IDUwKSxcbiAgICAnaDInOiAoJ2ZvbnQtc2l6ZSc6IDI4LCAnbGluZS1oZWlnaHQnOiA0MiksXG4gICAgJ2gzJzogKCdmb250LXNpemUnOiAxNiwgJ2xpbmUtaGVpZ2h0JzogMzApLFxuICAgICdoNCc6ICgnZm9udC1zaXplJzogMjAsICdsaW5lLWhlaWdodCc6IDI4KSxcbiAgICAnaDUnOiAoJ2ZvbnQtc2l6ZSc6IDIwLCAnbGluZS1oZWlnaHQnOiAyOCksXG4gICAgJ2g2JzogKCdmb250LXNpemUnOiAyMCwgJ2xpbmUtaGVpZ2h0JzogMjgpLFxuICApLFxuICBtZWRpdW06IChcbiAgICAnaDEnOiAoJ2ZvbnQtc2l6ZSc6IDQ0LCAnbGluZS1oZWlnaHQnOiA2MCksXG4gICAgJ2gyJzogKCdmb250LXNpemUnOiAzNCwgJ2xpbmUtaGVpZ2h0JzogNTApLFxuICAgICdoMyc6ICgnZm9udC1zaXplJzogMTYsICdsaW5lLWhlaWdodCc6IDMwKSxcbiAgICAnaDQnOiAoJ2ZvbnQtc2l6ZSc6IDIwLCAnbGluZS1oZWlnaHQnOiAyOCksXG4gICAgJ2g1JzogKCdmb250LXNpemUnOiAyMCwgJ2xpbmUtaGVpZ2h0JzogMjgpLFxuICAgICdoNic6ICgnZm9udC1zaXplJzogMjAsICdsaW5lLWhlaWdodCc6IDI4KSxcbiAgKSxcbik7XG4kaGVhZGVyLXRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4kbWVkaXVtLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuJHNtYWxsLWZvbnQtc2l6ZTogODEuMjUlO1xuJGhlYWRlci1zbWFsbC1mb250LWNvbG9yOiAkbWVkaXVtLWdyYXk7XG4kcGFyYWdyYXBoLWxpbmVoZWlnaHQ6IDEuNjtcbiRwYXJhZ3JhcGgtbWFyZ2luLWJvdHRvbTogMXJlbTtcbiRwYXJhZ3JhcGgtdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiRjb2RlLWNvbG9yOiAkYmxhY2s7XG4kY29kZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LW1vbm9zcGFjZTtcbiRjb2RlLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kY29kZS1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kY29kZS1ib3JkZXI6IG5vbmU7XG4kY29kZS1wYWRkaW5nOiAwO1xuJGFuY2hvci1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kYW5jaG9yLWNvbG9yLWhvdmVyOiAkcHJpbWFyeS1jb2xvcjtcbiRhbmNob3ItdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuJGFuY2hvci10ZXh0LWRlY29yYXRpb24taG92ZXI6IG5vbmU7XG4kaHItd2lkdGg6ICRnbG9iYWwtd2lkdGg7XG4kaHItYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGhyLW1hcmdpbjogcmVtLWNhbGMoMjApIGF1dG87XG4kbGlzdC1saW5laGVpZ2h0OiAkcGFyYWdyYXBoLWxpbmVoZWlnaHQ7XG4kbGlzdC1tYXJnaW4tYm90dG9tOiAkcGFyYWdyYXBoLW1hcmdpbi1ib3R0b207XG4kbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuJGxpc3Qtc3R5bGUtcG9zaXRpb246IG91dHNpZGU7XG4kbGlzdC1zaWRlLW1hcmdpbjogMS4yNXJlbTtcbiRsaXN0LW5lc3RlZC1zaWRlLW1hcmdpbjogMS4yNXJlbTtcbiRkZWZubGlzdC1tYXJnaW4tYm90dG9tOiAxcmVtO1xuJGRlZm5saXN0LXRlcm0td2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGRlZm5saXN0LXRlcm0tbWFyZ2luLWJvdHRvbTogMC4zcmVtO1xuJGJsb2NrcXVvdGUtY29sb3I6ICRkYXJrLWdyYXk7XG4kYmxvY2txdW90ZS1wYWRkaW5nOiByZW0tY2FsYyg5IDIwIDAgMTkpO1xuJGJsb2NrcXVvdGUtYm9yZGVyOiAxcHggc29saWQgJG1lZGl1bS1ncmF5O1xuJGNpdGUtZm9udC1zaXplOiByZW0tY2FsYygxMyk7XG4kY2l0ZS1jb2xvcjogJGRhcmstZ3JheTtcbiRjaXRlLXBzZXVkby1jb250ZW50OiAnXFwyMDE0IFxcMDAyMCc7XG4ka2V5c3Ryb2tlLWZvbnQ6ICRmb250LWZhbWlseS1tb25vc3BhY2U7XG4ka2V5c3Ryb2tlLWNvbG9yOiAkYmxhY2s7XG4ka2V5c3Ryb2tlLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGtleXN0cm9rZS1wYWRkaW5nOiByZW0tY2FsYygyIDQgMCk7XG4ka2V5c3Ryb2tlLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kYWJici11bmRlcmxpbmU6IDFweCBkb3R0ZWQgJGJsYWNrO1xuXG4vLyA1LiBUeXBvZ3JhcGh5IEhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kbGVhZC1mb250LXNpemU6ICRnbG9iYWwtZm9udC1zaXplICogMS4yNTtcbiRsZWFkLWxpbmVoZWlnaHQ6IDEuNjtcbiRzdWJoZWFkZXItbGluZWhlaWdodDogMS40O1xuJHN1YmhlYWRlci1jb2xvcjogJGRhcmstZ3JheTtcbiRzdWJoZWFkZXItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LW5vcm1hbDtcbiRzdWJoZWFkZXItbWFyZ2luLXRvcDogMC4ycmVtO1xuJHN1YmhlYWRlci1tYXJnaW4tYm90dG9tOiAwLjVyZW07XG4kc3RhdC1mb250LXNpemU6IDIuNXJlbTtcblxuLy8gNi4gQWJpZGVcbi8vIC0tLS0tLS0tXG5cbiRhYmlkZS1pbnB1dHM6IHRydWU7XG4kYWJpZGUtbGFiZWxzOiB0cnVlO1xuJGlucHV0LWJhY2tncm91bmQtaW52YWxpZDogZ2V0LWNvbG9yKGFsZXJ0KTtcbiRmb3JtLWxhYmVsLWNvbG9yLWludmFsaWQ6IGdldC1jb2xvcihhbGVydCk7XG4kaW5wdXQtZXJyb3ItY29sb3I6IGdldC1jb2xvcihhbGVydCk7XG4kaW5wdXQtZXJyb3ItZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4kaW5wdXQtZXJyb3ItZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG5cbi8vIDcuIEFjY29yZGlvblxuLy8gLS0tLS0tLS0tLS0tXG5cbiRhY2NvcmRpb24tYmFja2dyb3VuZDogJHdoaXRlO1xuJGFjY29yZGlvbi1wbHVzbWludXM6IHRydWU7XG4kYWNjb3JkaW9uLXRpdGxlLWZvbnQtc2l6ZTogcmVtLWNhbGMoMTIpO1xuJGFjY29yZGlvbi1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRhY2NvcmRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcbiRhY2NvcmRpb24taXRlbS1wYWRkaW5nOiAxLjI1cmVtIDFyZW07XG4kYWNjb3JkaW9uLWNvbnRlbnQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGFjY29yZGlvbi1jb250ZW50LWJvcmRlcjogMXB4IHNvbGlkICRsaWdodC1ncmF5O1xuJGFjY29yZGlvbi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJGFjY29yZGlvbi1jb250ZW50LXBhZGRpbmc6IDFyZW07XG5cbi8vIDguIEFjY29yZGlvbiBNZW51XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuXG4kYWNjb3JkaW9ubWVudS1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRhY2NvcmRpb25tZW51LW5lc3RlZC1tYXJnaW46ICRnbG9iYWwtbWVudS1uZXN0ZWQtbWFyZ2luO1xuJGFjY29yZGlvbm1lbnUtc3VibWVudS1wYWRkaW5nOiAkYWNjb3JkaW9ubWVudS1wYWRkaW5nO1xuJGFjY29yZGlvbm1lbnUtYXJyb3dzOiB0cnVlO1xuJGFjY29yZGlvbm1lbnUtYXJyb3ctY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJGFjY29yZGlvbm1lbnUtaXRlbS1iYWNrZ3JvdW5kOiBudWxsO1xuJGFjY29yZGlvbm1lbnUtYm9yZGVyOiBudWxsO1xuJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtYmFja2dyb3VuZDogbnVsbDtcbiRhY2NvcmRpb24tc3VibWVudS10b2dnbGUtYm9yZGVyOiAkYWNjb3JkaW9ubWVudS1ib3JkZXI7XG4kYWNjb3JkaW9ubWVudS1zdWJtZW51LXRvZ2dsZS13aWR0aDogNDBweDtcbiRhY2NvcmRpb25tZW51LXN1Ym1lbnUtdG9nZ2xlLWhlaWdodDogJGFjY29yZGlvbm1lbnUtc3VibWVudS10b2dnbGUtd2lkdGg7XG4kYWNjb3JkaW9ubWVudS1hcnJvdy1zaXplOiA2cHg7XG5cbi8vIDkuIEJhZGdlXG4vLyAtLS0tLS0tLVxuXG4kYmFkZ2UtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kYmFkZ2UtY29sb3I6ICR3aGl0ZTtcbiRiYWRnZS1jb2xvci1hbHQ6ICRibGFjaztcbiRiYWRnZS1wYWxldHRlOiAkZm91bmRhdGlvbi1wYWxldHRlO1xuJGJhZGdlLXBhZGRpbmc6IDAuM2VtO1xuJGJhZGdlLW1pbndpZHRoOiAyLjFlbTtcbiRiYWRnZS1mb250LXNpemU6IDAuNnJlbTtcblxuLy8gMTAuIEJyZWFkY3J1bWJzXG4vLyAtLS0tLS0tLS0tLS0tLS1cblxuJGJyZWFkY3J1bWJzLW1hcmdpbjogMCAwICRnbG9iYWwtbWFyZ2luIDA7XG4kYnJlYWRjcnVtYnMtaXRlbS1mb250LXNpemU6IHJlbS1jYWxjKDExKTtcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWN1cnJlbnQ6ICRibGFjaztcbiRicmVhZGNydW1icy1pdGVtLWNvbG9yLWRpc2FibGVkOiAkbWVkaXVtLWdyYXk7XG4kYnJlYWRjcnVtYnMtaXRlbS1tYXJnaW46IDAuNzVyZW07XG4kYnJlYWRjcnVtYnMtaXRlbS11cHBlcmNhc2U6IHRydWU7XG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3I6IHRydWU7XG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItaXRlbTogJy8nO1xuJGJyZWFkY3J1bWJzLWl0ZW0tc2VwYXJhdG9yLWl0ZW0tcnRsOiAnXFxcXCc7XG4kYnJlYWRjcnVtYnMtaXRlbS1zZXBhcmF0b3ItY29sb3I6ICRtZWRpdW0tZ3JheTtcblxuLy8gMTEuIEJ1dHRvblxuLy8gLS0tLS0tLS0tLVxuXG4kYnV0dG9uLWZvbnQtZmFtaWx5OiBpbmhlcml0O1xuJGJ1dHRvbi1wYWRkaW5nOiAwLjg1ZW0gMWVtO1xuJGJ1dHRvbi1tYXJnaW46IDAgMCAkZ2xvYmFsLW1hcmdpbiAwO1xuJGJ1dHRvbi1maWxsOiBzb2xpZDtcbiRidXR0b24tYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kYnV0dG9uLWJhY2tncm91bmQtaG92ZXI6ICR3aGl0ZTtcbiRidXR0b24tY29sb3I6ICR3aGl0ZTtcbiRidXR0b24tY29sb3ItYWx0OiAkYmxhY2s7XG4kYnV0dG9uLXJhZGl1czogMDtcbiRidXR0b24taG9sbG93LWJvcmRlci13aWR0aDogMXB4O1xuJGJ1dHRvbi1zaXplczogKFxuICB0aW55OiAwLjZyZW0sXG4gIHNtYWxsOiAwLjc1cmVtLFxuICBkZWZhdWx0OiAwLjlyZW0sXG4gIGxhcmdlOiAxLjI1cmVtLFxuKTtcbiRidXR0b24tcGFsZXR0ZTogJGZvdW5kYXRpb24tcGFsZXR0ZTtcbiRidXR0b24tb3BhY2l0eS1kaXNhYmxlZDogMC4yNTtcbiRidXR0b24tYmFja2dyb3VuZC1ob3Zlci1saWdodG5lc3M6IC0yMCU7XG4kYnV0dG9uLWhvbGxvdy1ob3Zlci1saWdodG5lc3M6IC01MCU7XG4kYnV0dG9uLXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsXG4gIGNvbG9yIDAuMjVzIGVhc2Utb3V0LFxuICB0cmFuc2Zvcm0gMC4yNXMgZWFzZS1vdXQsXG4gIGJveC1zaGFkb3cgMC4yNXMgZWFzZS1vdXQ7XG4kYnV0dG9uLXJlc3BvbnNpdmUtZXhwYW5kZWQ6IGZhbHNlO1xuXG4vLyAxMi4gQnV0dG9uIEdyb3VwXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG5cbiRidXR0b25ncm91cC1tYXJnaW46IDFyZW07XG4kYnV0dG9uZ3JvdXAtc3BhY2luZzogMXB4O1xuJGJ1dHRvbmdyb3VwLWNoaWxkLXNlbGVjdG9yOiAnLmJ1dHRvbic7XG4kYnV0dG9uZ3JvdXAtZXhwYW5kLW1heDogNjtcbiRidXR0b25ncm91cC1yYWRpdXMtb24tZWFjaDogdHJ1ZTtcblxuLy8gMTMuIENhbGxvdXRcbi8vIC0tLS0tLS0tLS0tXG5cbiRjYWxsb3V0LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRjYWxsb3V0LWJhY2tncm91bmQtZmFkZTogODUlO1xuJGNhbGxvdXQtYm9yZGVyOiAxcHggc29saWQgcmdiYSgkYmxhY2ssIDAuMjUpO1xuJGNhbGxvdXQtbWFyZ2luOiAwIDAgMXJlbSAwO1xuJGNhbGxvdXQtcGFkZGluZzogMXJlbTtcbiRjYWxsb3V0LWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kY2FsbG91dC1mb250LWNvbG9yLWFsdDogJGJvZHktYmFja2dyb3VuZDtcbiRjYWxsb3V0LXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kY2FsbG91dC1saW5rLXRpbnQ6IDMwJTtcblxuLy8gMTQuIENhcmRcbi8vIC0tLS0tLS0tXG5cbiRjYXJkLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRjYXJkLWZvbnQtY29sb3I6ICRib2R5LWZvbnQtY29sb3I7XG4kY2FyZC1kaXZpZGVyLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGNhcmQtYm9yZGVyOiAxcHggc29saWQgJGxpZ2h0LWdyYXk7XG4kY2FyZC1zaGFkb3c6IG5vbmU7XG4kY2FyZC1ib3JkZXItcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRjYXJkLXBhZGRpbmc6ICRnbG9iYWwtcGFkZGluZztcbiRjYXJkLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuXG4vLyAxNS4gQ2xvc2UgQnV0dG9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG5cbiRjbG9zZWJ1dHRvbi1wb3NpdGlvbjogcmlnaHQgdG9wO1xuJGNsb3NlYnV0dG9uLW9mZnNldC1ob3Jpem9udGFsOiAoXG4gIHNtYWxsOiAwLjY2cmVtLFxuICBtZWRpdW06IDFyZW0sXG4pO1xuJGNsb3NlYnV0dG9uLW9mZnNldC12ZXJ0aWNhbDogKFxuICBzbWFsbDogMC4zM2VtLFxuICBtZWRpdW06IDAuNXJlbSxcbik7XG4kY2xvc2VidXR0b24tc2l6ZTogKFxuICBzbWFsbDogMS41ZW0sXG4gIG1lZGl1bTogMmVtLFxuKTtcbiRjbG9zZWJ1dHRvbi1saW5laGVpZ2h0OiAxO1xuJGNsb3NlYnV0dG9uLWNvbG9yOiAkZGFyay1ncmF5O1xuJGNsb3NlYnV0dG9uLWNvbG9yLWhvdmVyOiAkYmxhY2s7XG5cbi8vIDE2LiBEcmlsbGRvd25cbi8vIC0tLS0tLS0tLS0tLS1cblxuJGRyaWxsZG93bi10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBsaW5lYXI7XG4kZHJpbGxkb3duLWFycm93czogdHJ1ZTtcbiRkcmlsbGRvd24tcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XG4kZHJpbGxkb3duLW5lc3RlZC1tYXJnaW46IDA7XG4kZHJpbGxkb3duLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRkcmlsbGRvd24tc3VibWVudS1wYWRkaW5nOiAkZHJpbGxkb3duLXBhZGRpbmc7XG4kZHJpbGxkb3duLXN1Ym1lbnUtYmFja2dyb3VuZDogJHdoaXRlO1xuJGRyaWxsZG93bi1hcnJvdy1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kZHJpbGxkb3duLWFycm93LXNpemU6IDZweDtcblxuLy8gMTcuIERyb3Bkb3duXG4vLyAtLS0tLS0tLS0tLS1cblxuJGRyb3Bkb3duLXBhZGRpbmc6IDFyZW07XG4kZHJvcGRvd24tYmFja2dyb3VuZDogJGJvZHktYmFja2dyb3VuZDtcbiRkcm9wZG93bi1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kZHJvcGRvd24tZm9udC1zaXplOiAxcmVtO1xuJGRyb3Bkb3duLXdpZHRoOiAzMDBweDtcbiRkcm9wZG93bi1yYWRpdXM6IDA7XG4kZHJvcGRvd24tc2l6ZXM6IChcbiAgdGlueTogMTAwcHgsXG4gIHNtYWxsOiAyMDBweCxcbiAgbGFyZ2U6IDQwMHB4LFxuKTtcblxuLy8gMTguIERyb3Bkb3duIE1lbnVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG5cbiRkcm9wZG93bm1lbnUtYXJyb3dzOiBmYWxzZTtcbiRkcm9wZG93bm1lbnUtYXJyb3ctY29sb3I6ICRhbmNob3ItY29sb3I7XG4kZHJvcGRvd25tZW51LWFycm93LXNpemU6IDZweDtcbiRkcm9wZG93bm1lbnUtYXJyb3ctcGFkZGluZzogMS41cmVtO1xuJGRyb3Bkb3dubWVudS1taW4td2lkdGg6IDIwMHB4O1xuJGRyb3Bkb3dubWVudS1iYWNrZ3JvdW5kOiBudWxsO1xuJGRyb3Bkb3dubWVudS1zdWJtZW51LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiRkcm9wZG93bm1lbnUtcGFkZGluZzogJGdsb2JhbC1tZW51LXBhZGRpbmc7XG4kZHJvcGRvd25tZW51LW5lc3RlZC1tYXJnaW46IDA7XG4kZHJvcGRvd25tZW51LXN1Ym1lbnUtcGFkZGluZzogJGRyb3Bkb3dubWVudS1wYWRkaW5nO1xuJGRyb3Bkb3dubWVudS1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kZHJvcGRvd24tbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpO1xuJGRyb3Bkb3duLW1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogdHJhbnNwYXJlbnQ7XG5cbi8vIDE5LiBGbGV4Ym94IFV0aWxpdGllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRmbGV4LXNvdXJjZS1vcmRlcmluZy1jb3VudDogNjtcbiRmbGV4Ym94LXJlc3BvbnNpdmUtYnJlYWtwb2ludHM6IHRydWU7XG5cbi8vIDIwLiBGb3Jtc1xuLy8gLS0tLS0tLS0tXG5cbiRmaWVsZHNldC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kZmllbGRzZXQtcGFkZGluZzogcmVtLWNhbGMoMjApO1xuJGZpZWxkc2V0LW1hcmdpbjogcmVtLWNhbGMoMTggMCk7XG4kbGVnZW5kLXBhZGRpbmc6IHJlbS1jYWxjKDAgMyk7XG4kZm9ybS1zcGFjaW5nOiByZW0tY2FsYygxNik7XG4kaGVscHRleHQtY29sb3I6ICRibGFjaztcbiRoZWxwdGV4dC1mb250LXNpemU6IHJlbS1jYWxjKDEzKTtcbiRoZWxwdGV4dC1mb250LXN0eWxlOiBpdGFsaWM7XG4kaW5wdXQtcHJlZml4LWNvbG9yOiAkYmxhY2s7XG4kaW5wdXQtcHJlZml4LWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJGlucHV0LXByZWZpeC1ib3JkZXI6IDFweCBzb2xpZCAkbWVkaXVtLWdyYXk7XG4kaW5wdXQtcHJlZml4LXBhZGRpbmc6IDFyZW07XG4kZm9ybS1sYWJlbC1jb2xvcjogJGJsYWNrO1xuJGZvcm0tbGFiZWwtZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4kZm9ybS1sYWJlbC1mb250LXdlaWdodDogJGdsb2JhbC13ZWlnaHQtbm9ybWFsO1xuJGZvcm0tbGFiZWwtbGluZS1oZWlnaHQ6IDEuODtcbiRzZWxlY3QtYmFja2dyb3VuZDogJHdoaXRlO1xuJHNlbGVjdC10cmlhbmdsZS1jb2xvcjogJGRhcmstZ3JheTtcbiRzZWxlY3QtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRpbnB1dC1jb2xvcjogJGJsYWNrO1xuJGlucHV0LXBsYWNlaG9sZGVyLWNvbG9yOiAkbWVkaXVtLWdyYXk7XG4kaW5wdXQtZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4kaW5wdXQtZm9udC1zaXplOiByZW0tY2FsYygxNik7XG4kaW5wdXQtZm9udC13ZWlnaHQ6ICRnbG9iYWwtd2VpZ2h0LWJvbGQ7XG4kaW5wdXQtbGluZS1oZWlnaHQ6IDI7XG4kaW5wdXQtYmFja2dyb3VuZDogJHdoaXRlO1xuJGlucHV0LWJhY2tncm91bmQtZm9jdXM6ICR3aGl0ZTtcbiRpbnB1dC1iYWNrZ3JvdW5kLWRpc2FibGVkOiAkbGlnaHQtZ3JheTtcbiRpbnB1dC1ib3JkZXI6IDJweCBzb2xpZCAkYm9yZGVyLWNvbG9yO1xuJGlucHV0LWJvcmRlci1mb2N1czogMXB4IHNvbGlkICRkYXJrLWdyYXk7XG4kaW5wdXQtcGFkZGluZzogY2FsYygkZm9ybS1zcGFjaW5nIC8gMik7XG4kaW5wdXQtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgkYmxhY2ssIDAuMSk7XG4kaW5wdXQtc2hhZG93LWZvY3VzOiAwIDAgNXB4ICRtZWRpdW0tZ3JheTtcbiRpbnB1dC1jdXJzb3ItZGlzYWJsZWQ6IG5vdC1hbGxvd2VkO1xuJGlucHV0LXRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cywgYm9yZGVyLWNvbG9yIDAuMjVzIGVhc2UtaW4tb3V0O1xuJGlucHV0LW51bWJlci1zcGlubmVyczogdHJ1ZTtcbiRpbnB1dC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJGZvcm0tYnV0dG9uLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDIxLiBMYWJlbFxuLy8gLS0tLS0tLS0tXG5cbiRsYWJlbC1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRsYWJlbC1jb2xvcjogJHdoaXRlO1xuJGxhYmVsLWNvbG9yLWFsdDogJGJsYWNrO1xuJGxhYmVsLXBhbGV0dGU6ICRmb3VuZGF0aW9uLXBhbGV0dGU7XG4kbGFiZWwtZm9udC1zaXplOiAwLjhyZW07XG4kbGFiZWwtcGFkZGluZzogMC4zMzMzM3JlbSAwLjVyZW07XG4kbGFiZWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcblxuLy8gMjIuIE1lZGlhIE9iamVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kbWVkaWFvYmplY3QtbWFyZ2luLWJvdHRvbTogJGdsb2JhbC1tYXJnaW47XG4kbWVkaWFvYmplY3Qtc2VjdGlvbi1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4kbWVkaWFvYmplY3QtaW1hZ2Utd2lkdGgtc3RhY2tlZDogMTAwJTtcblxuLy8gMjMuIE1lbnVcbi8vIC0tLS0tLS0tXG5cbiRtZW51LW1hcmdpbjogJHNwYWNlO1xuJG1lbnUtbmVzdGVkLW1hcmdpbjogJGdsb2JhbC1tZW51LW5lc3RlZC1tYXJnaW47XG4kbWVudS1pdGVtcy1wYWRkaW5nOiAkZ2xvYmFsLW1lbnUtcGFkZGluZztcbiRtZW51LXNpbXBsZS1tYXJnaW46ICRzcGFjZS10cmlwbGU7XG4kbWVudS1pdGVtLWNvbG9yLWFjdGl2ZTogJHdoaXRlO1xuJG1lbnUtaXRlbS1iYWNrZ3JvdW5kLWFjdGl2ZTogZ2V0LWNvbG9yKHByaW1hcnkpO1xuJG1lbnUtaWNvbi1zcGFjaW5nOiAwLjI1cmVtO1xuJG1lbnUtc3RhdGUtYmFjay1jb21wYXQ6IHRydWU7XG4kbWVudS1jZW50ZXJlZC1iYWNrLWNvbXBhdDogdHJ1ZTtcbiRtZW51LWljb25zLWJhY2stY29tcGF0OiB0cnVlO1xuXG4vLyAyNC4gTWV0ZXJcbi8vIC0tLS0tLS0tLVxuXG4kbWV0ZXItaGVpZ2h0OiAxcmVtO1xuJG1ldGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4kbWV0ZXItYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJG1ldGVyLWZpbGwtZ29vZDogJHN1Y2Nlc3MtY29sb3I7XG4kbWV0ZXItZmlsbC1tZWRpdW06ICR3YXJuaW5nLWNvbG9yO1xuJG1ldGVyLWZpbGwtYmFkOiAkYWxlcnQtY29sb3I7XG5cbi8vIDI1LiBPZmYtY2FudmFzXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kb2ZmY2FudmFzLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbik7XG4kb2ZmY2FudmFzLXZlcnRpY2FsLXNpemVzOiAoXG4gIHNtYWxsOiAyNTBweCxcbik7XG4kb2ZmY2FudmFzLWJhY2tncm91bmQ6ICRsaWdodC1ncmF5O1xuJG9mZmNhbnZhcy1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoJGJsYWNrLCAwLjcpO1xuJG9mZmNhbnZhcy1pbm5lci1zaGFkb3ctc2l6ZTogMjBweDtcbiRvZmZjYW52YXMtaW5uZXItc2hhZG93LWNvbG9yOiByZ2JhKCRibGFjaywgMC4yNSk7XG4kb2ZmY2FudmFzLW92ZXJsYXktemluZGV4OiAxMTtcbiRvZmZjYW52YXMtcHVzaC16aW5kZXg6IDEyO1xuJG9mZmNhbnZhcy1vdmVybGFwLXppbmRleDogMTM7XG4kb2ZmY2FudmFzLXJldmVhbC16aW5kZXg6IDEyO1xuJG9mZmNhbnZhcy10cmFuc2l0aW9uLWxlbmd0aDogMC41cztcbiRvZmZjYW52YXMtdHJhbnNpdGlvbi10aW1pbmc6IGVhc2U7XG4kb2ZmY2FudmFzLWZpeGVkLXJldmVhbDogdHJ1ZTtcbiRvZmZjYW52YXMtZXhpdC1iYWNrZ3JvdW5kOiByZ2JhKCR3aGl0ZSwgMC4yNSk7XG4kbWFpbmNvbnRlbnQtY2xhc3M6ICdvZmYtY2FudmFzLWNvbnRlbnQnO1xuXG4vLyAyNi4gT3JiaXRcbi8vIC0tLS0tLS0tLVxuXG4kb3JiaXQtYnVsbGV0LWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRvcmJpdC1idWxsZXQtYmFja2dyb3VuZC1hY3RpdmU6ICRkYXJrLWdyYXk7XG4kb3JiaXQtYnVsbGV0LWRpYW1ldGVyOiAxLjJyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbjogMC4xcmVtO1xuJG9yYml0LWJ1bGxldC1tYXJnaW4tdG9wOiAwLjhyZW07XG4kb3JiaXQtYnVsbGV0LW1hcmdpbi1ib3R0b206IDAuOHJlbTtcbiRvcmJpdC1jYXB0aW9uLWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNhcHRpb24tcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLWJhY2tncm91bmQtaG92ZXI6IHJnYmEoJGJsYWNrLCAwLjUpO1xuJG9yYml0LWNvbnRyb2wtcGFkZGluZzogMXJlbTtcbiRvcmJpdC1jb250cm9sLXppbmRleDogMTA7XG5cbi8vIDI3LiBQYWdpbmF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLVxuXG4kcGFnaW5hdGlvbi1mb250LXNpemU6IHJlbS1jYWxjKDE0KTtcbiRwYWdpbmF0aW9uLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvcjogJGJsYWNrO1xuJHBhZ2luYXRpb24taXRlbS1wYWRkaW5nOiByZW0tY2FsYygzIDEwKTtcbiRwYWdpbmF0aW9uLWl0ZW0tc3BhY2luZzogcmVtLWNhbGMoMSk7XG4kcGFnaW5hdGlvbi1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHBhZ2luYXRpb24taXRlbS1iYWNrZ3JvdW5kLWhvdmVyOiAkbGlnaHQtZ3JheTtcbiRwYWdpbmF0aW9uLWl0ZW0tYmFja2dyb3VuZC1jdXJyZW50OiAkcHJpbWFyeS1jb2xvcjtcbiRwYWdpbmF0aW9uLWl0ZW0tY29sb3ItY3VycmVudDogJHdoaXRlO1xuJHBhZ2luYXRpb24taXRlbS1jb2xvci1kaXNhYmxlZDogJG1lZGl1bS1ncmF5O1xuJHBhZ2luYXRpb24tZWxsaXBzaXMtY29sb3I6ICRibGFjaztcbiRwYWdpbmF0aW9uLW1vYmlsZS1pdGVtczogZmFsc2U7XG4kcGFnaW5hdGlvbi1tb2JpbGUtY3VycmVudC1pdGVtOiBmYWxzZTtcbiRwYWdpbmF0aW9uLWFycm93czogdHJ1ZTtcblxuLy8gMjguIFByb2dyZXNzIEJhclxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvZ3Jlc3MtaGVpZ2h0OiAxcmVtO1xuJHByb2dyZXNzLWJhY2tncm91bmQ6ICRtZWRpdW0tZ3JheTtcbiRwcm9ncmVzcy1tYXJnaW4tYm90dG9tOiAkZ2xvYmFsLW1hcmdpbjtcbiRwcm9ncmVzcy1tZXRlci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRwcm9ncmVzcy1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyAyOS4gUHJvdG90eXBlIEFycm93XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtYXJyb3ctZGlyZWN0aW9uczogKFxuICBkb3duLFxuICB1cCxcbiAgcmlnaHQsXG4gIGxlZnRcbik7XG4kcHJvdG90eXBlLWFycm93LXNpemU6IDAuNDM3NXJlbTtcbiRwcm90b3R5cGUtYXJyb3ctY29sb3I6ICRibGFjaztcblxuLy8gMzAuIFByb3RvdHlwZSBCb3JkZXItQm94XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1ib3JkZXItYm94LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcblxuLy8gMzEuIFByb3RvdHlwZSBCb3JkZXItTm9uZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWJvcmRlci1ub25lLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcblxuLy8gMzIuIFByb3RvdHlwZSBCb3JkZXJlZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLWJvcmRlcmVkLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtYm9yZGVyLXdpZHRoOiByZW0tY2FsYygxKTtcbiRwcm90b3R5cGUtYm9yZGVyLXR5cGU6IHNvbGlkO1xuJHByb3RvdHlwZS1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcblxuLy8gMzMuIFByb3RvdHlwZSBEaXNwbGF5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1kaXNwbGF5LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtZGlzcGxheTogKFxuICBpbmxpbmUsXG4gIGlubGluZS1ibG9jayxcbiAgYmxvY2ssXG4gIHRhYmxlLFxuICB0YWJsZS1jZWxsXG4pO1xuXG4vLyAzNC4gUHJvdG90eXBlIEZvbnQtU3R5bGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1mb250LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtd2lkZS1sZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoNCk7XG4kcHJvdG90eXBlLWZvbnQtbm9ybWFsOiAkZ2xvYmFsLXdlaWdodC1ub3JtYWw7XG4kcHJvdG90eXBlLWZvbnQtYm9sZDogJGdsb2JhbC13ZWlnaHQtYm9sZDtcblxuLy8gMzUuIFByb3RvdHlwZSBMaXN0LVN0eWxlLVR5cGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtbGlzdC1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXN0eWxlLXR5cGUtdW5vcmRlcmVkOiAoXG4gIGRpc2MsXG4gIGNpcmNsZSxcbiAgc3F1YXJlXG4pO1xuJHByb3RvdHlwZS1zdHlsZS10eXBlLW9yZGVyZWQ6IChcbiAgZGVjaW1hbCxcbiAgbG93ZXItYWxwaGEsXG4gIGxvd2VyLWxhdGluLFxuICBsb3dlci1yb21hbixcbiAgdXBwZXItYWxwaGEsXG4gIHVwcGVyLWxhdGluLFxuICB1cHBlci1yb21hblxuKTtcblxuLy8gMzYuIFByb3RvdHlwZSBPdmVyZmxvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLW92ZXJmbG93LWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtb3ZlcmZsb3c6IChcbiAgdmlzaWJsZSxcbiAgaGlkZGVuLFxuICBzY3JvbGxcbik7XG5cbi8vIDM3LiBQcm90b3R5cGUgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1wb3NpdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXBvc2l0aW9uOiAoXG4gIHN0YXRpYyxcbiAgcmVsYXRpdmUsXG4gIGFic29sdXRlLFxuICBmaXhlZFxuKTtcbiRwcm90b3R5cGUtcG9zaXRpb24tei1pbmRleDogOTc1O1xuXG4vLyAzOC4gUHJvdG90eXBlIFJvdW5kZWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXJvdW5kZWQtYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygzKTtcblxuLy8gMzkuIFByb3RvdHlwZSBTZXBhcmF0b3Jcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtc2VwYXJhdG9yLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtc2VwYXJhdG9yLWFsaWduOiBjZW50ZXI7XG4kcHJvdG90eXBlLXNlcGFyYXRvci1oZWlnaHQ6IHJlbS1jYWxjKDIpO1xuJHByb3RvdHlwZS1zZXBhcmF0b3Itd2lkdGg6IDNyZW07XG4kcHJvdG90eXBlLXNlcGFyYXRvci1iYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiRwcm90b3R5cGUtc2VwYXJhdG9yLW1hcmdpbi10b3A6ICRnbG9iYWwtbWFyZ2luO1xuXG4vLyA0MC4gUHJvdG90eXBlIFNoYWRvd1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1zaGFkb3ctYnJlYWtwb2ludHM6ICRnbG9iYWwtcHJvdG90eXBlLWJyZWFrcG9pbnRzO1xuJHByb3RvdHlwZS1ib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTYpLCAwIDJweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcblxuLy8gNDEuIFByb3RvdHlwZSBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtc2l6aW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtc2l6aW5nOiAoXG4gIHdpZHRoLFxuICBoZWlnaHRcbik7XG4kcHJvdG90eXBlLXNpemVzOiAoXG4gIDI1OiAyNSUsXG4gIDUwOiA1MCUsXG4gIDc1OiA3NSUsXG4gIDEwMDogMTAwJVxuKTtcblxuLy8gNDIuIFByb3RvdHlwZSBTcGFjaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHByb3RvdHlwZS1zcGFjaW5nLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtc3BhY2Vycy1jb3VudDogMztcblxuLy8gNDMuIFByb3RvdHlwZSBUZXh0LURlY29yYXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRwcm90b3R5cGUtZGVjb3JhdGlvbi1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXRleHQtZGVjb3JhdGlvbjogKFxuICBvdmVybGluZSxcbiAgdW5kZXJsaW5lLFxuICBsaW5lLXRocm91Z2gsXG4pO1xuXG4vLyA0NC4gUHJvdG90eXBlIFRleHQtVHJhbnNmb3JtYXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXRyYW5zZm9ybWF0aW9uLWJyZWFrcG9pbnRzOiAkZ2xvYmFsLXByb3RvdHlwZS1icmVha3BvaW50cztcbiRwcm90b3R5cGUtdGV4dC10cmFuc2Zvcm1hdGlvbjogKFxuICBsb3dlcmNhc2UsXG4gIHVwcGVyY2FzZSxcbiAgY2FwaXRhbGl6ZVxuKTtcblxuLy8gNDUuIFByb3RvdHlwZSBUZXh0LVV0aWxpdGllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kcHJvdG90eXBlLXV0aWxpdGllcy1icmVha3BvaW50czogJGdsb2JhbC1wcm90b3R5cGUtYnJlYWtwb2ludHM7XG4kcHJvdG90eXBlLXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG4vLyA0Ni4gUmVzcG9uc2l2ZSBFbWJlZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJHJlc3BvbnNpdmUtZW1iZWQtbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMTYpO1xuJHJlc3BvbnNpdmUtZW1iZWQtcmF0aW9zOiAoXG4gIGRlZmF1bHQ6IDQgYnkgMyxcbiAgd2lkZXNjcmVlbjogMTYgYnkgOSxcbik7XG5cbi8vIDQ3LiBSZXZlYWxcbi8vIC0tLS0tLS0tLS1cblxuJHJldmVhbC1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kcmV2ZWFsLXdpZHRoOiA2MDBweDtcbiRyZXZlYWwtbWF4LXdpZHRoOiAkZ2xvYmFsLXdpZHRoO1xuJHJldmVhbC1wYWRkaW5nOiAkZ2xvYmFsLXBhZGRpbmc7XG4kcmV2ZWFsLWJvcmRlcjogMXB4IHNvbGlkICRtZWRpdW0tZ3JheTtcbiRyZXZlYWwtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRyZXZlYWwtemluZGV4OiAxMDA1O1xuJHJldmVhbC1vdmVybGF5LWJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAwLjQ1KTtcblxuLy8gNDguIFNsaWRlclxuLy8gLS0tLS0tLS0tLVxuXG4kc2xpZGVyLXdpZHRoLXZlcnRpY2FsOiAwLjVyZW07XG4kc2xpZGVyLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuJHNsaWRlci1oZWlnaHQ6IDAuNXJlbTtcbiRzbGlkZXItYmFja2dyb3VuZDogJGxpZ2h0LWdyYXk7XG4kc2xpZGVyLWZpbGwtYmFja2dyb3VuZDogJG1lZGl1bS1ncmF5O1xuJHNsaWRlci1oYW5kbGUtaGVpZ2h0OiAxLjRyZW07XG4kc2xpZGVyLWhhbmRsZS13aWR0aDogMS40cmVtO1xuJHNsaWRlci1oYW5kbGUtYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4kc2xpZGVyLW9wYWNpdHktZGlzYWJsZWQ6IDAuMjU7XG4kc2xpZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG5cbi8vIDQ5LiBTd2l0Y2hcbi8vIC0tLS0tLS0tLS1cblxuJHN3aXRjaC1iYWNrZ3JvdW5kOiAkbWVkaXVtLWdyYXk7XG4kc3dpdGNoLWJhY2tncm91bmQtYWN0aXZlOiAkcHJpbWFyeS1jb2xvcjtcbiRzd2l0Y2gtaGVpZ2h0OiAycmVtO1xuJHN3aXRjaC1oZWlnaHQtdGlueTogMS41cmVtO1xuJHN3aXRjaC1oZWlnaHQtc21hbGw6IDEuNzVyZW07XG4kc3dpdGNoLWhlaWdodC1sYXJnZTogMi41cmVtO1xuJHN3aXRjaC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuJHN3aXRjaC1tYXJnaW46ICRnbG9iYWwtbWFyZ2luO1xuJHN3aXRjaC1wYWRkbGUtYmFja2dyb3VuZDogJHdoaXRlO1xuJHN3aXRjaC1wYWRkbGUtb2Zmc2V0OiAwLjI1cmVtO1xuJHN3aXRjaC1wYWRkbGUtcmFkaXVzOiAkZ2xvYmFsLXJhZGl1cztcbiRzd2l0Y2gtcGFkZGxlLXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlLW91dDtcblxuLy8gNTAuIFRhYmxlXG4vLyAtLS0tLS0tLS1cblxuJHRhYmxlLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiR0YWJsZS1jb2xvci1zY2FsZTogNSU7XG4kdGFibGUtYm9yZGVyOiAwO1xuJHRhYmxlLXBhZGRpbmc6IHJlbS1jYWxjKDUgMTApO1xuJHRhYmxlLWhvdmVyLXNjYWxlOiAyJTtcbiR0YWJsZS1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtYmFja2dyb3VuZCwgJHRhYmxlLWhvdmVyLXNjYWxlKTtcbiR0YWJsZS1yb3ctc3RyaXBlLWhvdmVyOiBkYXJrZW4oJHRhYmxlLWJhY2tncm91bmQsICR0YWJsZS1jb2xvci1zY2FsZSArICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtaXMtc3RyaXBlZDogdHJ1ZTtcbiR0YWJsZS1zdHJpcGVkLWJhY2tncm91bmQ6ICRkYXJrLXdoaXRlO1xuJHRhYmxlLXN0cmlwZTogZXZlbjtcbiR0YWJsZS1oZWFkLWJhY2tncm91bmQ6ICRib3JkZXItY29sb3I7XG4kdGFibGUtaGVhZC1yb3ctaG92ZXI6IGRhcmtlbigkdGFibGUtaGVhZC1iYWNrZ3JvdW5kLCAkdGFibGUtaG92ZXItc2NhbGUpO1xuJHRhYmxlLWZvb3QtYmFja2dyb3VuZDogJGJvcmRlci1jb2xvcjtcbiR0YWJsZS1mb290LXJvdy1ob3ZlcjogZGFya2VuKCR0YWJsZS1mb290LWJhY2tncm91bmQsICR0YWJsZS1ob3Zlci1zY2FsZSk7XG4kdGFibGUtaGVhZC1mb250LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHRhYmxlLWZvb3QtZm9udC1jb2xvcjogJGJvZHktZm9udC1jb2xvcjtcbiRzaG93LWhlYWRlci1mb3Itc3RhY2tlZDogZmFsc2U7XG4kdGFibGUtc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xuXG4vLyA1MS4gVGFic1xuLy8gLS0tLS0tLS1cblxuJHRhYi1tYXJnaW46IDA7XG4kdGFiLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiR0YWItY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuJHRhYi1iYWNrZ3JvdW5kLWFjdGl2ZTogJGxpZ2h0LWdyYXk7XG4kdGFiLWFjdGl2ZS1jb2xvcjogJHByaW1hcnktY29sb3I7XG4kdGFiLWl0ZW0tZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4kdGFiLWl0ZW0tYmFja2dyb3VuZC1ob3ZlcjogJHdoaXRlO1xuJHRhYi1pdGVtLXBhZGRpbmc6IDEuMjVyZW0gMS41cmVtO1xuJHRhYi1jb250ZW50LWJhY2tncm91bmQ6ICR3aGl0ZTtcbiR0YWItY29udGVudC1ib3JkZXI6ICRsaWdodC1ncmF5O1xuJHRhYi1jb250ZW50LWNvbG9yOiAkYm9keS1mb250LWNvbG9yO1xuJHRhYi1jb250ZW50LXBhZGRpbmc6IDFyZW07XG5cbi8vIDUyLiBUaHVtYm5haWxcbi8vIC0tLS0tLS0tLS0tLS1cblxuJHRodW1ibmFpbC1ib3JkZXI6IDRweCBzb2xpZCAkd2hpdGU7XG4kdGh1bWJuYWlsLW1hcmdpbi1ib3R0b206ICRnbG9iYWwtbWFyZ2luO1xuJHRodW1ibmFpbC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKCRibGFjaywgMC4yKTtcbiR0aHVtYm5haWwtc2hhZG93LWhvdmVyOiAwIDAgNnB4IDFweCByZ2JhKCRwcmltYXJ5LWNvbG9yLCAwLjUpO1xuJHRodW1ibmFpbC10cmFuc2l0aW9uOiBib3gtc2hhZG93IDIwMG1zIGVhc2Utb3V0O1xuJHRodW1ibmFpbC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyA1My4gVGl0bGUgQmFyXG4vLyAtLS0tLS0tLS0tLS0tXG5cbiR0aXRsZWJhci1iYWNrZ3JvdW5kOiAkd2hpdGU7XG4kdGl0bGViYXItY29sb3I6ICR3aGl0ZTtcbiR0aXRsZWJhci1wYWRkaW5nOiAwLjVyZW07XG4kdGl0bGViYXItdGV4dC1mb250LXdlaWdodDogYm9sZDtcbiR0aXRsZWJhci1pY29uLWNvbG9yOiAkd2hpdGU7XG4kdGl0bGViYXItaWNvbi1jb2xvci1ob3ZlcjogJG1lZGl1bS1ncmF5O1xuJHRpdGxlYmFyLWljb24tc3BhY2luZzogMC4yNXJlbTtcblxuLy8gNTQuIFRvb2x0aXBcbi8vIC0tLS0tLS0tLS0tXG5cbiRoYXMtdGlwLWN1cnNvcjogaGVscDtcbiRoYXMtdGlwLWZvbnQtd2VpZ2h0OiAkZ2xvYmFsLXdlaWdodC1ib2xkO1xuJGhhcy10aXAtYm9yZGVyLWJvdHRvbTogZG90dGVkIDFweCAkZGFyay1ncmF5O1xuJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuJHRvb2x0aXAtY29sb3I6ICR3aGl0ZTtcbiR0b29sdGlwLXBhZGRpbmc6IDAuNzVyZW07XG4kdG9vbHRpcC1tYXgtd2lkdGg6IDEwcmVtO1xuJHRvb2x0aXAtZm9udC1zaXplOiAkc21hbGwtZm9udC1zaXplO1xuJHRvb2x0aXAtcGlwLXdpZHRoOiAwLjc1cmVtO1xuJHRvb2x0aXAtcGlwLWhlaWdodDogJHRvb2x0aXAtcGlwLXdpZHRoICogMC44NjY7XG4kdG9vbHRpcC1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuXG4vLyA1NS4gVG9wIEJhclxuLy8gLS0tLS0tLS0tLS1cblxuJHRvcGJhci1wYWRkaW5nOiAwLjVyZW07XG4kdG9wYmFyLWJhY2tncm91bmQ6ICR3aGl0ZTtcbiR0b3BiYXItc3VibWVudS1iYWNrZ3JvdW5kOiAkdG9wYmFyLWJhY2tncm91bmQ7XG4kdG9wYmFyLXRpdGxlLXNwYWNpbmc6IDAuNXJlbSAxcmVtIDAuNXJlbSAwO1xuJHRvcGJhci1pbnB1dC13aWR0aDogMjAwcHg7XG4kdG9wYmFyLXVuc3RhY2stYnJlYWtwb2ludDogbWVkaXVtO1xuXG4vLyA1Ni4gWHkgR3JpZFxuLy8gLS0tLS0tLS0tLS1cblxuJHh5LWdyaWQ6IHRydWU7XG4kZ3JpZC1jb250YWluZXI6ICRnbG9iYWwtd2lkdGg7XG4kZ3JpZC1jb250YWluZXItbWVkaXVtOiAkZ2xvYmFsLXdpZHRoLW1lZGl1bTtcbiRncmlkLWNvbHVtbnM6IDEyO1xuJGdyaWQtbWFyZ2luLWd1dHRlcnM6IChcbiAgc21hbGw6IDkuNDVweCxcbiAgbWVkaXVtOiAyMHB4LFxuKTtcbiRncmlkLXBhZGRpbmctZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnM7XG4kZ3JpZC1jb250YWluZXItcGFkZGluZzogMDtcbiRncmlkLWNvbnRhaW5lci1tYXg6ICRnbG9iYWwtd2lkdGg7XG4keHktYmxvY2stZ3JpZC1tYXg6IDg7XG5cbi8vIEFkZGl0aW9uYWwgZm9yIHRoZSBwcm9qZWN0IHNwZWNpZmljcyAobm90IGZvciBaVVJCIEZvdW5kYXRpb24pXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBCZXZlbCBzZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS1cblxuJGJldmVsLWltZzogMC40Mzc1O1xuIiwiLy8gUHJvamVjdFxuJHByaW1hcnktY29sb3I6ICMwMDNiNjg7XG4kc2Vjb25kYXJ5LWNvbG9yOiAjMDAzYjY4O1xuJHN1Y2Nlc3MtY29sb3I6ICM0ZmFkMjY7XG4kd2FybmluZy1jb2xvcjogI2U2YjkyMztcbiRhbGVydC1jb2xvcjogI2U2MzMyMztcbiR5dC1jb2xvcjogI0ZGMDAwMDtcblxuLy8gR3JheXNjYWxlXG4kd2hpdGU6ICNmZmY7XG4kZGFyay13aGl0ZTogI0RCRTJFOTtcbiRsaWdodGVyLWdyYXk6ICNlYWVhZWE7XG4kbGlnaHQtZ3JheTogI2MxYzFjMTtcbiRtZWRpdW0tbGlnaHRlci1ncmF5OiAjYTNhM2EzO1xuJG1lZGl1bS1ncmF5OiAjN2E3YTdhO1xuJGRhcmstZ3JheTogIzM0MzQzNDtcbiRibGFja2lzaC1ncmF5OiAjMjgyODI4O1xuJGJsYWNrOiAjMDAwO1xuJGJvcmRlci1jb2xvcjogI2Q4ZDhkODtcblxuJGNvbG9yLWJvcmRlcjogJGxpZ2h0LWdyYXk7IiwiLyoqXG4gKiBGb3VuZGF0aW9uIGZvciBTaXRlc1xuICogVmVyc2lvbiA2LjguMVxuICogaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG4gKi9cbi8qIFRydW5jYXRlIFRleHQgKi9cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1maWx0ZXJzIC5oZWFkaW5nLmhlYWRpbmctbGlzdGluZyB7XG4gIGZvbnQtc2l6ZTogMS40cmVtO1xuICBsaW5lLWhlaWdodDogMS4xNjY3O1xuICBmb250LWZhbWlseTogXCJPcGVuIFNhbnMgQ29uZGVuc2VkXCIsIHNhbnMtc2VyaWY7XG4gIGNvbG9yOiAjMDAwO1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4udmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXctZmlsdGVycyBmb3JtIC5mb3JtLXRleHQge1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWZpbHRlcnMgZm9ybSAuZm9ybS10ZXh0IHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlIC0gMjBweCkgNTAlO1xufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWZpbHRlcnMgZm9ybSAuZm9ybS10ZXh0IHtcbiAgcGFkZGluZy1yaWdodDogNTBweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyBjbGFzcz0naW5wdXQtc3ltYm9sX19zeW1ib2wnIHdpZHRoPScyNScgaGVpZ2h0PScyNScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ2cgc3Ryb2tlLXdpZHRoPScuMScgZmlsbC1ydWxlPSdub256ZXJvJyBmaWxsPSclMjNBM0EzQTMnIHN0cm9rZT0nJTIzQTNBM0EzJyUzRSUzQ3BhdGggZD0nTTEwLjYxNyA5LjcyNWEuNDcyLjQ3MiAwIDExMCAuOTQzLjQ3Mi40NzIgMCAwMTAtLjk0M3onLyUzRSUzQ3BhdGggZD0nTTEuNjQ0IDIxLjY4OWw2LjI5NC02LjI5NGE5LjM0NyA5LjM0NyAwIDAxLTEuNTY2LTUuMTk5YzAtNS4yIDQuMjMxLTkuNDMxIDkuNDMzLTkuNDMxIDUuMTk5IDAgOS40MyA0LjIzIDkuNDMgOS40MzEgMCA1LjItNC4yMyA5LjQzMi05LjQzMSA5LjQzMmE5LjM0MyA5LjM0MyAwIDAxLTUuMTk5LTEuNTY2bC0xLjc0IDEuNzRzMCAwIDAgMGwtNC41NTQgNC41NTRjLS4zNTYuMzU3LS44My41NTMtMS4zMzQuNTUzLS41MDMgMC0uOTc3LS4xOTYtMS4zMzMtLjU1MmExLjg3MyAxLjg3MyAwIDAxLS41NTMtMS4zMzRjMC0uNTA0LjE5Ni0uOTc4LjU1My0xLjMzNHptOS4xODMtNC42MnMwIDAgMCAwYTguNDE1IDguNDE1IDAgMDA0Ljk3NyAxLjYxNWM0LjY4IDAgOC40ODgtMy44MDcgOC40ODgtOC40ODggMC00LjY4LTMuODA4LTguNDg4LTguNDg4LTguNDg4cy04LjQ4OCAzLjgwOC04LjQ4OCA4LjQ4OGMwIDEuOC41NTggMy41MjEgMS42MTYgNC45NzdhOC41MyA4LjUzIDAgMDAxLjg5NSAxLjg5NXptLS45OS40MjdhOS42MDMgOS42MDMgMCAwMS0xLjMzMy0xLjMzNEw3LjE2NiAxNy41Yy40MDcuNDguODU0LjkyNyAxLjMzNCAxLjMzNGwxLjMzOC0xLjMzOHpNMi4zMSAyMy42OWEuOTM3LjkzNyAwIDAwLjY2Ny4yNzYuOTM3LjkzNyAwIDAwLjY2Ny0uMjc2bDQuMTg3LTQuMTg4YTEyLjUyIDEyLjUyIDAgMDEtMS4zMzMtMS4zMzNMMi4zMSAyMi4zNTZhLjkzNi45MzYgMCAwMC0uMjc2LjY2Ny45MzYuOTM2IDAgMDAuMjc2LjY2N3onLyUzRSUzQ3BhdGggZD0nTTE1LjgwNCAyLjY1MWM0LjE2IDAgNy41NDUgMy4zODUgNy41NDUgNy41NDVzLTMuMzg1IDcuNTQ1LTcuNTQ1IDcuNTQ1LTcuNTQ1LTMuMzg0LTcuNTQ1LTcuNTQ1YzAtNC4xNiAzLjM4NC03LjU0NSA3LjU0NS03LjU0NXptMCAxNC4xNDdhNi42MSA2LjYxIDAgMDA2LjYwMS02LjYwMiA2LjYxIDYuNjEgMCAwMC02LjYwMS02LjYwMSA2LjYxIDYuNjEgMCAwMC02LjYwMiA2LjYwMiA2LjYxIDYuNjEgMCAwMDYuNjAyIDYuNjAyeicvJTNFJTNDcGF0aCBkPSdNMTAuNTE5IDguMTcyYTUuNjU5IDUuNjU5IDAgMDEyLjA0NS0yLjYxMyA1LjYxOSA1LjYxOSAwIDAxMy4yNC0xLjAyMS40NzIuNDcyIDAgMDEwIC45NDMgNC43NDggNC43NDggMCAwMC00LjQwNCAzLjAzLjQ3Mi40NzIgMCAxMS0uODgtLjMzOXonLyUzRSUzQy9nJTNFJTNDL3N2ZyUzRVwiKTtcbn1cblxuLmZvdW5kYXRpb24tbXEge1xuICBmb250LWZhbWlseTogXCJzbWFsbD0wZW0mbWVkaXVtPTQwZW0mbGFyZ2U9NjRlbSZ4bGFyZ2U9OTBlbVwiO1xufVxuXG4udmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXctZmlsdGVycyB7XG4gIHBhZGRpbmc6IDUwcHggMCAwO1xufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWZpbHRlcnMgLmhlYWRpbmcuaGVhZGluZy1saXN0aW5nIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1maWx0ZXJzIC50ZXh0IHtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIGJvcmRlcjogMCB0cmFuc3BhcmVudDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1maWx0ZXJzIGZvcm0ge1xuICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbn1cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSB7XG4gIC52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1maWx0ZXJzIGZvcm0gLmZvcm0tLWlubGluZSA+IC5mb3JtLWl0ZW0sIC52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1maWx0ZXJzIGZvcm0gLmZvcm0tLWlubGluZSA+IGZpZWxkc2V0IHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogY2FsYyg1MCUgLSAxLjI1cmVtKTtcbiAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjYyNXJlbTtcbiAgfVxuICAudmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXctZmlsdGVycyBmb3JtIC5mb3JtLS1pbmxpbmUgPiAuZm9ybS1pdGVtLmZvcm0tYWN0aW9ucywgLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWZpbHRlcnMgZm9ybSAuZm9ybS0taW5saW5lID4gZmllbGRzZXQuZm9ybS1hY3Rpb25zIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWZpbHRlcnMgZm9ybSAuZm9ybS0taW5saW5lID4gZmllbGRzZXQge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG4udmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXctZmlsdGVycyBmb3JtIC5mb3JtLS1pbmxpbmUgPiBmaWVsZHNldCBsZWdlbmQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWZpbHRlcnMgZm9ybSAuZGlzdGFuY2UtZWxlbWVudCBsYWJlbCB7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xuICBwYWRkaW5nLXRvcDogMjBweDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1maWx0ZXJzIGZvcm0gLmRpc3RhbmNlLWVsZW1lbnQgLmZvcm0tcmFuZ2Uge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXI6IDJweCBzb2xpZCAjZDhkOGQ4O1xuICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICBib3gtc2hhZG93OiAwIDAgMTBweCAwIHRyYW5zcGFyZW50O1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGhlaWdodDogYXV0bztcbiAgb3V0bGluZTogMDtcbiAgLyogcGFkZGluZzogMXJlbSAzMHB4OyAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC43cztcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNhbGMoMTAwJSAtIDIwcHgpIDUwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgLyogcGFkZGluZy1yaWdodDogNTBweCAqL1xufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC5hdHRhY2htZW50LWJlZm9yZSAucGFyYWdyYXBoIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAuYXR0YWNobWVudC1iZWZvcmUgLnBhcmFncmFwaCA+IGgyIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAzMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREJFMkU5O1xufVxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC5hdHRhY2htZW50LWJlZm9yZSAucGFyYWdyYXBoID4gaDIge1xuICAgIGZvbnQtc2l6ZTogMS44NzVyZW07XG4gIH1cbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAuYXR0YWNobWVudC1iZWZvcmUgLnZpZXctY29udGVudCB7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1jb250ZW50LXdyYXBwZXIge1xuICBwYWRkaW5nOiAxMDBweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREJFMkU5O1xufVxuLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3X19wYWdlci52aWV3LWhlYWRlciB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG4udmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXdfX3BhZ2VyLnZpZXctZm9vdGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1jb250ZW50LXdyYXBwZXIgLnZpZXctY29udGVudCAudGVhc2VyIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi52aWV3LmRpc3RyaWJ1dG9yLXNlYXJjaCAudmlldy1jb250ZW50LXdyYXBwZXIgLnZpZXctY29udGVudCAudGVhc2VyOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIHtcbiAgLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWNvbnRlbnQtd3JhcHBlciAudmlldy1jb250ZW50IC52aWV3LWNvbnRlbnQtaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI5NTMxMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI5NTMxMjVyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1pbi13aWR0aDogNDBlbSkge1xuICAudmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXctY29udGVudC13cmFwcGVyIC52aWV3LWNvbnRlbnQgLnZpZXctY29udGVudC1pbm5lciB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbiAgfVxufVxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIHtcbiAgLnZpZXcuZGlzdHJpYnV0b3Itc2VhcmNoIC52aWV3LWNvbnRlbnQtd3JhcHBlciAudmlldy1jb250ZW50IC52aWV3LWNvbnRlbnQtaW5uZXIgLnRlYXNlciB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IGNhbGMoMzMuMzMzMzMzMzMzMyUgLSAxLjI1cmVtKTtcbiAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjYyNXJlbTtcbiAgICAvKiBAaW5jbHVkZSB4eS1jZWxsKDYpOyAqL1xuICAgIG1hcmdpbi10b3A6IDAuMjk1MzEyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI5NTMxMjVyZW07XG4gIH1cbn1cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSBhbmQgKG1pbi13aWR0aDogNDBlbSkge1xuICAudmlldy5kaXN0cmlidXRvci1zZWFyY2ggLnZpZXctY29udGVudC13cmFwcGVyIC52aWV3LWNvbnRlbnQgLnZpZXctY29udGVudC1pbm5lciAudGVhc2VyIHtcbiAgICBtYXJnaW4tdG9wOiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgfVxufVxuXG4ubWFwLXBpbnMge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIG1heC13aWR0aDogNzVyZW07XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi10b3A6IDIwcHg7XG4gIG1hcmdpbi1ib3R0b206IDUwcHg7XG59XG5AbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODkuOTk4NzVlbSkge1xuICAubWFwLXBpbnMge1xuICAgIG1heC13aWR0aDogNTguNzVyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYxLjI1ZW0pIHtcbiAgLm1hcC1waW5zIHtcbiAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gIH1cbn1cbkBtZWRpYSBwcmludCB7XG4gIC5tYXAtcGlucyB7XG4gICAgbWF4LXdpZHRoOiAxOTBtbTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0ZW0pIHtcbiAgLm1hcC1waW5zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xuICB9XG59XG4ubWFwLXBpbnMgLm1hcC1waW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBtYXJnaW46IDEwcHggMDtcbn1cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5tYXAtcGlucyAubWFwLXBpbiB7XG4gICAgbWFyZ2luOiAwIDQwcHggMCAwO1xuICB9XG4gIC5tYXAtcGlucyAubWFwLXBpbjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cbi5tYXAtcGlucyAubWFwLXBpbiBpbWcge1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiAzMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cblxuLnRlYXNlci5kaXN0cmlidXRvci10ZWFzZXIgLm1lZGlhIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDE1MHB4O1xuICBwYWRkaW5nOiAyMHB4O1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2Q4ZDhkODtcbn1cbi50ZWFzZXIuZGlzdHJpYnV0b3ItdGVhc2VyIC5tZWRpYSBpbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwOHB4O1xuICB3aWR0aDogYXV0bztcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXJnaW46IGF1dG87XG59XG4udGVhc2VyLmRpc3RyaWJ1dG9yLXRlYXNlciAuZGlzdHJpYnV0b3JfX2NvbnRhY3QtaW5mbyB7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4udGVhc2VyLmRpc3RyaWJ1dG9yLXRlYXNlciAuZGlzdHJpYnV0b3JfX3Byb2R1Y3RzIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi50ZWFzZXIuZGlzdHJpYnV0b3ItdGVhc2VyIC5kaXN0cmlidXRvcl9fcHJvZHVjdHMgZHQge1xuICBtYXJnaW46IDA7XG59XG4udGVhc2VyLmRpc3RyaWJ1dG9yLXRlYXNlciAuZGlzdHJpYnV0b3JfX3Byb2R1Y3RzIGR0OjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiOiBcIjtcbn1cbi50ZWFzZXIuZGlzdHJpYnV0b3ItdGVhc2VyIC50ZWFzZXJfX2hlYWRpbmcge1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xufVxuLnRlYXNlci5kaXN0cmlidXRvci10ZWFzZXIgLnRlYXNlcl9fc3ViaGVhZGluZyB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4udGVhc2VyLmRpc3RyaWJ1dG9yLXRlYXNlci0tbWFwIHtcbiAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDFyZW07XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4udGVhc2VyLmRpc3RyaWJ1dG9yLXRlYXNlci0tbWFwIC50ZWFzZXJfX2hlYWRpbmcge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLnRlYXNlci5kaXN0cmlidXRvci10ZWFzZXItLW1hcCAuY29udGVudCB7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG4udGVhc2VyLmRpc3RyaWJ1dG9yLXRlYXNlcjpob3ZlciB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cbi50ZWFzZXIuZGlzdHJpYnV0b3ItdGVhc2VyIC5wcm9kdWN0LWNhdGVnb3J5LWJhbm5lcnMgLmJhbm5lciB7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cbi50ZWFzZXIuZGlzdHJpYnV0b3ItdGVhc2VyIC5wcm9kdWN0LWNhdGVnb3J5LWJhbm5lcnMgLmJhbm5lciBpbWcge1xuICBoZWlnaHQ6IGF1dG87XG4gIG1heC13aWR0aDogMzAwcHg7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MS4yNWVtKSB7XG4gIC50ZWFzZXIuZGlzdHJpYnV0b3ItdGVhc2VyIC5wcm9kdWN0LWNhdGVnb3J5LWJhbm5lcnMgLmJhbm5lciBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi5zZWN0aW9uIHtcbiAgbWFyZ2luOiAxMDBweCAwO1xufVxuXG4uc2VjdGlvbi1ib3gge1xuICBwYWRkaW5nLXRvcDogMi41cmVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAyLjVyZW0gIWltcG9ydGFudDtcbiAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG4uc2VjdGlvbi1ib3ggKyAucGFyYWdyYXBoIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cbi5pbi1pZnJhbWUgLnNlY3Rpb24tYm94IHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLnNlY3Rpb24tYm94LS1wcm90cnVkaW5nIHtcbiAgbWFyZ2luLWJvdHRvbTogMi41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5zZWN0aW9uLS1mb3JjZSB7XG4gIG1hcmdpbjogMTAwcHggMCAhaW1wb3J0YW50O1xufVxuXG4ud2lkdGgtZnVsbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2l6ZS1tZCB7XG4gIGZvbnQtc2l6ZTogMS44NzVyZW07XG59XG5cbi50eXBlLWhlYXZ5IHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLnJlc2V0LXNwYWNpbmcgPiAqOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ubWwtMHgge1xuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4ubWItMHgge1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tdC0weCB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLm1iLTF4IHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweCAhaW1wb3J0YW50O1xufVxuXG4ubWItMngge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4ubWItNHgge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xufVxuXG4ubWItNXgge1xuICBtYXJnaW4tYm90dG9tOiA1MHB4O1xufVxuXG4ucHQtMHgge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4ucGItMHgge1xuICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxuXG4uYmctd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmZsZXgtYm94IHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmJhY2tncm91bmQtZ3JheSB7XG4gIGJhY2tncm91bmQ6ICNEQkUyRTk7XG59XG5cbi5iYWNrZ3JvdW5kLWJsdWUge1xuICBiYWNrZ3JvdW5kOiAjMDAzYjY4O1xufVxuXG4uYmFja2dyb3VuZC1yZWQge1xuICBiYWNrZ3JvdW5kOiAjRkYwMDAwO1xufSIsIkBjaGFyc2V0ICd1dGYtOCc7XG5cblxuQGltcG9ydCAnZ2xvYmFsL2NvbG9yLXZhcnMnO1xuQGltcG9ydCAnZ2xvYmFsL3NldHRpbmdzJztcbkBpbXBvcnQgJ2ZvdW5kYXRpb24nO1xuQGltcG9ydCAnZ2xvYmFsL2V4dGVuZHMnO1xuXG5cblxuLy8gVGhlc2Ugc3R5bGVzIGFyZSBhcHBsaWVkIHRvIGEgPG1ldGE+IHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0XG4uZm91bmRhdGlvbi1tcSB7XG4gICAgZm9udC1mYW1pbHk6ICcjey16Zi1icC1zZXJpYWxpemUoJGJyZWFrcG9pbnRzKX0nO1xuICB9XG5cbi8vIGxvY2F0aW9uIHNlYXJjaFxuQGltcG9ydCAnY29tcG9uZW50cy9sb2NhdGlvbi1zZWFyY2gvbG9jYXRpb24tc2VhcmNoLnNjc3MnO1xuQGltcG9ydCAnY29tcG9uZW50cy9tYXAtcGlucy9tYXAtcGlucy5zY3NzJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvbG9jYXRpb24tc2VhcmNoL2Rpc3RyaWJ1dG9yLXRlYXNlci5zY3NzJztcblxuXG5cbkBpbXBvcnQgXCJjb21wb25lbnRzL3V0aWxpdGllcy5oZWxwZXJzXCI7XG5cblxuXG4iLCIudmlldy5kaXN0cmlidXRvci1zZWFyY2gge1xuICAudmlldy1maWx0ZXJzIHtcbiAgICBwYWRkaW5nOiAkc3BhY2UtcXVpbnR1cGxlIDAgMDtcblxuICAgIC5oZWFkaW5nLmhlYWRpbmctbGlzdGluZyB7XG4gICAgICBAZXh0ZW5kICVibG9jay10aXRsZTtcblxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAudGV4dCB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIGJvcmRlcjogMCB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICBmb3JtIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkc3BhY2UtcXVpbnR1cGxlO1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAuZm9ybS0taW5saW5lIHtcblxuICAgICAgICAgICY+LmZvcm0taXRlbSxcbiAgICAgICAgICAmPmZpZWxkc2V0IHtcblxuICAgICAgICAgICAgQGluY2x1ZGUgeHktY2VsbCg2KTtcblxuICAgICAgICAgICAgJi5mb3JtLWFjdGlvbnMge1xuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmZvcm0tLWlubGluZT5maWVsZHNldCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlcjogMDtcblxuICAgICAgICBsZWdlbmQge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmZvcm0tdGV4dCB7XG4gICAgICAgIEBleHRlbmQgJWlucHV0LS13aXRoLWljb247XG4gICAgICAgIEBleHRlbmQgJWlucHV0LS13aXRoLWljb24tLXJpZ2h0O1xuICAgICAgICBAZXh0ZW5kICVpbnB1dC0td2l0aC1pY29uLS1tYWduaWZpZXI7XG4gICAgICB9XG5cbiAgICAgIC5kaXN0YW5jZS1lbGVtZW50IHtcblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1yYW5nZSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRib3JkZXItY29sb3I7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMTBweCAwIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICAgIC8qIHBhZGRpbmc6IDFyZW0gMzBweDsgKi9cbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IC43cztcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAyMHB4KSA1MCU7XG4gICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAvKiBwYWRkaW5nLXJpZ2h0OiA1MHB4ICovXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIC5hdHRhY2htZW50LWJlZm9yZSB7XG4gICAgLnBhcmFncmFwaCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgJj5oMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogJHNwYWNlLXRyaXBsZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRhcmstd2hpdGU7XG4gICAgICB9XG5cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgJj5oMiB7XG4gICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAudmlldy1jb250ZW50IHtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuICB9XG5cbiAgLnZpZXctY29udGVudC13cmFwcGVyIHtcbiAgICBwYWRkaW5nOiAkc3BhY2UtZGVjdXBsZSAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkYXJrLXdoaXRlO1xuICB9XG5cbiAgLnZpZXdfX3BhZ2VyLnZpZXctaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgLnZpZXdfX3BhZ2VyLnZpZXctZm9vdGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLnZpZXctY29udGVudC13cmFwcGVyIC52aWV3LWNvbnRlbnQge1xuICAgIC50ZWFzZXIge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNlLWRvdWJsZTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgLnZpZXctY29udGVudC1pbm5lciB7XG4gICAgICAgIEBpbmNsdWRlIHh5LWdyaWQoKTtcbiAgICAgICAgQGluY2x1ZGUgeHktZ3V0dGVycygkbmVnYXRpdmU6IHRydWUpO1xuXG4gICAgICAgIC50ZWFzZXIge1xuICAgICAgICAgIEBpbmNsdWRlIHh5LWNlbGwoNCk7XG4gICAgICAgICAgLyogQGluY2x1ZGUgeHktY2VsbCg2KTsgKi9cbiAgICAgICAgICBAaW5jbHVkZSB4eS1ndXR0ZXJzKCRndXR0ZXItcG9zaXRpb246IHRvcCBib3R0b20pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJyZWFrcG9pbnRzXG4vLy8vXG5cbi8vLyBQYXRjaCB0byBmaXggaXNzdWUgIzEyMDgwXG4kLXpmLXNpemU6IG51bGw7XG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHM6IChcbiAgXCJzbWFsbFwiOiAwLFxuICBcIm1lZGl1bVwiOiA2NDBweCxcbiAgXCJsYXJnZVwiOiAxMDI0cHgsXG4gIFwieGxhcmdlXCI6IDEyMDBweCxcbiAgXCJ4eGxhcmdlXCI6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgSGlEUEkgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMgZm9yIHJlc29sdXRpb25zLlxuLy8vIFZhbHVlcyBtdXN0IHJlcHJlc2VudCB0aGUgZGV2aWNlIHBpeGVscyAvIHdlYiBwaXhlbHMgcmF0aW9uIGFuZCBiZSB1bml0bGVzcyBvciBpbiBEUFBYLlxuLy8vIEB0eXBlIE1hcFxuJGJyZWFrcG9pbnRzLWhpZHBpOiAoXG4gIFwiaGlkcGktMVwiOiAxLFxuICBcImhpZHBpLTEtNVwiOiAxLjUsXG4gIFwiaGlkcGktMlwiOiAyLFxuICBcInJldGluYVwiOiAyLFxuICBcImhpZHBpLTNcIjogM1xuKSAhZGVmYXVsdDtcblxuLy8vIFRoZSBsYXJnZXN0IG5hbWVkIGJyZWFrcG9pbnQgaW4gd2hpY2ggdG8gaW5jbHVkZSBwcmludCBhcyBhIG1lZGlhIHR5cGVcbi8vLyBAdHlwZSBLZXl3b3JkXG4kcHJpbnQtYnJlYWtwb2ludDogbGFyZ2UgIWRlZmF1bHQ7XG5cbiQtemYtemVyby1icmVha3BvaW50OiBzbWFsbCAhZGVmYXVsdDtcblxuJC16Zi1icmVha3BvaW50cy1rZXlzOiBtYXAtdG8tbGlzdCgkYnJlYWtwb2ludHMsICdrZXlzJyk7XG5cbkBpZiBudGgobWFwLXZhbHVlcygkYnJlYWtwb2ludHMpLCAxKSAhPSAwIHtcbiAgQGVycm9yICdUaGUgZmlyc3Qga2V5IGluIHRoZSAkYnJlYWtwb2ludHMgbWFwIG11c3QgaGF2ZSBhIHZhbHVlIG9mIFwiMFwiLic7XG59XG5AZWxzZSB7XG4gICQtemYtemVyby1icmVha3BvaW50OiBudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgMSk7XG59XG5cbi8vLyBBbGwgb2YgdGhlIG5hbWVzIGluIHRoaXMgbGlzdCB3aWxsIGJlIG91dHB1dCBhcyBjbGFzc2VzIGluIHlvdXIgQ1NTLCBsaWtlIGAuc21hbGwtMTJgLCBgLm1lZGl1bS02YCwgYW5kIHNvIG9uLiBFYWNoIHZhbHVlIGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcC5cbi8vLyBAdHlwZSBMaXN0XG4kYnJlYWtwb2ludC1jbGFzc2VzOiAoc21hbGwgbWVkaXVtIGxhcmdlKSAhZGVmYXVsdDtcblxuLy8vIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHN0cmluZyBtYXRjaGluZyB0aGUgaW5wdXQgdmFsdWUuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gc2VlIHdoYXQgdGhlIHBvc3NpYmxlIGlucHV0cyBhcmUuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsIFtzbWFsbF0gLSBCcmVha3BvaW50IG5hbWUsIG9yIHB4LCByZW0sIG9yIGVtIHZhbHVlIHRvIHByb2Nlc3MuXG5AZnVuY3Rpb24gYnJlYWtwb2ludCgkdmFsOiAkLXpmLXplcm8tYnJlYWtwb2ludCkge1xuICAvLyBXZWIgc3RhbmRhcmQgUGl4ZWxzIHBlciBpbmNoLiAoMWRkcHggLyAkc3RkLXdlYi1kcGkpID0gMWRwaVxuICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy12YWx1ZXMtMy8jYWJzb2x1dGUtbGVuZ3Roc1xuICAkc3RkLXdlYi1kcGk6IDk2O1xuXG4gIC8vIFNpemUgb3Iga2V5d29yZFxuICAkYnA6IG50aCgkdmFsLCAxKTtcbiAgLy8gVmFsdWUgb2YgdGhlIGZvbGxvd2luZyBicmVha3BvaW50XG4gICRicC1uZXh0OiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1pbjogbnVsbDtcbiAgLy8gVmFsdWUgZm9yIG1pbi13aWR0aCBtZWRpYSBxdWVyaWVzXG4gICRicC1tYXg6IG51bGw7XG4gIC8vIERpcmVjdGlvbiBvZiBtZWRpYSBxdWVyeSAodXAsIGRvd24sIG9yIG9ubHkpXG4gICRkaXI6IGlmKGxlbmd0aCgkdmFsKSA+IDEsIG50aCgkdmFsLCAyKSwgdXApO1xuICAvLyBJZiBuYW1lZCwgbmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuICAkbmFtZTogbnVsbDtcbiAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSBIaURQSSBicmVha3BvaW50XG4gICRoaWRwaTogZmFsc2U7XG5cbiAgLy8gT3JpZW50YXRpb24gbWVkaWEgcXVlcmllcyBoYXZlIGEgdW5pcXVlIHN5bnRheFxuICBAaWYgJGJwID09ICdsYW5kc2NhcGUnIG9yICRicCA9PSAncG9ydHJhaXQnIHtcbiAgICBAcmV0dXJuICcob3JpZW50YXRpb246ICN7JGJwfSknO1xuICB9XG5cbiAgLy8gSWYgYSBicmVha3BvaW50IG5hbWUgaXMgZ2l2ZW4sIGdldCBpdHMgdmFsdWUgZnJvbSB0aGUgJGJyZWFrcG9pbnRzLyRicmVha3BvaW50cy1oaWRwaSBtYXAuXG4gIEBpZiB0eXBlLW9mKCRicCkgPT0gJ3N0cmluZycge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuICAgICAgJG5hbWU6ICRicDtcbiAgICAgICRicDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICAgICRicC1uZXh0OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cy1oaWRwaSwgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cy1oaWRwaSwgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dC1udW1iZXIoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApO1xuICAgICAgJGhpZHBpOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyIGAkYnJlYWtwb2ludHNgIG9yIGAkYnJlYWtwb2ludHMtaGlkcGlgIHNldHRpbmcuJztcbiAgICB9XG4gIH1cblxuICBAaWYgbm90ICRuYW1lIGFuZCAkZGlyID09ICdvbmx5JyB7XG4gICAgQHdhcm4gJ2JyZWFrcG9pbnQoKTogT25seSBuYW1lZCBtZWRpYSBxdWVyaWVzIGNhbiBoYXZlIGFuIGBvbmx5YCByYW5nZS4nO1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE9ubHkgJ29ubHknIGFuZCAndXAnIGhhdmUgYSBtaW4gbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICd1cCcge1xuICAgICRicC1taW46IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gIH1cbiAgLy8gT25seSAnb25seScgYW5kICdkb3duJyBoYXZlIGEgbWF4IGxpbWl0LlxuICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIGEgdmFsdWUsIHVzZSBpdCBhcyBtYXggbGltaXQuXG4gICAgQGlmIG5vdCAkbmFtZSB7XG4gICAgICAkYnAtbWF4OiBpZigkaGlkcGksIHN0cmlwLXVuaXQoJGJwKSwgLXpmLWJwLXRvLWVtKCRicCkpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBuYW1lZCwgdGhlIG1heCBsaW1pdCBpcyB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnQgLSAxcHguXG4gICAgQGVsc2UgaWYgJGJwLW5leHQge1xuICAgICAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAgICAgLy8gVXNlIGEgcHJlY2lzaW9uIHVuZGVyIDFweCB0byBzdXBwb3J0IGJyb3dzZXIgem9vbSwgYnV0IG5vdCB0byBsb3cgdG8gYXZvaWQgcm91bmRpbmcuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZvdW5kYXRpb24vZm91bmRhdGlvbi1zaXRlcy9pc3N1ZXMvMTEzMTNcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgJGJwLW5leHQgLSBkaXZpZGUoMSwgJHN0ZC13ZWItZHBpKSwgLXpmLWJwLXRvLWVtKCRicC1uZXh0KSAtIDAuMDAxMjUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlIHRoZSBtZWRpYSBxdWVyeSBzdHJpbmcgZnJvbSBtaW4gYW5kIG1heCBsaW1pdHMuXG4gIEBpZiAkaGlkcGkge1xuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBpbiBEUEkgaW5zdGVhZCBvZiBEUFBYIGZvciBhbiBJRTktMTEvT3BlcmEgbWluaSBjb21wYXRpYmlsaXR5LlxuICAgIC8vIFNlZSBodHRwczovL2Nhbml1c2UuY29tLyNmZWF0PWNzcy1tZWRpYS1yZXNvbHV0aW9uXG4gICAgJGJwLW1pbi1kcGk6IGlmKCRicC1taW4sICRicC1taW4gKiAkc3RkLXdlYi1kcGkgKiAxZHBpLCAkYnAtbWluKTtcbiAgICAkYnAtbWF4LWRwaTogaWYoJGJwLW1heCwgJGJwLW1heCAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1tYXgpO1xuICAgIEByZXR1cm4gemYtc3RyLWpvaW4oXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLCAkYnAtbWF4LCAnLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvJywgJy13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbycpLFxuICAgICAgLXpmLWJwLWpvaW4oJGJwLW1pbi1kcGksICRicC1tYXgtZHBpLCAnbWluLXJlc29sdXRpb24nLCAnbWF4LXJlc29sdXRpb24nKSxcbiAgICAgICcsICcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgpO1xuICB9XG59XG5cbi8vLyBXcmFwcyBhIG1lZGlhIHF1ZXJ5IGFyb3VuZCB0aGUgY29udGVudCB5b3UgcHV0IGluc2lkZSB0aGUgbWl4aW4uIFRoaXMgbWl4aW4gYWNjZXB0cyBhIG51bWJlciBvZiB2YWx1ZXM6XG4vLy8gIC0gSWYgYSBzdHJpbmcgaXMgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBsb29rIGZvciBpdCBpbiB0aGUgYCRicmVha3BvaW50c2AgYW5kIGAkYnJlYWtwb2ludHMtaGlkcGlgIG1hcHMsIGFuZCB1c2UgYSBtZWRpYSBxdWVyeSB0aGVyZS5cbi8vLyAgLSBJZiBhIHBpeGVsIHZhbHVlIGlzIHBhc3NlZCwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYW4gZW0gdmFsdWUgdXNpbmcgYCRnbG9iYWwtZm9udC1zaXplYCBhcyB0aGUgYmFzZS5cbi8vLyAgLSBJZiBhIHJlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB1bml0IHdpbGwgYmUgY2hhbmdlZCB0byBlbS5cbi8vLyAgLSBJZiBhbiBlbSB2YWx1ZSBpcyBwYXNzZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMtaXMuXG4vLy9cbi8vLyBJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgZ2VuZXJhdGUgYSBtZWRpYSBxdWVyeSBmb3IgZWFjaCBvZiB0aGVtIGFzIGRlc2NyaWJlZCBhYm92ZS5cbi8vLyBTaW5jZSB0aGUgY29udGVudCBpcyBkdXBsaWNhdGVkIGZvciBlYWNoIGJyZWFrcG9pbnQsIHRoaXMgbWl4aW4gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHByb3BlcnRpZXMgdGhhdFxuLy8vIGNoYW5nZSBhY3Jvc3MgYnJlYWtwb2ludHMuXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkdmFsdWVzLi4uIC0gQnJlYWtwb2ludCBuYW1lIG9yIHB4L3JlbS9lbSB2YWx1ZSB0byBwcm9jZXNzLlxuLy8vXG4vLy8gQG91dHB1dCBJZiB0aGUgYnJlYWtwb2ludCBpcyBcIjBweCBhbmQgbGFyZ2VyXCIsIG91dHB1dHMgdGhlIGNvbnRlbnQgYXMtaXMuIE90aGVyd2lzZSwgb3V0cHV0cyB0aGUgY29udGVudCB3cmFwcGVkIGluIGEgbWVkaWEgcXVlcnkuXG5AbWl4aW4gYnJlYWtwb2ludCgkdmFsdWVzLi4uKSB7XG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR2YWx1ZXMpIHtcbiAgICAkdmFsdWU6IG50aCgkdmFsdWVzLCAkaSk7XG4gICAgJHN0cjogYnJlYWtwb2ludCgkdmFsdWUpO1xuICAgICRicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCBudGgoJHZhbHVlLCAxKSk7XG4gICAgJHBicDogaW5kZXgoJC16Zi1icmVha3BvaW50cy1rZXlzLCAkcHJpbnQtYnJlYWtwb2ludCk7XG4gICAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgICAkZGlyOiBpZihsZW5ndGgoJHZhbHVlKSA+IDEsIG50aCgkdmFsdWUsIDIpLCB1cCk7XG5cbiAgICAkb2xkLXpmLXNpemU6IG51bGw7XG5cbiAgICAvLyBNYWtlIGJyZWFrcG9pbnQgc2l6ZSBhdmFpbGFibGUgYXMgYSB2YXJpYWJsZVxuICAgIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSB7XG4gICAgICAkb2xkLXpmLXNpemU6ICQtemYtc2l6ZTtcbiAgICB9XG4gICAgJC16Zi1zaXplOiBudGgoJHZhbHVlLCAxKSAhZ2xvYmFsOyAvLyBnZXQgdGhlIGZpcnN0IHZhbHVlIHRvIGFjY291bnQgZm9yIGBvbmx5YCBhbmQgYGRvd25gIGtleXdvcmRzXG5cbiAgICAvLyBJZiAkc3RyIGlzIHN0aWxsIGFuIGVtcHR5IHN0cmluZywgbm8gbWVkaWEgcXVlcnkgaXMgbmVlZGVkXG4gICAgQGlmICRzdHIgPT0gJycge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgICBAZWxzZSB7XG4gICAgICAvLyBGb3IgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICRwcmludC1icmVha3BvaW50LCBhZGQgcHJpbnQgdG8gdGhlIG1lZGlhIHR5cGVzXG4gICAgICAvLyBnZW5lcmF0ZSBwcmludCBpZiB0aGUgYnJlYWtwb2ludCBhZmZlY3RzIHRoZSBwcmludC1icmVha3BvaW50IChvciBzbWFsbGVyKS5cbiAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGN1cnJlbnQgY29uZGl0aW9uIG9ubHkgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgc28gJ2Rvd24nIGFsd2F5cyBnZW5lcmF0ZXMgcHJpbnQuXG4gICAgICBAaWYgJGJwICE9IG51bGwgYW5kICgkYnAgPD0gJHBicCBvciAkZGlyID09IGRvd24pIHtcbiAgICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICN7JHN0cn0ge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbiAgfVxufVxuXG4vLy8gQ29udmVydHMgdGhlIGJyZWFrcG9pbnRzIG1hcCB0byBhIFVSTC1lbmNvZGVkIHN0cmluZywgbGlrZSB0aGlzOiBga2V5MT12YWx1ZTEma2V5Mj12YWx1ZTJgLiBUaGUgdmFsdWUgaXMgdGhlbiBkcm9wcGVkIGludG8gdGhlIENTUyBmb3IgYSBzcGVjaWFsIGA8bWV0YT5gIHRhZywgd2hpY2ggaXMgcmVhZCBieSB0aGUgRm91bmRhdGlvbiBKYXZhU2NyaXB0LiBUaGlzIGlzIGhvdyB3ZSB0cmFuc2ZlciB2YWx1ZXMgZnJvbSBTYXNzIHRvIEphdmFTY3JpcHQsIHNvIHRoZXkgY2FuIGJlIGRlZmluZWQgaW4gb25lIHBsYWNlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gY29udmVydC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hcCdzIGNvbnRlbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC1zZXJpYWxpemUoJG1hcCkge1xuICAkc3RyOiAnJztcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAge1xuICAgICRzdHI6ICRzdHIgKyAka2V5ICsgJz0nICsgLXpmLWJwLXRvLWVtKCR2YWx1ZSkgKyAnJic7XG4gIH1cbiAgJHN0cjogc3RyLXNsaWNlKCRzdHIsIDEsIC0yKTtcblxuICBAcmV0dXJuICRzdHI7XG59XG5cbi8vLyBGaW5kIHRoZSBuZXh0IGtleSBpbiBhIG1hcC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHRyYXZlcnNlLlxuLy8vIEBwYXJhbSB7TWl4ZWR9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TWl4ZWR9IFRoZSB2YWx1ZSBmb3IgdGhlIGtleSBhZnRlciBgJGtleWAsIGlmIGAka2V5YCB3YXMgZm91bmQuIElmIGAka2V5YCB3YXMgbm90IGZvdW5kLCBvciBgJGtleWAgd2FzIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBtYXAsIHJldHVybnMgYG51bGxgLlxuQGZ1bmN0aW9uIC16Zi1tYXAtbmV4dCgkbWFwLCAka2V5KSB7XG5cbiAgLy8gU3RvcmUgdGhlIGtleXMgb2YgdGhlIG1hcCBhcyBhIGxpc3RcbiAgJHZhbHVlczogbWFwLWtleXMoJG1hcCk7XG5cbiAgJGk6IDA7XG5cbiAgLy8gSWYgdGhlIEtleSBFeGlzdHMsIEdldCB0aGUgaW5kZXggb2YgdGhlIGtleSB3aXRoaW4gdGhlIG1hcCBhbmQgYWRkIDEgdG8gaXQgZm9yIHRoZSBuZXh0IGJyZWFrcG9pbnQgaW4gdGhlIG1hcFxuICBAaWYgKG1hcC1oYXMta2V5KCRtYXAsICRrZXkpKSB7XG4gICAgJGk6IGluZGV4KCR2YWx1ZXMsICRrZXkpICsgMTtcbiAgfVxuXG4gIC8vIElmIHRoZSBrZXkgZG9lc24ndCBleGlzdCwgb3IgaXQncyB0aGUgbGFzdCBrZXkgaW4gdGhlIG1hcCwgcmV0dXJuIG51bGxcbiAgQGlmICgkaSA+IGxlbmd0aCgkbWFwKSBvciAkaSA9PSAwKSB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB2YWx1ZVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsIG50aCgkdmFsdWVzLCAkaSkpO1xuICB9XG5cbn1cblxuLy8vIEZpbmQgdGhlIG5leHQgbnVtYmVyIGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJG51bWJlciAtIE51bWJlciB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIG51bWJlciBmb2xsb3dpbmcgYCRudW1iZXJgLCBpZiBgJG51bWJlcmAgd2FzIGZvdW5kLiBJZiBgJG51bWJlcmAgd2FzIG5vdCBmb3VuZCwgb3IgYCRudW1iZXJgIHdhcyB0aGUgYmlnZ2VzdCBudW1iZXIgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0LW51bWJlcigkbWFwLCAkbnVtYmVyKSB7XG5cbiAgJG5leHQtbnVtYmVyOiBudWxsO1xuXG4gIEBlYWNoICRrLCAkdiBpbiAkbWFwIHtcbiAgICBAaWYgdHlwZS1vZigkdikgPT0gJ251bWJlcicgYW5kICR2ID4gJG51bWJlciBhbmQgKCRuZXh0LW51bWJlciA9PSBudWxsIG9yICR2IDwgJG5leHQtbnVtYmVyKSB7XG4gICAgICAkbmV4dC1udW1iZXI6ICR2O1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5leHQtbnVtYmVyO1xufVxuXG4vLy8gUmV0dXJuIGEgbGlzdCBvZiBvdXIgbmFtZWQgYnJlYWtwb2ludHMgbGVzcyB0aGFuICRrZXkuIFVzZWZ1bCBmb3IgZGVhbGluZyB3aXRoXG4vLy8gcmVzcG9uc2l2ZSBndXR0ZXJzIGZvciB0aGUgZ3JpZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBsYXN0IGJyZWFrcG9pbnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7QXJyYXl9IFRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHVwIHRvIGFuZC4gSWYgJGtleSBpcyBhdXRvLCByZXR1cm5zIGJyZWFrcG9pbnRzIGFib3ZlIHRoZSB6ZXJvXG5AZnVuY3Rpb24gLXpmLWJyZWFrcG9pbnRzLWxlc3MtdGhhbigka2V5KSB7XG4gICRsaXN0OiAoKTtcbiAgJGZvdW5kLWtleTogZmFsc2U7XG5cbiAgQGVhY2ggJG5hbWUgaW4gJC16Zi1icmVha3BvaW50cy1rZXlzIHtcbiAgICBAaWYgKCRuYW1lID09ICRrZXkpIHtcbiAgICAgICRmb3VuZC1rZXk6IHRydWU7XG4gICAgfVxuICAgIEBpZiBub3QgJGZvdW5kLWtleSB7XG4gICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkbmFtZSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IC0gYSBuYW1lZCBvciBub24tbmFtZWQgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCRicmVha3BvaW50KSB7XG4gICRsYXN0OiAkLXpmLXplcm8tYnJlYWtwb2ludDtcbiAgJGZvdW5kOiBmYWxzZTtcblxuICAkdmFsdWU6IHVuaXRsZXNzLWNhbGMoJGJyZWFrcG9pbnQsIDFweCk7XG4gIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICBAaWYgbm90ICRmb3VuZCB7XG4gICAgICBAaWYgdW5pdGxlc3MtY2FsYygkdmFsKSA+ICR2YWx1ZSB7XG4gICAgICAgICRmb3VuZDogdHJ1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkbGFzdDogJGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsYXN0O1xufVxuXG4vLy8gR2V0IGEgdmFsdWUgZm9yIGEgYnJlYWtwb2ludCBmcm9tIGEgcmVzcG9uc2l2ZSBjb25maWcgbWFwIG9yIHNpbmdsZSB2YWx1ZS5cbi8vLyAtIElmIHRoZSBjb25maWcgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdCByZWdhcmRsZXNzIG9mIGAkdmFsdWVgLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgaGFzIHRoZSBrZXkgYCR2YWx1ZWAsIHRoZSBleGFjdCBicmVha3BvaW50IHZhbHVlIGlzIHJldHVybmVkLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIG1hcCBhbmQgZG9lcyAqbm90KiBoYXZlIHRoZSBicmVha3BvaW50LCB0aGUgdmFsdWUgbWF0Y2hpbmcgdGhlIG5leHQgbG93ZXN0IGJyZWFrcG9pbnQgaW4gdGhlIGNvbmZpZyBtYXAgaXMgcmV0dXJuZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRtYXAgLSBSZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIC0gQnJlYWtwb2ludCBuYW1lIHRvIHVzZS5cbi8vL1xuLy8vIEByZXR1cm4ge01peGVkfSBUaGUgY29ycmVzcG9uZGluZyBicmVha3BvaW50IHZhbHVlLlxuQGZ1bmN0aW9uIC16Zi1nZXQtYnAtdmFsKCRtYXAsICR2YWx1ZSkge1xuICAvLyBJZiB0aGUgZ2l2ZW4gbWFwIGlzIGEgc2luZ2xlIHZhbHVlLCByZXR1cm4gaXRcbiAgQGlmIHR5cGUtb2YoJG1hcCkgPT0gJ251bWJlcicge1xuICAgIEByZXR1cm4gJG1hcDtcbiAgfVxuXG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgZ2xvYmFsbHlcbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICR2YWx1ZSkge1xuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gJ251bWJlcicge1xuICAgICAgJHZhbHVlOiAtemYtY2xvc2VzdC1uYW1lZC1icmVha3BvaW50KCR2YWx1ZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGlmIHRoZSBicmVha3BvaW50IG5hbWUgZXhpc3RzIGluIHRoZSBsb2NhbCBjb25maWcgbWFwXG4gIEBlbHNlIGlmIG1hcC1oYXMta2V5KCRtYXAsICR2YWx1ZSkge1xuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCAkdmFsdWUpO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBhbmQgcmV0dXJuIHRoYXQgdmFsdWVcbiAgQGVsc2Uge1xuICAgICRhbmNob3I6IG51bGw7XG4gICAgJGZvdW5kOiBmYWxzZTtcblxuICAgIEBlYWNoICRrZXksICR2YWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsICRrZXkpIHtcbiAgICAgICAgICAkYW5jaG9yOiAka2V5O1xuICAgICAgICB9XG4gICAgICAgIEBpZiAka2V5ID09ICR2YWx1ZSB7XG4gICAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICRhbmNob3IpO1xuICB9XG59XG5cbi8vLyBSZXR1cm4gdGhlIGJlc3QgYnJlYWtwb2ludCB0byB1c2UgYWNjb3JkaW5nIHRvIHRoZSBjYWxsaW5nIGNvbnRleHQuIEl0IHJldHVybnMgaW4gb3JkZXI6XG4vLy8gMS4gdGhlIGdpdmVuIGAkdmFsdWVgIGFyZ3VtZW50IGlmIGl0IGlzIG5vdCBudWxsLlxuLy8vIDIuIHRoZSBnbG9iYWwgYnJlYWtwb2ludCBjb250ZXh0IGAkLXpmLXNpemVgIGlmIGl0IGlzIG5vdCBudWxsIChsaWtlIGlmIGNhbGxlZCBpbnNpZGUgdGhlbiBgYnJlYWtwb2ludCgpYCBtaXhpbilcbi8vLyAzLiB0aGUgZ2l2ZW4gYCRkZWZhdWx0YCBhcmd1bWVudC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHZhbHVlIFtudWxsXSAtIEJyZWFrcG9pbnQgdG8gdXNlIGluIHByaW9yaXR5IGlmIG5vbi1udWxsLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGRlZmF1bHQgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgYnkgZGVmYXVsdCBpZiBubyBvdGhlciB2YWx1ZSBjYW4gYmUgdXNlZC5cbi8vL1xuLy8vIEByZXR1cm4ge0tleXdvcmR9IFRoZSByZXNvbHZlZCBicmVha3BvaW50LlxuQGZ1bmN0aW9uIC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJHZhbHVlOiBudWxsLCAkZGVmYXVsdDogbnVsbCkge1xuICBAaWYgKCR2YWx1ZSAhPSBudWxsKSB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgKHZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkgYW5kIHR5cGUtb2YoJC16Zi1zaXplKSAhPSAnbnVtYmVyJykgYW5kICQtemYtc2l6ZSAhPSBudWxsIHtcbiAgICBAcmV0dXJuICQtemYtc2l6ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZGVmYXVsdDtcbiAgfVxufVxuXG4vLy8gUmV0dXJuIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIHRoZSBnaXZlbiBtaW4gYW5kL29yIG1heCBsaW1pdHMuXG4vLy8gSWYgYSBsaW1pdCBpcyBlcXVhbCB0byBgbnVsbGAgb3IgYDBgLCBpdCBpcyBpZ25vcmVkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtaW4gWzBdIC0gTWluIG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbWF4IFswXSAtIE1heCBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG1pbi1uYW1lIFsnbWluLXdpZHRoJ10gLSBOYW1lIG9mIHRoZSBtaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWxpbWl0ZXIgWydtYXgtd2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1heCBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtTdHJpbmd9IE1lZGlhIFF1ZXJ5IHN0cmluZy5cbkBmdW5jdGlvbiAtemYtYnAtam9pbihcbiAgJG1pbjogMCxcbiAgJG1heDogMCxcbiAgJG1pbi1uYW1lOiAnbWluLXdpZHRoJyxcbiAgJG1heC1uYW1lOiAnbWF4LXdpZHRoJ1xuKSB7XG4gIEByZXR1cm4gemYtc3RyLWpvaW4oXG4gICAgaWYoJG1pbiBhbmQgJG1pbiA+IDAsICcoI3skbWluLW5hbWV9OiAjeyRtaW59KScsIG51bGwpLFxuICAgIGlmKCRtYXggYW5kICRtYXggPiAwLCAnKCN7JG1heC1uYW1lfTogI3skbWF4fSknLCBudWxsKSxcbiAgICAnIGFuZCAnKTtcbn1cblxuJHNtYWxsLXVwOiAnJztcbiRzbWFsbC1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuJG1lZGl1bS11cDogJyc7XG4kbWVkaXVtLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbiRsYXJnZS11cDogJyc7XG4kbGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4bGFyZ2UtdXA6ICcnO1xuJHhsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG4keHhsYXJnZS11cDogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyBmbGV4IHZhbHVlIGZvciBhIGNlbGwgYmFzZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZH0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBBY2NlcHRzIGBmdWxsYCwgYGF1dG9gLCBgc2hyaW5rYCwgYGdyb3dgLCBvciBhbnkgb3RoZXIgdmFsdWUgcmVwcmVzZW50aW5nIGEgY2VsbCBzaXplIChpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgYHNocmlua2ApLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IFRoZSBjZWxsIGZsZXggcHJvcGVydHkgdmFsdWUuXG5AZnVuY3Rpb24geHktY2VsbC1iYXNlKCRzaXplOiBmdWxsKSB7XG4gIEBpZiAoJHNpemUgPT0gJ2F1dG8nKSB7XG4gICAgQHJldHVybiAxIDEgMDtcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ2dyb3cnKSB7XG4gICAgQHJldHVybiAxIDAgYXV0bztcbiAgfVxuICBAZWxzZSBpZiAoJHNpemUgPT0gJ3Nocmluaycgb3IgJHNpemUgPT0gJ2Z1bGwnIG9yIHpmLWlzLWZyYWN0aW9uKCRzaXplLCAkYWxsb3ctbm8tZGVub21pbmF0b3I6IHRydWUpKSB7XG4gICAgQHJldHVybiAwIDAgYXV0bztcbiAgfVxuICBAcmV0dXJuIG51bGw7XG59XG5cbi8vLyBDYWxjdWxhdGUgdGhlIHNpemUgb2YgYSBjZWxsIGd1dHRlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgcmV0dXJucyB0aGUgcmVzcG9uc2l2ZSBndXR0ZXJzIG1hcCBgJGd1dHRlcnNgLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfE1hcH0gVGhlIGNlbGwgZ3V0dGVyIHNpemUgb3IgdGhlIHJlc3BvbnNpdmUgZ3V0dGVycyBtYXAuXG5AZnVuY3Rpb24geHktY2VsbC1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgLy8gRm9yIGBhdXRvYCwgcmV0dXJucyB0aGUgcmVzcG9uc2l2ZSBtYXAgYCRndXR0ZXJzYC5cbiAgQGlmICgkYnJlYWtwb2ludCA9PSAnYXV0bycpIHtcbiAgICBAcmV0dXJuICRndXR0ZXJzO1xuICB9XG5cbiAgLy8gVXNlIHRoZSBjb250ZXh0dWFsIGJyZWFrcG9pbnQgYnkgZGVmYXVsdC5cbiAgJGJyZWFrcG9pbnQ6IC16Zi1jdXJyZW50LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpO1xuXG4gIEBpZiAoJGJyZWFrcG9pbnQpIHtcbiAgICBAcmV0dXJuIC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWdldC1icC12YWwoJGd1dHRlcnMsICQtemYtemVyby1icmVha3BvaW50KSBvciAwO1xuICB9XG59XG5cbi8vLyBSZXR1cm5zIHRoZSBwZXJjZW50YWdlIHNpemUgb2YgYSBjZWxsLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHNpemUgWyRncmlkLWNvbHVtbnNdIC0gU2l6ZSB0byBtYWtlIHRoZSBjZWxsLiBZb3UgY2FuIHBhc3MgYSB2YWx1ZSBpbiBtdWx0aXBsZSBmb3JtYXRzLCBzdWNoIGFzIGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzNgLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gU2l6ZSBvZiB0aGUgY2VsbCAoaW4gcGVyY2VudCkuXG5AZnVuY3Rpb24geHktY2VsbC1zaXplKFxuICAkc2l6ZTogJGdyaWQtY29sdW1uc1xuKSB7XG4gIEByZXR1cm4gZnJhY3Rpb24tdG8tcGVyY2VudGFnZSgkc2l6ZSwgJGRlbm9taW5hdG9yOiAkZ3JpZC1jb2x1bW5zKTtcbn1cblxuLy8vIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIENTUyB2YWx1ZSBmb3IgYSBjZWxsIHNpemUuXG4vLy9cbi8vLyBHdXR0ZXJzLXJlbGF0ZWQgYXJndW1lbnRzIGFyZSByZXF1aXJlZCBmb3IgY2VsbHMgd2l0aCBtYXJnaW4gZ3V0dGVycyAoYnkgZGVmYXVsdCkgYXMgdGhlIGd1dHRlciBpcyBpbmNsdWRlZCBpbiB0aGUgd2lkdGguXG4vLy9cbi8vLyBAcGFyYW0ge0tleXdvcmR8TnVtYmVyfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIENhbiBiZSBgZnVsbGAsIGBhdXRvYCwgYHNocmlua2Agb3IgYW55IGZyYWN0aW9uIGxpa2UgYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIHJldHVybnMgYSBtYXAgb2Ygc2l6ZXMgYWRhcHRlZCB0byByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ8U3RyaW5nfE1hcH0gVGhlIGNlbGwgc2l6aW5nIHByb3BlcnR5IHZhbHVlLCBvciBhIHJlc3BvbnNpdmUgbWFwIG9mIHRoZW0uXG5AZnVuY3Rpb24geHktY2VsbC1zaXplLWNzcyhcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsXG4pIHtcbiAgJG1hcmdpbi1ndXR0ZXI6IDA7XG5cbiAgQGlmICgkc2l6ZSA9PSAnYXV0bycgb3IgJHNpemUgPT0gJ3NocmluaycpIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cblxuICAvLyBGb3IgY2VsbHMgd2l0aCBtYXJnaW4gZ3V0dGVycywgdGhlIGd1dHRlciBpcyBpbmNsdWRlZCBpbiB0aGUgd2lkdGguXG4gIEBpZiAoJGd1dHRlci10eXBlID09ICdtYXJnaW4nKSB7XG4gICAgJG1hcmdpbi1ndXR0ZXI6IHh5LWNlbGwtZ3V0dGVycygkZ3V0dGVycywgJGJyZWFrcG9pbnQpO1xuICAgIEBpZiAoJG1hcmdpbi1ndXR0ZXIgPT0gbnVsbCkge1xuICAgICAgQGVycm9yICd4eS1jZWxsLXNpemU6IG5vIGd1dHRlcnMgd2VyZSBmb3VuZCBpbiBgJGd1dHRlcnNgIGZvciBcIiRicmVha3BvaW50OiAjeyRicmVha3BvaW50fVwiJztcbiAgICB9XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgdGhlIGNlbGwgc2l6ZSAobnVtYmVyKVxuICAkc2l6ZS1yYXc6IGlmKCRzaXplID09ICdmdWxsJywgMTAwJSwgeHktY2VsbC1zaXplKCRzaXplKSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHRoZSBjZWxsIENTUyBzaXplIGluY2x1ZGluZyBndXR0ZXJzIChzdHJpbmcpXG4gIC8vIElmIHRoZSBjZWxsIGhhcyByZXNwb25zaXZlIG1hcmdpbiBndXR0ZXJzLCByZXR1cm4gYSByZXNwb25zaXZlIG1hcCBvZiBzaXplcy5cbiAgQGlmIHR5cGUtb2YoJG1hcmdpbi1ndXR0ZXIpID09ICdtYXAnIHtcbiAgICAkcmVzcG9uc2l2ZS1jc3Mtc2l6ZXM6ICgpO1xuXG4gICAgQGVhY2ggJGJwLCAkbWcgaW4gJG1hcmdpbi1ndXR0ZXIge1xuICAgICAgJG1nYzogcmVtLWNhbGMoJG1nKTtcbiAgICAgIEBpZiAkbWdjID09IDAge1xuICAgICAgICAkbWdjOiAwcmVtO1xuICAgICAgfVxuICAgICAgJHNpemUtY3NzOiBpZigkbWcgPT0gMCwgJHNpemUtcmF3LCBjYWxjKCN7JHNpemUtcmF3fSAtICN7JG1nfSkpO1xuICAgICAgJHJlc3BvbnNpdmUtY3NzLXNpemVzOiBtYXAtbWVyZ2UoJHJlc3BvbnNpdmUtY3NzLXNpemVzLCAoJGJwOiAkc2l6ZS1jc3MpKTtcbiAgICB9XG5cbiAgICBAcmV0dXJuICRyZXNwb25zaXZlLWNzcy1zaXplcztcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiBhIHNpbmdsZSBDU1Mgc2l6ZS5cbiAgQGVsc2Uge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGF0IDAgaXMgdHJhbnNsYXRlZCBpbiAwcmVtIGZvciBjYWxjKClcbiAgICAkbWdjOiByZW0tY2FsYygkbWFyZ2luLWd1dHRlcik7XG4gICAgQGlmICRtZ2MgPT0gMCB7XG4gICAgICAkbWdjOiAwcmVtO1xuICAgIH1cbiAgICAkY3NzLXNpemU6IGlmKCRtYXJnaW4tZ3V0dGVyID09IDAsICRzaXplLXJhdywgY2FsYygjeyRzaXplLXJhd30gLSAjeyRtZ2N9KSk7XG4gICAgQHJldHVybiAkY3NzLXNpemU7XG4gIH1cbn1cblxuLy8vIFNldHMgYmFzZSBmbGV4IHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkc2l6ZSBbZnVsbF0gLSBUaGUgc2l6ZSBvZiB5b3VyIGNlbGwuIEFjY2VwdHMgYGZ1bGxgLCBgYXV0b2AsIGBzaHJpbmtgLCBgZ3Jvd2AsIG9yIGFueSBvdGhlciB2YWx1ZSByZXByZXNlbnRpbmcgYSBjZWxsIHNpemUgKGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBgc2hyaW5rYCkuXG5AbWl4aW4geHktY2VsbC1iYXNlKCRzaXplOiBmdWxsKSB7XG4gICRiYXNlOiB4eS1jZWxsLWJhc2UoJHNpemUpO1xuXG4gIGZsZXg6ICN7JGJhc2V9O1xuXG4gIC8vIFNldCBiYXNlIHN0eWxlcyBmb3IgXCJmdWxsXCIgb25seVxuICBAaWYoJHNpemUgPT0gJ2Z1bGwnKSB7XG4gICAgbWluLWhlaWdodDogMDtcbiAgICBtaW4td2lkdGg6IDA7XG4gIH1cbn1cblxuLy8vIFJlc2V0cyBhIGNlbGxzIHdpZHRoIChvciBoZWlnaHQgaWYgdmVydGljYWwgaXMgdHJ1ZSkgYXMgd2VsbCBhcyBzdHJpcHMgaXRzIGd1dHRlcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1yZXNldCgkdmVydGljYWw6IHRydWUpIHtcbiAgJGRpcmVjdGlvbjogaWYoJHZlcnRpY2FsID09IHRydWUsIGhlaWdodCwgd2lkdGgpO1xuICAjeyRkaXJlY3Rpb259OiBhdXRvO1xuICBtYXgtI3skZGlyZWN0aW9ufTogbm9uZTtcbn1cblxuLy8vIFNldHMgc2l6aW5nIHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gR3V0dGVycy1yZWxhdGVkIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgZm9yIGNlbGxzIHdpdGggbWFyZ2luIGd1dHRlcnMgKGJ5IGRlZmF1bHQpIGFzIHRoZSBndXR0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHdpZHRoLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgICgxMDAlIHdpZHRoKSwgYGF1dG9gICh1c2UgYWxsIGF2YWlsYWJsZSBzcGFjZSksIGBzaHJpbmtgICh1c2Ugb25seSB0aGUgcmVxdWlyZWQgc3BhY2UpIG9yIGFueSBmcmFjdGlvbiAoYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuLi4pLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBUeXBlIG9mIGd1dHRlciB0byBvdXRwdXQuIEFjY2VwdHMgYG1hcmdpbmAsIGBwYWRkaW5nYCBvciBgbm9uZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRicmVha3BvaW50IFtudWxsXSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHNpemUgaW4geW91ciBndXR0ZXJzIG1hcCB0byBnZXQgdGhlIHNpemUgZnJvbS4gSWYgYGF1dG9gLCBnZW5lcmF0ZXMgc2l6ZXMgYWRhcHRlZCBmb3IgcmVzcG9uc2l2ZSBndXR0ZXJzLiBJZiB1c2luZyB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0aGlzIHdpbGwgYmUgc2V0IGF1dG9tYXRpY2FsbHkgdW5sZXNzIG1hbnVhbGx5IGVudGVyZWQuXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkdmVydGljYWwgW2ZhbHNlXSAtIFNldCB0byB0cnVlIHRvIG91dHB1dCB2ZXJ0aWNhbCAoaGVpZ2h0KSBzdHlsZXMgcmF0aGVyIHRoYW4gd2lkdGhzLlxuQG1peGluIHh5LWNlbGwtc2l6ZShcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgJHNpemVzOiB4eS1jZWxsLXNpemUtY3NzKCRzaXplLCAkZ3V0dGVycywgJGd1dHRlci10eXBlLCAkYnJlYWtwb2ludCk7XG4gICRkaXJlY3Rpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCBoZWlnaHQsIHdpZHRoKTtcblxuICBAaWYgKHR5cGUtb2YoJHNpemVzKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRzaXplcykge1xuICAgICAgI3skZGlyZWN0aW9ufTogJC16Zi1icC12YWx1ZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICN7JGRpcmVjdGlvbn06ICRzaXplcztcbiAgfVxufVxuXG4vLy8gU2V0cyBndXR0ZXJzIHByb3BlcnRpZXMgZm9yIGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBgbWFyZ2luYCwgYHBhZGRpbmdgIG9yIGBub25lYC5cbi8vLyBAcGFyYW0ge0xpc3R9ICRndXR0ZXItcG9zaXRpb24gW251bGxdIC0gVGhlIHBvc2l0aW9uIHRvIGFwcGx5IGd1dHRlcnMgdG8uIEFjY2VwdHMgYHRvcGAsIGBib3R0b21gLCBgbGVmdGAsIGByaWdodGAgaW4gYW55IGNvbWJpbmF0aW9uLiBCeSBkZWZhdWx0IGByaWdodCBsZWZ0YCBmb3IgaG9yaXpvbnRhbCBjZWxscyBhbmQgYHRvcCBib3R0b21gIGZvciB2ZXJ0aWNhbCBjZWxscy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgW251bGxdIC0gVGhlIG5hbWUgb2YgdGhlIGJyZWFrcG9pbnQgc2l6ZSBpbiB5b3VyIGd1dHRlcnMgbWFwIHRvIGdldCB0aGUgc2l6ZSBmcm9tLiBJZiBgYXV0b2AsIGdlbmVyYXRlcyByZXNwb25zaXZlIGd1dHRlcnMuIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gRGlyZWN0aW9uIG9mIHRoZSBndXR0ZXJzIHRvIG91dHB1dC4gU2VlIGAkZ3V0dGVyLXBvc2l0aW9uYC5cbkBtaXhpbiB4eS1jZWxsLWd1dHRlcnMoXG4gICRndXR0ZXJzOiAkZ3JpZC1tYXJnaW4tZ3V0dGVycyxcbiAgJGd1dHRlci10eXBlOiBtYXJnaW4sXG4gICRndXR0ZXItcG9zaXRpb246IG51bGwsXG4gICRicmVha3BvaW50OiBudWxsLFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgLy8gR2V0IHRoZSBkZWZhdWx0IGd1dHRlciBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gY2VsbCBkaXJlY3Rpb25cbiAgQGlmKCRndXR0ZXItcG9zaXRpb24gPT0gbnVsbCkge1xuICAgICRndXR0ZXItcG9zaXRpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB0b3AgYm90dG9tLCBsZWZ0IHJpZ2h0KTtcbiAgfVxuXG4gIC8vIEdldCB0aGUgZ3V0dGVyIHdpZHRoIGZvciB0aGlzIGJyZWFrcG9pbnRcbiAgJGd1dHRlci13aWR0aDogeHktY2VsbC1ndXR0ZXJzKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gIEBpZiAoJGd1dHRlci13aWR0aCA9PSBudWxsKSB7XG4gICAgQGVycm9yICd4eS1jZWxsLWd1dHRlcnM6IG5vIGd1dHRlcnMgd2VyZSBmb3VuZCBpbiBgJGd1dHRlcnNgIGZvciBcIiRicmVha3BvaW50OiAjeyRicmVha3BvaW50fVwiJztcbiAgfVxuXG4gIEBpZiAoJGd1dHRlci10eXBlIGFuZCAkZ3V0dGVyLXR5cGUgIT0gbm9uZSkge1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlci13aWR0aCwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgfVxufVxuXG4vLy8gQ3JlYXRlcyBhIGNlbGwgZm9yIHlvdXIgZ3JpZC5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICRzaXplIFtmdWxsXSAtIFRoZSBzaXplIG9mIHlvdXIgY2VsbC4gQ2FuIGJlIGBmdWxsYCAoMTAwJSB3aWR0aCksIGBhdXRvYCAodXNlIGFsbCBhdmFpbGFibGUgc3BhY2UpLCBgc2hyaW5rYCAodXNlIG9ubHkgdGhlIHJlcXVpcmVkIHNwYWNlKSBvciBhbnkgZnJhY3Rpb24gKGA2YCwgYDUwJWAsIGAxIG9mIDJgIG9yIGAxLzJgLi4uKS5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRndXR0ZXItb3V0cHV0IFtudWxsXSAtIFtERVBSRUNBVEVEXSBXaGV0aGVyIG9yIG5vdCB0byBvdXRwdXQgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge051bWJlcnxNYXB9ICRndXR0ZXJzIFskZ3JpZC1tYXJnaW4tZ3V0dGVyc10gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7S2V5d29yZH0gJGd1dHRlci10eXBlIFttYXJnaW5dIC0gVHlwZSBvZiBndXR0ZXIgdG8gb3V0cHV0LiBBY2NlcHRzIGBtYXJnaW5gLCBgcGFkZGluZ2Agb3IgYG5vbmVgLlxuLy8vIEBwYXJhbSB7TGlzdH0gJGd1dHRlci1wb3NpdGlvbiBbbnVsbF0gLSBUaGUgcG9zaXRpb24gdG8gYXBwbHkgZ3V0dGVycyB0by4gQWNjZXB0cyBgdG9wYCwgYGJvdHRvbWAsIGBsZWZ0YCwgYHJpZ2h0YCBpbiBhbnkgY29tYmluYXRpb24uIEJ5IGRlZmF1bHQgYHJpZ2h0IGxlZnRgIGZvciBob3Jpem9udGFsIGNlbGxzIGFuZCBgdG9wIGJvdHRvbWAgZm9yIHZlcnRpY2FsIGNlbGxzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIGBhdXRvYCwgZ2VuZXJhdGVzIHJlc3BvbnNpdmUgZ3V0dGVycy4gSWYgdXNpbmcgd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdGhpcyB3aWxsIGJlIHNldCBhdXRvbWF0aWNhbGx5IHVubGVzcyBtYW51YWxseSBlbnRlcmVkLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJHZlcnRpY2FsIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBvdXRwdXQgdmVydGljYWwgKGhlaWdodCkgc3R5bGVzIHJhdGhlciB0aGFuIHdpZHRocy5cbi8vLyBAcGFyYW0ge0xpc3R9ICRvdXRwdXQgWyhiYXNlIHNpemUgZ3V0dGVycyldIC0gQ2VsbCBwYXJ0cyB0byBvdXRwdXQuIFlvdSB3aWxsIG5lZWQgdG8gZ2VuZXJhdGUgb3RoZXJzIHBhcnRzIG9mIHRoZSBjZWxsIHNlcGVyYXRlbHksIGl0IG1heSBub3Qgd29yayBwcm9wZXJseSBvdGhlcndpc2UuXG5AbWl4aW4geHktY2VsbChcbiAgJHNpemU6IGZ1bGwsXG4gICRndXR0ZXItb3V0cHV0OiBudWxsLFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiBudWxsLFxuICAkYnJlYWtwb2ludDogbnVsbCxcbiAgJHZlcnRpY2FsOiBmYWxzZSxcbiAgJG91dHB1dDogKGJhc2Ugc2l6ZSBndXR0ZXJzKVxuKSB7XG4gIC8vIERlZmF1bHQgZm9yICRndXR0ZXItb3V0cHV0XG4gIEBpZiAoJGd1dHRlci1vdXRwdXQgIT0gbnVsbCkge1xuICAgIEB3YXJuICd4eS1jZWxsOiAkZ3V0dGVyLW91dHB1dCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIFNlZSBtaWdyYXRpb24gbm90ZXMgYXQgaHR0cHM6Ly9naXQuaW8vZm91bmRhdGlvbi02LTYtMCc7XG4gICAgQGlmICgkZ3V0dGVyLW91dHB1dCA9PSBmYWxzZSkge1xuICAgICAgJG91dHB1dDogc2wtcmVtb3ZlKCRvdXRwdXQsIGd1dHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoaW5kZXgoJG91dHB1dCwgYmFzZSkpIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWJhc2UoJHNpemUpO1xuICB9XG4gIEBpZiAoaW5kZXgoJG91dHB1dCwgc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLXNpemUoJHNpemUsICRndXR0ZXJzLCAkZ3V0dGVyLXR5cGUsICRicmVha3BvaW50LCAkdmVydGljYWwpO1xuICB9XG4gIEBpZiAoaW5kZXgoJG91dHB1dCwgZ3V0dGVycykpIHtcbiAgICBAaW5jbHVkZSB4eS1jZWxsLWd1dHRlcnMoJGd1dHRlcnMsICRndXR0ZXItdHlwZSwgJGd1dHRlci1wb3NpdGlvbiwgJGJyZWFrcG9pbnQsICR2ZXJ0aWNhbCk7XG4gIH1cbn1cblxuLy8vIENyZWF0ZXMgYSBzaW5nbGUgYnJlYWtwb2ludCBzaXplZCBncmlkLiBVc2VkIHRvIGdlbmVyYXRlIG91ciBncmlkIGNsYXNzZXMuXG4vLy9cbi8vLyBgeHktY2VsbC1zdGF0aWMoKWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLlxuLy8vIFVzZSBgeHktY2VsbCgpYCBpbnN0ZWFkIHdpdGggYCRvdXRwdXQ6IChzaXplIGd1dHRlcnMpYCB0byBub3QgZ2VuZXJhdGUgdGhlIGNlbGwgYmFzZS5cbi8vLyBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTBcbi8vL1xuLy8vIEBkZXByZWNhdGVkIHY2LjYuMFxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHNpemUgW2Z1bGxdIC0gVGhlIHNpemUgb2YgeW91ciBjZWxsLiBDYW4gYmUgYGZ1bGxgICgxMDAlIHdpZHRoKSwgYGF1dG9gICh1c2UgYWxsIGF2YWlsYWJsZSBzcGFjZSksIGBzaHJpbmtgICh1c2Ugb25seSB0aGUgcmVxdWlyZWQgc3BhY2UpIG9yIGFueSBmcmFjdGlvbiAoYDZgLCBgNTAlYCwgYDEgb2YgMmAgb3IgYDEvMmAuLi4pLlxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGd1dHRlci1vdXRwdXQgW3RydWVdIC0gV2hldGhlciBvciBub3QgdG8gb3V0cHV0IGd1dHRlcnMuIEFsd2F5cyBgdHJ1ZWAgZm9yIG1hcmdpbiBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJGd1dHRlcnMgWyRncmlkLW1hcmdpbi1ndXR0ZXJzXSAtIE1hcCBvciBzaW5nbGUgdmFsdWUgZm9yIGd1dHRlcnMuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZ3V0dGVyLXR5cGUgW21hcmdpbl0gLSBNYXAgb3Igc2luZ2xlIHZhbHVlIGZvciBndXR0ZXJzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkYnJlYWtwb2ludCBbbnVsbF0gLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCBzaXplIGluIHlvdXIgZ3V0dGVycyBtYXAgdG8gZ2V0IHRoZSBzaXplIGZyb20uIElmIHVzaW5nIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRoaXMgd2lsbCBiZSBzZXQgYXV0b21hdGljYWxseSB1bmxlc3MgbWFudWFsbHkgZW50ZXJlZC5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICR2ZXJ0aWNhbCBbZmFsc2VdIC0gU2V0IHRvIHRydWUgdG8gb3V0cHV0IHZlcnRpY2FsIChoZWlnaHQpIHN0eWxlcyByYXRoZXIgdGhhbiB3aWR0aHMuXG5AbWl4aW4geHktY2VsbC1zdGF0aWMoXG4gICRzaXplOiBmdWxsLFxuICAkZ3V0dGVyLW91dHB1dDogdHJ1ZSxcbiAgJGd1dHRlcnM6ICRncmlkLW1hcmdpbi1ndXR0ZXJzLFxuICAkZ3V0dGVyLXR5cGU6IG1hcmdpbixcbiAgJGJyZWFrcG9pbnQ6ICQtemYtemVyby1icmVha3BvaW50LFxuICAkdmVydGljYWw6IGZhbHNlXG4pIHtcbiAgQHdhcm4gJ3h5LWNlbGwtc3RhdGljKCkgbWl4aW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBVc2UgXCJ4eS1jZWxsKClcIiBpbnN0ZWFkLiBTZWUgbWlncmF0aW9uIG5vdGVzIGF0IGh0dHBzOi8vZ2l0LmlvL2ZvdW5kYXRpb24tNi02LTAnO1xuXG4gICRndXR0ZXI6IC16Zi1nZXQtYnAtdmFsKCRndXR0ZXJzLCAkYnJlYWtwb2ludCk7XG4gICRndXR0ZXItcG9zaXRpb246IGlmKCR2ZXJ0aWNhbCA9PSB0cnVlLCB0b3AgYm90dG9tLCBsZWZ0IHJpZ2h0KTtcblxuICAkLWd1dHRlci1vdXRwdXQ6IGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJywgdHJ1ZSwgJGd1dHRlci1vdXRwdXQpO1xuICAkLWd1dHRlci1tYXJnaW46IGlmKCRndXR0ZXItdHlwZSA9PSAnbWFyZ2luJywgJGd1dHRlciwgMCk7XG5cbiAgQGluY2x1ZGUgLXh5LWNlbGwtcHJvcGVydGllcygkc2l6ZSwgJC1ndXR0ZXItbWFyZ2luLCAkdmVydGljYWwpO1xuICBAaWYgKCQtZ3V0dGVyLW91dHB1dCkge1xuICAgIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlciwgJGd1dHRlci10eXBlLCAkZ3V0dGVyLXBvc2l0aW9uKTtcbiAgfVxufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIHh5LWdyaWRcbi8vLy9cblxuLy8vIENyZWF0ZSBndXR0ZXJzIGZvciBhIGNlbGwvY29udGFpbmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TWFwfSAkZ3V0dGVycyBbJGdyaWQtbWFyZ2luLWd1dHRlcnNdIC0gTWFwIG9yIHNpbmdsZSB2YWx1ZSBmb3IgZ3V0dGVycy5cbi8vLyBAcGFyYW0ge0tleXdvcmR9ICRndXR0ZXItdHlwZSBbbWFyZ2luXSAtIFR5cGUgb2YgZ3V0dGVyIHRvIG91dHB1dC4gQWNjZXB0cyBlaXRoZXIgbWFyZ2luIG9yIHBhZGRpbmcuXG4vLy8gQHBhcmFtIHtMaXN0fSAkZ3V0dGVyLXBvc2l0aW9uIFtyaWdodCBsZWZ0XSAtIFRoZSBwb3NpdGlvbiB0byBhcHBseSBndXR0ZXJzIHRvLiBBY2NlcHRzIGB0b3BgLCBgYm90dG9tYCwgYGxlZnRgLCBgcmlnaHRgIGluIGFueSBjb21iaW5hdGlvbi5cbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRuZWdhdGl2ZSBbZmFsc2VdIC0gV2hldGhlciB0byBhcHBseSB0aGUgZ3V0dGVyIGFzIGEgbmVnYXRpdmUgdmFsdWUuIENvbW1vbmx5IHVzZWQgZm9yIG5lc3RlZCBncmlkcy5cbkBtaXhpbiB4eS1ndXR0ZXJzKFxuICAkZ3V0dGVyczogJGdyaWQtbWFyZ2luLWd1dHRlcnMsXG4gICRndXR0ZXItdHlwZTogbWFyZ2luLFxuICAkZ3V0dGVyLXBvc2l0aW9uOiByaWdodCBsZWZ0LFxuICAkbmVnYXRpdmU6IGZhbHNlXG4pIHtcbiAgJG9wZXJhdG9yOiBpZigkbmVnYXRpdmUsICctJywgJycpO1xuXG4gIC8vIElmIHdlIGhhdmUgZGVjbGFyZWQgbmVnYXRpdmUgZ3V0dGVycywgZm9yY2UgdHlwZSB0byBgbWFyZ2luLlxuICAkZ3V0dGVyLXR5cGU6IGlmKCRuZWdhdGl2ZSwgJ21hcmdpbicsICRndXR0ZXItdHlwZSk7XG5cbiAgLy8gT3V0cHV0IG91ciBtYXJnaW4gZ3V0dGVycy5cbiAgQGlmICh0eXBlLW9mKCRndXR0ZXJzKSA9PSAnbWFwJykge1xuICAgIEBpbmNsdWRlIC16Zi1icmVha3BvaW50LXZhbHVlKGF1dG8sICRndXR0ZXJzKSB7XG4gICAgICAkZ3V0dGVyOiByZW0tY2FsYygkLXpmLWJwLXZhbHVlKSAqIDAuNTtcblxuICAgICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggZ3V0dGVyIHBvc2l0aW9uXG4gICAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAgICN7JGd1dHRlci10eXBlfS0jeyR2YWx1ZX06IHVucXVvdGUoXCIjeyRvcGVyYXRvcn0jeyRndXR0ZXJ9XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAodHlwZS1vZigkZ3V0dGVycykgPT0gJ251bWJlcicpIHtcbiAgICAkZ3V0dGVyOiByZW0tY2FsYygkZ3V0dGVycykgKiAwLjU7XG5cbiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBndXR0ZXIgcG9zaXRpb25cbiAgICBAZWFjaCAkdmFsdWUgaW4gJGd1dHRlci1wb3NpdGlvbiB7XG4gICAgICAjeyRndXR0ZXItdHlwZX0tI3skdmFsdWV9OiB1bnF1b3RlKFwiI3skb3BlcmF0b3J9I3skZ3V0dGVyfVwiKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCB4eS1ncmlkXG4vLy8vXG5cbi8vLyBDcmVhdGVzIGEgbWF4IHdpZHRoIGNvbnRhaW5lciwgZGVzaWduZWQgdG8gaG91c2UgeW91ciBncmlkIGNvbnRlbnQuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHdpZHRoIFskZ3JpZC1jb250YWluZXJdIC0gYSB3aWR0aCB0byBsaW1pdCB0aGUgY29udGFpbmVyIHRvLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcGFkZGluZyBbJGdyaWQtY29udGFpbmVyLXBhZGRpbmddIC0gcGFkZGluZ3Mgb2YgdGhlIGNvbnRhaW5lci5cbkBtaXhpbiB4eS1ncmlkLWNvbnRhaW5lcihcbiAgJHdpZHRoOiAkZ3JpZC1jb250YWluZXIsXG4gICRwYWRkaW5nOiAkZ3JpZC1jb250YWluZXItcGFkZGluZ1xuKSB7XG4gIEBpbmNsdWRlIHh5LWd1dHRlcnMoJGd1dHRlcnM6ICRwYWRkaW5nLCAkZ3V0dGVyLXR5cGU6IHBhZGRpbmcpO1xuXG4gIG1heC13aWR0aDogJHdpZHRoO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgeW91ciBmbGV4IGNlbGxzLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGlyZWN0aW9uIFtob3Jpem9udGFsXSAtIEVpdGhlciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGRpcmVjdGlvbiBvZiBjZWxscyB3aXRoaW4uXG4vLy8gQHBhcmFtIHtCb29sZWFufSAkd3JhcCBbdHJ1ZV0gLSBJZiB0aGUgY2VsbHMgd2l0aGluIHNob3VsZCB3cmFwIG9yIG5vdC5cbkBtaXhpbiB4eS1ncmlkKFxuICAkZGlyZWN0aW9uOiBob3Jpem9udGFsLFxuICAkd3JhcDogdHJ1ZVxuKSB7XG4gICRkaXJlY3Rpb246IGlmKCRkaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnLCByb3csIGNvbHVtbik7XG4gICR3cmFwOiBpZigkd3JhcCwgd3JhcCwgbm93cmFwKTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6ICRkaXJlY3Rpb24gJHdyYXA7XG59XG4iLCIubWFwLXBpbnMge1xuICBAaW5jbHVkZSBjdXN0b20teHktZ3JpZC1jb250YWluZXIoKTtcblxuICBtYXJnaW4tdG9wOiAkc3BhY2UtZG91YmxlO1xuICBtYXJnaW4tYm90dG9tOiAkc3BhY2UtcXVpbnR1cGxlO1xuXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBtYXJnaW4tdG9wOiAkc3BhY2UtcXVhZHJ1cGxlO1xuICB9XG5cbiAgLm1hcC1waW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luOiAkc3BhY2UgMDtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgIG1hcmdpbjogMCAkc3BhY2UtcXVhZHJ1cGxlIDAgMDtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIGltZyB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogJHNwYWNlLXRyaXBsZTtcbiAgICAgIG1hcmdpbi1yaWdodDogJHNwYWNlLW9uZS1oYWxmO1xuICAgIH1cbiAgfVxufVxuIiwiLnRlYXNlci5kaXN0cmlidXRvci10ZWFzZXIge1xuICAubWVkaWEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIHBhZGRpbmc6ICRzcGFjZS1kb3VibGU7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRib3JkZXItY29sb3I7XG5cbiAgICBpbWcge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgbWF4LWhlaWdodDogMTUwcHggLSAyKiRzcGFjZS1kb3VibGUgLSAycHg7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIG1hcmdpbjogYXV0bztcbiAgICB9XG4gIH1cblxuICAuZGlzdHJpYnV0b3Ige1xuICAgICZfX2NvbnRhY3QtaW5mbyB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxLjUqJHNwYWNlO1xuICAgIH1cblxuICAgICZfX3Byb2R1Y3RzIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAgIGR0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnOiAnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRlYXNlcl9faGVhZGluZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuXG4gIC50ZWFzZXJfX3N1YmhlYWRpbmcge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmLS1tYXAge1xuICAgIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgIC50ZWFzZXJfX2hlYWRpbmcge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuY29udGVudCB7XG4gICAgICBwYWRkaW5nOiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLnByb2R1Y3QtY2F0ZWdvcnktYmFubmVycyAuYmFubmVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG5cbiAgICBpbWcge1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MS4yNWVtKSB7XG4gICAgICBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG59IiwiLy8gR0VORVJBTCBMQVlPVVQgU1RZTEVTXG4vLyAoR2xvYmFsIGxheW91dCBzdHlsZXMgdGhhdCBjYW4gYmUgcmUtdXNlZClcbi5zZWN0aW9uIHtcbiAgbWFyZ2luOiAkc3BhY2UtZGVjdXBsZSAwO1xufVxuXG4vLyBQcmltYXJ5IHNlY3Rpb24gc3BhY2luZyB1c2luZyBwYWRkaW5nLlxuLnNlY3Rpb24tYm94IHtcbiAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDQwKSAhaW1wb3J0YW50O1xuICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoNDApICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuXG4gICYgKyAucGFyYWdyYXBoIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgLmluLWlmcmFtZSAmIHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xuICB9XG5cbn1cblxuLnNlY3Rpb24tYm94LS1wcm90cnVkaW5nIHtcbiAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApICFpbXBvcnRhbnQ7XG59XG5cbi5zZWN0aW9uLS1mb3JjZSB7XG4gIG1hcmdpbjogJHNwYWNlLWRlY3VwbGUgMCAhaW1wb3J0YW50O1xufVxuXG4ud2lkdGgtZnVsbCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vLyAgSEVMUEVSIFNUWUxFU1xuLy8gIChHbG9iYWwgaGVscGVyIHN0eWxlcyB0aGF0IGNhbiBiZSByZS11c2VkKVxuLy8gIHxcbi8vICBgLS0gVHlwb2dyYXBoeVxuLy8gICAgICh0ZXh0IHN0eWxpbmcgcHJvcGVydGllcyBsaWtlIGZvbnQtc2l6ZXMsIGZvbnQtd2VpZ2h0cywgZXRjLilcbi5zaXplLW1kIHtcbiAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7XG59XG5cbi50eXBlLWhlYXZ5IHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLy8gIHxcbi8vICBgLS0gQ29udGVudCByZXNldFxuLy8gICAgIChSZXNldCB2ZXJ0aWNhbCBzcGFjaW5nIG9mIHRoZSBuZXN0ZWQgZWxlbWVudHNsaWtlIHBhcmFncmFwaHMgZm9yIGV4YW1wbGUuKVxuLnJlc2V0LXNwYWNpbmcge1xuICA+ICoge1xuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLyAgfFxuLy8gIGAtLSBNYXJnaW4gb3ZlcnJpZGVzIChtbCAtIG1hcmdpbi1sZWZ0LCAuLi4pXG4ubWwtMHgge1xuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4ubWItMHgge1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5tdC0weCB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLm1iLTF4IHtcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNlICFpbXBvcnRhbnQ7XG59XG5cbi5tYi0yeCB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZSAqIDI7XG59XG5cbi5tYi00eCB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZSAqIDQ7XG59XG5cbi5tYi01eCB7XG4gIG1hcmdpbi1ib3R0b206ICRzcGFjZSAqIDU7XG59XG5cbi8vICB8XG4vLyAgYC0tIFBhZGRpbmcgb3ZlcnJpZGVzIChwbCAtIHBhZGRpbmctbGVmdCwgLi4uKVxuLnB0LTB4IHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLnBiLTB4IHtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cblxuLy8gIHxcbi8vICBgLS0gQmFja3JvdW5kIGNvbG9yXG4uYmctd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG5cbi8vIFRleHQgYWxpZ25tZW50XG4vLyB8XG4vLyBgLS0gVGV4dCBjZW50ZXJcbi50ZXh0LWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gRGlzcGxheVxuLmZsZXgtYm94IHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLy8gQmFja2dyb3VuZHNcbi5iYWNrZ3JvdW5kLWdyYXkge1xuICBiYWNrZ3JvdW5kOiAkZGFyay13aGl0ZTtcbn1cblxuLmJhY2tncm91bmQtYmx1ZSB7XG4gIGJhY2tncm91bmQ6ICRwcmltYXJ5LWNvbG9yO1xufVxuXG4uYmFja2dyb3VuZC1yZWQge1xuICBiYWNrZ3JvdW5kOiAkeXQtY29sb3I7IFxufSIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzXG4vLyBodHRwczovL2dldC5mb3VuZGF0aW9uXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuQGltcG9ydCAnbWF0aCc7XG5cbiRjb250cmFzdC13YXJuaW5nczogdHJ1ZSAhZGVmYXVsdDtcblxuLy8vIFBhdGNoIHRvIGZpeCBpc3N1ZSAjMTIwODBcbiRwcmltYXJ5LWNvbG9yOiBudWxsICFkZWZhdWx0O1xuJHNlY29uZGFyeS1jb2xvcjogbnVsbCAhZGVmYXVsdDtcbiR3YXJuaW5nLWNvbG9yOiBudWxsICFkZWZhdWx0O1xuJGFsZXJ0LWNvbG9yOiBudWxsICFkZWZhdWx0O1xuJHN1Y2Nlc3MtY29sb3I6IG51bGwgIWRlZmF1bHQ7XG5cbi8vLy9cbi8vLyBAZ3JvdXAgZnVuY3Rpb25zXG4vLy8vXG5cbi8vLyBDaGVja3MgdGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYC5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIENvbG9yIHRvIGNoZWNrIHRoZSBsdW1pbmFuY2Ugb2YuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbHVtaW5hbmNlIG9mIGAkY29sb3JgLlxuQGZ1bmN0aW9uIGNvbG9yLWx1bWluYW5jZSgkY29sb3IpIHtcbiAgLy8gQWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vTGVhVmVyb3UvY29udHJhc3QtcmF0aW8vYmxvYi9naC1wYWdlcy9jb2xvci5qc1xuICAvLyBGb3JtdWxhOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA4L1JFQy1XQ0FHMjAtMjAwODEyMTEvI3JlbGF0aXZlbHVtaW5hbmNlZGVmXG4gICRyZ2JhOiByZWQoJGNvbG9yKSwgZ3JlZW4oJGNvbG9yKSwgYmx1ZSgkY29sb3IpO1xuICAkcmdiYTI6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMyB7XG4gICAgJHJnYjogbnRoKCRyZ2JhLCAkaSk7XG4gICAgJHJnYjogZGl2aWRlKCRyZ2IsIDI1NSk7XG5cbiAgICAkcmdiOiBpZigkcmdiIDwgMC4wMzkyOCwgZGl2aWRlKCRyZ2IsIDEyLjkyKSwgcG93KGRpdmlkZSgkcmdiICsgMC4wNTUsIDEuMDU1KSwgMi40KSk7XG5cbiAgICAkcmdiYTI6IGFwcGVuZCgkcmdiYTIsICRyZ2IpO1xuICB9XG5cbiAgQHJldHVybiAwLjIxMjYgKiBudGgoJHJnYmEyLCAxKSArIDAuNzE1MiAqIG50aCgkcmdiYTIsIDIpICsgMC4wNzIyICogbnRoKCRyZ2JhMiwgMyk7XG59XG5cbi8vLyBDaGVja3MgdGhlIGNvbnRyYXN0IHJhdGlvIG9mIHR3byBjb2xvcnMuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IxIC0gRmlyc3QgY29sb3IgdG8gY29tcGFyZS5cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3IyIC0gU2Vjb25kIGNvbG9yIHRvIGNvbXBhcmUuXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgY29udHJhc3QgcmF0aW8gb2YgdGhlIGNvbXBhcmVkIGNvbG9ycy5cbkBmdW5jdGlvbiBjb2xvci1jb250cmFzdCgkY29sb3IxLCAkY29sb3IyKSB7XG4gIC8vIEFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL0xlYVZlcm91L2NvbnRyYXN0LXJhdGlvL2Jsb2IvZ2gtcGFnZXMvY29sb3IuanNcbiAgLy8gRm9ybXVsYTogaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyNjb250cmFzdC1yYXRpb2RlZlxuICAkbHVtaW5hbmNlMTogY29sb3ItbHVtaW5hbmNlKCRjb2xvcjEpICsgMC4wNTtcbiAgJGx1bWluYW5jZTI6IGNvbG9yLWx1bWluYW5jZSgkY29sb3IyKSArIDAuMDU7XG4gICRyYXRpbzogZGl2aWRlKCRsdW1pbmFuY2UxLCAkbHVtaW5hbmNlMik7XG5cbiAgQGlmICRsdW1pbmFuY2UyID4gJGx1bWluYW5jZTEge1xuICAgICRyYXRpbzogZGl2aWRlKDEsICRyYXRpbyk7XG4gIH1cblxuICAkcmF0aW86IHJvdW5kKCRyYXRpbyAqIDEwKSAqIDAuMTtcblxuICBAcmV0dXJuICRyYXRpbztcbn1cblxuLy8vIENoZWNrcyB0aGUgbHVtaW5hbmNlIG9mIGAkYmFzZWAsIGFuZCByZXR1cm5zIHRoZSBjb2xvciBmcm9tIGAkY29sb3JzYCAobGlzdCBvZiBjb2xvcnMpIHRoYXQgaGFzIHRoZSBtb3N0IGNvbnRyYXN0LlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGJhc2UgLSBDb2xvciB0byBjaGVjayBsdW1pbmFuY2UuXG4vLy8gQHBhcmFtIHtMaXN0fSAkY29sb3JzIFsoJHdoaXRlLCAkYmxhY2spXSAtIENvbG9ycyB0byBjb21wYXJlLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdG9sZXJhbmNlIFskZ2xvYmFsLWNvbG9yLXBpY2stY29udHJhc3QtdG9sZXJhbmNlXSAtIENvbnRyYXN0IHRvbGVyYW5jZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gdGhlIGNvbG9yIGZyb20gYCRjb2xvcnNgIChsaXN0IG9mIGNvbG9ycykgdGhhdCBoYXMgdGhlIG1vc3QgY29udHJhc3QuXG5AZnVuY3Rpb24gY29sb3ItcGljay1jb250cmFzdCgkYmFzZSwgJGNvbG9yczogKCR3aGl0ZSwgJGJsYWNrKSwgJHRvbGVyYW5jZTogJGdsb2JhbC1jb2xvci1waWNrLWNvbnRyYXN0LXRvbGVyYW5jZSkge1xuICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgMSkpO1xuICAkYmVzdDogbnRoKCRjb2xvcnMsIDEpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRjb2xvcnMpIHtcbiAgICAkY3VycmVudC1jb250cmFzdDogY29sb3ItY29udHJhc3QoJGJhc2UsIG50aCgkY29sb3JzLCAkaSkpO1xuICAgIEBpZiAoJGN1cnJlbnQtY29udHJhc3QgLSAkY29udHJhc3QgPiAkdG9sZXJhbmNlKSB7XG4gICAgICAkY29udHJhc3Q6IGNvbG9yLWNvbnRyYXN0KCRiYXNlLCBudGgoJGNvbG9ycywgJGkpKTtcbiAgICAgICRiZXN0OiBudGgoJGNvbG9ycywgJGkpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAoJGNvbnRyYXN0LXdhcm5pbmdzIGFuZCAkY29udHJhc3QgPCAzKSB7XG4gICAgQHdhcm4gJ0NvbnRyYXN0IHJhdGlvIG9mICN7JGJlc3R9IG9uICN7JGJhc2V9IGlzIHByZXR0eSBiYWQsIGp1c3QgI3skY29udHJhc3R9JztcbiAgfVxuXG4gIEByZXR1cm4gJGJlc3Q7XG59XG5cbi8vLyBTY2FsZXMgYSBjb2xvciB0byBiZSBkYXJrZXIgaWYgaXQncyBsaWdodCwgb3IgbGlnaHRlciBpZiBpdCdzIGRhcmsuIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIHRpbnQgYSBjb2xvciBhcHByb3ByaWF0ZSB0byBpdHMgbGlnaHRuZXNzLlxuLy8vXG4vLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gQ29sb3IgdG8gc2NhbGUuXG4vLy8gQHBhcmFtIHtQZXJjZW50YWdlfSAkc2NhbGUgWzUlXSAtIEFtb3VudCB0byBzY2FsZSB1cCBvciBkb3duLlxuLy8vIEBwYXJhbSB7UGVyY2VudGFnZX0gJHRocmVzaG9sZCBbNDAlXSAtIFRocmVzaG9sZCBvZiBsaWdodG5lc3MgdG8gY2hlY2sgYWdhaW5zdC5cbi8vL1xuLy8vIEByZXR1cm5zIHtDb2xvcn0gQSBzY2FsZWQgY29sb3IuXG5AZnVuY3Rpb24gc21hcnQtc2NhbGUoJGNvbG9yLCAkc2NhbGU6IDUlLCAkdGhyZXNob2xkOiA0MCUpIHtcbiAgQGlmIGxpZ2h0bmVzcygkY29sb3IpID4gJHRocmVzaG9sZCB7XG4gICAgJHNjYWxlOiAtJHNjYWxlO1xuICB9XG4gIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkc2NhbGUpO1xufVxuXG4vLy8gR2V0IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcGFyYW0ge2tleX0gY29sb3Iga2V5IGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG4vLy9cbi8vLyBAcmV0dXJucyB7Q29sb3J9IGNvbG9yIGZyb20gZm91bmRhdGlvbi1wYWxldHRlXG5AZnVuY3Rpb24gZ2V0LWNvbG9yKCRrZXkpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsICRrZXkpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgJGtleSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBlcnJvciAnZ2l2ZW4gJGtleSBpcyBub3QgYXZhaWxhYmxlIGluICRmb3VuZGF0aW9uLXBhbGV0dGUnO1xuICB9XG59XG5cbi8vLyBUcmFuc2ZlcnMgdGhlIGNvbG9ycyBpbiB0aGUgYCRmb3VuZGF0aW9uLXBhbGV0dGVgIG1hcCBpbnRvIHZhcmlhYmxlcywgc3VjaCBhcyBgJHByaW1hcnktY29sb3JgIGFuZCBgJHNlY29uZGFyeS1jb2xvcmAuIENhbGwgdGhpcyBtaXhpbiBiZWxvdyB0aGUgR2xvYmFsIHNlY3Rpb24gb2YgeW91ciBzZXR0aW5ncyBmaWxlIHRvIHByb3Blcmx5IG1pZ3JhdGUgeW91ciBjb2RlYmFzZS5cbkBtaXhpbiBhZGQtZm91bmRhdGlvbi1jb2xvcnMoKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBwcmltYXJ5KSB7XG4gICAgJHByaW1hcnktY29sb3I6IG1hcC1nZXQoJGZvdW5kYXRpb24tcGFsZXR0ZSwgcHJpbWFyeSkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHByaW1hcnktY29sb3I6ICMxNzc5YmEgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc2Vjb25kYXJ5KSB7XG4gICAgJHNlY29uZGFyeS1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBzZWNvbmRhcnkpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRzZWNvbmRhcnktY29sb3I6ICM3Njc2NzYgIWdsb2JhbDtcbiAgfVxuICBAaWYgbWFwLWhhcy1rZXkoJGZvdW5kYXRpb24tcGFsZXR0ZSwgc3VjY2Vzcykge1xuICAgICRzdWNjZXNzLWNvbG9yOiBtYXAtZ2V0KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHN1Y2Nlc3MpICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRzdWNjZXNzLWNvbG9yOiAjM2FkYjc2ICFnbG9iYWw7XG4gIH1cbiAgQGlmIG1hcC1oYXMta2V5KCRmb3VuZGF0aW9uLXBhbGV0dGUsIHdhcm5pbmcpIHtcbiAgICAkd2FybmluZy1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCB3YXJuaW5nKSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkd2FybmluZy1jb2xvcjogI2ZmYWUwMCAhZ2xvYmFsO1xuICB9XG4gIEBpZiBtYXAtaGFzLWtleSgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkge1xuICAgICRhbGVydC1jb2xvcjogbWFwLWdldCgkZm91bmRhdGlvbi1wYWxldHRlLCBhbGVydCkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJGFsZXJ0LWNvbG9yOiAjY2M0YjM3ICFnbG9iYWw7XG4gIH1cbn1cbiJdfQ== */
