.u-type--light {
  font-weight: 300;
}

.u-type--regular {
  font-weight: 400;
}

.u-type--medium {
  font-weight: 500;
}

.u-type--bold {
  font-weight: 700;
}

/* breakpoints */
@media (min-width: 640px) {
  .c-accent--left {
    position: relative;
    overflow: visible !important;
  }
  .c-accent--left::before {
    content: "";
    background-color: #da251d;
    position: absolute;
    z-index: -1;
  }
  .c-accent--left img {
    width: 100%;
  }
  .c-accent--left::before {
    top: 5%;
    width: 100%;
    height: 85%;
    max-height: 512px;
    left: -24px;
  }
  .c-accent--right {
    position: relative;
    overflow: visible !important;
  }
  .c-accent--right::before {
    content: "";
    background-color: #da251d;
    position: absolute;
    z-index: -1;
  }
  .c-accent--right img {
    width: 100%;
  }
  .c-accent--right::before {
    top: 5%;
    width: 100%;
    height: 85%;
    max-height: 512px;
    right: -24px;
  }
}
@media (min-width: 1225px) {
  .c-accent--left::before {
    left: -32px;
  }
  .c-accent--right::before {
    right: -32px;
  }
}
.component.video {
  position: relative;
  overflow: visible !important;
}
.component.video::before {
  content: "";
  background-color: #da251d;
  position: absolute;
  z-index: -1;
}
.component.video img {
  width: 100%;
}
.component.video {
  margin-bottom: 32px;
  display: block;
}
.component.video .mejs-container {
  overflow: hidden;
  min-width: 100%;
  -webkit-box-shadow: 0 8px 24px 2px rgba(0, 0, 0, 0.1), 0 0px 24px 5px rgba(0, 0, 0, 0.1), 0 0px 10px 0 rgba(0, 0, 0, 0.1);
          box-shadow: 0 8px 24px 2px rgba(0, 0, 0, 0.1), 0 0px 24px 5px rgba(0, 0, 0, 0.1), 0 0px 10px 0 rgba(0, 0, 0, 0.1);
}
[data-whatinput=keyboard] .component.video .mejs-container:focus, [data-whatintent=keyboard] .component.video .mejs-container:focus {
  outline: 3px dotted #000000;
}
.component.video .mejs-overlay-play {
  max-width: 100%;
}
.component.video .mejs-controls .mejs-button button {
  -webkit-box-shadow: none;
          box-shadow: none;
}
.component.video .video-init {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 80px;
  height: 80px;
  margin: -40px 0 0 -40px;
  background: url("/-/media/Base-Themes/Core-Libraries/styles/mejs-controls.svg") no-repeat;
  background-position: 0 -39px;
  overflow: hidden;
  z-index: 1;
}
.component.video::before {
  width: 128px;
  height: 128px;
}
.component.video .video-caption {
  font-family: Verdana, Tahoma, sans-serif;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  font-size: 1.6rem;
  line-height: 24px;
  font-style: normal;
  font-weight: 500;
  margin-top: 4px;
}
.component.video iframe {
  width: 100%;
}

