  body, h1, h2, h3, h4, h5, h6, .tagline {
  font-family: "Montserrat", "Open Sans", "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif !important;
}

.lime {
  color: black;
  background: #5ca239;
}
.lime h2 {
  color: white;
}

/* carnegie overrides
section.hero h2, section.hero h3 {
    font-family: $serif !important;
    font-size: 2.5rem;
    line-height: 1;
    margin-top: 0;
    border: 0;
    text-transform: lowercase;
}
 */
body {
  -webkit-font-smoothing: auto;
}

body, h2, h3 {
  color: black;
}

a.cta {
  border-radius: 0.3em;
  -webkit-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
a.cta.reverse {
  background: black;
  border-width: 0 !important;
}

.slate-form .action button {
  background: black;
  border-radius: 0.3em;
}

section.cn-hero h2 {
  font-family: "Corundum-Text", "Garamond", Georgia, "Times New Roman", serif !important;
  font-size: 2.5rem;
  font-weight: 400;
  line-height: 1;
  margin-bottom: 0.5em;
  border: 0;
  text-transform: lowercase;
}

.black-text {
  color: black;
}

/* carnegie head photo with tagline slice */
.cn-photo-wrap section.cn-hero {
  color: black;
}
.cn-photo-wrap section.cn-hero::before, .cn-photo-wrap section.cn-hero::after {
  width: 180px;
  height: 117px;
  content: " ";
  position: absolute;
}
.cn-photo-wrap section.cn-hero::before {
  background: rgba(0, 67, 51, 0.65);
  -webkit-clip-path: polygon(0% 0%, 100% 0%, 0% 100%);
          clip-path: polygon(0% 0%, 100% 0%, 0% 100%);
}
.cn-photo-wrap section.cn-hero::after {
  background: rgba(94, 166, 58, 0.85);
  -webkit-clip-path: polygon(100% 0%, 100% 100%, 0% 100%);
          clip-path: polygon(100% 0%, 100% 100%, 0% 100%);
  margin-top: -117px;
  right: 0;
}
.cn-photo-wrap section.cn-hero.circle-screen::before, .cn-photo-wrap section.cn-hero.circle-screen::after {
  background: radial-gradient(circle at center, rgba(94, 166, 58, 0.85) 0.25rem, transparent 0);
  background-size: 0.55rem 0.55rem;
  background-repeat: round;
}
.cn-photo-wrap .headline-wrap {
  padding: 1rem;
  font-family: "Corundum-Text", "Garamond", Georgia, "Times New Roman", serif !important;
  color: black;
  font-weight: 400;
  font-size: 3rem;
  line-height: 1.2;
  text-align: center;
}
.cn-photo-wrap .headline-center-wrap {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}
@media print, screen and (min-width: 40em) {
  .cn-photo-wrap section.cn-hero::before, .cn-photo-wrap section.cn-hero::after {
    width: 360px;
    height: 234px;
  }
  .cn-photo-wrap section.cn-hero::after {
    margin-top: -234px;
  }
  .cn-photo-wrap .headline-wrap {
    text-align: right;
    -webkit-transform: translate(0, -100%);
            transform: translate(0, -100%);
    height: 234px;
    margin-bottom: -234px;
    /* needed to account for dead space from transform */
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end;
  }
  .cn-photo-wrap .headline-wrap .headline {
    width: 360px;
  }
  .cn-photo-wrap .headline-wrap .headline.white {
    color: white;
  }
  .cn-photo-wrap .headline-wrap .headline span {
    display: block;
  }
  .cn-photo-wrap .headline-wrap.center {
    width: 100%;
    height: 390px;
    margin-bottom: -390px;
    /* needed to account for dead space from transform */
    text-align: center;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: start;
  }
  .cn-photo-wrap .headline-wrap.center .headline {
    font-size: 6rem;
    line-height: 0.7;
    width: 100%;
  }
}
@media print, screen and (min-width: 64em) {
  .cn-photo-wrap section.cn-hero::before, .cn-photo-wrap section.cn-hero::after {
    width: 480px;
    height: 312px;
  }
  .cn-photo-wrap section.cn-hero:after {
    margin-top: -312px;
  }
  .cn-photo-wrap .headline-wrap {
    font-size: 3rem;
    height: 312px;
    margin-bottom: -312px;
    /* needed to account for dead space from transform */
  }
  .cn-photo-wrap .headline-wrap .headline {
    width: 480px;
  }
  .cn-photo-wrap .headline-wrap.center {
    height: 480px;
    margin-bottom: -480px;
    /* needed to account for dead space from transform */
  }
  .cn-photo-wrap .headline-wrap.center .headline {
    font-size: 9rem;
  }
}
@media screen and (min-width: 75em) {
  .cn-photo-wrap section.cn-hero::before, .cn-photo-wrap section.cn-hero::after {
    width: 600px;
    height: 390px;
  }
  .cn-photo-wrap section.cn-hero::after {
    margin-top: -390px;
  }
}

/* carnegie slice with angled photo on side of text block */
.cn-photo-slice::before, .cn-photo-slice::after {
  content: " ";
  height: 45px;
  display: block;
  background: white;
  border-color: white;
}
.cn-photo-slice .cn-photo {
  height: 250px;
  width: 100%;
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  background-size: cover;
}
.cn-photo-slice .cn-content {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1;
  padding-bottom: 2em;
}
.cn-photo-slice .cn-content .wrap {
  max-width: 37rem;
  padding: 1em 1em 0;
}
.cn-photo-slice.photo-right::after {
  border-width: 0px 0px 45px 70px;
  border-style: solid;
  width: 25%;
  margin-left: 75%;
}
.cn-photo-slice.photo-right.lime::after {
  border-color: white #5ca239;
}
.cn-photo-slice.photo-right .cn-photo {
  margin-top: -45px;
  -webkit-clip-path: polygon(0 90px, 0 100%, 100% 100%, 100% 0, 135px 0);
          clip-path: polygon(0 90px, 0 100%, 100% 100%, 100% 0, 135px 0);
  background-position: center left;
}
.cn-photo-slice.photo-left::before {
  border-width: 45px 70px 0px 0px;
  border-style: solid;
  width: 25%;
}
.cn-photo-slice.photo-left.lime::before {
  border-color: white #5ca239;
}
.cn-photo-slice.photo-left .cn-photo {
  -webkit-clip-path: polygon(0 0, 0 100%, calc(100% - 135px) 100%, 100% 160px, 100% 0);
          clip-path: polygon(0 0, 0 100%, calc(100% - 135px) 100%, 100% 160px, 100% 0);
  background-position: center right;
}
@media print, screen and (min-width: 40em) {
  .cn-photo-slice article {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .cn-photo-slice .cn-photo {
    height: 450px;
    width: 50%;
  }
  .cn-photo-slice .cn-content {
    padding-bottom: 0;
  }
  .cn-photo-slice .cn-content .wrap {
    padding: 0 1em;
  }
  .cn-photo-slice.photo-left .cn-photo {
    -webkit-clip-path: polygon(0 0, 0 100%, calc(100% - 135px) 100%, 100% 360px, 100% 0);
            clip-path: polygon(0 0, 0 100%, calc(100% - 135px) 100%, 100% 360px, 100% 0);
  }
  .cn-photo-slice.photo-left::after {
    height: 90px;
    margin-top: -45px;
  }
  .cn-photo-slice.photo-right article {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
  }
  .cn-photo-slice.photo-right .cn-content {
    padding-top: 45px;
  }
  .cn-photo-slice.photo-right .cn-content .wrap {
    float: right;
  }
}

/* carnegie square clips */
.lt-clip-square {
  -webkit-clip-path: polygon(30% 0, 100% 0, 100% 80%, 100% 100%, 70% 100%, 0 100%, 0 20%);
          clip-path: polygon(30% 0, 100% 0, 100% 80%, 100% 100%, 70% 100%, 0 100%, 0 20%);
}

.rb-clip-square {
  -webkit-clip-path: polygon(0 0, 30% 0, 100% 0, 100% 80%, 70% 100%, 0 100%, 0 20%);
          clip-path: polygon(0 0, 30% 0, 100% 0, 100% 80%, 70% 100%, 0 100%, 0 20%);
}

.both-clip-square {
  -webkit-clip-path: polygon(30% 0, 100% 0, 100% 80%, 70% 100%, 0 100%, 0 20%);
          clip-path: polygon(30% 0, 100% 0, 100% 80%, 70% 100%, 0 100%, 0 20%);
}

.cta-form input, .cta-form select {
  margin-bottom: 0.5em;
}
.cta-form input {
  width: 100%;
}
.cta-form .form_button_submit {
  margin: 1.5em 0 !important;
  width: 50%;
}

/*


.hover-show { opacity: 0; position: absolute; }

.learn-more {
  background: #eee;
  color: #043;
	padding: 2vw;

  a { color: black; }

  &:hover {
    background: $lime-text;
    .hover-show  { opacity: 1; }
    .chevron {
      transform: translateX(100%);
      text-align: right;
    }
  }
}

.chevron {
  width: 50%;
  text-align: left;
  transition: all 500ms ease;
}
.chevron-wrapper {
	align-items: center;
  display: flex;
}



.priority {
    border: 1px solid #ccc;
    border-width: 1px 0px;
    margin-bottom: 1em;
    .chevron {
    	font-size: 3rem;
    }
}
.priority-header {
    text-transform: uppercase;
    color: #333;
    font-weight: 700;
    span {
        font-size: 2rem;
        display: block;
    }
}



#engage-cta {
  background: black;
	color: white;
	padding: 2vw;

    &:hover {
      background: $lime-text;
      h3 { color: black; }
    }
    h3 {
    	text-transform: uppercase;
    	color: white;
        @include breakpoint(medium) {
    	    font-size: 2rem;
        }
    }
    .chevron {
    	font-size: 2rem;
    }
}

#give-footer {
  background: #ddd;
  padding: 2vw;
  .menu a {
  	text-transform: uppercase;
  	color: #344;
  	font-weight: 700;
  }
}

#footer-menu {
  border-top: 0px solid #ccc;
	border-right: 1px solid #ccc;
	padding: 1rem 0;
  a:hover { color: black; }
  @include breakpoint(small down) {
    border-top: 1px solid #ccc;
	  border-right: 0px solid #ccc;
    ul { text-align: center; }
  }

}
*/
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpdGVzL2Nhcm5lZ2llLnNjc3MiLCJzaXRlcy9jYXJuZWdpZS5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQTtFQUNFLHlHQUFBO0FDWEY7O0FEY0E7RUFDSSxZQUFBO0VBQWMsbUJBWk47QUNFWjtBRFdJO0VBQUssWUFBQTtBQ1JUOztBRG9CQTs7Ozs7Ozs7O0VBQUE7QUFVQTtFQUFPLDRCQUFBO0FDaEJQOztBRGlCQTtFQUFhLFlBQUE7QUNiYjs7QURjQTtFQUNJLG9CQUFBO0VBQ0Esd0NBQUE7RUFBQSxnQ0FBQTtBQ1hKO0FEYUk7RUFDSSxpQkFBQTtFQUNBLDBCQUFBO0FDWFI7O0FEY0E7RUFDSSxpQkFBQTtFQUNBLG9CQUFBO0FDWEo7O0FEY0M7RUFDSSxzRkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxjQUFBO0VBQ0Esb0JBQUE7RUFDQSxTQUFBO0VBQ0EseUJBQUE7QUNYTDs7QURjQTtFQUFjLFlBQUE7QUNWZDs7QURZQSwyQ0FBQTtBQUVJO0VBQ0ksWUFBQTtBQ1ZSO0FEV1E7RUFDSSxZQXBEUTtFQXFEUixhQXBEUTtFQXFEUixZQUFBO0VBQ0Esa0JBQUE7QUNUWjtBRFdRO0VBQ0ksaUNBQUE7RUFDQSxtREFBQTtVQUFBLDJDQUFBO0FDVFo7QURXUTtFQUNJLG1DQUFBO0VBQ0EsdURBQUE7VUFBQSwrQ0FBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtBQ1RaO0FEWVk7RUFDSSw2RkFBQTtFQUNBLGdDQUFBO0VBQ0Esd0JBQUE7QUNWaEI7QURjSTtFQUNJLGFBQUE7RUFDQSxzRkFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0FDWlI7QURjSTtFQUNJLHlCQUFBO01BQUEsc0JBQUE7VUFBQSxtQkFBQTtBQ1pSO0FDcUZRO0VGdEVIO0lBQ0MsWUF2RmM7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dGVzL2Nhcm5lZ2llLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0ICd1dGYtOCc7XG5cbkBpbXBvcnQgJy4uL3NldHRpbmdzJztcbkBpbXBvcnQgJy4uL2JpbmdoYW10b24nO1xuXG4kbGltZS1kYXJrOiAjNWNhMjM5OyAvLyAjNzFCRjQ5IGRhcmtlbmVkIGZvciBhY2Nlc3NpYmlsaXR5XG4kZ3JleS1iaW5nOiAjM0M0QzRDO1xuXG5cbiRib2R5LWZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWY7XG4kc2VyaWY6ICdDb3J1bmR1bS1UZXh0JywgJ0dhcmFtb25kJywgR2VvcmdpYSwgJ1RpbWVzIE5ldyBSb21hbicsIHNlcmlmO1xuXG5ib2R5LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAudGFnbGluZSB7XG4gIGZvbnQtZmFtaWx5OiAkYm9keS1mb250LWZhbWlseSAhaW1wb3J0YW50O1xufVxuXG4ubGltZSB7XG4gICAgY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kOiAkbGltZS1kYXJrO1xuICAgIGgyIHsgY29sb3I6IHdoaXRlOyB9XG59XG5cbiRjbi1waG90by13LW1vYmlsZTogMTgwcHg7XG4kY24tcGhvdG8taC1tb2JpbGU6IDExN3B4O1xuJGNuLXBob3RvLXctbWVkaXVtOiAzNjBweDtcbiRjbi1waG90by1oLW1lZGl1bTogMjM0cHg7XG4kY24tcGhvdG8tdy1sYXJnZTogNDgwcHg7XG4kY24tcGhvdG8taC1sYXJnZTogMzEycHg7XG4kY24tcGhvdG8tdy14bGFyZ2U6IDYwMHB4O1xuJGNuLXBob3RvLWgteGxhcmdlOiAzOTBweDtcblxuLyogY2FybmVnaWUgb3ZlcnJpZGVzXG5zZWN0aW9uLmhlcm8gaDIsIHNlY3Rpb24uaGVybyBoMyB7XG4gICAgZm9udC1mYW1pbHk6ICRzZXJpZiAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG59XG4gKi9cbmJvZHkgeyAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvOyB9XG5ib2R5LGgyLGgzIHsgY29sb3I6IGJsYWNrOyB9XG5hLmN0YSB7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XG5cbiAgICAmLnJldmVyc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuLnNsYXRlLWZvcm0gLmFjdGlvbiBidXR0b24ge1xuICAgIGJhY2tncm91bmQ6IGJsYWNrO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuM2VtO1xufVxuXG4gc2VjdGlvbi5jbi1oZXJvIGgyIHtcbiAgICAgZm9udC1mYW1pbHk6ICRzZXJpZiAhaW1wb3J0YW50O1xuICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgICBib3JkZXI6IDA7XG4gICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG4gfVxuXG4uYmxhY2stdGV4dCB7IGNvbG9yOiBibGFjazsgfVxuXG4vKiBjYXJuZWdpZSBoZWFkIHBob3RvIHdpdGggdGFnbGluZSBzbGljZSAqL1xuLmNuLXBob3RvLXdyYXAge1xuICAgIHNlY3Rpb24uY24taGVybyB7XG4gICAgICAgIGNvbG9yOiBibGFjaztcbiAgICAgICAgJjo6YmVmb3JlLCY6OmFmdGVyIHtcbiAgICAgICAgICAgIHdpZHRoOiAkY24tcGhvdG8tdy1tb2JpbGU7XG4gICAgICAgICAgICBoZWlnaHQ6ICRjbi1waG90by1oLW1vYmlsZTtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB9XG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDY3LCA1MSwgLjY1KTtcbiAgICAgICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSAwJSwgMCUgMTAwJSk7XG4gICAgICAgIH1cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg5NCwgMTY2LCA1OCwgLjg1KTtcbiAgICAgICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigxMDAlIDAlLCAxMDAlIDEwMCUsIDAlIDEwMCUpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLSRjbi1waG90by1oLW1vYmlsZTtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgICAgICYuY2lyY2xlLXNjcmVlbntcbiAgICAgICAgICAgICY6OmJlZm9yZSwmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsIHJnYmEoOTQsIDE2NiwgNTgsIDAuODUpIDAuMjVyZW0sIHRyYW5zcGFyZW50IDApO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMC41NXJlbSAwLjU1cmVtO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuaGVhZGxpbmUtd3JhcCB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiAkc2VyaWYgIWltcG9ydGFudDtcbiAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICBmb250LXNpemU6IDNyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgLmhlYWRsaW5lLWNlbnRlci13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICBcdHNlY3Rpb24uY24taGVybzo6YmVmb3JlLCBzZWN0aW9uLmNuLWhlcm86OmFmdGVyIHtcbiAgICBcdFx0d2lkdGg6ICRjbi1waG90by13LW1lZGl1bTtcbiAgICBcdFx0aGVpZ2h0OiAkY24tcGhvdG8taC1tZWRpdW07XG4gICAgXHR9XG4gICAgXHRzZWN0aW9uLmNuLWhlcm86OmFmdGVyIHsgbWFyZ2luLXRvcDogLSRjbi1waG90by1oLW1lZGl1bTsgfVxuICAgIFx0LmhlYWRsaW5lLXdyYXAge1xuICAgIFx0XHR0ZXh0LWFsaWduOiByaWdodDtcbiAgICBcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwtMTAwJSk7XG4gICAgXHRcdGhlaWdodDogJGNuLXBob3RvLWgtbWVkaXVtOyBtYXJnaW4tYm90dG9tOiAtJGNuLXBob3RvLWgtbWVkaXVtOyAvKiBuZWVkZWQgdG8gYWNjb3VudCBmb3IgZGVhZCBzcGFjZSBmcm9tIHRyYW5zZm9ybSAqL1xuICAgIFx0XHRkaXNwbGF5OiBmbGV4O1xuICAgIFx0XHRmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICAgICAgXHQuaGVhZGxpbmUgeyB3aWR0aDogJGNuLXBob3RvLXctbWVkaXVtO1xuICAgICAgICAgICAgICAgICYud2hpdGUge2NvbG9yOiB3aGl0ZTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICBcdC5oZWFkbGluZSBzcGFuIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgICAgICAgICAgICYuY2VudGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgXHRcdGhlaWdodDogJGNuLXBob3RvLWgteGxhcmdlOyBtYXJnaW4tYm90dG9tOiAtJGNuLXBob3RvLWgteGxhcmdlOyAvKiBuZWVkZWQgdG8gYWNjb3VudCBmb3IgZGVhZCBzcGFjZSBmcm9tIHRyYW5zZm9ybSAqL1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgXHRcdGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICAgICAgICAgICAgICAuaGVhZGxpbmUgeyBmb250LXNpemU6IDZyZW07IGxpbmUtaGVpZ2h0OiAuNzsgd2lkdGg6IDEwMCU7IH1cbiAgICAgICAgICAgIH1cbiAgICBcdH1cbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgIFx0c2VjdGlvbi5jbi1oZXJvOjpiZWZvcmUsIHNlY3Rpb24uY24taGVybzo6YWZ0ZXIge1xuICAgIFx0XHR3aWR0aDogJGNuLXBob3RvLXctbGFyZ2U7XG4gICAgXHRcdGhlaWdodDogJGNuLXBob3RvLWgtbGFyZ2U7XG4gICAgXHR9XG4gICAgXHRzZWN0aW9uLmNuLWhlcm86YWZ0ZXIgeyBtYXJnaW4tdG9wOiAtJGNuLXBob3RvLWgtbGFyZ2U7IH1cbiAgICBcdC5oZWFkbGluZS13cmFwIHtcbiAgICBcdFx0Zm9udC1zaXplOiAzcmVtO1xuICAgIFx0XHRoZWlnaHQ6ICRjbi1waG90by1oLWxhcmdlOyBtYXJnaW4tYm90dG9tOiAtJGNuLXBob3RvLWgtbGFyZ2U7IC8qIG5lZWRlZCB0byBhY2NvdW50IGZvciBkZWFkIHNwYWNlIGZyb20gdHJhbnNmb3JtICovXG4gICAgICAgIFx0LmhlYWRsaW5lIHsgd2lkdGg6ICRjbi1waG90by13LWxhcmdlOyB9XG4gICAgICAgICAgICAmLmNlbnRlciB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAkY24tcGhvdG8tdy1sYXJnZTsgbWFyZ2luLWJvdHRvbTogLSRjbi1waG90by13LWxhcmdlOyAvKiBuZWVkZWQgdG8gYWNjb3VudCBmb3IgZGVhZCBzcGFjZSBmcm9tIHRyYW5zZm9ybSAqL1xuICAgICAgICAgICAgICAgIC5oZWFkbGluZSB7IGZvbnQtc2l6ZTogOXJlbTsgfVxuICAgICAgICAgICAgfVxuICAgIFx0fVxuICAgIH1cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHhsYXJnZSl7XG4gICAgXHRzZWN0aW9uLmNuLWhlcm86OmJlZm9yZSwgc2VjdGlvbi5jbi1oZXJvOjphZnRlciB7XG4gICAgXHRcdHdpZHRoOiAkY24tcGhvdG8tdy14bGFyZ2U7XG4gICAgXHRcdGhlaWdodDogJGNuLXBob3RvLWgteGxhcmdlO1xuICAgIFx0fVxuICAgIFx0c2VjdGlvbi5jbi1oZXJvOjphZnRlciB7IG1hcmdpbi10b3A6IC0kY24tcGhvdG8taC14bGFyZ2U7IH1cbiAgICB9XG59XG5cblxuXG5cblxuXG5cbi8qIGNhcm5lZ2llIHNsaWNlIHdpdGggYW5nbGVkIHBob3RvIG9uIHNpZGUgb2YgdGV4dCBibG9jayAqL1xuLmNuLXBob3RvLXNsaWNlIHtcbiAgICAmOjpiZWZvcmUsICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICAgIGhlaWdodDogNDVweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3JkZXItY29sb3I6IHdoaXRlO1xuICAgIH1cblxuICAgIC5jbi1waG90byB7XG4gICAgICAgIGhlaWdodDogMjUwcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIH1cbiAgICAuY24tY29udGVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyZW07XG4gICAgICAgIC53cmFwIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMzdyZW07XG4gICAgICAgICAgICAvL21hcmdpbi1ib3R0b206IDVlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6ICAxZW0gMWVtIDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5waG90by1yaWdodCB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMHB4IDBweCA0NXB4IDcwcHg7XG4gICAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgd2lkdGg6IDI1JTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA3NSU7XG4gICAgICAgIH1cbiAgICAgICAgJi5saW1lOjphZnRlciB7IGJvcmRlci1jb2xvcjogd2hpdGUgJGxpbWUtZGFyazsgfVxuICAgICAgICAuY24tcGhvdG8ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogLTQ1cHg7XG4gICAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oXG4gICAgICAgICAgICAgICAgMCA5MHB4LFxuICAgICAgICAgICAgICAgIDAgMTAwJSxcbiAgICAgICAgICAgICAgICAxMDAlIDEwMCUsXG4gICAgICAgICAgICAgICAgMTAwJSAwLFxuICAgICAgICAgICAgICAgIDEzNXB4IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLnBob3RvLWxlZnQge1xuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiA0NXB4IDcwcHggMHB4IDBweDtcbiAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgICB9XG4gICAgICAgICYubGltZTo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiB3aGl0ZSAkbGltZS1kYXJrOyB9XG4gICAgICAgIC5jbi1waG90byB7XG4gICAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oXG4gICAgICAgICAgICAgICAgMCAwLFxuICAgICAgICAgICAgICAgIDAgMTAwJSxcbiAgICAgICAgICAgICAgICBjYWxjKDEwMCUgLSAxMzVweCkgMTAwJSxcbiAgICAgICAgICAgICAgICAxMDAlIDE2MHB4LFxuICAgICAgICAgICAgICAgIDEwMCUgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciByaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIGFydGljbGUgeyBkaXNwbGF5OiBmbGV4OyB9XG4gICAgICAgIC8vJi5waG90by1yaWdodCBhcnRpY2xlIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9XG4gICAgICAgIC8vJi5waG90by1yaWdodCAuY24tY29udGVudCAud3JhcCB7IGZsb2F0OiByaWdodDsgfVxuICAgICAgICAuY24tcGhvdG8geyBoZWlnaHQ6IDQ1MHB4OyB3aWR0aDogNTAlOyB9XG4gICAgICAgIC5jbi1jb250ZW50IHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgLndyYXAgeyBwYWRkaW5nOiAwIDFlbTsgfVxuICAgICAgICB9XG4gICAgICAgICYucGhvdG8tbGVmdCB7XG4gICAgICAgICAgICAuY24tcGhvdG8ge1xuICAgICAgICAgICAgICAgIGNsaXAtcGF0aDogcG9seWdvbihcbiAgICAgICAgICAgICAgICAgICAgMCAwLFxuICAgICAgICAgICAgICAgICAgICAwIDEwMCUsXG4gICAgICAgICAgICAgICAgICAgIGNhbGMoMTAwJSAtIDEzNXB4KSAxMDAlLFxuICAgICAgICAgICAgICAgICAgICAxMDAlIDM2MHB4LFxuICAgICAgICAgICAgICAgICAgICAxMDAlIDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA5MHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC00NXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYucGhvdG8tcmlnaHQge1xuICAgICAgICAgICAgYXJ0aWNsZSB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxuICAgICAgICAgICAgLmNuLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiA0NXB4O1xuICAgICAgICAgICAgICAgIC53cmFwIHsgZmxvYXQ6IHJpZ2h0OyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGNhcm5lZ2llIHNxdWFyZSBjbGlwcyAqL1xuLmx0LWNsaXAtc3F1YXJlIHtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMzAlIDAsIDEwMCUgMCxcbiAgICAxMDAlIDgwJSwgMTAwJSAxMDAlLFxuICAgIDcwJSAxMDAlLCAwIDEwMCUsXG4gICAgMCAyMCUpO1xufVxuXG4ucmItY2xpcC1zcXVhcmUge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDMwJSAwLFxuICAgIDEwMCUgMCwgMTAwJSA4MCUsXG4gICAgNzAlIDEwMCUsIDAgMTAwJSxcbiAgICAwIDIwJSk7XG59XG5cbi5ib3RoLWNsaXAtc3F1YXJlIHtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMzAlIDAsIDEwMCUgMCxcbiAgICAxMDAlIDgwJSxcbiAgICA3MCUgMTAwJSwgMCAxMDAlLFxuICAgIDAgMjAlKTtcbn1cblxuXG4uY3RhLWZvcm0ge1xuXHRpbnB1dCwgc2VsZWN0IHtcblx0XHRtYXJnaW4tYm90dG9tOiAwLjVlbTtcblx0fVxuXHRpbnB1dCB7XG5cdCAgICB3aWR0aDogMTAwJTtcblx0fVxuXHQuZm9ybV9idXR0b25fc3VibWl0IHtcblx0XHRtYXJnaW46IDEuNWVtIDAgIWltcG9ydGFudDtcblx0XHR3aWR0aDogNTAlO1xuXHR9XG59XG5cblxuXG5cblxuXG5cbi8qXG5cblxuLmhvdmVyLXNob3cgeyBvcGFjaXR5OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IH1cblxuLmxlYXJuLW1vcmUge1xuICBiYWNrZ3JvdW5kOiAjZWVlO1xuICBjb2xvcjogIzA0Mztcblx0cGFkZGluZzogMnZ3O1xuXG4gIGEgeyBjb2xvcjogYmxhY2s7IH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkbGltZS10ZXh0O1xuICAgIC5ob3Zlci1zaG93ICB7IG9wYWNpdHk6IDE7IH1cbiAgICAuY2hldnJvbiB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cbn1cblxuLmNoZXZyb24ge1xuICB3aWR0aDogNTAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB0cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTtcbn1cbi5jaGV2cm9uLXdyYXBwZXIge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5cblxuLnByaW9yaXR5IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAgIGJvcmRlci13aWR0aDogMXB4IDBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgLmNoZXZyb24ge1xuICAgIFx0Zm9udC1zaXplOiAzcmVtO1xuICAgIH1cbn1cbi5wcmlvcml0eS1oZWFkZXIge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cblxuXG4jZW5nYWdlLWN0YSB7XG4gIGJhY2tncm91bmQ6IGJsYWNrO1xuXHRjb2xvcjogd2hpdGU7XG5cdHBhZGRpbmc6IDJ2dztcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGxpbWUtdGV4dDtcbiAgICAgIGgzIHsgY29sb3I6IGJsYWNrOyB9XG4gICAgfVxuICAgIGgzIHtcbiAgICBcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgXHRjb2xvcjogd2hpdGU7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgXHQgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5jaGV2cm9uIHtcbiAgICBcdGZvbnQtc2l6ZTogMnJlbTtcbiAgICB9XG59XG5cbiNnaXZlLWZvb3RlciB7XG4gIGJhY2tncm91bmQ6ICNkZGQ7XG4gIHBhZGRpbmc6IDJ2dztcbiAgLm1lbnUgYSB7XG4gIFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgXHRjb2xvcjogIzM0NDtcbiAgXHRmb250LXdlaWdodDogNzAwO1xuICB9XG59XG5cbiNmb290ZXItbWVudSB7XG4gIGJvcmRlci10b3A6IDBweCBzb2xpZCAjY2NjO1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjO1xuXHRwYWRkaW5nOiAxcmVtIDA7XG4gIGE6aG92ZXIgeyBjb2xvcjogYmxhY2s7IH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XG5cdCAgYm9yZGVyLXJpZ2h0OiAwcHggc29saWQgI2NjYztcbiAgICB1bCB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICB9XG5cbn1cbiovXG4iLCJib2R5LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAudGFnbGluZSB7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgXCJPcGVuIFNhbnNcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIFJvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYgIWltcG9ydGFudDtcbn1cblxuLmxpbWUge1xuICBjb2xvcjogYmxhY2s7XG4gIGJhY2tncm91bmQ6ICM1Y2EyMzk7XG59XG4ubGltZSBoMiB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLyogY2FybmVnaWUgb3ZlcnJpZGVzXG5zZWN0aW9uLmhlcm8gaDIsIHNlY3Rpb24uaGVybyBoMyB7XG4gICAgZm9udC1mYW1pbHk6ICRzZXJpZiAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgYm9yZGVyOiAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG59XG4gKi9cbmJvZHkge1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhdXRvO1xufVxuXG5ib2R5LCBoMiwgaDMge1xuICBjb2xvcjogYmxhY2s7XG59XG5cbmEuY3RhIHtcbiAgYm9yZGVyLXJhZGl1czogMC4zZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xufVxuYS5jdGEucmV2ZXJzZSB7XG4gIGJhY2tncm91bmQ6IGJsYWNrO1xuICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDtcbn1cblxuLnNsYXRlLWZvcm0gLmFjdGlvbiBidXR0b24ge1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbiAgYm9yZGVyLXJhZGl1czogMC4zZW07XG59XG5cbnNlY3Rpb24uY24taGVybyBoMiB7XG4gIGZvbnQtZmFtaWx5OiBcIkNvcnVuZHVtLVRleHRcIiwgXCJHYXJhbW9uZFwiLCBHZW9yZ2lhLCBcIlRpbWVzIE5ldyBSb21hblwiLCBzZXJpZiAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDIuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICBib3JkZXI6IDA7XG4gIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG59XG5cbi5ibGFjay10ZXh0IHtcbiAgY29sb3I6IGJsYWNrO1xufVxuXG4vKiBjYXJuZWdpZSBoZWFkIHBob3RvIHdpdGggdGFnbGluZSBzbGljZSAqL1xuLmNuLXBob3RvLXdyYXAgc2VjdGlvbi5jbi1oZXJvIHtcbiAgY29sb3I6IGJsYWNrO1xufVxuLmNuLXBob3RvLXdyYXAgc2VjdGlvbi5jbi1oZXJvOjpiZWZvcmUsIC5jbi1waG90by13cmFwIHNlY3Rpb24uY24taGVybzo6YWZ0ZXIge1xuICB3aWR0aDogMTgwcHg7XG4gIGhlaWdodDogMTE3cHg7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG4uY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm86OmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgNjcsIDUxLCAwLjY1KTtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDAlLCAxMDAlIDAlLCAwJSAxMDAlKTtcbn1cbi5jbi1waG90by13cmFwIHNlY3Rpb24uY24taGVybzo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDk0LCAxNjYsIDU4LCAwLjg1KTtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDEwMCUgMCUsIDEwMCUgMTAwJSwgMCUgMTAwJSk7XG4gIG1hcmdpbi10b3A6IC0xMTdweDtcbiAgcmlnaHQ6IDA7XG59XG4uY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm8uY2lyY2xlLXNjcmVlbjo6YmVmb3JlLCAuY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm8uY2lyY2xlLXNjcmVlbjo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgcmdiYSg5NCwgMTY2LCA1OCwgMC44NSkgMC4yNXJlbSwgdHJhbnNwYXJlbnQgMCk7XG4gIGJhY2tncm91bmQtc2l6ZTogMC41NXJlbSAwLjU1cmVtO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcm91bmQ7XG59XG4uY24tcGhvdG8td3JhcCAuaGVhZGxpbmUtd3JhcCB7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGZvbnQtZmFtaWx5OiBcIkNvcnVuZHVtLVRleHRcIiwgXCJHYXJhbW9uZFwiLCBHZW9yZ2lhLCBcIlRpbWVzIE5ldyBSb21hblwiLCBzZXJpZiAhaW1wb3J0YW50O1xuICBjb2xvcjogYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogM3JlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNuLXBob3RvLXdyYXAgLmhlYWRsaW5lLWNlbnRlci13cmFwIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSB7XG4gIC5jbi1waG90by13cmFwIHNlY3Rpb24uY24taGVybzo6YmVmb3JlLCAuY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm86OmFmdGVyIHtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAyMzRweDtcbiAgfVxuICAuY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm86OmFmdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAtMjM0cHg7XG4gIH1cbiAgLmNuLXBob3RvLXdyYXAgLmhlYWRsaW5lLXdyYXAge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMDAlKTtcbiAgICBoZWlnaHQ6IDIzNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IC0yMzRweDtcbiAgICAvKiBuZWVkZWQgdG8gYWNjb3VudCBmb3IgZGVhZCBzcGFjZSBmcm9tIHRyYW5zZm9ybSAqL1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgfVxuICAuY24tcGhvdG8td3JhcCAuaGVhZGxpbmUtd3JhcCAuaGVhZGxpbmUge1xuICAgIHdpZHRoOiAzNjBweDtcbiAgfVxuICAuY24tcGhvdG8td3JhcCAuaGVhZGxpbmUtd3JhcCAuaGVhZGxpbmUud2hpdGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICAuY24tcGhvdG8td3JhcCAuaGVhZGxpbmUtd3JhcCAuaGVhZGxpbmUgc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmNuLXBob3RvLXdyYXAgLmhlYWRsaW5lLXdyYXAuY2VudGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDM5MHB4O1xuICAgIG1hcmdpbi1ib3R0b206IC0zOTBweDtcbiAgICAvKiBuZWVkZWQgdG8gYWNjb3VudCBmb3IgZGVhZCBzcGFjZSBmcm9tIHRyYW5zZm9ybSAqL1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gIH1cbiAgLmNuLXBob3RvLXdyYXAgLmhlYWRsaW5lLXdyYXAuY2VudGVyIC5oZWFkbGluZSB7XG4gICAgZm9udC1zaXplOiA2cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAwLjc7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbkBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NGVtKSB7XG4gIC5jbi1waG90by13cmFwIHNlY3Rpb24uY24taGVybzo6YmVmb3JlLCAuY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm86OmFmdGVyIHtcbiAgICB3aWR0aDogNDgwcHg7XG4gICAgaGVpZ2h0OiAzMTJweDtcbiAgfVxuICAuY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm86YWZ0ZXIge1xuICAgIG1hcmdpbi10b3A6IC0zMTJweDtcbiAgfVxuICAuY24tcGhvdG8td3JhcCAuaGVhZGxpbmUtd3JhcCB7XG4gICAgZm9udC1zaXplOiAzcmVtO1xuICAgIGhlaWdodDogMzEycHg7XG4gICAgbWFyZ2luLWJvdHRvbTogLTMxMnB4O1xuICAgIC8qIG5lZWRlZCB0byBhY2NvdW50IGZvciBkZWFkIHNwYWNlIGZyb20gdHJhbnNmb3JtICovXG4gIH1cbiAgLmNuLXBob3RvLXdyYXAgLmhlYWRsaW5lLXdyYXAgLmhlYWRsaW5lIHtcbiAgICB3aWR0aDogNDgwcHg7XG4gIH1cbiAgLmNuLXBob3RvLXdyYXAgLmhlYWRsaW5lLXdyYXAuY2VudGVyIHtcbiAgICBoZWlnaHQ6IDQ4MHB4O1xuICAgIG1hcmdpbi1ib3R0b206IC00ODBweDtcbiAgICAvKiBuZWVkZWQgdG8gYWNjb3VudCBmb3IgZGVhZCBzcGFjZSBmcm9tIHRyYW5zZm9ybSAqL1xuICB9XG4gIC5jbi1waG90by13cmFwIC5oZWFkbGluZS13cmFwLmNlbnRlciAuaGVhZGxpbmUge1xuICAgIGZvbnQtc2l6ZTogOXJlbTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzVlbSkge1xuICAuY24tcGhvdG8td3JhcCBzZWN0aW9uLmNuLWhlcm86OmJlZm9yZSwgLmNuLXBob3RvLXdyYXAgc2VjdGlvbi5jbi1oZXJvOjphZnRlciB7XG4gICAgd2lkdGg6IDYwMHB4O1xuICAgIGhlaWdodDogMzkwcHg7XG4gIH1cbiAgLmNuLXBob3RvLXdyYXAgc2VjdGlvbi5jbi1oZXJvOjphZnRlciB7XG4gICAgbWFyZ2luLXRvcDogLTM5MHB4O1xuICB9XG59XG5cbi8qIGNhcm5lZ2llIHNsaWNlIHdpdGggYW5nbGVkIHBob3RvIG9uIHNpZGUgb2YgdGV4dCBibG9jayAqL1xuLmNuLXBob3RvLXNsaWNlOjpiZWZvcmUsIC5jbi1waG90by1zbGljZTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgaGVpZ2h0OiA0NXB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGJvcmRlci1jb2xvcjogd2hpdGU7XG59XG4uY24tcGhvdG8tc2xpY2UgLmNuLXBob3RvIHtcbiAgaGVpZ2h0OiAyNTBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGZsZXg6IDE7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG4uY24tcGhvdG8tc2xpY2UgLmNuLWNvbnRlbnQge1xuICBmbGV4OiAxO1xuICBwYWRkaW5nLWJvdHRvbTogMmVtO1xufVxuLmNuLXBob3RvLXNsaWNlIC5jbi1jb250ZW50IC53cmFwIHtcbiAgbWF4LXdpZHRoOiAzN3JlbTtcbiAgcGFkZGluZzogMWVtIDFlbSAwO1xufVxuLmNuLXBob3RvLXNsaWNlLnBob3RvLXJpZ2h0OjphZnRlciB7XG4gIGJvcmRlci13aWR0aDogMHB4IDBweCA0NXB4IDcwcHg7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIHdpZHRoOiAyNSU7XG4gIG1hcmdpbi1sZWZ0OiA3NSU7XG59XG4uY24tcGhvdG8tc2xpY2UucGhvdG8tcmlnaHQubGltZTo6YWZ0ZXIge1xuICBib3JkZXItY29sb3I6IHdoaXRlICM1Y2EyMzk7XG59XG4uY24tcGhvdG8tc2xpY2UucGhvdG8tcmlnaHQgLmNuLXBob3RvIHtcbiAgbWFyZ2luLXRvcDogLTQ1cHg7XG4gIGNsaXAtcGF0aDogcG9seWdvbigwIDkwcHgsIDAgMTAwJSwgMTAwJSAxMDAlLCAxMDAlIDAsIDEzNXB4IDApO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgbGVmdDtcbn1cbi5jbi1waG90by1zbGljZS5waG90by1sZWZ0OjpiZWZvcmUge1xuICBib3JkZXItd2lkdGg6IDQ1cHggNzBweCAwcHggMHB4O1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICB3aWR0aDogMjUlO1xufVxuLmNuLXBob3RvLXNsaWNlLnBob3RvLWxlZnQubGltZTo6YmVmb3JlIHtcbiAgYm9yZGVyLWNvbG9yOiB3aGl0ZSAjNWNhMjM5O1xufVxuLmNuLXBob3RvLXNsaWNlLnBob3RvLWxlZnQgLmNuLXBob3RvIHtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMCAxMDAlLCBjYWxjKDEwMCUgLSAxMzVweCkgMTAwJSwgMTAwJSAxNjBweCwgMTAwJSAwKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHJpZ2h0O1xufVxuQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwZW0pIHtcbiAgLmNuLXBob3RvLXNsaWNlIGFydGljbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbiAgLmNuLXBob3RvLXNsaWNlIC5jbi1waG90byB7XG4gICAgaGVpZ2h0OiA0NTBweDtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5jbi1waG90by1zbGljZSAuY24tY29udGVudCB7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cbiAgLmNuLXBob3RvLXNsaWNlIC5jbi1jb250ZW50IC53cmFwIHtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbiAgfVxuICAuY24tcGhvdG8tc2xpY2UucGhvdG8tbGVmdCAuY24tcGhvdG8ge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDAgMTAwJSwgY2FsYygxMDAlIC0gMTM1cHgpIDEwMCUsIDEwMCUgMzYwcHgsIDEwMCUgMCk7XG4gIH1cbiAgLmNuLXBob3RvLXNsaWNlLnBob3RvLWxlZnQ6OmFmdGVyIHtcbiAgICBoZWlnaHQ6IDkwcHg7XG4gICAgbWFyZ2luLXRvcDogLTQ1cHg7XG4gIH1cbiAgLmNuLXBob3RvLXNsaWNlLnBob3RvLXJpZ2h0IGFydGljbGUge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgfVxuICAuY24tcGhvdG8tc2xpY2UucGhvdG8tcmlnaHQgLmNuLWNvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiA0NXB4O1xuICB9XG4gIC5jbi1waG90by1zbGljZS5waG90by1yaWdodCAuY24tY29udGVudCAud3JhcCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG59XG5cbi8qIGNhcm5lZ2llIHNxdWFyZSBjbGlwcyAqL1xuLmx0LWNsaXAtc3F1YXJlIHtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDMwJSAwLCAxMDAlIDAsIDEwMCUgODAlLCAxMDAlIDEwMCUsIDcwJSAxMDAlLCAwIDEwMCUsIDAgMjAlKTtcbn1cblxuLnJiLWNsaXAtc3F1YXJlIHtcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDAgMCwgMzAlIDAsIDEwMCUgMCwgMTAwJSA4MCUsIDcwJSAxMDAlLCAwIDEwMCUsIDAgMjAlKTtcbn1cblxuLmJvdGgtY2xpcC1zcXVhcmUge1xuICBjbGlwLXBhdGg6IHBvbHlnb24oMzAlIDAsIDEwMCUgMCwgMTAwJSA4MCUsIDcwJSAxMDAlLCAwIDEwMCUsIDAgMjAlKTtcbn1cblxuLmN0YS1mb3JtIGlucHV0LCAuY3RhLWZvcm0gc2VsZWN0IHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG59XG4uY3RhLWZvcm0gaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbn1cbi5jdGEtZm9ybSAuZm9ybV9idXR0b25fc3VibWl0IHtcbiAgbWFyZ2luOiAxLjVlbSAwICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi8qXG5cblxuLmhvdmVyLXNob3cgeyBvcGFjaXR5OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IH1cblxuLmxlYXJuLW1vcmUge1xuICBiYWNrZ3JvdW5kOiAjZWVlO1xuICBjb2xvcjogIzA0Mztcblx0cGFkZGluZzogMnZ3O1xuXG4gIGEgeyBjb2xvcjogYmxhY2s7IH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkbGltZS10ZXh0O1xuICAgIC5ob3Zlci1zaG93ICB7IG9wYWNpdHk6IDE7IH1cbiAgICAuY2hldnJvbiB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG4gIH1cbn1cblxuLmNoZXZyb24ge1xuICB3aWR0aDogNTAlO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB0cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTtcbn1cbi5jaGV2cm9uLXdyYXBwZXIge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5cblxuLnByaW9yaXR5IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xuICAgIGJvcmRlci13aWR0aDogMXB4IDBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgLmNoZXZyb24ge1xuICAgIFx0Zm9udC1zaXplOiAzcmVtO1xuICAgIH1cbn1cbi5wcmlvcml0eS1oZWFkZXIge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cblxuXG4jZW5nYWdlLWN0YSB7XG4gIGJhY2tncm91bmQ6IGJsYWNrO1xuXHRjb2xvcjogd2hpdGU7XG5cdHBhZGRpbmc6IDJ2dztcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogJGxpbWUtdGV4dDtcbiAgICAgIGgzIHsgY29sb3I6IGJsYWNrOyB9XG4gICAgfVxuICAgIGgzIHtcbiAgICBcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgXHRjb2xvcjogd2hpdGU7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgXHQgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5jaGV2cm9uIHtcbiAgICBcdGZvbnQtc2l6ZTogMnJlbTtcbiAgICB9XG59XG5cbiNnaXZlLWZvb3RlciB7XG4gIGJhY2tncm91bmQ6ICNkZGQ7XG4gIHBhZGRpbmc6IDJ2dztcbiAgLm1lbnUgYSB7XG4gIFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgXHRjb2xvcjogIzM0NDtcbiAgXHRmb250LXdlaWdodDogNzAwO1xuICB9XG59XG5cbiNmb290ZXItbWVudSB7XG4gIGJvcmRlci10b3A6IDBweCBzb2xpZCAjY2NjO1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjY2NjO1xuXHRwYWRkaW5nOiAxcmVtIDA7XG4gIGE6aG92ZXIgeyBjb2xvcjogYmxhY2s7IH1cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBkb3duKSB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XG5cdCAgYm9yZGVyLXJpZ2h0OiAwcHggc29saWQgI2NjYztcbiAgICB1bCB7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICB9XG5cbn1cbiovIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXNcbi8vIGh0dHBzOi8vZ2V0LmZvdW5kYXRpb25cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGJyZWFrcG9pbnRzXG4vLy8vXG5cbi8vLyBQYXRjaCB0byBmaXggaXNzdWUgIzEyMDgwXG4kLXpmLXNpemU6IG51bGw7XG5cbi8vLyBBIGxpc3Qgb2YgbmFtZWQgYnJlYWtwb2ludHMuIFlvdSBjYW4gdXNlIHRoZXNlIHdpdGggdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHF1aWNrbHkgY3JlYXRlIG1lZGlhIHF1ZXJpZXMuXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHM6IChcbiAgc21hbGw6IDAsXG4gIG1lZGl1bTogNjQwcHgsXG4gIGxhcmdlOiAxMDI0cHgsXG4gIHhsYXJnZTogMTIwMHB4LFxuICB4eGxhcmdlOiAxNDQwcHgsXG4pICFkZWZhdWx0O1xuXG4vLy8gQSBsaXN0IG9mIG5hbWVkIEhpRFBJIGJyZWFrcG9pbnRzLiBZb3UgY2FuIHVzZSB0aGVzZSB3aXRoIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBxdWlja2x5IGNyZWF0ZSBtZWRpYSBxdWVyaWVzIGZvciByZXNvbHV0aW9ucy5cbi8vLyBWYWx1ZXMgbXVzdCByZXByZXNlbnQgdGhlIGRldmljZSBwaXhlbHMgLyB3ZWIgcGl4ZWxzIHJhdGlvbiBhbmQgYmUgdW5pdGxlc3Mgb3IgaW4gRFBQWC5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50cy1oaWRwaTogKFxuICBoaWRwaS0xOiAxLFxuICBoaWRwaS0xLTU6IDEuNSxcbiAgaGlkcGktMjogMixcbiAgcmV0aW5hOiAyLFxuICBoaWRwaS0zOiAzXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxhcmdlc3QgbmFtZWQgYnJlYWtwb2ludCBpbiB3aGljaCB0byBpbmNsdWRlIHByaW50IGFzIGEgbWVkaWEgdHlwZVxuLy8vIEB0eXBlIEtleXdvcmRcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG4kLXpmLWJyZWFrcG9pbnRzLWtleXM6IG1hcC10by1saXN0KCRicmVha3BvaW50cywgJ2tleXMnKTtcblxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xuICBAZXJyb3IgJ1RoZSBmaXJzdCBrZXkgaW4gdGhlICRicmVha3BvaW50cyBtYXAgbXVzdCBoYXZlIGEgdmFsdWUgb2YgXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFdlYiBzdGFuZGFyZCBQaXhlbHMgcGVyIGluY2guICgxZGRweCAvICRzdGQtd2ViLWRwaSkgPSAxZHBpXG4gIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy0zLyNhYnNvbHV0ZS1sZW5ndGhzXG4gICRzdGQtd2ViLWRwaTogOTY7XG5cbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBvZiB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnRcbiAgJGJwLW5leHQ6IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWluOiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWluLXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogbnVsbDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIElmIG5hbWVkLCBuYW1lIG9mIHRoZSBicmVha3BvaW50XG4gICRuYW1lOiBudWxsO1xuICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIEhpRFBJIGJyZWFrcG9pbnRcbiAgJGhpZHBpOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cblxuICAvLyBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBnaXZlbiwgZ2V0IGl0cyB2YWx1ZSBmcm9tIHRoZSAkYnJlYWtwb2ludHMvJGJyZWFrcG9pbnRzLWhpZHBpIG1hcC5cbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLWhpZHBpLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0LW51bWJlcigkYnJlYWtwb2ludHMtaGlkcGksICRicCk7XG4gICAgICAkaGlkcGk6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgYCRicmVha3BvaW50c2Agb3IgYCRicmVha3BvaW50cy1oaWRwaWAgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJG5hbWUgYW5kICRkaXIgPT0gJ29ubHknIHtcbiAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSAnb25seScgYW5kICd1cCcgaGF2ZSBhIG1pbiBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ3VwJyB7XG4gICAgJGJwLW1pbjogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgfVxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ2Rvd24nIGhhdmUgYSBtYXggbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSB2YWx1ZSwgdXNlIGl0IGFzIG1heCBsaW1pdC5cbiAgICBAaWYgbm90ICRuYW1lIHtcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIG5hbWVkLCB0aGUgbWF4IGxpbWl0IGlzIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludCAtIDFweC5cbiAgICBAZWxzZSBpZiAkYnAtbmV4dCB7XG4gICAgICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gICAgICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCAkYnAtbmV4dCAtIGRpdmlkZSgxLCAkc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dC1udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHQtbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dC1udW1iZXIpIHtcbiAgICAgICRuZXh0LW51bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dC1udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmQta2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kLWtleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmQta2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iXX0= */
