.section-pros-cons {
  margin: 60px 0;
}
.section-pros-cons .row {
  --gutter-x: 30px;
  --gutter-y: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin-top: calc(-1 * var(--gutter-y));
  margin-right: calc(-0.5 * var(--gutter-x));
  margin-left: calc(-0.5 * var(--gutter-x));
  row-gap: 20px;
}
@media (max-width: 991.98px) {
  .section-pros-cons .row {
    --gutter-x: 20px;
  }
}
.section-pros-cons .col {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--gutter-x) * 0.5);
  padding-left: calc(var(--gutter-x) * 0.5);
  margin-top: var(--gutter-y);
  -webkit-box-flex: 0;
      -ms-flex: 0 0 auto;
          flex: 0 0 auto;
  width: 100%;
}
@media (min-width: 768px) {
  .section-pros-cons .col {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    width: 50%;
  }
}
.section-pros-cons .pros,
.section-pros-cons .cons {
  border: 1px solid #C8CFD9;
  background: #F7F7F7;
  border-radius: 10px;
  height: 100%;
}
@media (min-width: 992px) {
  .section-pros-cons .pros,
  .section-pros-cons .cons {
    border-radius: 16px;
  }
}
.section-pros-cons .pros-list,
.section-pros-cons .cons-list {
  font-weight: 400;
  font-size: 0.875rem;
  padding-left: 0;
  list-style: none;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 10px;
  padding: 20px;
  margin: 0;
}
.section-pros-cons .pros-list li,
.section-pros-cons .cons-list li {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 10px;
}
.section-pros-cons .pros-list svg,
.section-pros-cons .cons-list svg {
  width: 24px;
  height: 24px;
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.section-pros-cons .pros-list span,
.section-pros-cons .cons-list span {
  -ms-flex-item-align: center;
      align-self: center;
}
@media (min-width: 992px) {
  .section-pros-cons .pros-list,
  .section-pros-cons .cons-list {
    gap: 16px;
    padding: 20px 30px;
  }
  .section-pros-cons .pros-list li,
  .section-pros-cons .cons-list li {
    gap: 20px;
  }
  .section-pros-cons .pros-list svg,
  .section-pros-cons .cons-list svg {
    width: 20px;
    height: 20px;
  }
}
.section-pros-cons .pros-title,
.section-pros-cons .cons-title {
  border-radius: 5px;
  padding: 8px 10px;
  margin: 10px 10px 0;
  font-weight: 600;
  font-size: 1.25rem;
  line-height: 120%;
}
@media (min-width: 992px) {
  .section-pros-cons .pros-title,
  .section-pros-cons .cons-title {
    border-radius: 10px;
    min-height: 52px;
    padding: 14px 20px;
  }
}
.section-pros-cons .pros-title {
  background: linear-gradient(146.54deg, #66FFB7 -1.49%, #66FFFF 92.1%);
}
.section-pros-cons .cons-title {
  background: #09131E;
  color: #ffffff;
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb3NfY29uc19zZWN0aW9uL3Byb3NfY29uc19zZWN0aW9uLnNjc3MiLCJwcm9zX2NvbnNfc2VjdGlvbi9wcm9zX2NvbnNfc2VjdGlvbi5jc3MiLCIuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwiLi4vc3JjL3Njc3MvY29tcG9uZW50cy9fdmFycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL3ZlbmRvci9fcmZzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19saXN0cy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BO0VBQ0ksY0FBQTtBQ0xKO0FET0k7RUVKRixnQkFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUFBLG9CQUFBO0VBQUEsYUFBQTtFQUNBLG1CQUFBO01BQUEsZUFBQTtFQUVBLHNDQUFBO0VBQ0EsMENBQUE7RUFDQSx5Q0FBQTtFRkRNLGFBQUE7QUNDUjtBRWdFSTtFSG5FQTtJQUtRLGdCQUFBO0VDRVY7QUFDRjtBRENJO0VFR0Ysb0JBQUE7TUFBQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLGVBQUE7RUFDQSwwQ0FBQTtFQUNBLHlDQUFBO0VBQ0EsMkJBQUE7RUFLRSxtQkFBQTtNQUFBLGtCQUFBO1VBQUEsY0FBQTtFQUNBLFdBQUE7QURMSjtBRW9DSTtFSDdDQTtJRWFBLG1CQUFBO1FBQUEsa0JBQUE7WUFBQSxjQUFBO0lBQ0EsVUFBQTtFREFGO0FBQ0Y7QUROSTs7RUFFSSx5QkFBQTtFQUNBLG1CSTBDVTtFSnpDVixtQkFBQTtFQUNBLFlBQUE7QUNRUjtBRXVCSTtFSHBDQTs7SUFRUSxtQkFBQTtFQ1VWO0FBQ0Y7QURQSTs7RUFFSSxnQkFBQTtFS3NQRixtQkFMSTtFQ3RSUixlQUFBO0VBQ0EsZ0JBQUE7RU51Q00sb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSw0QkFBQTtFQUFBLDZCQUFBO01BQUEsMEJBQUE7VUFBQSxzQkFBQTtFQUNBLFNBQUE7RUFDQSxhQUFBO0VBQ0EsU0FBQTtBQ1VSO0FEUlE7O0VBQ0ksb0JBQUE7RUFBQSxvQkFBQTtFQUFBLGFBQUE7RUFDQSxTQUFBO0FDV1o7QURSUTs7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLG9CQUFBO01BQUEsY0FBQTtBQ1daO0FEUlE7O0VBQ0ksMkJBQUE7TUFBQSxrQkFBQTtBQ1daO0FFVkk7RUh4QkE7O0lBMkJRLFNBQUE7SUFDQSxrQkFBQTtFQ1lWO0VEVlU7O0lBQ0ksU0FBQTtFQ2FkO0VEVlU7O0lBQ0ksV0FBQTtJQUNBLFlBQUE7RUNhZDtBQUNGO0FEUkk7O0VBRUksa0JBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUt5TUYsa0JBTEk7RUxsTUYsaUJBQUE7QUNVUjtBRW5DSTtFSGtCQTs7SUFVUSxtQkFBQTtJQUNBLGdCQUFBO0lBQ0Esa0JBQUE7RUNZVjtBQUNGO0FEVEk7RUFDSSxxRUlDRztBSFVYO0FEUkk7RUFDSSxtQkl6QlU7RUowQlYsY0k1Q1U7QUhzRGxCIiwiZmlsZSI6InByb3NfY29uc19zZWN0aW9uXFxwcm9zX2NvbnNfc2VjdGlvbi5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAnLi4vLi4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XHJcbkBpbXBvcnQgJy4uLy4uL25vZGVfbW9kdWxlcy9ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xyXG5AaW1wb3J0ICcuLi8uLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zJztcclxuQGltcG9ydCAnLi4vLi4vc3JjL3Njc3MvY29tcG9uZW50cy92YXJzJztcclxuQGltcG9ydCAnLi4vLi4vc3JjL3Njc3MvY29tcG9uZW50cy9taXhpbnMnO1xyXG5cclxuLnNlY3Rpb24tcHJvcy1jb25zIHtcclxuICAgIG1hcmdpbjogNjBweCAwO1xyXG5cclxuICAgIC5yb3cge1xyXG4gICAgICAgIEBpbmNsdWRlIG1ha2Utcm93KDMwcHgpO1xyXG4gICAgICAgIHJvdy1nYXA6IDIwcHg7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihsZykge1xyXG4gICAgICAgICAgICAtLWd1dHRlci14OiAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY29sIHtcclxuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1yZWFkeTtcclxuICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbCgxMik7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2woNik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5wcm9zLFxyXG4gICAgLmNvbnMge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LWxpZ2h0ZXN0LTQ7XHJcbiAgICAgICAgYmFja2dyb3VuZDogJGdyYXktbGlnaHRlc3QtNTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBcclxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKGxnKSB7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5wcm9zLWxpc3QsXHJcbiAgICAuY29ucy1saXN0IHtcclxuICAgICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxNHB4KTtcclxuICAgICAgICBAaW5jbHVkZSBsaXN0LXVuc3R5bGVkO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBnYXA6IDEwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgXHJcbiAgICAgICAgbGkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBnYXA6IDEwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdmcge1xyXG4gICAgICAgICAgICB3aWR0aDogMjRweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcclxuICAgICAgICAgICAgZ2FwOiAxNnB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAyMHB4IDMwcHg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICBnYXA6IDIwcHg7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN2ZyB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnByb3MtdGl0bGUsXHJcbiAgICAuY29ucy10aXRsZSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDhweCAxMHB4O1xyXG4gICAgICAgIG1hcmdpbjogMTBweCAxMHB4IDA7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMjBweCk7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEyMCU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiA1MnB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5wcm9zLXRpdGxlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkZ3JhZGllbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmNvbnMtdGl0bGUge1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRncmVlbi1kYXJrZXI7XHJcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgIH1cclxufVxyXG4iLCIuc2VjdGlvbi1wcm9zLWNvbnMge1xuICBtYXJnaW46IDYwcHggMDtcbn1cbi5zZWN0aW9uLXByb3MtY29ucyAucm93IHtcbiAgLS1ndXR0ZXIteDogMzBweDtcbiAgLS1ndXR0ZXIteTogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tdG9wOiBjYWxjKC0xICogdmFyKC0tZ3V0dGVyLXkpKTtcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0wLjUgKiB2YXIoLS1ndXR0ZXIteCkpO1xuICBtYXJnaW4tbGVmdDogY2FsYygtMC41ICogdmFyKC0tZ3V0dGVyLXgpKTtcbiAgcm93LWdhcDogMjBweDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkge1xuICAuc2VjdGlvbi1wcm9zLWNvbnMgLnJvdyB7XG4gICAgLS1ndXR0ZXIteDogMjBweDtcbiAgfVxufVxuLnNlY3Rpb24tcHJvcy1jb25zIC5jb2wge1xuICBmbGV4LXNocmluazogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1ndXR0ZXIteCkgKiAwLjUpO1xuICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tZ3V0dGVyLXgpICogMC41KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tZ3V0dGVyLXkpO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnNlY3Rpb24tcHJvcy1jb25zIC5jb2wge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbn1cbi5zZWN0aW9uLXByb3MtY29ucyAucHJvcyxcbi5zZWN0aW9uLXByb3MtY29ucyAuY29ucyB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNDOENGRDk7XG4gIGJhY2tncm91bmQ6ICNGN0Y3Rjc7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGhlaWdodDogMTAwJTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuc2VjdGlvbi1wcm9zLWNvbnMgLnByb3MsXG4gIC5zZWN0aW9uLXByb3MtY29ucyAuY29ucyB7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgfVxufVxuLnNlY3Rpb24tcHJvcy1jb25zIC5wcm9zLWxpc3QsXG4uc2VjdGlvbi1wcm9zLWNvbnMgLmNvbnMtbGlzdCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxMHB4O1xuICBwYWRkaW5nOiAyMHB4O1xuICBtYXJnaW46IDA7XG59XG4uc2VjdGlvbi1wcm9zLWNvbnMgLnByb3MtbGlzdCBsaSxcbi5zZWN0aW9uLXByb3MtY29ucyAuY29ucy1saXN0IGxpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxMHB4O1xufVxuLnNlY3Rpb24tcHJvcy1jb25zIC5wcm9zLWxpc3Qgc3ZnLFxuLnNlY3Rpb24tcHJvcy1jb25zIC5jb25zLWxpc3Qgc3ZnIHtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG4uc2VjdGlvbi1wcm9zLWNvbnMgLnByb3MtbGlzdCBzcGFuLFxuLnNlY3Rpb24tcHJvcy1jb25zIC5jb25zLWxpc3Qgc3BhbiB7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuc2VjdGlvbi1wcm9zLWNvbnMgLnByb3MtbGlzdCxcbiAgLnNlY3Rpb24tcHJvcy1jb25zIC5jb25zLWxpc3Qge1xuICAgIGdhcDogMTZweDtcbiAgICBwYWRkaW5nOiAyMHB4IDMwcHg7XG4gIH1cbiAgLnNlY3Rpb24tcHJvcy1jb25zIC5wcm9zLWxpc3QgbGksXG4gIC5zZWN0aW9uLXByb3MtY29ucyAuY29ucy1saXN0IGxpIHtcbiAgICBnYXA6IDIwcHg7XG4gIH1cbiAgLnNlY3Rpb24tcHJvcy1jb25zIC5wcm9zLWxpc3Qgc3ZnLFxuICAuc2VjdGlvbi1wcm9zLWNvbnMgLmNvbnMtbGlzdCBzdmcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgfVxufVxuLnNlY3Rpb24tcHJvcy1jb25zIC5wcm9zLXRpdGxlLFxuLnNlY3Rpb24tcHJvcy1jb25zIC5jb25zLXRpdGxlIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiA4cHggMTBweDtcbiAgbWFyZ2luOiAxMHB4IDEwcHggMDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMTIwJTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuc2VjdGlvbi1wcm9zLWNvbnMgLnByb3MtdGl0bGUsXG4gIC5zZWN0aW9uLXByb3MtY29ucyAuY29ucy10aXRsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBtaW4taGVpZ2h0OiA1MnB4O1xuICAgIHBhZGRpbmc6IDE0cHggMjBweDtcbiAgfVxufVxuLnNlY3Rpb24tcHJvcy1jb25zIC5wcm9zLXRpdGxlIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0Ni41NGRlZywgIzY2RkZCNyAtMS40OSUsICM2NkZGRkYgOTIuMSUpO1xufVxuLnNlY3Rpb24tcHJvcy1jb25zIC5jb25zLXRpdGxlIHtcbiAgYmFja2dyb3VuZDogIzA5MTMxRTtcbiAgY29sb3I6ICNmZmZmZmY7XG59IiwiLy8gR3JpZCBzeXN0ZW1cbi8vXG4vLyBHZW5lcmF0ZSBzZW1hbnRpYyBncmlkIGNvbHVtbnMgd2l0aCB0aGVzZSBtaXhpbnMuXG5cbkBtaXhpbiBtYWtlLXJvdygkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgpIHtcbiAgLS0jeyRwcmVmaXh9Z3V0dGVyLXg6ICN7JGd1dHRlcn07XG4gIC0tI3skcHJlZml4fWd1dHRlci15OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIC8vIFRPRE86IFJldmlzaXQgY2FsYyBvcmRlciBhZnRlciBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtYm9vdHN0cmFwL3JlYWN0LWJvb3RzdHJhcC9pc3N1ZXMvNjAzOSBpcyBmaXhlZFxuICBtYXJnaW4tdG9wOiBjYWxjKC0xICogdmFyKC0tI3skcHJlZml4fWd1dHRlci15KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIG1hcmdpbi1yaWdodDogY2FsYygtLjUgKiB2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpKTsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZSBmdW5jdGlvbi1kaXNhbGxvd2VkLWxpc3RcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoLS41ICogdmFyKC0tI3skcHJlZml4fWd1dHRlci14KSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG59XG5cbkBtaXhpbiBtYWtlLWNvbC1yZWFkeSgpIHtcbiAgLy8gQWRkIGJveCBzaXppbmcgaWYgb25seSB0aGUgZ3JpZCBpcyBsb2FkZWRcbiAgYm94LXNpemluZzogaWYodmFyaWFibGUtZXhpc3RzKGluY2x1ZGUtY29sdW1uLWJveC1zaXppbmcpIGFuZCAkaW5jbHVkZS1jb2x1bW4tYm94LXNpemluZywgYm9yZGVyLWJveCwgbnVsbCk7XG4gIC8vIFByZXZlbnQgY29sdW1ucyBmcm9tIGJlY29taW5nIHRvbyBuYXJyb3cgd2hlbiBhdCBzbWFsbGVyIGdyaWQgdGllcnMgYnlcbiAgLy8gYWx3YXlzIHNldHRpbmcgYHdpZHRoOiAxMDAlO2AuIFRoaXMgd29ya3MgYmVjYXVzZSB3ZSBzZXQgdGhlIHdpZHRoXG4gIC8vIGxhdGVyIG9uIHRvIG92ZXJyaWRlIHRoaXMgaW5pdGlhbCB3aWR0aC5cbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDEwMCU7IC8vIFByZXZlbnQgYC5jb2wtYXV0b2AsIGAuY29sYCAoJiByZXNwb25zaXZlIHZhcmlhbnRzKSBmcm9tIGJyZWFraW5nIG91dCB0aGUgZ3JpZFxuICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLSN7JHByZWZpeH1ndXR0ZXIteCkgKiAuNSk7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgZnVuY3Rpb24tZGlzYWxsb3dlZC1saXN0XG4gIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXgpICogLjUpOyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGZ1bmN0aW9uLWRpc2FsbG93ZWQtbGlzdFxuICBtYXJnaW4tdG9wOiB2YXIoLS0jeyRwcmVmaXh9Z3V0dGVyLXkpO1xufVxuXG5AbWl4aW4gbWFrZS1jb2woJHNpemU6IGZhbHNlLCAkY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAaWYgJHNpemUge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKGRpdmlkZSgkc2l6ZSwgJGNvbHVtbnMpKTtcblxuICB9IEBlbHNlIHtcbiAgICBmbGV4OiAxIDEgMDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuQG1peGluIG1ha2UtY29sLWF1dG8oKSB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIG1ha2UtY29sLW9mZnNldCgkc2l6ZSwgJGNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgJG51bTogZGl2aWRlKCRzaXplLCAkY29sdW1ucyk7XG4gIG1hcmdpbi1sZWZ0OiBpZigkbnVtID09IDAsIDAsIHBlcmNlbnRhZ2UoJG51bSkpO1xufVxuXG4vLyBSb3cgY29sdW1uc1xuLy9cbi8vIFNwZWNpZnkgb24gYSBwYXJlbnQgZWxlbWVudChlLmcuLCAucm93KSB0byBmb3JjZSBpbW1lZGlhdGUgY2hpbGRyZW4gaW50byBOTlxuLy8gbnVtYmVyIG9mIGNvbHVtbnMuIFN1cHBvcnRzIHdyYXBwaW5nIHRvIG5ldyBsaW5lcywgYnV0IGRvZXMgbm90IGRvIGEgTWFzb25yeVxuLy8gc3R5bGUgZ3JpZC5cbkBtaXhpbiByb3ctY29scygkY291bnQpIHtcbiAgPiAqIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogcGVyY2VudGFnZShkaXZpZGUoMSwgJGNvdW50KSk7XG4gIH1cbn1cblxuLy8gRnJhbWV3b3JrIGdyaWQgZ2VuZXJhdGlvblxuLy9cbi8vIFVzZWQgb25seSBieSBCb290c3RyYXAgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGdyaWQgY2xhc3NlcyBnaXZlblxuLy8gYW55IHZhbHVlIG9mIGAkZ3JpZC1jb2x1bW5zYC5cblxuQG1peGluIG1ha2UtZ3JpZC1jb2x1bW5zKCRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zLCAkZ3V0dGVyOiAkZ3JpZC1ndXR0ZXItd2lkdGgsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gbWFwLWtleXMoJGJyZWFrcG9pbnRzKSB7XG4gICAgJGluZml4OiBicmVha3BvaW50LWluZml4KCRicmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICAvLyBQcm92aWRlIGJhc2ljIGAuY29sLXticH1gIGNsYXNzZXMgZm9yIGVxdWFsLXdpZHRoIGZsZXhib3ggY29sdW1uc1xuICAgICAgLmNvbCN7JGluZml4fSB7XG4gICAgICAgIGZsZXg6IDEgMCAwJTsgLy8gRmxleGJ1Z3MgIzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9waGlsaXB3YWx0b24vZmxleGJ1Z3MjZmxleGJ1Zy00XG4gICAgICB9XG5cbiAgICAgIC5yb3ctY29scyN7JGluZml4fS1hdXRvID4gKiB7XG4gICAgICAgIEBpbmNsdWRlIG1ha2UtY29sLWF1dG8oKTtcbiAgICAgIH1cblxuICAgICAgQGlmICRncmlkLXJvdy1jb2x1bW5zID4gMCB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtcm93LWNvbHVtbnMge1xuICAgICAgICAgIC5yb3ctY29scyN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgICBAaW5jbHVkZSByb3ctY29scygkaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb2wjeyRpbmZpeH0tYXV0byB7XG4gICAgICAgIEBpbmNsdWRlIG1ha2UtY29sLWF1dG8oKTtcbiAgICAgIH1cblxuICAgICAgQGlmICRjb2x1bW5zID4gMCB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAgIC5jb2wjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgQGluY2x1ZGUgbWFrZS1jb2woJGksICRjb2x1bW5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBgJGNvbHVtbnMgLSAxYCBiZWNhdXNlIG9mZnNldHRpbmcgYnkgdGhlIHdpZHRoIG9mIGFuIGVudGlyZSByb3cgaXNuJ3QgcG9zc2libGVcbiAgICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAoJGNvbHVtbnMgLSAxKSB7XG4gICAgICAgICAgQGlmIG5vdCAoJGluZml4ID09IFwiXCIgYW5kICRpID09IDApIHsgLy8gQXZvaWQgZW1pdHRpbmcgdXNlbGVzcyAub2Zmc2V0LTBcbiAgICAgICAgICAgIC5vZmZzZXQjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBtYWtlLWNvbC1vZmZzZXQoJGksICRjb2x1bW5zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gR3V0dGVyc1xuICAgICAgLy9cbiAgICAgIC8vIE1ha2UgdXNlIG9mIGAuZy0qYCwgYC5neC0qYCBvciBgLmd5LSpgIHV0aWxpdGllcyB0byBjaGFuZ2Ugc3BhY2luZyBiZXR3ZWVuIHRoZSBjb2x1bW5zLlxuICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRndXR0ZXJzIHtcbiAgICAgICAgLmcjeyRpbmZpeH0tI3ska2V5fSxcbiAgICAgICAgLmd4I3skaW5maXh9LSN7JGtleX0ge1xuICAgICAgICAgIC0tI3skcHJlZml4fWd1dHRlci14OiAjeyR2YWx1ZX07XG4gICAgICAgIH1cblxuICAgICAgICAuZyN7JGluZml4fS0jeyRrZXl9LFxuICAgICAgICAuZ3kjeyRpbmZpeH0tI3ska2V5fSB7XG4gICAgICAgICAgLS0jeyRwcmVmaXh9Z3V0dGVyLXk6ICN7JHZhbHVlfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWFrZS1jc3NncmlkKCRjb2x1bW5zOiAkZ3JpZC1jb2x1bW5zLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEBlYWNoICRicmVha3BvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xuICAgICRpbmZpeDogYnJlYWtwb2ludC1pbmZpeCgkYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJGJyZWFrcG9pbnQsICRicmVha3BvaW50cykge1xuICAgICAgQGlmICRjb2x1bW5zID4gMCB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvbHVtbnMge1xuICAgICAgICAgIC5nLWNvbCN7JGluZml4fS0jeyRpfSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogYXV0byAvIHNwYW4gJGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgd2l0aCBgMWAgYmVjYXVzZSBgMGAgaXMgYW4gaW52YWxpZCB2YWx1ZS5cbiAgICAgICAgLy8gRW5kcyB3aXRoIGAkY29sdW1ucyAtIDFgIGJlY2F1c2Ugb2Zmc2V0dGluZyBieSB0aGUgd2lkdGggb2YgYW4gZW50aXJlIHJvdyBpc24ndCBwb3NzaWJsZS5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJGNvbHVtbnMgLSAxKSB7XG4gICAgICAgICAgLmctc3RhcnQjeyRpbmZpeH0tI3skaX0ge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW4tc3RhcnQ6ICRpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwgeHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQGlmIG5vdCAkbiB7XG4gICAgQGVycm9yIFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFwiO1xuICB9XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZlxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChtZCwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogIGJyZWFrcG9pbnQtbWF4KCRuZXh0LCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIiRlbmFibGUtcmZzOiBmYWxzZTtcclxuJHByZWZpeDogJyc7XHJcbiRlbmFibGUtZGFyay1tb2RlOiBmYWxzZTtcclxuXHJcbi8vIEdyaWQuXHJcbiRncmlkLWJyZWFrcG9pbnRzOiAoXHJcblx0eHM6IDAsXHJcblx0c206IDU3NnB4LFxyXG5cdG1kOiA3NjhweCxcclxuXHRsZzogOTkycHgsXHJcblx0eGw6IDEyMDBweCxcclxuXHR4eGw6IDE0NDBweFxyXG4pO1xyXG4kY29udGFpbmVyLW1heC13aWR0aHM6IChcclxuXHRzbTogNTQwcHgsXHJcblx0bWQ6IDcyMHB4LFxyXG5cdGxnOiA5NjBweCxcclxuXHR4bDogMTE0MHB4LFxyXG5cdHh4bDogMTI4MHB4XHJcbik7XHJcbiRncmlkLWd1dHRlci13aWR0aDogMzBweDtcclxuJGNvbnRhaW5lci1ndXR0ZXItd2lkdGg6IDQwcHg7XHJcblxyXG4kY29udC1tYXgtd2lkdGg6ICAgICAgICAgMTI4MHB4O1xyXG4kY29udC1oZWFkZXItbWF4LXdpZHRoOiAgMTg4MHB4O1xyXG4kcmV2aWV3LW1heC13aWR0aDogICAgICAgIDc0MHB4O1xyXG4kbW9kYWwtbWF4LXdpZHRoOiAgICAgICAgNzI4cHg7XHJcbiRoZWFkaW5nLXdpZHRoOiAgICAgICAgICA3MTBweDtcclxuJGhlcm8tYmxvZy13aWR0aDogICAgICAgIDg4MHB4O1xyXG4kY29tbWVudHMtd2lkdGg6ICAgICAgICAgNDkycHg7XHJcbiRhdXRob3Itd2lkdGg6ICAgICAgICAgICA2Ni42NjY2NyU7IC8vIDk1NHB4XHJcblxyXG4vLyBGb250IGZhbWlsaWVzLlxyXG4kZmY6ICAgICAgICAnUG9wcGlucycsIHNhbnMtc2VyaWY7XHJcbiRmZi10aXRsZTogICdQb3BwaW5zJywgc2Fucy1zZXJpZjtcclxuXHJcbi8vIEZvbnQgc2l6ZXMuXHJcbiRmcy14c1x0OiAxMnB4O1xyXG4kZnMtc21cdDogMTRweDtcclxuJGZzLW1kXHQ6IDE2cHg7XHJcbiRmcy1sZ1x0OiAxOHB4O1xyXG4kZnMteGxcdDogMjBweDtcclxuXHJcbi8vIEZvbnQgd2VpZ2h0cy5cclxuJGZ3LWxpZ2h0XHRcdDogMzAwO1xyXG4kZnctcmVndWxhclx0XHQ6IDQwMDtcclxuJGZ3LW1lZGl1bVx0XHQ6IDUwMDtcclxuJGZ3LXNlbWlib2xkXHQ6IDYwMDtcclxuJGZ3LWJvbGRcdFx0OiA3MDA7XHJcbiRmdy1leHRyYWJvbGRcdDogODAwO1xyXG4kZnctYmxhY2tcdFx0OiA5MDA7XHJcblxyXG4vLyBMaW5lIGhlaWdodHMuXHJcbiRsaDpcdFx0XHQgMS40O1xyXG4kbGgtdGl0bGU6XHRcdCAxLjI7XHJcblxyXG4kcGFyYWdyYXBoLW1hcmdpbi1ib3R0b206IDEuMjVyZW07XHJcblxyXG4vLyBDb2xvcnMuXHJcbiR3aGl0ZTpcdCAgICAgICAgICAjZmZmZmZmO1xyXG4kYmxhY2s6ICAgICAgICAgICAjMDAwMDAwO1xyXG4kZGFyazogICAgICAgICAgICAjMDYwQzEzO1xyXG4kZ3JheS1kYXJrZXI6ICAgICAjMTYxNjE2O1xyXG4kZ3JheS1kYXJrOiAgICAgICAjMkQyRDJEO1xyXG4kZ3JheTogICAgICAgICAgICAjODI4MjgyO1xyXG4kZ3JheS1saWdodDogICAgICAjQjhCOEI4O1xyXG4kZ3JheS1saWdodGVyOiAgICAjQzdDN0M3O1xyXG4kZ3JheS1saWdodGVzdDogICAjRUNFQ0VDO1xyXG4kZ3JheS1saWdodGVzdC0xOiAjRThFOEU4O1xyXG4kZ3JheS1saWdodGVzdC0yOiAjRjVGNUY1O1xyXG4kZ3JheS1saWdodGVzdC0zOiAjRjlGOUY5O1xyXG4kZ3JheS1saWdodGVzdC00OiAjQzhDRkQ5O1xyXG4kZ3JheS1saWdodGVzdC01OiAjRjdGN0Y3O1xyXG4kYmx1ZS1kYXJrZXI6ICAgICAjMjIyRjNFO1xyXG4kYmx1ZS1kYXJrZXItMjogICAjMjMzMDNGO1xyXG4kYmx1ZS1saWdodDogICAgICAjQTBBQ0JCO1xyXG4kYmx1ZS1saWdodC0yOiAgICAjODE4RDlDO1xyXG4kZ3JlZW4tZGFya2VyOiAgICAjMDkxMzFFO1xyXG4kZ3JlZW4tZGFya2VyLTI6ICAjMUE0MDQzO1xyXG4keWVsbG93OiAgICAgICAgICAjZmZjMTA3O1xyXG5cclxuXHJcblxyXG4kaW5mbzogICAgICAgICAgIzA2N0FGRjtcclxuJGluZm8yOiAgICAgICAgICMzQjY5QzI7XHJcbiRkYW5nZXI6ICAgICAgICAjRUQxQzI0O1xyXG4kc3VjY2VzczogICAgICAgIzQ0QUYzNTtcclxuJHN1Y2Nlc3MyOiAgICAgICMxNEZGMDA7IC8vIGZvciBhbGVydHMgaW4gd3lzaXd5Z1xyXG5cclxuJHByaW1hcnk6ICAgICAgICM2NkZGQjc7XHJcbiRwcmltYXJ5LTI6ICAgICAjNjZGRkZGO1xyXG4kcHJpbWFyeS0zOiAgICAgIzY2RkZERjtcclxuJHNlY29uZGFyeTogICAgICNGQ0NGMDA7XHJcblxyXG5cclxuJGdvbGQ6ICAgICAgICAgICNGNkM5Mjk7XHJcbiRzaWx2ZXI6ICAgICAgICAjRDdEN0Q3O1xyXG4kYnJvbnplOiAgICAgICAgI0Q5QTI3QTtcclxuXHJcbiRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KDE0Ni41NGRlZywgJHByaW1hcnkgLTEuNDklLCAkcHJpbWFyeS0yIDkyLjElKTtcclxuJGdyYWRpZW50LWludmVydDogbGluZWFyLWdyYWRpZW50KDMyNmRlZywgJHByaW1hcnkgLTEuNDklLCAkcHJpbWFyeS0yIDkyLjElKTtcclxuJGJ0bi1ncmFkaWVudDogbGluZWFyLWdyYWRpZW50KDE0Ni41NGRlZywgJHByaW1hcnkgLTEuNDklLCAkcHJpbWFyeS0yIDQ2JSwgJHByaW1hcnkgMTAwJSk7XHJcbiRncmFkaWVudC1jb2xvci1taXg6IG1peCgkcHJpbWFyeSwgJHByaW1hcnktMiwgNTAlKTtcclxuJGdyYWRpZW50LWRhcms6IGxpbmVhci1ncmFkaWVudCgxNzYuMjVkZWcsICRncmVlbi1kYXJrZXIgMjYuMzclLCAkZ3JlZW4tZGFya2VyLTIgOTcuMjclKTtcclxuXHJcblxyXG4kYm9keS1jb2xvcjogICAgICAgICAgICAkZ3JheS1kYXJrZXI7XHJcbiRsaW5rLWNvbG9yOiAgICAgICAgICAgICRpbmZvO1xyXG4kbGluay1ob3Zlci1jb2xvcjogICAgICBkYXJrZW4oJGluZm8sIDUlKTtcclxuJGxpbmstaG92ZXItZGVjb3JhdGlvbjogbm9uZTtcclxuXHJcbiRwcm9zOiAgICAgICAgICAgICAgICAgICM3QUExRTA7XHJcbiRjb25zOiAgICAgICAgICAgICAgICAgICNGMTk0OTc7XHJcblxyXG4kcmliYm9uOiAgICAgICAgXHRcdCRzZWNvbmRhcnk7XHJcbiRyaWJib24tZGFyazogICBcdFx0ZGFya2VuKCRzZWNvbmRhcnksMjAlKTtcclxuXHJcbiR5b3V0dWJlOiAgICNDODIxMjE7XHJcbiR0d2l0dGVyOiAgICMxREExRjI7XHJcbiRpbnN0YWdyYW06ICNDRDI2ODA7XHJcbiRmYWNlYm9vazogICM0ODY3QUE7XHJcbiRhbWF6b246XHQjRkY5OTAwO1xyXG5cclxuLy8gT3RoZXJzLlxyXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4yNXM7XHJcbiR0cmFuc2l0aW9uLWR1cmF0aW9uLWZhc3Q6IDAuMXM7XHJcbiR0cmFuc2l0aW9uLWR1cmF0aW9uLXNsb3c6IDAuNHM7XHJcbiRyYWRpdXMtZHJvcGRvd246ICAgICA2cHg7XHJcbiRyYWRpdXM6ICAgICAgICAgICAgICAxMHB4O1xyXG4kcmFkaXVzLW1lbnU6ICAgICAgICAgMTVweDtcclxuJGJveC1zaGFkb3c6ICAgICAgICAgIDBweCA0cHggMTJweCAwcHggcmdiYSgkYmxhY2ssIDAuMDgpO1xyXG4kYm94LXNoYWRvdy1ib2xkOiAgICAgMHB4IDRweCAxMnB4IDBweCByZ2JhKCRibGFjaywgMC4yNSk7XHJcbiRib3gtc2hhZG93LWhvdmVyOiAgICAwcHggNHB4IDEycHggNHB4IHJnYmEoJGJsYWNrLCAwLjE4KTtcclxuXHJcbiRoZWFkZXItaGVpZ2h0OiA2OHB4O1xyXG4kanVtcGxpbmtzLWhlaWdodDogNDJweDtcclxuXHJcbi8vIEJVVFRPTlNcclxuJGJ0bi1saW5lLWhlaWdodDogICAgICRsaDtcclxuJGJ0bi1wYWRkaW5nLXg6ICAgICAgIDMycHg7XHJcbiRidG4tcGFkZGluZy15OiAgICAgICA4cHg7XHJcbiRidG4tZm9udC13ZWlnaHQ6ICAgICAkZnctbWVkaXVtO1xyXG4kYnRuLWJvcmRlci1yYWRpdXM6ICAgJHJhZGl1cztcclxuJGJ0bi1ib3gtc2hhZG93OiAgICAgICRib3gtc2hhZG93O1xyXG4kYnRuLWJvcmRlci13aWR0aDogICAgMXB4O1xyXG5cclxuLy8gRk9STVNcclxuJGlucHV0LWZvbnQtc2l6ZTogICAgICAgICAgICAgJGZzLXNtO1xyXG4kaW5wdXQtcGFkZGluZy15OiAgICAgICAgICAgICA3cHg7XHJcbiRpbnB1dC1wYWRkaW5nLXg6ICAgICAgICAgICAgIDE2cHg7XHJcbiRpbnB1dC1saW5lLWhlaWdodDogICAgICAgICAgIDEuNzE0MztcclxuJGlucHV0LWNvbG9yOiAgICAgICAgICAgICAgICAgJGJvZHktY29sb3I7XHJcbiRpbnB1dC1iZzogICAgICAgICBcdCAgICAgICAgICAkd2hpdGU7XHJcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogICAgICRncmF5LWxpZ2h0O1xyXG4kaW5wdXQtYm9yZGVyLXdpZHRoOiAgICAgICAgICAxcHg7XHJcbiRpbnB1dC1ib3JkZXItcmFkaXVzOiAgICAgICAgICRyYWRpdXM7XHJcbiRpbnB1dC1ib3JkZXItY29sb3I6ICAgICAgICAgICRncmF5LWxpZ2h0O1xyXG4kaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAkZGFyaztcclxuJGlucHV0LWZvY3VzLWJveC1zaGFkb3c6ICAgICAgbm9uZTtcclxuXHJcbiRmb3JtLXNlbGVjdC1jb2xvcjogICAgICAgICAgICRib2R5LWNvbG9yO1xyXG4kZm9ybS1zZWxlY3QtZm9udC1zaXplOiAgICAgICAkZnMtc207XHJcbiRmb3JtLXNlbGVjdC1saW5lLWhlaWdodDogICAgIDEuNzE0MztcclxuJGZvcm0tc2VsZWN0LXBhZGRpbmcteTogICAgICAgOHB4O1xyXG4kZm9ybS1zZWxlY3QtcGFkZGluZy14OiAgICAgICAxNnB4O1xyXG4kZm9ybS1zZWxlY3QtY29sb3I6ICAgICAgICAgICAkYm9keS1jb2xvcjtcclxuJGZvcm0tc2VsZWN0LWJvcmRlci13aWR0aDogICAgMXB4O1xyXG4kZm9ybS1zZWxlY3QtYm9yZGVyLWNvbG9yOiAgICAkZ3JheS1saWdodDtcclxuJGZvcm0tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICAgJHJhZGl1cztcclxuJGZvcm0tc2VsZWN0LWZvY3VzLWJveC1zaGFkb3c6bm9uZTtcclxuJGZvcm0tc2VsZWN0LWluZGljYXRvci13aGl0ZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTYgMTYnPjxwYXRoIGZpbGw9J25vbmUnIHN0cm9rZT0nI3skd2hpdGV9JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMicgZD0nbTIgNSA2IDYgNi02Jy8+PC9zdmc+XCIpO1xyXG4kZm9ybS1zZWxlY3QtZm9jdXMtYm9yZGVyLWNvbG9yOiAkZGFyaztcclxuXHJcbiRmb3JtLWNoZWNrLXBhZGRpbmctc3RhcnQ6ICAgIDEuODc1ZW07XHJcbiRmb3JtLWNoZWNrLWlucHV0LXdpZHRoOiAgICAgIDEuMjVlbTtcclxuJGZvcm0tY2hlY2stbWFyZ2luLWJvdHRvbTogICAgLjVlbTtcclxuXHJcbiRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtY29sb3I6ICAgICAgICAkZGFuZ2VyO1xyXG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWNvbG9yOiAgICAgJHdoaXRlO1xyXG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJvcmRlci1jb2xvcjogJGRhbmdlcjtcclxuLy8gJGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1iZy1pbWFnZTogICAgIHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDIwIDIwJz48cGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyN7JGZvcm0tY2hlY2staW5wdXQtY2hlY2tlZC1jb2xvcn0nIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPSczJyBkPSdtNiAxMCAzIDMgNi02Jy8+PC9zdmc+XCIpO1xyXG4kZm9ybS1jaGVjay1pbnB1dC1jaGVja2VkLWJnLWltYWdlOiAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxNScgaGVpZ2h0PScxMCcgZmlsbD0nbm9uZSclM0UlM0NwYXRoIGZpbGw9J3VybCglMjNnKScgZmlsbC1ydWxlPSdldmVub2RkJyBkPSdNMTQuMjU1LjI0NGEuODMzLjgzMyAwIDAgMSAwIDEuMTc5TDUuOTIgOS43NTZhLjgzMy44MzMgMCAwIDEtMS4xNzggMEwuNTc2IDUuNTg5YS44MzMuODMzIDAgMSAxIDEuMTc5LTEuMTc4bDMuNTc3IDMuNTc3TDEzLjA3Ni4yNDRhLjgzMy44MzMgMCAwIDEgMS4xNzkgMFonIGNsaXAtcnVsZT0nZXZlbm9kZCcvJTNFJTNDZGVmcyUzRSUzQ2xpbmVhckdyYWRpZW50IGlkPSdnJyB4MT0nLjY3NCcgeDI9JzYuNjI5JyB5MT0nLS40MDcnIHkyPScxMi4zNTknIGdyYWRpZW50VW5pdHM9J3VzZXJTcGFjZU9uVXNlJyUzRSUzQ3N0b3Agc3RvcC1jb2xvcj0nJTIzNjZGRkI3Jy8lM0UlM0NzdG9wIG9mZnNldD0nMScgc3RvcC1jb2xvcj0nJTIzNkZGJy8lM0UlM0MvbGluZWFyR3JhZGllbnQlM0UlM0MvZGVmcyUzRSUzQy9zdmclM0VcIik7XHJcbiRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtYmctaW1hZ2UtZGFyazplc2NhcGUtc3ZnKHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTUnIGhlaWdodD0nMTAnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBmaWxsPScjeyRkYXJrfScgZmlsbC1ydWxlPSdldmVub2RkJyBkPSdNMTQuMjU1LjI0NGEuODMzLjgzMyAwIDAgMSAwIDEuMTc5TDUuOTIgOS43NTZhLjgzMy44MzMgMCAwIDEtMS4xNzggMEwuNTc2IDUuNTg5YS44MzMuODMzIDAgMSAxIDEuMTc5LTEuMTc4bDMuNTc3IDMuNTc3TDEzLjA3Ni4yNDRhLjgzMy44MzMgMCAwIDEgMS4xNzkgMFonIGNsaXAtcnVsZT0nZXZlbm9kZCcvJTNFJSUzQy9zdmclM0VcIikpO1xyXG4kZm9ybS1jaGVjay1yYWRpby1jaGVja2VkLWJnLWltYWdlOiAgICAgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnPjxjaXJjbGUgcj0nMi41JyBmaWxsPScjeyRmb3JtLWNoZWNrLWlucHV0LWNoZWNrZWQtY29sb3J9Jy8+PC9zdmc+XCIpO1xyXG5cclxuJGNoZXZyb25lLWRvd246IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjAnIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHZpZXdCb3g9JzAgMCAyMCAxMiclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmZicgZD0nbTEwIDExLjM0IDkuMzgtOS4zN0wxOC4wNC42NGwtMy4yIDMuMjJMMTAgOC43IDUuMTYgMy44NiAxLjk2LjY2LjYzIDEuOTkgMTAgMTEuMzRaJy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG5cclxuLy8gaGVhZGVyXHJcbiRoZWFkZXItbmF2YmFyLWJyZWFrcG9pbnQ6IGxnO1xyXG5cclxuLy8gQ0FSRFNcclxuJGNhcmQtY29sb3I6ICAgICAgICAgICAgICRib2R5LWNvbG9yO1xyXG5cclxuXHJcbi8vIFotSU5ERVhcclxuJHotaW5kZXgtaGVhZGVyLXBhcnRzOiAxMDYwO1xyXG4kbW9kYWwtYmFja2Ryb3A6ICAgICAgIDEwNjE7IC8vIG1vcmUgdGhhbiAuaGVhZGVyLXRvcDsgZm9yIC5oZWFkZXItdG9wIHdoZW4gbmF2YmFyIGlzIG9wZW47IGZvciBvZmZlcnMgbW9yZSB0aGFuIGJhY2tkcm9wXHJcbiRtb2RhbDogICAgICAgICAgICAgICAgMTA2MjsgLy8gbW9yZSB0aGFuIGJhY2tkcm9wXHJcbiRtb2RhbC1pcy1vcGVuOiAgICAgICAgMTA2MzsgLy8gb2ZmZXJzIHdoZW4gbW9kYWwgaXMgb3BlblxyXG5cclxuLy8gcHJvZ3Jlc3NcclxuJHByb2dyZXNzLWhlaWdodDogNDhweDtcclxuJHByb2dyZXNzLWhlaWdodC1sZzogNTJweDtcclxuJHByb2dyZXNzLWJnOiAkd2hpdGU7XHJcbiRwcm9ncmVzcy1iYXItYmc6IHRyYW5zcGFyZW50O1xyXG4kcHJvZ3Jlc3MtYmFyLWNvbG9yOiAkYmxhY2s7XHJcbiRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4kcHJvZ3Jlc3MtZm9udC1zaXplOiAxNnB4OyIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZGltZW5zaW9uLW5vLW5vbi1udW1lcmljLXZhbHVlc1xuXG4vLyBTQ1NTIFJGUyBtaXhpblxuLy9cbi8vIEF1dG9tYXRlZCByZXNwb25zaXZlIHZhbHVlcyBmb3IgZm9udCBzaXplcywgcGFkZGluZ3MsIG1hcmdpbnMgYW5kIG11Y2ggbW9yZVxuLy9cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2Jsb2IvbWFpbi9MSUNFTlNFKVxuXG4vLyBDb25maWd1cmF0aW9uXG5cbi8vIEJhc2UgdmFsdWVcbiRyZnMtYmFzZS12YWx1ZTogMS4yNXJlbSAhZGVmYXVsdDtcbiRyZnMtdW5pdDogcmVtICFkZWZhdWx0O1xuXG5AaWYgJHJmcy11bml0ICE9IHJlbSBhbmQgJHJmcy11bml0ICE9IHB4IHtcbiAgQGVycm9yIFwiYCN7JHJmcy11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy11bml0LiBVc2UgYHB4YCBvciBgcmVtYC5cIjtcbn1cblxuLy8gQnJlYWtwb2ludCBhdCB3aGVyZSB2YWx1ZXMgc3RhcnQgZGVjcmVhc2luZyBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlclxuJHJmcy1icmVha3BvaW50OiAxMjAwcHggIWRlZmF1bHQ7XG4kcmZzLWJyZWFrcG9pbnQtdW5pdDogcHggIWRlZmF1bHQ7XG5cbkBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSBweCBhbmQgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gZW0gYW5kICRyZnMtYnJlYWtwb2ludC11bml0ICE9IHJlbSB7XG4gIEBlcnJvciBcImAjeyRyZnMtYnJlYWtwb2ludC11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy1icmVha3BvaW50LXVuaXQuIFVzZSBgcHhgLCBgZW1gIG9yIGByZW1gLlwiO1xufVxuXG4vLyBSZXNpemUgdmFsdWVzIGJhc2VkIG9uIHNjcmVlbiBoZWlnaHQgYW5kIHdpZHRoXG4kcmZzLXR3by1kaW1lbnNpb25hbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhY3RvciBvZiBkZWNyZWFzZVxuJHJmcy1mYWN0b3I6IDEwICFkZWZhdWx0O1xuXG5AaWYgdHlwZS1vZigkcmZzLWZhY3RvcikgIT0gbnVtYmVyIG9yICRyZnMtZmFjdG9yIDw9IDEge1xuICBAZXJyb3IgXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cIjtcbn1cblxuLy8gTW9kZS4gUG9zc2liaWxpdGllczogXCJtaW4tbWVkaWEtcXVlcnlcIiwgXCJtYXgtbWVkaWEtcXVlcnlcIlxuJHJmcy1tb2RlOiBtaW4tbWVkaWEtcXVlcnkgIWRlZmF1bHQ7XG5cbi8vIEdlbmVyYXRlIGVuYWJsZSBvciBkaXNhYmxlIGNsYXNzZXMuIFBvc3NpYmlsaXRpZXM6IGZhbHNlLCBcImVuYWJsZVwiIG9yIFwiZGlzYWJsZVwiXG4kcmZzLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gMSByZW0gPSAkcmZzLXJlbS12YWx1ZSBweFxuJHJmcy1yZW0tdmFsdWU6IDE2ICFkZWZhdWx0O1xuXG4vLyBTYWZhcmkgaWZyYW1lIHJlc2l6ZSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9pc3N1ZXMvMTRcbiRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERpc2FibGUgUkZTIGJ5IHNldHRpbmcgJGVuYWJsZS1yZnMgdG8gZmFsc2VcbiRlbmFibGUtcmZzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBDYWNoZSAkcmZzLWJhc2UtdmFsdWUgdW5pdFxuJHJmcy1iYXNlLXZhbHVlLXVuaXQ6IHVuaXQoJHJmcy1iYXNlLXZhbHVlKTtcblxuQGZ1bmN0aW9uIGRpdmlkZSgkZGl2aWRlbmQsICRkaXZpc29yLCAkcHJlY2lzaW9uOiAxMCkge1xuICAkc2lnbjogaWYoJGRpdmlkZW5kID4gMCBhbmQgJGRpdmlzb3IgPiAwIG9yICRkaXZpZGVuZCA8IDAgYW5kICRkaXZpc29yIDwgMCwgMSwgLTEpO1xuICAkZGl2aWRlbmQ6IGFicygkZGl2aWRlbmQpO1xuICAkZGl2aXNvcjogYWJzKCRkaXZpc29yKTtcbiAgQGlmICRkaXZpZGVuZCA9PSAwIHtcbiAgICBAcmV0dXJuIDA7XG4gIH1cbiAgQGlmICRkaXZpc29yID09IDAge1xuICAgIEBlcnJvciBcIkNhbm5vdCBkaXZpZGUgYnkgMFwiO1xuICB9XG4gICRyZW1haW5kZXI6ICRkaXZpZGVuZDtcbiAgJHJlc3VsdDogMDtcbiAgJGZhY3RvcjogMTA7XG4gIEB3aGlsZSAoJHJlbWFpbmRlciA+IDAgYW5kICRwcmVjaXNpb24gPj0gMCkge1xuICAgICRxdW90aWVudDogMDtcbiAgICBAd2hpbGUgKCRyZW1haW5kZXIgPj0gJGRpdmlzb3IpIHtcbiAgICAgICRyZW1haW5kZXI6ICRyZW1haW5kZXIgLSAkZGl2aXNvcjtcbiAgICAgICRxdW90aWVudDogJHF1b3RpZW50ICsgMTtcbiAgICB9XG4gICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgJHF1b3RpZW50O1xuICAgICRmYWN0b3I6ICRmYWN0b3IgKiAuMTtcbiAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyICogMTA7XG4gICAgJHByZWNpc2lvbjogJHByZWNpc2lvbiAtIDE7XG4gICAgQGlmICgkcHJlY2lzaW9uIDwgMCBhbmQgJHJlbWFpbmRlciA+PSAkZGl2aXNvciAqIDUpIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAxO1xuICAgIH1cbiAgfVxuICAkcmVzdWx0OiAkcmVzdWx0ICogJGZhY3RvciAqICRzaWduO1xuICAkZGl2aWRlbmQtdW5pdDogdW5pdCgkZGl2aWRlbmQpO1xuICAkZGl2aXNvci11bml0OiB1bml0KCRkaXZpc29yKTtcbiAgJHVuaXQtbWFwOiAoXG4gICAgXCJweFwiOiAxcHgsXG4gICAgXCJyZW1cIjogMXJlbSxcbiAgICBcImVtXCI6IDFlbSxcbiAgICBcIiVcIjogMSVcbiAgKTtcbiAgQGlmICgkZGl2aWRlbmQtdW5pdCAhPSAkZGl2aXNvci11bml0IGFuZCBtYXAtaGFzLWtleSgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KSkge1xuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiBtYXAtZ2V0KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkcmZzLWJhc2UtdmFsdWUgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYmFzZS12YWx1ZS11bml0ID09IHB4IHtcbiAgJHJmcy1iYXNlLXZhbHVlOiBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlLCAkcmZzLWJhc2UtdmFsdWUgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJhc2UtdmFsdWUtdW5pdCA9PSByZW0ge1xuICAkcmZzLWJhc2UtdmFsdWU6IGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUsIGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUgKiAwICsgMSwgJHJmcy1yZW0tdmFsdWUpKTtcbn1cblxuLy8gQ2FjaGUgJHJmcy1icmVha3BvaW50IHVuaXQgdG8gcHJldmVudCBtdWx0aXBsZSBjYWxsc1xuJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGU6IHVuaXQoJHJmcy1icmVha3BvaW50KTtcblxuLy8gUmVtb3ZlIHVuaXQgZnJvbSAkcmZzLWJyZWFrcG9pbnQgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IHB4IHtcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSByZW0gb3IgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJlbVwiIHtcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCBkaXZpZGUoJHJmcy1icmVha3BvaW50ICogMCArIDEsICRyZnMtcmVtLXZhbHVlKSk7XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWVkaWEgcXVlcnkgdmFsdWVcbiRyZnMtbXEtdmFsdWU6IGlmKCRyZnMtYnJlYWtwb2ludC11bml0ID09IHB4LCAjeyRyZnMtYnJlYWtwb2ludH1weCwgI3tkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLXJlbS12YWx1ZSl9I3skcmZzLWJyZWFrcG9pbnQtdW5pdH0pO1xuJHJmcy1tcS1wcm9wZXJ0eS13aWR0aDogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgbWF4LXdpZHRoLCBtaW4td2lkdGgpO1xuJHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHQ6IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksIG1heC1oZWlnaHQsIG1pbi1oZWlnaHQpO1xuXG4vLyBJbnRlcm5hbCBtaXhpbiB1c2VkIHRvIGRldGVybWluZSB3aGljaCBtZWRpYSBxdWVyeSBuZWVkcyB0byBiZSB1c2VkXG5AbWl4aW4gX3Jmcy1tZWRpYS1xdWVyeSB7XG4gIEBpZiAkcmZzLXR3by1kaW1lbnNpb25hbCB7XG4gICAgQGlmICRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnkge1xuICAgICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSwgKCN7JHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHR9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIGFuZCAoI3skcmZzLW1xLXByb3BlcnR5LWhlaWdodH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBJbnRlcm5hbCBtaXhpbiB0aGF0IGFkZHMgZGlzYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXG5AbWl4aW4gX3Jmcy1ydWxlIHtcbiAgQGlmICRyZnMtY2xhc3MgPT0gZGlzYWJsZSBhbmQgJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSB7XG4gICAgLy8gQWRkaW5nIGFuIGV4dHJhIGNsYXNzIGluY3JlYXNlcyBzcGVjaWZpY2l0eSwgd2hpY2ggcHJldmVudHMgdGhlIG1lZGlhIHF1ZXJ5IHRvIG92ZXJyaWRlIHRoZSBwcm9wZXJ0eVxuICAgICYsXG4gICAgLmRpc2FibGUtcmZzICYsXG4gICAgJi5kaXNhYmxlLXJmcyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUgYW5kICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgIC5lbmFibGUtcmZzICYsXG4gICAgJi5lbmFibGUtcmZzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gSW50ZXJuYWwgbWl4aW4gdGhhdCBhZGRzIGVuYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXG5AbWl4aW4gX3Jmcy1tZWRpYS1xdWVyeS1ydWxlIHtcblxuICBAaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUge1xuICAgIEBpZiAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnkgKCkge1xuICAgICAgLmVuYWJsZS1yZnMgJixcbiAgICAgICYuZW5hYmxlLXJmcyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRyZnMtY2xhc3MgPT0gZGlzYWJsZSBhbmQgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgICAuZGlzYWJsZS1yZnMgJixcbiAgICAgICYuZGlzYWJsZS1yZnMge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeSAoKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgZm9ybWF0dGVkIG5vbi1yZXNwb25zaXZlIHZhbHVlXG5AZnVuY3Rpb24gcmZzLXZhbHVlKCR2YWx1ZXMpIHtcbiAgLy8gQ29udmVydCB0byBsaXN0XG4gICR2YWx1ZXM6IGlmKHR5cGUtb2YoJHZhbHVlcykgIT0gbGlzdCwgKCR2YWx1ZXMsKSwgJHZhbHVlcyk7XG5cbiAgJHZhbDogXCJcIjtcblxuICAvLyBMb29wIG92ZXIgZWFjaCB2YWx1ZSBhbmQgY2FsY3VsYXRlIHZhbHVlXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcbiAgICBAaWYgJHZhbHVlID09IDAge1xuICAgICAgJHZhbDogJHZhbCArIFwiIDBcIjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gQ2FjaGUgJHZhbHVlIHVuaXRcbiAgICAgICR1bml0OiBpZih0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XG5cbiAgICAgIEBpZiAkdW5pdCA9PSBweCB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gcmVtIGlmIG5lZWRlZFxuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyAkcmZzLXJlbS12YWx1ZSl9cmVtLCAkdmFsdWUpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHVuaXQgPT0gcmVtIHtcbiAgICAgICAgLy8gQ29udmVydCB0byBweCBpZiBuZWVkZWRcbiAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgaWYoJHJmcy11bml0ID09IHB4LCAje2RpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyAxKSAqICRyZnMtcmVtLXZhbHVlfXB4LCAkdmFsdWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC8vIElmICR2YWx1ZSBpc24ndCBhIG51bWJlciAobGlrZSBpbmhlcml0KSBvciAkdmFsdWUgaGFzIGEgdW5pdCAobm90IHB4IG9yIHJlbSwgbGlrZSAxLjVlbSkgb3IgJCBpcyAwLCBqdXN0IHByaW50IHRoZSB2YWx1ZVxuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXG4gIEByZXR1cm4gdW5xdW90ZShzdHItc2xpY2UoJHZhbCwgMikpO1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXNwb25zaXZlIHZhbHVlIGNhbGN1bGF0ZWQgYnkgUkZTXG5AZnVuY3Rpb24gcmZzLWZsdWlkLXZhbHVlKCR2YWx1ZXMpIHtcbiAgLy8gQ29udmVydCB0byBsaXN0XG4gICR2YWx1ZXM6IGlmKHR5cGUtb2YoJHZhbHVlcykgIT0gbGlzdCwgKCR2YWx1ZXMsKSwgJHZhbHVlcyk7XG5cbiAgJHZhbDogXCJcIjtcblxuICAvLyBMb29wIG92ZXIgZWFjaCB2YWx1ZSBhbmQgY2FsY3VsYXRlIHZhbHVlXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcbiAgICBAaWYgJHZhbHVlID09IDAge1xuICAgICAgJHZhbDogJHZhbCArIFwiIDBcIjtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC8vIENhY2hlICR2YWx1ZSB1bml0XG4gICAgICAkdW5pdDogaWYodHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIsIHVuaXQoJHZhbHVlKSwgZmFsc2UpO1xuXG4gICAgICAvLyBJZiAkdmFsdWUgaXNuJ3QgYSBudW1iZXIgKGxpa2UgaW5oZXJpdCkgb3IgJHZhbHVlIGhhcyBhIHVuaXQgKG5vdCBweCBvciByZW0sIGxpa2UgMS41ZW0pIG9yICQgaXMgMCwganVzdCBwcmludCB0aGUgdmFsdWVcbiAgICAgIEBpZiBub3QgJHVuaXQgb3IgJHVuaXQgIT0gcHggYW5kICR1bml0ICE9IHJlbSB7XG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArICR2YWx1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAvLyBSZW1vdmUgdW5pdCBmcm9tICR2YWx1ZSBmb3IgY2FsY3VsYXRpb25zXG4gICAgICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArIGlmKCR1bml0ID09IHB4LCAxLCBkaXZpZGUoMSwgJHJmcy1yZW0tdmFsdWUpKSk7XG5cbiAgICAgICAgLy8gT25seSBhZGQgdGhlIG1lZGlhIHF1ZXJ5IGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgQGlmIGFicygkdmFsdWUpIDw9ICRyZnMtYmFzZS12YWx1ZSBvciBub3QgJGVuYWJsZS1yZnMge1xuICAgICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWV9cHgpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgICAkdmFsdWUtbWluOiAkcmZzLWJhc2UtdmFsdWUgKyBkaXZpZGUoYWJzKCR2YWx1ZSkgLSAkcmZzLWJhc2UtdmFsdWUsICRyZnMtZmFjdG9yKTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gJHZhbHVlIGFuZCB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICAgICR2YWx1ZS1kaWZmOiBhYnMoJHZhbHVlKSAtICR2YWx1ZS1taW47XG5cbiAgICAgICAgICAvLyBCYXNlIHZhbHVlIGZvcm1hdHRpbmdcbiAgICAgICAgICAkbWluLXdpZHRoOiBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUtbWluLCAkcmZzLXJlbS12YWx1ZSl9cmVtLCAjeyR2YWx1ZS1taW59cHgpO1xuXG4gICAgICAgICAgLy8gVXNlIG5lZ2F0aXZlIHZhbHVlIGlmIG5lZWRlZFxuICAgICAgICAgICRtaW4td2lkdGg6IGlmKCR2YWx1ZSA8IDAsIC0kbWluLXdpZHRoLCAkbWluLXdpZHRoKTtcblxuICAgICAgICAgIC8vIFVzZSBgdm1pbmAgaWYgdHdvLWRpbWVuc2lvbmFsIGlzIGVuYWJsZWRcbiAgICAgICAgICAkdmFyaWFibGUtdW5pdDogaWYoJHJmcy10d28tZGltZW5zaW9uYWwsIHZtaW4sIHZ3KTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdmFyaWFibGUgd2lkdGggYmV0d2VlbiAwIGFuZCAkcmZzLWJyZWFrcG9pbnRcbiAgICAgICAgICAkdmFyaWFibGUtd2lkdGg6ICN7ZGl2aWRlKCR2YWx1ZS1kaWZmICogMTAwLCAkcmZzLWJyZWFrcG9pbnQpfSN7JHZhcmlhYmxlLXVuaXR9O1xuXG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBjYWxjdWxhdGVkIHZhbHVlXG4gICAgICAgICAgJHZhbDogJHZhbCArIFwiIGNhbGMoXCIgKyAkbWluLXdpZHRoICsgaWYoJHZhbHVlIDwgMCwgXCIgLSBcIiwgXCIgKyBcIikgKyAkdmFyaWFibGUtd2lkdGggKyBcIilcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBmaXJzdCBzcGFjZVxuICBAcmV0dXJuIHVucXVvdGUoc3RyLXNsaWNlKCR2YWwsIDIpKTtcbn1cblxuLy8gUkZTIG1peGluXG5AbWl4aW4gcmZzKCR2YWx1ZXMsICRwcm9wZXJ0eTogZm9udC1zaXplKSB7XG4gIEBpZiAkdmFsdWVzICE9IG51bGwge1xuICAgICR2YWw6IHJmcy12YWx1ZSgkdmFsdWVzKTtcbiAgICAkZmx1aWQtdmFsOiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcyk7XG5cbiAgICAvLyBEbyBub3QgcHJpbnQgdGhlIG1lZGlhIHF1ZXJ5IGlmIHJlc3BvbnNpdmUgJiBub24tcmVzcG9uc2l2ZSB2YWx1ZXMgYXJlIHRoZSBzYW1lXG4gICAgQGlmICR2YWwgPT0gJGZsdWlkLXZhbCB7XG4gICAgICAjeyRwcm9wZXJ0eX06ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIF9yZnMtcnVsZSAoKSB7XG4gICAgICAgICN7JHByb3BlcnR5fTogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgJHZhbCwgJGZsdWlkLXZhbCk7XG5cbiAgICAgICAgLy8gSW5jbHVkZSBzYWZhcmkgaWZyYW1lIHJlc2l6ZSBmaXggaWYgbmVlZGVkXG4gICAgICAgIG1pbi13aWR0aDogaWYoJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4LCAoMCAqIDF2dyksIG51bGwpO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5LXJ1bGUgKCkge1xuICAgICAgICAjeyRwcm9wZXJ0eX06IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksICRmbHVpZC12YWwsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTaG9ydGhhbmQgaGVscGVyIG1peGluc1xuQG1peGluIGZvbnQtc2l6ZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSk7XG59XG5cbkBtaXhpbiBwYWRkaW5nKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nKTtcbn1cblxuQG1peGluIHBhZGRpbmctdG9wKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLXRvcCk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLXJpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLXJpZ2h0KTtcbn1cblxuQG1peGluIHBhZGRpbmctYm90dG9tKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWJvdHRvbSk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLWxlZnQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctbGVmdCk7XG59XG5cbkBtaXhpbiBtYXJnaW4oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbik7XG59XG5cbkBtaXhpbiBtYXJnaW4tdG9wKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tdG9wKTtcbn1cblxuQG1peGluIG1hcmdpbi1yaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLXJpZ2h0KTtcbn1cblxuQG1peGluIG1hcmdpbi1ib3R0b20oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1ib3R0b20pO1xufVxuXG5AbWl4aW4gbWFyZ2luLWxlZnQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1sZWZ0KTtcbn1cbiIsIi8vIExpc3RzXG5cbi8vIFVuc3R5bGVkIGtlZXBzIGxpc3QgaXRlbXMgYmxvY2sgbGV2ZWwsIGp1c3QgcmVtb3ZlcyBkZWZhdWx0IGJyb3dzZXIgcGFkZGluZyBhbmQgbGlzdC1zdHlsZVxuQG1peGluIGxpc3QtdW5zdHlsZWQge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4iXX0= */