@media (max-width: 1224px) {
  :not(.toggle-content) > .component.video::before {
    top: -16px;
    left: -16px;
  }
}
@media (min-width: 1225px) {
  :not(.toggle-content) > .component.video {
    margin-left: -104px;
    margin-right: -104px;
    margin-bottom: 96px;
  }
  :not(.toggle-content) > .component.video::before {
    bottom: -32px;
    width: 256px;
    height: 256px;
    left: -32px;
  }
  :not(.toggle-content) > .component.video .video-caption {
    position: absolute;
    left: 256px;
    margin-top: 8px;
    margin-bottom: 32px;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFic3RyYWN0cy92YXJzL190eXBlLWNsYXNzZXMuc2NzcyIsImNvbXBvbmVudC12aWRlby5jc3MiLCJhYnN0cmFjdHMvX21peGlucy5zY3NzIiwiYWJzdHJhY3RzL21peGlucy9fc2Fzcy1tcS1tb2Quc2NzcyIsImNvbXBvbmVudHMvX2FjY2VudC1iYXJzLnNjc3MiLCJjb21wb25lbnQtdmlkZW8uc2NzcyIsImFic3RyYWN0cy9taXhpbnMvX3NoYWRvd3Muc2NzcyIsImNvbW1vbi11aS90eXBvZ3JhcGh5L19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHSTtFQUNJLGdCQUFBO0FDRlI7O0FEQ0k7RUFDSSxnQkFBQTtBQ0VSOztBREhJO0VBQ0ksZ0JBQUE7QUNNUjs7QURQSTtFQUNJLGdCQUFBO0FDVVI7O0FDVUEsZ0JBQUE7QUNpT1E7RUM3Tko7SUFoQkEsa0JBQUE7SUFDQSw0QkFBQTtFSFFGO0VHTkU7SUFDSSxXQUFBO0lBQ0EseUJBWGU7SUFZZixrQkFBQTtJQUNBLFdBQUE7RUhRTjtFR0xFO0lBQ0ksV0FBQTtFSE9OO0VHQ007SUFDSSxPQUFBO0lBQ0EsV0FBQTtJQUNBLFdBQUE7SUFDQSxpQkFBQTtJQUNBLFdBQUE7RUhDVjtFR0dFO0lBNUJBLGtCQUFBO0lBQ0EsNEJBQUE7RUg0QkY7RUcxQkU7SUFDSSxXQUFBO0lBQ0EseUJBWGU7SUFZZixrQkFBQTtJQUNBLFdBQUE7RUg0Qk47RUd6QkU7SUFDSSxXQUFBO0VIMkJOO0VHUE07SUFDSSxPQUFBO0lBQ0EsV0FBQTtJQUNBLFdBQUE7SUFDQSxpQkFBQTtJQUNBLFlBQUE7RUhTVjtBQUNGO0FFK0xRO0VDbE1BO0lBQ0ksV0FBQTtFSE1WO0VHRE07SUFDSSxZQUFBO0VIR1Y7QUFDRjtBSTlDQTtFRFJJLGtCQUFBO0VBQ0EsNEJBQUE7QUh5REo7QUd2REk7RUFDSSxXQUFBO0VBQ0EseUJBWGU7RUFZZixrQkFBQTtFQUNBLFdBQUE7QUh5RFI7QUd0REk7RUFDSSxXQUFBO0FId0RSO0FJM0RBO0VBRUksbUJBVlk7RUFXWixjQUFBO0FKNERKO0FJMURJO0VBQ0ksZ0JBQUE7RUFDQSxlQUFBO0VDYkoseUhBQUE7VUFBQSxpSEFBQTtBTDBFSjtBSXpEWTtFQUVJLDJCQUFBO0FKMERoQjtBSXJESTtFQUNJLGVBQUE7QUp1RFI7QUlsRFk7RUFDSSx3QkFBQTtVQUFBLGdCQUFBO0FKb0RoQjtBSS9DSTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0VBQ0EseUZBQUE7RUFDQSw0QkFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtBSmlEUjtBSTlDSTtFQUNJLFlBakRTO0VBa0RULGFBbERTO0FKa0dqQjtBSTdDSTtFRW5CSSx3Q0FhYztFQVBsQixrQ0FBQTtFQUNBLG1DQUFBO0VBdENJLGlCQUFBO0VBQ0EsaUJBQUE7RUFvREksa0JBQUE7RUFBQSxnQkFBQTtFRkRKLGVBNURTO0FKaUhqQjtBSWxESTtFQUNJLFdBQUE7QUpvRFI7O0FFMkhRO0VFeEtJO0lBQ0ksVUFBQTtJQUNBLFdBQUE7RUppRGQ7QUFDRjtBRW9IUTtFRTlKSjtJQUNJLG1CQUFBO0lBQ0Esb0JBQUE7SUFDQSxtQkFqRlM7RUo4SGY7RUkzQ007SUFDSSxhQUFBO0lBQ0EsWUFsRks7SUFtRkwsYUFuRks7SUFvRkwsV0FBQTtFSjZDVjtFSTFDTTtJQUNJLGtCQUFBO0lBQ0EsV0F6Rks7SUEwRkwsZUFqR0k7SUFrR0osbUJBL0ZJO0VKMklkO0FBQ0YiLCJmaWxlIjoiY29tcG9uZW50LXZpZGVvLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgXCJ0eXBlXCI7XHJcblxyXG5AZWFjaCAkbmFtZSwgJHN0eWxlIGluIHR5cGUuJHVpLXR5cG9ncmFwaHktZm9udC13ZWlnaHRzIHtcclxuICAgIC51LXR5cGUtLSN7JG5hbWV9IHtcclxuICAgICAgICBmb250LXdlaWdodDogI3skc3R5bGV9O1xyXG4gICAgfVxyXG59XHJcbiIsIi51LXR5cGUtLWxpZ2h0IHtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuLnUtdHlwZS0tcmVndWxhciB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi51LXR5cGUtLW1lZGl1bSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi51LXR5cGUtLWJvbGQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4vKiBicmVha3BvaW50cyAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gIC5jLWFjY2VudC0tbGVmdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmMtYWNjZW50LS1sZWZ0OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2RhMjUxZDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogLTE7XG4gIH1cbiAgLmMtYWNjZW50LS1sZWZ0IGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmMtYWNjZW50LS1sZWZ0OjpiZWZvcmUge1xuICAgIHRvcDogNSU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA4NSU7XG4gICAgbWF4LWhlaWdodDogNTEycHg7XG4gICAgbGVmdDogLTI0cHg7XG4gIH1cbiAgLmMtYWNjZW50LS1yaWdodCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmMtYWNjZW50LS1yaWdodDo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYTI1MWQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG4gIC5jLWFjY2VudC0tcmlnaHQgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuICAuYy1hY2NlbnQtLXJpZ2h0OjpiZWZvcmUge1xuICAgIHRvcDogNSU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA4NSU7XG4gICAgbWF4LWhlaWdodDogNTEycHg7XG4gICAgcmlnaHQ6IC0yNHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIyNXB4KSB7XG4gIC5jLWFjY2VudC0tbGVmdDo6YmVmb3JlIHtcbiAgICBsZWZ0OiAtMzJweDtcbiAgfVxuICAuYy1hY2NlbnQtLXJpZ2h0OjpiZWZvcmUge1xuICAgIHJpZ2h0OiAtMzJweDtcbiAgfVxufVxuLmNvbXBvbmVudC52aWRlbyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbn1cbi5jb21wb25lbnQudmlkZW86OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYTI1MWQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogLTE7XG59XG4uY29tcG9uZW50LnZpZGVvIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNvbXBvbmVudC52aWRlbyB7XG4gIG1hcmdpbi1ib3R0b206IDMycHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLmNvbXBvbmVudC52aWRlbyAubWVqcy1jb250YWluZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtaW4td2lkdGg6IDEwMCU7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwcHggMjRweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDBweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuW2RhdGEtd2hhdGlucHV0PWtleWJvYXJkXSAuY29tcG9uZW50LnZpZGVvIC5tZWpzLWNvbnRhaW5lcjpmb2N1cywgW2RhdGEtd2hhdGludGVudD1rZXlib2FyZF0gLmNvbXBvbmVudC52aWRlbyAubWVqcy1jb250YWluZXI6Zm9jdXMge1xuICBvdXRsaW5lOiAzcHggZG90dGVkICMwMDAwMDA7XG59XG4uY29tcG9uZW50LnZpZGVvIC5tZWpzLW92ZXJsYXktcGxheSB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5jb21wb25lbnQudmlkZW8gLm1lanMtY29udHJvbHMgLm1lanMtYnV0dG9uIGJ1dHRvbiB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4uY29tcG9uZW50LnZpZGVvIC52aWRlby1pbml0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB3aWR0aDogODBweDtcbiAgaGVpZ2h0OiA4MHB4O1xuICBtYXJnaW46IC00MHB4IDAgMCAtNDBweDtcbiAgYmFja2dyb3VuZDogdXJsKFwiLy0vbWVkaWEvQmFzZS1UaGVtZXMvQ29yZS1MaWJyYXJpZXMvc3R5bGVzL21lanMtY29udHJvbHMuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMzlweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgei1pbmRleDogMTtcbn1cbi5jb21wb25lbnQudmlkZW86OmJlZm9yZSB7XG4gIHdpZHRoOiAxMjhweDtcbiAgaGVpZ2h0OiAxMjhweDtcbn1cbi5jb21wb25lbnQudmlkZW8gLnZpZGVvLWNhcHRpb24ge1xuICBmb250LWZhbWlseTogVmVyZGFuYSwgVGFob21hLCBzYW5zLXNlcmlmO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgZm9udC1zaXplOiAxLjZyZW07XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIG1hcmdpbi10b3A6IDRweDtcbn1cbi5jb21wb25lbnQudmlkZW8gaWZyYW1lIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjI0cHgpIHtcbiAgOm5vdCgudG9nZ2xlLWNvbnRlbnQpID4gLmNvbXBvbmVudC52aWRlbzo6YmVmb3JlIHtcbiAgICB0b3A6IC0xNnB4O1xuICAgIGxlZnQ6IC0xNnB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIyNXB4KSB7XG4gIDpub3QoLnRvZ2dsZS1jb250ZW50KSA+IC5jb21wb25lbnQudmlkZW8ge1xuICAgIG1hcmdpbi1sZWZ0OiAtMTA0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMTA0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOTZweDtcbiAgfVxuICA6bm90KC50b2dnbGUtY29udGVudCkgPiAuY29tcG9uZW50LnZpZGVvOjpiZWZvcmUge1xuICAgIGJvdHRvbTogLTMycHg7XG4gICAgd2lkdGg6IDI1NnB4O1xuICAgIGhlaWdodDogMjU2cHg7XG4gICAgbGVmdDogLTMycHg7XG4gIH1cbiAgOm5vdCgudG9nZ2xlLWNvbnRlbnQpID4gLmNvbXBvbmVudC52aWRlbyAudmlkZW8tY2FwdGlvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDI1NnB4O1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiAzMnB4O1xuICB9XG59IiwiLy8gQGltcG9ydCAnfnNhc3MtbXEvbXEnO1xyXG5AdXNlIFwic2FzczpsaXN0XCI7XHJcbkB1c2UgJ21peGlucy9zYXNzLW1xLW1vZC5zY3NzJztcclxuQHVzZSAnLi4vY29tbW9uLXVpL3R5cG9ncmFwaHkvbWl4aW5zJztcclxuQHVzZSAnbWl4aW5zL2FjY2Vzc2liaWxpdHknO1xyXG5AdXNlICdtaXhpbnMvYnV0dG9uJztcclxuQHVzZSAnbWl4aW5zL2xpbmsnO1xyXG5AdXNlICdtaXhpbnMvb3ZlcmxheSc7XHJcbkB1c2UgJ21peGlucy90cmFuc2l0aW9ucyc7XHJcbkB1c2UgJ21peGlucy9zaGFkb3dzJztcclxuQHVzZSAnbWl4aW5zL3RhZyc7XHJcbkB1c2UgJy4uL2Fic3RyYWN0cy92YXJzL2NvbG9ycyc7XHJcblxyXG5AZm9yd2FyZCAnbWl4aW5zL3Nhc3MtbXEtbW9kLnNjc3MnO1xyXG5AZm9yd2FyZCAnLi4vY29tbW9uLXVpL3R5cG9ncmFwaHkvbWl4aW5zJztcclxuQGZvcndhcmQgJ21peGlucy9hY2Nlc3NpYmlsaXR5JztcclxuQGZvcndhcmQgJ21peGlucy9idXR0b24nO1xyXG5AZm9yd2FyZCAnbWl4aW5zL2xpbmsnO1xyXG5AZm9yd2FyZCAnbWl4aW5zL292ZXJsYXknO1xyXG5AZm9yd2FyZCAnbWl4aW5zL3RyYW5zaXRpb25zJztcclxuQGZvcndhcmQgJ21peGlucy9zaGFkb3dzJztcclxuQGZvcndhcmQgJ21peGlucy90YWcnO1xyXG5cclxuLy8gQmVsb3cgYXJlIG1peGluJ3MgZnJvbSBGWEFcclxuLyogYnJlYWtwb2ludHMgKi9cclxuXHJcbiRicmVhay1kZXNrdG9wOiA5NjBweDtcclxuJGJyZWFrLW1vYmlsZTogMzgwcHg7XHJcbiRicmVhay1tb2JpbGUtaG9yaXpvbnRhbDogNjQwcHg7XHJcbiRicmVhay1tb2JpbGUtbGFyZ2U6IDc4NnB4O1xyXG5cclxuQG1peGluIHdyYXBwZXIoKSB7XHJcbiAgICBtYXgtd2lkdGg6IDk2MHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDtcclxufVxyXG5cclxuQG1peGluIGNsZWFyZml4IHtcclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGU7XHJcbiAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmb250LXNpemUoJHNpemVWYWx1ZTogMS42KSB7XHJcbiAgICBmb250LXNpemU6ICgkc2l6ZVZhbHVlICogMTApICsgcHg7XHJcbiAgICBmb250LXNpemU6ICRzaXplVmFsdWUgKyByZW07XHJcbn1cclxuXHJcbkBtaXhpbiBvcGVuc2Fucy1mb250LXN0YWNrKCkge1xyXG4gICAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIEhlbHZldGljYSwgVmVyZGFuYSwgVGFob21hLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG5AbWl4aW4gbG9hZGluZy1naWYoKSB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSFpwWlhkQ2IzZzlJakFnTUNBek1pQXpNaUlnZDJsa2RHZzlJak15SWlCb1pXbG5hSFE5SWpNeUlpQm1hV3hzUFNKaWJHRmpheUkrRFFvZ0lEeHdZWFJvSUNCdmNHRmphWFI1UFNJdU1qVWlJR1E5SWsweE5pQXdJRUV4TmlBeE5pQXdJREFnTUNBeE5pQXpNaUJCTVRZZ01UWWdNQ0F3SURBZ01UWWdNQ0JOTVRZZ05DQkJNVElnTVRJZ01DQXdJREVnTVRZZ01qZ2dRVEV5SURFeUlEQWdNQ0F4SURFMklEUWlMejROQ2lBZ1BIQmhkR2dnWm1sc2JEMG5JekZoT0RCaU5pY2daRDBpVFRFMklEQWdRVEUySURFMklEQWdNQ0F4SURNeUlERTJJRXd5T0NBeE5pQkJNVElnTVRJZ01DQXdJREFnTVRZZ05Ib2lQZzBLSUNBZ0lEeGhibWx0WVhSbFZISmhibk5tYjNKdElHRjBkSEpwWW5WMFpVNWhiV1U5SW5SeVlXNXpabTl5YlNJZ2RIbHdaVDBpY205MFlYUmxJaUJtY205dFBTSXdJREUySURFMklpQjBiejBpTXpZd0lERTJJREUySWlCa2RYSTlJakF1T0hNaUlISmxjR1ZoZEVOdmRXNTBQU0pwYm1SbFptbHVhWFJsSWlBdlBnMEtJQ0E4TDNCaGRHZytEUW84TDNOMlp6NE5DZz09KTtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG59XHJcblxyXG5AbWl4aW4gcmVzcG9uZC10bygkbWVkaWEpIHtcclxuICAgIEBpZiAkbWVkaWE9PW1vYmlsZSB7XHJcbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstbW9iaWxlKSB7XHJcbiAgICAgICAgICAgIEBjb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRtZWRpYT09bW9iaWxlLWhvcml6b250YWwge1xyXG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLW1vYmlsZS1ob3Jpem9udGFsIC0gMSkge1xyXG4gICAgICAgICAgICBAY29udGVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAkbWVkaWE9PW1vYmlsZS1sYXJnZSB7XHJcbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstbW9iaWxlLWxhcmdlKSB7XHJcbiAgICAgICAgICAgIEBjb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRtZWRpYT09dGFibGV0IHtcclxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1tb2JpbGUgKyAxKSBhbmQgKG1heC13aWR0aDogJGJyZWFrLWRlc2t0b3AgLSAxKSB7XHJcbiAgICAgICAgICAgIEBjb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIGlmICRtZWRpYT09YWxsLW1vYmlsZSB7XHJcbiAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstZGVza3RvcCAtIDEpIHtcclxuICAgICAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgJG1lZGlhPT1kZXNrdG9wIHtcclxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1kZXNrdG9wKSB7XHJcbiAgICAgICAgICAgIEBjb250ZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQG1peGluIGJvcmRlci1iYXNpYygkcG9zaXRpb246IGFsbCwgJGJvcmRlci1jb2xvcjogY29sb3JzLiRib3JkZXItZ3JheSwgJGJvcmRlci13aWR0aDogMXB4KSB7XHJcbiAgICBAaWYoJHBvc2l0aW9uPT10b3ApIHtcclxuICAgICAgICBib3JkZXItdG9wOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZigkcG9zaXRpb249PWJvdHRvbSkge1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206ICRib3JkZXItd2lkdGggc29saWQgJGJvcmRlci1jb2xvcjtcclxuICAgIH1cclxuICAgIEBlbHNlIGlmKCRwb3NpdGlvbj09bGVmdCkge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZigkcG9zaXRpb249PXJpZ2h0KSB7XHJcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoIHNvbGlkICRib3JkZXItY29sb3I7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtaXhpbiBmaXhlZC1iZygkcG9zLCAkbWluLWhlaWdodDogMjQwcHgpIHtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246ICRwb3M7XHJcbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGZpeGVkO1xyXG4gICAgbWluLWhlaWdodDogJG1pbi1oZWlnaHQ7XHJcbn1cclxuXHJcbkBtaXhpbiBsaW5lYXItZ3JhZGllbnQoJGRpcmVjdGlvbiwgJGNvbG9yLXN0b3BzLi4uKSB7XHJcbiAgICAvLyBEaXJlY3Rpb24gaGFzIGJlZW4gb21pdHRlZCBhbmQgaGFwcGVucyB0byBiZSBhIGNvbG9yLXN0b3BcclxuICAgIEBpZiBpcy1kaXJlY3Rpb24oJGRpcmVjdGlvbik9PWZhbHNlIHtcclxuICAgICAgICAkY29sb3Itc3RvcHM6ICRkaXJlY3Rpb24sICRjb2xvci1zdG9wcztcclxuICAgICAgICAkZGlyZWN0aW9uOiAxODBkZWc7XHJcbiAgICB9XHJcblxyXG4gICAgJGZpcnN0LWNvbG9yLXN0b3AtZ3JvdXA6IGxpc3QubnRoKCRjb2xvci1zdG9wcywgMSk7XHJcbiAgICAkZmlyc3QtY29sb3Itc3RvcDogbGlzdC5udGgoJGZpcnN0LWNvbG9yLXN0b3AtZ3JvdXAsIDEpO1xyXG4gICAgYmFja2dyb3VuZDogJGZpcnN0LWNvbG9yLXN0b3A7XHJcbiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWdhY3ktZGlyZWN0aW9uKCRkaXJlY3Rpb24pLCAkY29sb3Itc3RvcHMpO1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCRkaXJlY3Rpb24sICRjb2xvci1zdG9wcyk7XHJcbn1cclxuIiwiLy9tb2RkZWQgdG8gdXNlIHB4XHJcblxyXG5AY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcclxuQHVzZSAnLi4vdmFycy9icmVha3BvaW50cyc7XHJcbkB1c2UgJ3Nhc3M6bGlzdCc7XHJcbkB1c2UgJ3Nhc3M6bWFwJztcclxuQHVzZSAnc2FzczptZXRhJztcclxuQHVzZSAnc2FzczptYXRoJztcclxuQHVzZSAnc2FzczpzdHJpbmcnO1xyXG4vLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXHJcblxyXG4vLy8gQmFzZSBmb250IHNpemUgb24gdGhlIGA8Ym9keT5gIGVsZW1lbnRcclxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcclxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xyXG5cclxuLy8vIFJlc3BvbnNpdmUgbW9kZVxyXG4vLy9cclxuLy8vIFNldCB0byBgZmFsc2VgIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEBtZWRpYSBxdWVyaWVzLFxyXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcclxuLy8vXHJcbi8vLyBZb3UgY291bGQgY3JlYXRlIGEgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gb2xkZXIgYnJvd3NlcnMsXHJcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3NcclxuLy8vICAvLyBvbGQtaWUuc2Nzc1xyXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcclxuLy8vICBAaW1wb3J0ICdtYWluJzsgLy8gQG1lZGlhIHF1ZXJpZXMgaW4gdGhpcyBmaWxlIHdpbGwgYmUgcmFzdGVyaXplZCB1cCB0byAkbXEtc3RhdGljLWJyZWFrcG9pbnRcclxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcclxuLy8vXHJcbi8vLyBAdHlwZSBCb29sZWFuXHJcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cclxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQnJlYWtwb2ludCBsaXN0XHJcbi8vL1xyXG4vLy8gTmFtZSB5b3VyIGJyZWFrcG9pbnRzIGluIGEgd2F5IHRoYXQgY3JlYXRlcyBhIHViaXF1aXRvdXMgbGFuZ3VhZ2VcclxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cclxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cclxuLy8vXHJcbi8vLyBAdHlwZSBNYXBcclxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xyXG4kbXEtYnJlYWtwb2ludHM6IGJyZWFrcG9pbnRzLiRtcS1icmVha3BvaW50cyAhZGVmYXVsdDtcclxuXHJcbi8vLyBTdGF0aWMgYnJlYWtwb2ludCAoZm9yIGZpeGVkLXdpZHRoIGxheW91dHMpXHJcbi8vL1xyXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXHJcbi8vLyBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgd2lkdGggZm9yIHRoZSBmaXhlZC13aWR0aCBsYXlvdXRcclxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3NcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzXHJcbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xyXG4vLy8gIC8vXHJcbi8vLyAgLy8gSWdub3JlIGFsbCBzdHlsZXMgYWJvdmUgdGFibGV0IGJyZWFrcG9pbnQsXHJcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChlLmcuIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXHJcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xyXG4vLy8gICRtcS1zdGF0aWMtYnJlYWtwb2ludDogdGFibGV0O1xyXG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxyXG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxyXG4vLy9cclxuLy8vIEB0eXBlIFN0cmluZ1xyXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcclxuJG1xLXN0YXRpYy1icmVha3BvaW50OiBtZDIgIWRlZmF1bHQ7XHJcblxyXG4vLy8gU2hvdyBicmVha3BvaW50cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxyXG4vLy9cclxuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXHJcbi8vLyByaWdodCBjb3JuZXIgb2YgeW91ciBzaXRlIGR1cmluZyBkZXZlbG9wbWVudCwgYWRkIHRoZSBicmVha3BvaW50c1xyXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLCBlLmcuIChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXHJcbi8vL1xyXG4vLy8gQHR5cGUgbWFwXHJcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcclxuXHJcbi8vLyBDdXN0b21pemUgdGhlIG1lZGlhIHR5cGUgKGUuZy4gYEBtZWRpYSBzY3JlZW5gIG9yIGBAbWVkaWEgcHJpbnRgKVxyXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcclxuLy8vXHJcbi8vLyBAdHlwZSBTdHJpbmdcclxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXHJcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XHJcblxyXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRweCAtIHZhbHVlIHRvIGNvbnZlcnRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgKCRtcS1iYXNlLWZvbnQtc2l6ZSkgLSBgPGJvZHk+YCBmb250IHNpemVcclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBzY3NzXHJcbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xyXG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XHJcbi8vL1xyXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxyXG4vLy8gQHJldHVybnMge051bWJlcn1cclxuQGZ1bmN0aW9uIG1xLXB4MmVtKCRweCwgJGJhc2UtZm9udC1zaXplOiAkbXEtYmFzZS1mb250LXNpemUpIHtcclxuICAgIEBpZiBtYXRoLmlzLXVuaXRsZXNzKCRweCkge1xyXG4gICAgICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiO1xyXG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xyXG4gICAgfVxyXG4gICAgQGVsc2UgaWYgbWF0aC51bml0KCRweCkgPT0gJ2VtJyB7XHJcbiAgICAgICAgQHJldHVybiAkcHg7XHJcbiAgICB9XHJcblxyXG4gICAgQHJldHVybiBtYXRoLmRpdigkcHgsICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07XHJcbn1cclxuXHJcbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcclxuLy8vXHJcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50LiBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2Nzc1xyXG4vLy8gICR0YWJsZXQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKHRhYmxldCk7XHJcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xyXG4vLy9cclxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xyXG5AZnVuY3Rpb24gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJG5hbWUsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XHJcbiAgICBAaWYgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xyXG4gICAgICAgIEByZXR1cm4gbWFwLmdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgICBAd2FybiBcIkJyZWFrcG9pbnQgI3skbmFtZX0gd2Fzbid0IGZvdW5kIGluICRicmVha3BvaW50cy5cIjtcclxuICAgICAgICBAcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vLyBNZWRpYSBRdWVyeSBtaXhpblxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcclxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJHVudGlsIChmYWxzZSkgLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXHJcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgKGZhbHNlKSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xyXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlICgkbXEtbWVkaWEtdHlwZSkgLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXHJcbi8vL1xyXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XHJcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cylcclxuLy8vIEBpZ25vcmUgQHBhcmFtIHtTdHJpbmd9ICRzdGF0aWMtYnJlYWtwb2ludCAoJG1xLXN0YXRpYy1icmVha3BvaW50KVxyXG4vLy9cclxuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcclxuLy8vXHJcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxyXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXHJcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc3RhdGljLWJyZWFrcG9pbnRcclxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXHJcbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxyXG4vLy9cclxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3NcclxuLy8vICAuZWxlbWVudCB7XHJcbi8vLyAgICBAaW5jbHVkZSBtaXhpbnMubXEoJGZyb206IG1vYmlsZSkge1xyXG4vLy8gICAgICBjb2xvcjogcmVkO1xyXG4vLy8gICAgfVxyXG4vLy8gICAgQGluY2x1ZGUgbWl4aW5zLm1xKCR1bnRpbDogdGFibGV0KSB7XHJcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xyXG4vLy8gICAgfVxyXG4vLy8gICAgQGluY2x1ZGUgbWl4aW5zLm1xKG1vYmlsZSwgdGFibGV0KSB7XHJcbi8vLyAgICAgIGNvbG9yOiBncmVlbjtcclxuLy8vICAgIH1cclxuLy8vICAgIEBpbmNsdWRlIG1peGlucy5tcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xyXG4vLy8gICAgICBjb2xvcjogdGVhbDtcclxuLy8vICAgIH1cclxuLy8vICAgIEBpbmNsdWRlIG1peGlucy5tcSg5NTBweCkge1xyXG4vLy8gICAgICBjb2xvcjogaG90cGluaztcclxuLy8vICAgIH1cclxuLy8vICAgIEBpbmNsdWRlIG1peGlucy5tcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcclxuLy8vICAgICAgY29sb3I6IGhvdHBpbms7XHJcbi8vLyAgICB9XHJcbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XHJcbi8vLyAgICAkbXktYnJlYWtwb2ludHM6IChMOiA5MDBweCwgWEw6IDEyMDBweCk7XHJcbi8vLyAgICBAaW5jbHVkZSBtaXhpbnMubXEoTCwgJGJyZWFrcG9pbnRzOiAkbXktYnJlYWtwb2ludHMsICRzdGF0aWMtYnJlYWtwb2ludDogTCkge1xyXG4vLy8gICAgICBjb2xvcjogaG90cGluaztcclxuLy8vICAgIH1cclxuLy8vICB9XHJcbkBtaXhpbiBtcSggJGZyb206IGZhbHNlLCAkdW50aWw6IGZhbHNlLCAkYW5kOiBmYWxzZSwgJGVtcy1vbjogZmFsc2UsICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsICRyZXNwb25zaXZlOiAkbXEtcmVzcG9uc2l2ZSwgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnQgKSB7XHJcbiAgICAkbWluLXdpZHRoOiAwO1xyXG4gICAgJG1heC13aWR0aDogMDtcclxuICAgICRtZWRpYS1xdWVyeTogJyc7XHJcblxyXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXHJcbiAgICBAaWYgJGZyb20ge1xyXG4gICAgICAgIEBpZiBtZXRhLnR5cGUtb2YoJGZyb20pID09ICdudW1iZXInIHtcclxuICAgICAgICAgICAgQGlmICRlbXMtb24ge1xyXG4gICAgICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICRtaW4td2lkdGg6ICRmcm9tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgQGlmICRlbXMtb24ge1xyXG4gICAgICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxyXG4gICAgQGlmICR1bnRpbCB7XHJcbiAgICAgICAgQGlmIG1ldGEudHlwZS1vZigkdW50aWwpID09ICdudW1iZXInIHtcclxuICAgICAgICAgICAgQGlmICRlbXMtb24ge1xyXG4gICAgICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkbWF4LXdpZHRoOiAkdW50aWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICBAaWYgJGVtcy1vbiB7XHJcbiAgICAgICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgJG1heC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHVudGlsLCAkYnJlYWtwb2ludHMpIC0gMXB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcclxuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXHJcbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xyXG4gICAgICAgICRzdGF0aWMtYnJlYWtwb2ludC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHN0YXRpYy1icmVha3BvaW50LCAkYnJlYWtwb2ludHMpO1xyXG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG51bGw7XHJcblxyXG4gICAgICAgIEBpZiAkZW1zLW9uIHtcclxuICAgICAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAkdGFyZ2V0LXdpZHRoOiAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE91dHB1dCBvbmx5IHJ1bGVzIHRoYXQgc3RhcnQgYXQgb3Igc3BhbiBvdXIgdGFyZ2V0IHdpZHRoXHJcbiAgICAgICAgQGlmICggJGFuZCA9PSBmYWxzZSBhbmQgJG1pbi13aWR0aCA8PSAkdGFyZ2V0LXdpZHRoIGFuZCAoICR1bnRpbCA9PSBmYWxzZSBvciAkbWF4LXdpZHRoID49ICR0YXJnZXQtd2lkdGggKSApIHtcclxuICAgICAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcclxuICAgIEBlbHNlIHtcclxuICAgICAgICBAaWYgJG1pbi13aWR0aCAhPSAwIHtcclxuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHtcclxuICAgICAgICAgICAgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgJGFuZCB7XHJcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xyXG4gICAgICAgIEBpZiAoJG1lZGlhLXR5cGUgPT0gJ2FsbCcgYW5kICRtZWRpYS1xdWVyeSAhPSAnJykge1xyXG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XHJcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyaW5nLnNsaWNlKHN0cmluZy51bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcclxuICAgICAgICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vLy8gUXVpY2sgc29ydFxyXG4vLy9cclxuLy8vIEBhdXRob3IgU2FtIFJpY2hhcmRzXHJcbi8vLyBAYWNjZXNzIHByaXZhdGVcclxuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3QgLSBMaXN0IHRvIHNvcnRcclxuLy8vIEByZXR1cm5zIHtMaXN0fSBTb3J0ZWQgTGlzdFxyXG5AZnVuY3Rpb24gX21xLXF1aWNrLXNvcnQoJGxpc3QpIHtcclxuICAgICRsZXNzOiAoKTtcclxuICAgICRlcXVhbDogKCk7XHJcbiAgICAkbGFyZ2U6ICgpO1xyXG5cclxuICAgIEBpZiBsaXN0Lmxlbmd0aCgkbGlzdCkgPiAxIHtcclxuICAgICAgICAkc2VlZDogbGlzdC5udGgoJGxpc3QsIG1hdGguY2VpbChsaXN0Lmxlbmd0aCgkbGlzdCkgLyAyKSk7XHJcblxyXG4gICAgICAgIEBlYWNoICRpdGVtIGluICRsaXN0IHtcclxuICAgICAgICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xyXG4gICAgICAgICAgICAgICAgJGVxdWFsOiBsaXN0LmFwcGVuZCgkZXF1YWwsICRpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAZWxzZSBpZiAoJGl0ZW0gPCAkc2VlZCkge1xyXG4gICAgICAgICAgICAgICAgJGxlc3M6IGxpc3QuYXBwZW5kKCRsZXNzLCAkaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGVsc2UgaWYgKCRpdGVtID4gJHNlZWQpIHtcclxuICAgICAgICAgICAgICAgICRsYXJnZTogbGlzdC5hcHBlbmQoJGxhcmdlLCAkaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEByZXR1cm4gbGlzdC5qb2luKGxpc3Quam9pbihfbXEtcXVpY2stc29ydCgkbGVzcyksICRlcXVhbCksIF9tcS1xdWljay1zb3J0KCRsYXJnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIEByZXR1cm4gJGxpc3Q7XHJcbn1cclxuXHJcbi8vLyBTb3J0IGEgbWFwIGJ5IHZhbHVlcyAod29ya3Mgd2l0aCBudW1iZXJzIG9ubHkpXHJcbi8vL1xyXG4vLy8gQGFjY2VzcyBwcml2YXRlXHJcbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBzb3J0XHJcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXHJcbkBmdW5jdGlvbiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1hcCkge1xyXG4gICAgJG1hcC1zb3J0ZWQ6ICgpO1xyXG4gICAgJG1hcC1rZXlzOiBtYXAua2V5cygkbWFwKTtcclxuICAgICRtYXAtdmFsdWVzOiBtYXAudmFsdWVzKCRtYXApO1xyXG4gICAgJG1hcC12YWx1ZXMtc29ydGVkOiBfbXEtcXVpY2stc29ydCgkbWFwLXZhbHVlcyk7XHJcblxyXG4gICAgLy8gUmVvcmRlciBrZXkvdmFsdWUgcGFpcnMgYmFzZWQgb24ga2V5IHZhbHVlc1xyXG4gICAgQGVhY2ggJHZhbHVlIGluICRtYXAtdmFsdWVzLXNvcnRlZCB7XHJcbiAgICAgICAgJGluZGV4OiBsaXN0LmluZGV4KCRtYXAtdmFsdWVzLCAkdmFsdWUpO1xyXG4gICAgICAgICRrZXk6IGxpc3QubnRoKCRtYXAta2V5cywgJGluZGV4KTtcclxuICAgICAgICAkbWFwLXNvcnRlZDogbWFwLm1lcmdlKCRtYXAtc29ydGVkLCAoJGtleTogJHZhbHVlKSk7XHJcblxyXG4gICAgICAgIC8vIFVuc2V0IHRoZSB2YWx1ZSBpbiAkbWFwLXZhbHVlcyB0byBwcmV2ZW50IHRoZSBsb29wXHJcbiAgICAgICAgLy8gZnJvbSBmaW5kaW5nIHRoZSBzYW1lIGluZGV4IHR3aWNlXHJcbiAgICAgICAgJG1hcC12YWx1ZXM6IGxpc3Quc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBAcmV0dXJuICRtYXAtc29ydGVkO1xyXG59XHJcblxyXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxyXG4vLy9cclxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnRcclxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxyXG4vLy9cclxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xyXG4vLy9cclxuLy8vIEBleGFtcGxlIHNjc3NcclxuLy8vICBAaW5jbHVkZSBtcS1hZGQtYnJlYWtwb2ludCh0dnNjcmVlbiwgMTkyMHB4KTtcclxuLy8vICBAaW5jbHVkZSBtaXhpbnMubXEodHZzY3JlZW4pIHt9XHJcbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XHJcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcclxuICAgICRtcS1icmVha3BvaW50czogbWFwLm1lcmdlKCRtcS1icmVha3BvaW50cywgJG5ldy1icmVha3BvaW50KSAhZ2xvYmFsO1xyXG4gICAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xyXG59XHJcblxyXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XHJcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XHJcbi8vL1xyXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyAoJG1xLXNob3ctYnJlYWtwb2ludHMpIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXHJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcclxuLy8vXHJcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcclxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2Nzc1xyXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXHJcbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcclxuLy8vXHJcbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3NcclxuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcclxuQG1peGluIG1xLXNob3ctYnJlYWtwb2ludHMoJHNob3ctYnJlYWtwb2ludHM6ICRtcS1zaG93LWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xyXG4gICAgYm9keTpiZWZvcmUge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGQkVFRDU7XHJcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xyXG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xyXG4gICAgICAgIGZvbnQ6IHNtYWxsLWNhcHRpb247XHJcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcclxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDEwMDtcclxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXHJcbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XHJcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQGlmIGxpc3QubGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xyXG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcclxufVxyXG4iLCJAdXNlIFwiLi4vYWJzdHJhY3RzXCI7XHJcblxyXG5AdXNlIFwiLi4vYWJzdHJhY3RzL21peGluc1wiO1xyXG5AdXNlIFwiLi4vYWJzdHJhY3RzL2Z1bmN0aW9ucy9jb2xvclwiIGFzIGZ1bmN0aW9ucy1jb2xvcjtcclxuQHVzZSBcIi4uL2Fic3RyYWN0cy9mdW5jdGlvbnMvc3BhY2VcIjtcclxuXHJcbiRhY2NlbnQtcHJpbWFyeS1jb2xvcjogZnVuY3Rpb25zLWNvbG9yLmNvbG9yKHByaW1hcnkpO1xyXG4kYWNjZW50LXNwYWNlLTE6IHNwYWNlLnNwYWNlKDEpO1xyXG4kYWNjZW50LXNwYWNlLTM6IHNwYWNlLnNwYWNlKDMpO1xyXG4kYWNjZW50LXNwYWNlLTQ6IHNwYWNlLnNwYWNlKDQpO1xyXG5cclxuQG1peGluIGMtYWNjZW50IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRhY2NlbnQtcHJpbWFyeS1jb2xvcjtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogLTE7XHJcbiAgICB9XHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxufVxyXG5cclxuQGluY2x1ZGUgbWl4aW5zLm1xKHNtKSB7XHJcbiAgICAuYy1hY2NlbnQtLWxlZnQge1xyXG4gICAgICAgIEBpbmNsdWRlIGMtYWNjZW50O1xyXG5cclxuICAgICAgICAmOjpiZWZvcmUge1xyXG4gICAgICAgICAgICB0b3A6IDUlO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgaGVpZ2h0OiA4NSU7XHJcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDUxMnB4O1xyXG4gICAgICAgICAgICBsZWZ0OiAtJGFjY2VudC1zcGFjZS0zO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYy1hY2NlbnQtLXJpZ2h0IHtcclxuICAgICAgICBAaW5jbHVkZSBjLWFjY2VudDtcclxuXHJcbiAgICAgICAgJjo6YmVmb3JlIHtcclxuICAgICAgICAgICAgdG9wOiA1JTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIGhlaWdodDogODUlO1xyXG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiA1MTJweDtcclxuICAgICAgICAgICAgcmlnaHQ6IC0kYWNjZW50LXNwYWNlLTM7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBtaXhpbnMubXEobGcpIHtcclxuICAgIC5jLWFjY2VudC0tbGVmdCB7XHJcbiAgICAgICAgJjo6YmVmb3JlIHtcclxuICAgICAgICAgICAgbGVmdDogLSRhY2NlbnQtc3BhY2UtNDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmMtYWNjZW50LS1yaWdodCB7XHJcbiAgICAgICAgJjo6YmVmb3JlIHtcclxuICAgICAgICAgICAgcmlnaHQ6IC0kYWNjZW50LXNwYWNlLTQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIkB1c2UgXCJzYXNzOm1hcFwiO1xyXG5AdXNlIFwiYWJzdHJhY3RzXCI7XHJcbkB1c2UgXCJjb21wb25lbnRzL2FjY2VudC1iYXJzXCI7XHJcbkB1c2UgXCJiYXNlL2ZvbnRhd2Vzb21lL2ZvbnQtYXdlc29tZS1taXgtdmFyXCI7XHJcbkB1c2UgXCJhYnN0cmFjdHMvbWl4aW5zXCI7XHJcbkB1c2UgXCJhYnN0cmFjdHMvbWl4aW5zL3NoYWRvd3NcIiBhcyAqO1xyXG5AdXNlIFwiYWJzdHJhY3RzL2Z1bmN0aW9ucy9jb2xvclwiIGFzIGZ1bmN0aW9ucy1jb2xvcjtcclxuQHVzZSBcImFic3RyYWN0cy9mdW5jdGlvbnMvc3BhY2VcIjtcclxuXHJcbiR2aWRlby1zcGFjZS0xOiAje3NwYWNlLnNwYWNlKDEpfTtcclxuJHZpZGVvLXNwYWNlLTA1OiAje3NwYWNlLnNwYWNlKDAuNSl9O1xyXG4kdmlkZW8tc3BhY2UtMjogI3tzcGFjZS5zcGFjZSgyKX07XHJcbiR2aWRlby1zcGFjZS00OiAje3NwYWNlLnNwYWNlKDQpfTtcclxuJHZpZGVvLXNwYWNlLTEyOiAje3NwYWNlLnNwYWNlKDEyKX07XHJcbiR2aWRlby1zcGFjZS0xMzogI3tzcGFjZS5zcGFjZSgxMyl9O1xyXG4kdmlkZW8tc3BhY2UtMTY6ICN7c3BhY2Uuc3BhY2UoMTYpfTtcclxuJHZpZGVvLXNwYWNlLTMyOiAje3NwYWNlLnNwYWNlKDMyKX07XHJcbiR2aWRlby1jb2xvci1wcmltYXJ5OiBmdW5jdGlvbnMtY29sb3IuY29sb3IocHJpbWFyeSk7XHJcbiR2aWRlby1jb2xvci1ibGFjazogZnVuY3Rpb25zLWNvbG9yLmNvbG9yKGJsYWNrKTtcclxuXHJcbi5jb21wb25lbnQudmlkZW8ge1xyXG4gICAgQGluY2x1ZGUgYWNjZW50LWJhcnMuYy1hY2NlbnQ7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAkdmlkZW8tc3BhY2UtNDtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG5cclxuICAgIC5tZWpzLWNvbnRhaW5lciB7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgICAgQGluY2x1ZGUgYWJzdHJhY3RzLmJveC1zaGFkb3dzKG1hcC5nZXQoJHNoYWRvdy10eXBlcywgZGVmYXVsdCkpO1xyXG5cclxuICAgICAgICAmOmZvY3VzIHtcclxuICAgICAgICAgICAgW2RhdGEtd2hhdGlucHV0PWtleWJvYXJkXSAmLFxyXG4gICAgICAgICAgICBbZGF0YS13aGF0aW50ZW50PWtleWJvYXJkXSAmIHtcclxuICAgICAgICAgICAgICAgIG91dGxpbmU6IDNweCBkb3R0ZWQgJHZpZGVvLWNvbG9yLWJsYWNrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5tZWpzLW92ZXJsYXktcGxheSB7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5tZWpzLWNvbnRyb2xzIHtcclxuICAgICAgICAubWVqcy1idXR0b24ge1xyXG4gICAgICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudmlkZW8taW5pdCB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICB3aWR0aDogODBweDtcclxuICAgICAgICBoZWlnaHQ6IDgwcHg7XHJcbiAgICAgICAgbWFyZ2luOiAtNDBweCAwIDAgLTQwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKFwiLy0vbWVkaWEvQmFzZS1UaGVtZXMvQ29yZS1MaWJyYXJpZXMvc3R5bGVzL21lanMtY29udHJvbHMuc3ZnXCIpIG5vLXJlcGVhdDtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0zOXB4O1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgei1pbmRleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAmOjpiZWZvcmUge1xyXG4gICAgICAgIHdpZHRoOiAkdmlkZW8tc3BhY2UtMTY7XHJcbiAgICAgICAgaGVpZ2h0OiAkdmlkZW8tc3BhY2UtMTY7XHJcbiAgICB9XHJcblxyXG4gICAgLnZpZGVvLWNhcHRpb24ge1xyXG4gICAgICAgIEBpbmNsdWRlIG1peGlucy51aS10eXBvZ3JhcGh5KGNhcHRpb24pO1xyXG4gICAgICAgIG1hcmdpbi10b3A6ICR2aWRlby1zcGFjZS0wNTtcclxuICAgIH1cclxuXHJcbiAgICBpZnJhbWUge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG59XHJcblxyXG5AaW5jbHVkZSBtaXhpbnMubXEoJHVudGlsOiBsZykge1xyXG4gICAgOm5vdCgudG9nZ2xlLWNvbnRlbnQpIHtcclxuICAgICAgICA+IC5jb21wb25lbnQudmlkZW8ge1xyXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgdG9wOiAtJHZpZGVvLXNwYWNlLTI7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAtJHZpZGVvLXNwYWNlLTI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbkBpbmNsdWRlIG1peGlucy5tcShsZykge1xyXG5cclxuICAgIDpub3QoLnRvZ2dsZS1jb250ZW50KSA+IC5jb21wb25lbnQudmlkZW8ge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtJHZpZGVvLXNwYWNlLTEzO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogLSR2aWRlby1zcGFjZS0xMztcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkdmlkZW8tc3BhY2UtMTI7XHJcblxyXG4gICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJvdHRvbTogLSR2aWRlby1zcGFjZS00O1xyXG4gICAgICAgICAgICB3aWR0aDogJHZpZGVvLXNwYWNlLTMyO1xyXG4gICAgICAgICAgICBoZWlnaHQ6ICR2aWRlby1zcGFjZS0zMjtcclxuICAgICAgICAgICAgbGVmdDogLSR2aWRlby1zcGFjZS00O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnZpZGVvLWNhcHRpb24ge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIGxlZnQ6ICR2aWRlby1zcGFjZS0zMjtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogJHZpZGVvLXNwYWNlLTE7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICR2aWRlby1zcGFjZS00O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCJAdXNlIFwic2FzczptYXBcIjtcclxuXHJcbiRzaGFkb3ctdHlwZXM6ICggZGVmYXVsdDogKCBib3hTaGFkb3c6IDAgOHB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgLjEpLCBib3hTaGFkb3cyOiAwIDBweCAyNHB4IDVweCByZ2JhKDAsIDAsIDAsIC4xKSwgYm94U2hhZG93MzogMCAwcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjEpLCApLCApO1xyXG5cclxuQG1peGluIHNoYWRvdy10cmFuc2l0aW9uIHtcclxuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI4cyBjdWJpYy1iZXppZXIoLjQsIDAsIC4yLCAxKTtcclxufVxyXG5cclxuQG1peGluIGJveC1zaGFkb3dzKCRzaGFkb3ctdHlwZXMpIHtcclxuICAgICRzaGFkb3ctMTogbWFwLmdldCgkc2hhZG93LXR5cGVzLCBib3hTaGFkb3cpO1xyXG4gICAgJHNoYWRvdy0yOiBtYXAuZ2V0KCRzaGFkb3ctdHlwZXMsIGJveFNoYWRvdzIpO1xyXG4gICAgJHNoYWRvdy0zOiBtYXAuZ2V0KCRzaGFkb3ctdHlwZXMsIGJveFNoYWRvdzMpO1xyXG4gICAgJHNoYWRvdy00OiBtYXAuZ2V0KCRzaGFkb3ctdHlwZXMsIGJveFNoYWRvdzQpO1xyXG5cclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNDtcclxufVxyXG4iLCJAdXNlICdzYXNzOm1hcCc7XHJcbkB1c2UgJ3Nhc3M6bGlzdCc7XHJcbkB1c2UgJ3Nhc3M6bWF0aCc7XHJcbkB1c2UgJ3Nhc3M6bWV0YSc7XHJcbkB1c2UgJy4uLy4uL2Fic3RyYWN0cy92YXJzL3R5cGUnO1xyXG5AdXNlICcuLi8uLi9hYnN0cmFjdHMvdmFycy9icmVha3BvaW50cycgYXMgYmFzZTtcclxuQHVzZSAnLi4vLi4vYWJzdHJhY3RzL2Z1bmN0aW9ucy9weC10by1yZW0nO1xyXG5cclxuQGZ1bmN0aW9uIHRvLXJlbSgkdmFsdWUpIHtcclxuICAgIEBpZiBtYXRoLmlzLXVuaXRsZXNzKCR2YWx1ZSkgb3IgbWF0aC51bml0KCR2YWx1ZSkgIT0gJ3B4JyB7XHJcbiAgICAgICAgQHJldHVybiAkdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgQHJldHVybiBweC10by1yZW0uZ2V0LXJlbSgkdmFsdWUpO1xyXG59XHJcblxyXG5AbWl4aW4gaW90YS1leHRyYWN0LXR5cGUtc2l6ZXMoJHNpemVzKSB7XHJcbiAgICBAaWYgbGlzdC5sZW5ndGgoJHNpemVzKSA9PSAyIHtcclxuICAgICAgICBmb250LXNpemU6IGxpc3QubnRoKCRzaXplcywgMSk7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IGxpc3QubnRoKCRzaXplcywgMik7XHJcbiAgICB9XHJcbiAgICBAZWxzZSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAkc2l6ZXM7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtaXhpbiBpb3RhLXR5cGUoJHNpemVzLCAkYnJlYWtwb2ludHM6IGJhc2UuJGlvdGEtZ2xvYmFsLWJyZWFrcG9pbnRzKSB7XHJcbiAgICBAaWYgbWV0YS50eXBlLW9mKCRzaXplcykgPT0gJ21hcCcge1xyXG4gICAgICAgIEBpZiBtYXAuaGFzLWtleSgkc2l6ZXMsIG51bGwpIHtcclxuICAgICAgICAgICAgQGluY2x1ZGUgaW90YS1leHRyYWN0LXR5cGUtc2l6ZXMobWFwLmdldCgkc2l6ZXMsIG51bGwpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBlYWNoICRicmVha3BvaW50LCAkc2l6ZSBpbiAkc2l6ZXMge1xyXG4gICAgICAgICAgICBAaWYgJGJyZWFrcG9pbnQgIT0gbnVsbCBhbmQgbWFwLmhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludCkge1xyXG4gICAgICAgICAgICAgICAgQG1lZGlhICN7bWFwLmdldCgkYnJlYWtwb2ludHMsICRicmVha3BvaW50KX0ge1xyXG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGlvdGEtZXh0cmFjdC10eXBlLXNpemVzKCRzaXplKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgICBAaW5jbHVkZSBpb3RhLWV4dHJhY3QtdHlwZS1zaXplcygkc2l6ZXMpO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuXHJcbkBtaXhpbiB1aS10eXBvZ3JhcGh5LWJhc2UoJGZvbnQtZmFtaWx5OiB0eXBlLiR1aS10eXBvZ3JhcGh5LXN0YWNrLWRlZmF1bHQpIHtcclxuICAgIEBpZiAkZm9udC1mYW1pbHkgIT0gbnVsbCB7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcclxuICAgIH1cclxuICAgIEBlbHNlIHtcclxuICAgICAgICBmb250LWZhbWlseTogdHlwZS4kdWktdHlwb2dyYXBoeS1zdGFjay1kZWZhdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxufVxyXG5cclxuQG1peGluIHVpLXR5cG9ncmFwaHkoJHN0eWxlKSB7XHJcbiAgICBAaWYgbWFwLmhhcy1rZXkodHlwZS4kdWktdHlwb2dyYXBoeS1zdHlsZXMsICRzdHlsZSkge1xyXG4gICAgICAgICRzdHlsZTogbWFwLmdldCh0eXBlLiR1aS10eXBvZ3JhcGh5LXN0eWxlcywgJHN0eWxlKTtcclxuICAgICAgICAkZm9udC1mYW1pbHk6IG1hcC5nZXQoJHN0eWxlLCBmb250LWZhbWlseSk7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHVpLXR5cG9ncmFwaHktYmFzZSgkZm9udC1mYW1pbHkpO1xyXG4gICAgICAgIEBpbmNsdWRlIGlvdGEtdHlwZShtYXAuZ2V0KCRzdHlsZSwgc2l6ZXMpKTtcclxuICAgICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGdlbmVyYXRlZCBiZWxvd1xyXG4gICAgICAgICRwcm9wczogbWFwLnJlbW92ZSgkc3R5bGUsIGZvbnQtZmFtaWx5LCBtYXJnaW4sIHNpemVzKTtcclxuICAgICAgICAka2V5czogbWFwLmtleXMoJHByb3BzKTtcclxuXHJcbiAgICAgICAgQGVhY2ggJGtleSBpbiAka2V5cyB7XHJcbiAgICAgICAgICAgICN7JGtleX06IG1hcC5nZXQoJHByb3BzLCAka2V5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAgIEB3YXJuKCdDb3VsZCBub3QgZmluZCBgI3skc3R5bGV9YCBpbiBgJHVpLXR5cG9ncmFwaHktc3R5bGVzYCcpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWl4aW4gdWktdHlwb2dyYXBoeS1tYXJnaW4oJHN0eWxlKSB7XHJcbiAgICBAaWYgbWFwLmhhcy1rZXkodHlwZS4kdWktdHlwb2dyYXBoeS1zdHlsZXMsICRzdHlsZSkge1xyXG4gICAgICAgICRzdHlsZS1kZWZpbml0aW9uOiBtYXAuZ2V0KHR5cGUuJHVpLXR5cG9ncmFwaHktc3R5bGVzLCAkc3R5bGUpO1xyXG4gICAgICAgICRzdHlsZS1tYXJnaW46IG1hcC5nZXQoJHN0eWxlLWRlZmluaXRpb24sIG1hcmdpbik7XHJcbiAgICAgICAgbWFyZ2luOiAkc3R5bGUtbWFyZ2luO1xyXG4gICAgfVxyXG4gICAgQGVsc2Uge1xyXG4gICAgICAgIEB3YXJuKCdDb3VsZCBub3QgZmluZCBgI3skc3R5bGV9YCBpbiBgJHVpLXR5cG9ncmFwaHktc3R5bGVzYCBmb3IgbWFyZ2luJyk7XHJcbiAgICB9XHJcbn1cclxuIl19 */
