aside#logo-scroller {
  padding: var(--spacer1) 0 var(--spacer0) 0;
  box-shadow: 0px -1px var(--border-top-colour, #dcdcdc);
}
aside#logo-scroller::before {
  box-shadow: inherit;
}

logo-scroller {
  --logo-width: 90px;
  --scroll-duration: 25s;
  --title-y-position: calc(var(--gap) * -0.5);
  --min-width: auto;
  display: flex;
  position: relative;
  overflow: hidden;
  min-height: clamp(125px, 15vw, 145px);
}
@media (hover: hover) {
  logo-scroller:hover ul {
    animation-play-state: paused !important;
  }
}
logo-scroller.in-view ul {
  animation-play-state: running;
}
logo-scroller ul {
  display: flex;
  justify-content: center;
  align-items: center;
  justify-content: space-around;
  min-width: var(--min-width);
  animation: var(--scroll-duration) linear 0s infinite paused logo-scroller;
}
@keyframes logo-scroller {
  100% {
    transform: translate3d(-100%, 0, 0);
  }
}
@media (min-width: 1681px) {
  logo-scroller ul {
    --min-width: 100vw;
  }
}
logo-scroller ul li {
  position: relative;
  height: 100%;
  display: flex;
  place-content: center;
  place-items: center;
}
logo-scroller ul li .item {
  text-decoration: none;
  display: block;
  height: inherit;
  display: flex;
  place-content: center;
  place-items: center;
  padding: var(--gutter1);
  border: 1px solid transparent;
  transition: border-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
logo-scroller ul li .item::after {
  content: attr(data-title);
  white-space: nowrap;
  position: absolute;
  top: 100%;
  border: 1px solid #dcdcdc;
  left: 50%;
  background: white;
  font-size: 0.75em;
  padding: 5px 10px;
  opacity: 0;
  transform: translate(-50%, var(--title-y-position));
  transition: transform var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
  color: var(--primary, #131f6b);
}
logo-scroller ul li .item[target=_blank]::after {
  padding-right: 34px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23DF3035' d='M5 3c-1.093 0-2 .907-2 2v14c0 1.093.907 2 2 2h14c1.093 0 2-.907 2-2v-7h-2v7H5V5h7V3H5zm9 0v2h3.586l-9.293 9.293 1.414 1.414L19 6.414V10h2V3h-7z'/%3E%3C/svg%3E");
  background-size: 16px 16px;
  background-repeat: no-repeat;
  background-position: calc(100% - 10px) center;
}
@media (hover: hover) {
  logo-scroller ul li .item:hover {
    border-color: #dcdcdc;
  }
  logo-scroller ul li .item:hover::after {
    --title-y-position: calc(-100% - calc(var(--gap) * 0.5));
    opacity: 1;
  }
  logo-scroller ul li .item:hover img {
    opacity: 1;
    filter: grayscale(0%);
  }
}
logo-scroller ul img {
  max-width: var(--logo-width);
  width: 15vw;
  opacity: 0.7;
  filter: grayscale(100%);
  transition: filter var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}

main logo-scroller {
  --title-y-position: -110%;
  width: 100%;
  padding: 0;
  -webkit-mask-image: linear-gradient(to right, transparent, black 20%, black 80%, transparent);
          mask-image: linear-gradient(to right, transparent, black 20%, black 80%, transparent);
}

body > #logo-scroller logo-scroller {
  --title-y-position: -50%;
  left: var(--gutter1-);
}
@media (min-width: 321px) {
  body > #logo-scroller logo-scroller {
    width: 100vw;
    left: 50%;
    transform: translateX(-50%);
  }
}

side-bar logo-scroller {
  width: 100%;
  padding-top: var(--gutter0);
  padding-bottom: var(--gutter0);
  --logo-width: 50px;
}
@media (min-width: 1681px) {
  side-bar logo-scroller ul {
    --min-width: auto !important;
  }
}
@media (max-width: 980px) {
  side-bar logo-scroller {
    display: none;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvbG9nby1zY3JvbGxlci5zY3NzIiwiY29tcG9uZW50cy9sb2dvLXNjcm9sbGVyLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NvbGxlY3Rpb25zL3N0eWxpbmcvX2hvdmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jb2xsZWN0aW9ucy9hbmltYXRpb24vX2tleWZyYW1lcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvaGVscGVycy9fYnJlYWsuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2NyZWF0ZS9fdW5pdHMuc2NzcyIsIl92YXJpYWJsZXMvY29sb3Vycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BO0VBQ0UsMENBQUE7RUFDQSxzREFBQTtBQ05GO0FET0U7RUFDRSxtQkFBQTtBQ0xKOztBRFNBO0VBQ0Usa0JBQUE7RUFDQSxzQkFBQTtFQUNBLDJDQUFBO0VBQ0EsaUJBQUE7RUFFQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUVBLHFDQUFBO0FDUkY7QUNaRTtFRnVCRTtJQUNFLHVDQUFBO0VDUko7QUFDRjtBRGVFO0VBQ0UsNkJBQUE7QUNiSjtBRGdCRTtFQUNFLGFBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0VBQ0EsNkJBQUE7RUFDQSwyQkFBQTtFQVlBLHlFQUFBO0FDekJKO0FFL0JJO0VIK0NFO0lBQ0UsbUNBQUE7RUNiTjtBQUNGO0FHakNFO0VKb0NBO0lBY0ksa0JBQUE7RUNiSjtBQUNGO0FEaUJJO0VBQ0Usa0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLHFCQUFBO0VBQ0EsbUJBQUE7QUNmTjtBRGlCTTtFQUNFLHFCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTtFQUNBLHVCSzBERztFTHpESCw2QkFBQTtFQUNBLDBJQUFBO0FDZlI7QURpQlE7RUFDRSx5QkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EseUJBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0VBQ0EsVUFBQTtFQUNBLG1EQUFBO0VBQ0Esa1FBQUE7RUFDQSw4Qk1sREE7QUxtQ1Y7QURrQlE7RUFDRSxtQkFBQTtFQUNBLHNTQUFBO0VBQ0EsMEJBQUE7RUFDQSw0QkFBQTtFQUNBLDZDQUFBO0FDaEJWO0FDOUVFO0VBQ0U7SUZxR00scUJNL0VGO0VMMkROO0VEZ0JRO0lBQ0Usd0RBQUE7SUFDQSxVQUFBO0VDZFY7RURpQlE7SUFDRSxVQUFBO0lBQ0EscUJBQUE7RUNmVjtBQUNGO0FEb0JJO0VBQ0UsNEJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0VBQ0EsK1BBQUE7QUNsQk47O0FEMkJBO0VBQ0UseUJBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFQUNBLDZGQUFBO1VBQUEscUZBQUE7QUN4QkY7O0FEK0JBO0VBQ0Usd0JBQUE7RUFDQSxxQktYcUM7QUpqQnZDO0FHOUdFO0VKd0lGO0lBSUksWUFBQTtJQUNBLFNBQUE7SUFDQSwyQkFBQTtFQzFCRjtBQUNGOztBRGlDQTtFQUNFLFdBQUE7RUFDQSwyQksxQlM7RUwyQlQsOEJLM0JTO0VMNEJULGtCQUFBO0FDOUJGO0FHNUhFO0VKNEpFO0lBQ0UsNEJBQUE7RUM3Qko7QUFDRjtBRzNIRTtFSmdKRjtJQVdJLGFBQUE7RUM1QkY7QUFDRiIsImZpbGUiOiJjb21wb25lbnRzL2xvZ28tc2Nyb2xsZXIuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnX21vZHVsZXMnIGFzICo7XG5AdXNlICdtb2R1bGVzL2NvbG91ci9lbmNvZGUnIGFzIGNvbG91cjtcblxuQGZ1bmN0aW9uIGJhc2U2NC1leHRlcm5hbC1saW5rKCRjb2xvdXIpIHtcbiAgQHJldHVybiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyUzRSUzQ3BhdGggZmlsbD0nXCIgKyBjb2xvdXIuZW5jb2RlKCRjb2xvdXIpICsgXCInIGQ9J001IDNjLTEuMDkzIDAtMiAuOTA3LTIgMnYxNGMwIDEuMDkzLjkwNyAyIDIgMmgxNGMxLjA5MyAwIDItLjkwNyAyLTJ2LTdoLTJ2N0g1VjVoN1YzSDV6bTkgMHYyaDMuNTg2bC05LjI5MyA5LjI5MyAxLjQxNCAxLjQxNEwxOSA2LjQxNFYxMGgyVjNoLTd6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xufVxuXG5hc2lkZSNsb2dvLXNjcm9sbGVyIHtcbiAgcGFkZGluZzogJHNwYWNlciAwICRzcGFjZXIwIDA7XG4gIGJveC1zaGFkb3c6IDBweCAtMXB4IHZhcigtLWJvcmRlci10b3AtY29sb3VyLCAjeyRncmV5NH0pO1xuICAmOjpiZWZvcmUge1xuICAgIGJveC1zaGFkb3c6IGluaGVyaXQ7XG4gIH1cbn1cblxubG9nby1zY3JvbGxlciB7XG4gIC0tbG9nby13aWR0aDogOTBweDtcbiAgLS1zY3JvbGwtZHVyYXRpb246IDI1cztcbiAgLS10aXRsZS15LXBvc2l0aW9uOiAjeyRnYXAwLX07XG4gIC0tbWluLXdpZHRoOiBhdXRvO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICBtaW4taGVpZ2h0OiBjbGFtcCgxMjVweCwgMTV2dywgMTQ1cHgpO1xuXG4gIEBpbmNsdWRlIGhvdmVyIHtcbiAgICB1bCB7XG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gJi5sb2FkLXRlbXBsYXRlLWluLXZpZXcge1xuICAvLyAgIG1pbi1oZWlnaHQ6MjQwcHg7XG4gIC8vIH1cblxuICAmLmluLXZpZXcgdWwge1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xuICB9XG5cbiAgdWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICBtaW4td2lkdGg6IHZhcigtLW1pbi13aWR0aCk7XG5cbiAgICBAaW5jbHVkZSBhbmltYXRpb24ta2V5ZnJhbWVzKCdsb2dvLXNjcm9sbGVyJykge1xuICAgICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIGJyZWFrLW91dChtYXgpIHtcbiAgICAgIC0tbWluLXdpZHRoOiAxMDB2dztcbiAgICB9XG5cbiAgICBhbmltYXRpb246IHZhcigtLXNjcm9sbC1kdXJhdGlvbikgbGluZWFyIDBzIGluZmluaXRlIHBhdXNlZCBsb2dvLXNjcm9sbGVyO1xuXG4gICAgbGkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgIC5pdGVtIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6ICRndXR0ZXI7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgJHRyYW5zaXRpb247XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10aXRsZSk7XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAxMDAlO1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5NDtcbiAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgICAgZm9udC1zaXplOiBmb250LXNpemUoMTIpO1xuICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgdmFyKC0tdGl0bGUteS1wb3NpdGlvbikpO1xuICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkdHJhbnNpdGlvbiwgb3BhY2l0eSAkdHJhbnNpdGlvbjtcbiAgICAgICAgICBjb2xvcjogJHByaW1hcnk7XG4gICAgICAgIH1cblxuICAgICAgICAmW3RhcmdldD0nX2JsYW5rJ106OmFmdGVyIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4ICsgMTZweCArIDhweDsgLy8gcGFkZGluZyArIGljb24gc2l6ZSArIGFkZGl0aW9uYWwgcGFkZGluZ1xuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGJhc2U2NC1leHRlcm5hbC1saW5rKCRyZWQpO1xuICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTZweCAxNnB4O1xuICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygxMDAlIC0gMTBweCkgY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIC0tdGl0bGUteS1wb3NpdGlvbjogY2FsYygtMTAwJSAtICN7JGdhcDB9KTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGdyZXk0O1xuICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgZmlsdGVyOiBncmF5c2NhbGUoMCUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IHZhcigtLWxvZ28td2lkdGgpO1xuICAgICAgd2lkdGg6IDE1dnc7XG4gICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICBmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTtcbiAgICAgIHRyYW5zaXRpb246IGZpbHRlciAkdHJhbnNpdGlvbiwgb3BhY2l0eSAkdHJhbnNpdGlvbjtcbiAgICB9XG4gIH1cbn1cblxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gTWFpbiBDb21wb25lbnRcbi8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5tYWluIGxvZ28tc2Nyb2xsZXIge1xuICAtLXRpdGxlLXktcG9zaXRpb246IC0xMTAlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgYmxhY2sgMjAlLCBibGFjayA4MCUsIHRyYW5zcGFyZW50KTtcbn1cblxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLy8gUm9vdCBDb21wb25lbnRcbi8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5ib2R5ID4gI2xvZ28tc2Nyb2xsZXIgbG9nby1zY3JvbGxlciB7XG4gIC0tdGl0bGUteS1wb3NpdGlvbjogLTUwJTtcbiAgbGVmdDogJGd1dHRlci07XG4gIEBpbmNsdWRlIGJyZWFrLW91dChtaW4pIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyBTaWRlYmFyIENvbXBvbmVudFxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnNpZGUtYmFyIGxvZ28tc2Nyb2xsZXIge1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy10b3A6ICRndXR0ZXIwO1xuICBwYWRkaW5nLWJvdHRvbTogJGd1dHRlcjA7XG4gIC0tbG9nby13aWR0aDogNTBweDtcbiAgQGluY2x1ZGUgYnJlYWstb3V0KG1heCkge1xuICAgIHVsIHtcbiAgICAgIC0tbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIGJyZWFrLWluKCdzbWFsbC1tZWRpdW0nKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiYXNpZGUjbG9nby1zY3JvbGxlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlcjEpIDAgdmFyKC0tc3BhY2VyMCkgMDtcbiAgYm94LXNoYWRvdzogMHB4IC0xcHggdmFyKC0tYm9yZGVyLXRvcC1jb2xvdXIsICNkY2RjZGMpO1xufVxuYXNpZGUjbG9nby1zY3JvbGxlcjo6YmVmb3JlIHtcbiAgYm94LXNoYWRvdzogaW5oZXJpdDtcbn1cblxubG9nby1zY3JvbGxlciB7XG4gIC0tbG9nby13aWR0aDogOTBweDtcbiAgLS1zY3JvbGwtZHVyYXRpb246IDI1cztcbiAgLS10aXRsZS15LXBvc2l0aW9uOiBjYWxjKHZhcigtLWdhcCkgKiAtMC41KTtcbiAgLS1taW4td2lkdGg6IGF1dG87XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWluLWhlaWdodDogY2xhbXAoMTI1cHgsIDE1dncsIDE0NXB4KTtcbn1cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gIGxvZ28tc2Nyb2xsZXI6aG92ZXIgdWwge1xuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQgIWltcG9ydGFudDtcbiAgfVxufVxubG9nby1zY3JvbGxlci5pbi12aWV3IHVsIHtcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XG59XG5sb2dvLXNjcm9sbGVyIHVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBtaW4td2lkdGg6IHZhcigtLW1pbi13aWR0aCk7XG4gIGFuaW1hdGlvbjogdmFyKC0tc2Nyb2xsLWR1cmF0aW9uKSBsaW5lYXIgMHMgaW5maW5pdGUgcGF1c2VkIGxvZ28tc2Nyb2xsZXI7XG59XG5Aa2V5ZnJhbWVzIGxvZ28tc2Nyb2xsZXIge1xuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDE2ODFweCkge1xuICBsb2dvLXNjcm9sbGVyIHVsIHtcbiAgICAtLW1pbi13aWR0aDogMTAwdnc7XG4gIH1cbn1cbmxvZ28tc2Nyb2xsZXIgdWwgbGkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xufVxubG9nby1zY3JvbGxlciB1bCBsaSAuaXRlbSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogaW5oZXJpdDtcbiAgZGlzcGxheTogZmxleDtcbiAgcGxhY2UtY29udGVudDogY2VudGVyO1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiB2YXIoLS1ndXR0ZXIxKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKTtcbn1cbmxvZ28tc2Nyb2xsZXIgdWwgbGkgLml0ZW06OmFmdGVyIHtcbiAgY29udGVudDogYXR0cihkYXRhLXRpdGxlKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RjZGM7XG4gIGxlZnQ6IDUwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgdmFyKC0tdGl0bGUteS1wb3NpdGlvbikpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG4gIGNvbG9yOiB2YXIoLS1wcmltYXJ5LCAjMTMxZjZiKTtcbn1cbmxvZ28tc2Nyb2xsZXIgdWwgbGkgLml0ZW1bdGFyZ2V0PV9ibGFua106OmFmdGVyIHtcbiAgcGFkZGluZy1yaWdodDogMzRweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NwYXRoIGZpbGw9JyUyM0RGMzAzNScgZD0nTTUgM2MtMS4wOTMgMC0yIC45MDctMiAydjE0YzAgMS4wOTMuOTA3IDIgMiAyaDE0YzEuMDkzIDAgMi0uOTA3IDItMnYtN2gtMnY3SDVWNWg3VjNINXptOSAwdjJoMy41ODZsLTkuMjkzIDkuMjkzIDEuNDE0IDEuNDE0TDE5IDYuNDE0VjEwaDJWM2gtN3onLyUzRSUzQy9zdmclM0VcIik7XG4gIGJhY2tncm91bmQtc2l6ZTogMTZweCAxNnB4O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDEwMCUgLSAxMHB4KSBjZW50ZXI7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBsb2dvLXNjcm9sbGVyIHVsIGxpIC5pdGVtOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6ICNkY2RjZGM7XG4gIH1cbiAgbG9nby1zY3JvbGxlciB1bCBsaSAuaXRlbTpob3Zlcjo6YWZ0ZXIge1xuICAgIC0tdGl0bGUteS1wb3NpdGlvbjogY2FsYygtMTAwJSAtIGNhbGModmFyKC0tZ2FwKSAqIDAuNSkpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgbG9nby1zY3JvbGxlciB1bCBsaSAuaXRlbTpob3ZlciBpbWcge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgZmlsdGVyOiBncmF5c2NhbGUoMCUpO1xuICB9XG59XG5sb2dvLXNjcm9sbGVyIHVsIGltZyB7XG4gIG1heC13aWR0aDogdmFyKC0tbG9nby13aWR0aCk7XG4gIHdpZHRoOiAxNXZ3O1xuICBvcGFjaXR5OiAwLjc7XG4gIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xuICB0cmFuc2l0aW9uOiBmaWx0ZXIgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG59XG5cbm1haW4gbG9nby1zY3JvbGxlciB7XG4gIC0tdGl0bGUteS1wb3NpdGlvbjogLTExMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCBibGFjayAyMCUsIGJsYWNrIDgwJSwgdHJhbnNwYXJlbnQpO1xufVxuXG5ib2R5ID4gI2xvZ28tc2Nyb2xsZXIgbG9nby1zY3JvbGxlciB7XG4gIC0tdGl0bGUteS1wb3NpdGlvbjogLTUwJTtcbiAgbGVmdDogdmFyKC0tZ3V0dGVyMS0pO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDMyMXB4KSB7XG4gIGJvZHkgPiAjbG9nby1zY3JvbGxlciBsb2dvLXNjcm9sbGVyIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuXG5zaWRlLWJhciBsb2dvLXNjcm9sbGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1ndXR0ZXIwKTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLWd1dHRlcjApO1xuICAtLWxvZ28td2lkdGg6IDUwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTY4MXB4KSB7XG4gIHNpZGUtYmFyIGxvZ28tc2Nyb2xsZXIgdWwge1xuICAgIC0tbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5ODBweCkge1xuICBzaWRlLWJhciBsb2dvLXNjcm9sbGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBIb3ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdmVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gaG92ZXIoJHNlbGVjdG9yIDogbnVsbCkge1xuICBAbWVkaWEgKCBob3ZlciA6IGhvdmVyICkge1xuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzZWxlY3RvciB7XG4gICAgJiN7JHNlbGVjdG9yfSB7IFxuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn0iLCJAbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gIEBhdC1yb290ICh3aXRob3V0OiBtZWRpYSkge1xuICAgIEBrZXlmcmFtZXMgI3skbmFtZX0geyBAY29udGVudDsgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEJyZWFrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnJlYWtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBvdXQoJGJyZWFrcG9pbnQpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6I3skYnJlYWtwb2ludCArIDF9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGluKCRicmVha3BvaW50KSB7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiN7JGJyZWFrcG9pbnR9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJldHdlZW4oJG1pbiwgJG1heCkge1xuICBAbWVkaWEgKG1pbi13aWR0aDojeyRtaW59KSBhbmQgKG1heC13aWR0aDojeyRtYXh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVW5pdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgXCJzYXNzOm1hdGhcIjtcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5cbi8vIFRoaXMgdW5pdHMgY3JlYXRvciB3aWxsIHJlbmRlciBzaXggcG9zaXRpdmUgYW5kIHNpeCBuZWdhdGl2ZSBzYXNzIHZhcmlhYmxlcyBmb3IgXG4vLyBnYXBzLCBzcGFjZXJzLCBhbmQgZ3V0dGVycyByZWxhdGl2ZSB0byB0aGUgYmFzZXYgdmFsdWVzIGRlZmluZWQgYmVsb3cuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQmFzZSBWYWx1ZXMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLy8gQHNlZSBodHRwczovL2NvZGVwZW4uaW8vbWFya25vdHRvbi9wZW4vRXhQYk5HZVxuXG4vLyBUaGVzZSB0aHJlZSB2YWx1ZXMgd2lsbCBhY3QgYSBjb25zdGFudCBiYXNlbGluZSBmb3IgYWxsIGZvbGxvd2luZyB1bml0IGRlbGNhcmF0aW9ucy5cblxuLy8gR2FwcyBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBhbmQgc3RhdGljICdweCcgdW5pdC4gSXQgc2hvdWxkIG5vdCBiZSByZWxhdGl2ZSB0byBhbnlcbi8vIHBhcmVudCBjb250YWluZXIgYW5kIGlzIG5vdCBpbnRlbmRlZCBmb3IgZm9udCBzaXplcywgc28geW91IHNob3VsZCBub3QgdXNlICdyZW0nIG9yICdlbScuIFxuJGdhcCA6IDE2cHggIWRlZmF1bHQ7XG4kYmFzZS1nYXAgOiAkZ2FwO1xuXG4vLyBTcGFjZXJzIG11c3QgdXNlIGEgJ3ZoJyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCBoZWlnaHQtd2lzZS5cbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBvbiBhIGNvbXBvbmVudCBsZXZlbC5cbiRzcGFjZXIgOiA0dmggIWRlZmF1bHQ7IFxuJGJhc2Utc3BhY2VyIDogJHNwYWNlcjsgXG5cbi8vIEd1dHRlcnMgbXVzdCB1c2UgYSAndncnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IHdpZHRoLXdpc2UuIFxuLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9yIG1hcmdpbiBvbiBhIHBhcmVudCBsZXZlbC5cbi8vIEFzIGEgc3VnZ2VzdGlvbiwgdGhpcyBndXR0ZXIgY29uc3RhbnQgc2hvdWxkIGJlIGhhbGYgdGhlIHNpemUgb2YgdGhlIHNwYWNlciB2YWx1ZS5cbiRndXR0ZXIgOiAzdncgIWRlZmF1bHQ7XG4kYmFzZS1ndXR0ZXIgOiAkZ3V0dGVyOyBcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFzYm9sdXRlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2FwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdhcHMgYXJlIGFuIGFic29sdXRlIHVuaXQgKHB4KSBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGluZGl2aWR1YWwgZWxlbWVudHMgd2l0aGluIGEgY29tcG9uZW50ZWQuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBzcGFjaW5nIGFtb25nc3QgYmxvY2ssIGlubGluZSwgdGFibGUgYW5kIGdyb3VwIGh0bWwgZWxlbWVudHMuXG5cbkBmdW5jdGlvbiBnYXAoJGFtb3VudCA6IDEpIHtcbiAgQGlmICggJGFtb3VudCA9PSAxICkgeyBcbiAgICBAcmV0dXJuIHZhcigtLWdhcCk7IFxuICB9IEBlbHNlIHsgXG4gICAgQHJldHVybiBjYWxjKHZhcigtLWdhcCkgKiAjeyRhbW91bnR9KTsgXG4gIH1cbn1cblxuJGdhcDAgOiBnYXAoMC41KTsgJGdhcDAtIDogZ2FwKC0wLjUpO1xuJGdhcCAgOiBnYXAoMSk7ICAgJGdhcC0gIDogZ2FwKC0xKTtcbiRnYXAyIDogZ2FwKDIpOyAgICRnYXAyLSA6IGdhcCgtMik7XG4kZ2FwMyA6IGdhcCgzKTsgICAkZ2FwMy0gOiBnYXAoLTMpO1xuJGdhcDQgOiBnYXAoNCk7ICAgJGdhcDQtIDogZ2FwKC00KTtcbiRnYXA1IDogZ2FwKDUpOyAgICRnYXA1LSA6IGdhcCgtNSk7XG4kZ2FwNiA6IGdhcCg2KTsgICAkZ2FwNi0gOiBnYXAoLTYpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVsYXRpdmUgVW5pdHMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AZnVuY3Rpb24gX2R5bmFtaWMtdW5pdCgkY3VzdG9tLXByb3BlcnR5LCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG5cbiAgLy8gQ2FsYyBNZXRob2RcbiAgJHJlc3VsdCA6IGNhbGMoKCN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9KSArICN7aWYoJG1pbiA9PSAwLCAwcHgsICRtaW4pfSk7XG4gIFxuICAvLyBDbGFtcCBNZXRob2RcbiAgQGlmICggJHVzZS1jbGFtcCApIHtcbiAgICBAaWYgKCAkYW1vdW50ID09IDAgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3ttYXRoLmRpdigkbWluLCAyKX0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAwLjUsICN7JG1heH0pO1xuICAgIH0gQGVsc2UgaWYgKCAkYW1vdW50ID09IDEgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSwgI3skbWF4fSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSAqICN7JGFtb3VudH0sICN7JG1heH0pO1xuICAgIH1cbiAgfSBcblxuICBAaWYgKCAkdXNlLW5lZ2F0aXZlICkge1xuICAgICRyZXN1bHQgOiBjYWxjKC0xICogI3skcmVzdWx0fSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG5cbn0gXG5cbi8vIFNwYWNlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTcGFjZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IGhlaWdodCAodmgpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIGNvbXBvbmVudGVkIGxldmVsLlxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCB0b3AgYW5kIGJvdHRvbSBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIFNwYWNlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJHNwYWNlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZoIHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIHNwYWNlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1zcGFjZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJHNwYWNlcjAgOiB2YXIoLS1zcGFjZXIwKTsgJHNwYWNlcjAtIDogdmFyKC0tc3BhY2VyMC0pO1xuJHNwYWNlciAgOiB2YXIoLS1zcGFjZXIxKTsgJHNwYWNlci0gIDogdmFyKC0tc3BhY2VyMS0pO1xuJHNwYWNlcjIgOiB2YXIoLS1zcGFjZXIyKTsgJHNwYWNlcjItIDogdmFyKC0tc3BhY2VyMi0pO1xuJHNwYWNlcjMgOiB2YXIoLS1zcGFjZXIzKTsgJHNwYWNlcjMtIDogdmFyKC0tc3BhY2VyMy0pO1xuJHNwYWNlcjQgOiB2YXIoLS1zcGFjZXI0KTsgJHNwYWNlcjQtIDogdmFyKC0tc3BhY2VyNC0pO1xuJHNwYWNlcjUgOiB2YXIoLS1zcGFjZXI1KTsgJHNwYWNlcjUtIDogdmFyKC0tc3BhY2VyNS0pO1xuJHNwYWNlcjYgOiB2YXIoLS1zcGFjZXI2KTsgJHNwYWNlcjYtIDogdmFyKC0tc3BhY2VyNi0pO1xuXG4vLyBHdXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR3V0dGVycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCB3aWR0aCAodncpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHBhcmVudCBsZXZlbDtcbi8vIGZvciBleGFtcGxlLCBhIHdyYXBwZXIgY29udGFpbmVyIG9yIGJvZHkgd2l0aCBuZXN0ZWQgY29tcG9uZW50cy4gXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IGxlZnQgYW5kIHJpZ2h0IHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuLy8gR3V0dGVycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkZ3V0dGVyICogeCkgKyAkZ2FwYC4gXG4vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdncgc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuXG5AZnVuY3Rpb24gZ3V0dGVyKCRhbW91bnQgOiAxLCAkbWluIDogJGJhc2UtZ2FwLCAkbWF4IDogbnVsbCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuICBAaWYgKCAkYW1vdW50ID09IDApIHsgJGFtb3VudCA6IDAuNTsgJG1pbiA6IG1hdGguZGl2KCRtaW4sIDIpOyB9XG4gIEBpZiAoIG1ldGEudHlwZS1vZigkbWF4KSA9PSAnbnVsbCcgKSB7IFxuICAgIEBpZiAoIG1ldGEudHlwZS1vZigkbWluKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLmluZGV4KCRtaW4sICd2YXInKSApIHtcbiAgICAgICRtYXggOiBjYWxjKCN7JG1pbn0gKiAjeyRhbW91bnQgKyAxfSk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgJG1heCA6ICN7JG1pbiAqICgkYW1vdW50ICsgMSl9OyBcbiAgICB9XG4gIH1cbiAgQHJldHVybiBfZHluYW1pYy11bml0KHZhcigtLWd1dHRlciksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUsICR1c2UtY2xhbXApO1xufVxuXG4kZ3V0dGVyMCA6IHZhcigtLWd1dHRlcjApOyAkZ3V0dGVyMC0gOiB2YXIoLS1ndXR0ZXIwLSk7XG4kZ3V0dGVyICA6IHZhcigtLWd1dHRlcjEpOyAkZ3V0dGVyLSAgOiB2YXIoLS1ndXR0ZXIxLSk7XG4kZ3V0dGVyMiA6IHZhcigtLWd1dHRlcjIpOyAkZ3V0dGVyMi0gOiB2YXIoLS1ndXR0ZXIyLSk7XG4kZ3V0dGVyMyA6IHZhcigtLWd1dHRlcjMpOyAkZ3V0dGVyMy0gOiB2YXIoLS1ndXR0ZXIzLSk7XG4kZ3V0dGVyNCA6IHZhcigtLWd1dHRlcjQpOyAkZ3V0dGVyNC0gOiB2YXIoLS1ndXR0ZXI0LSk7XG4kZ3V0dGVyNSA6IHZhcigtLWd1dHRlcjUpOyAkZ3V0dGVyNS0gOiB2YXIoLS1ndXR0ZXI1LSk7XG4kZ3V0dGVyNiA6IHZhcigtLWd1dHRlcjYpOyAkZ3V0dGVyNi0gOiB2YXIoLS1ndXR0ZXI2LSk7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3Vyc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vIEV4cGxpY2l0IENvbG91cnMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBFeHBsaWNpdCBjb2xvdXJzIGFyZSBhIHdoYXQgdGhleSBhcmUuIEdyZWVuIGlzIGdyZWVuLCBibHVlIGlzIGJsdWUuLi4gbm8gb2JzY3VyaXR5LlxuLy8vIFdlIHN1ZmZpeCBudW1iZXJzIHRvIGRlZmluZSB2YXJpYXRpb25zIG9mIGNvbG91cnMgaW4gbm8gcGFydGljdWxhciBvcmRlciBvZiBzaGFkZS5cbi8vLyBFeGFtcGxlOiBncmVlbjEsIGdyZWVuMiwgZ3JlZW4zLCBncmVlbjQuIFRoaXMgaXMgc28gd2UgY2FuIGltbWlkaWF0ZWx5IHNlZSBob3dcbi8vLyBtYW55IG9wdGlvbnMgd2UgaGF2ZSBmb3IgYSBzaW5nbGUgY29sb3VyIGF0IGEgZ2xhbmNlLiBJZiB5b3Ugc2VlICRncmVlbjQsIHlvdSBrbm93IHRoaXNcbi8vLyBwcm9qZWN0IGlzIHVzaW5nIGZvdXIgdmFyaWF0aW9ucyBvZiBncmVlbi4gVGhpcyBpcyBhbHNvIG9mdGVuIHVzZWZ1bCBiZWNhdXNlIG1hbnkgZGV2ZWxvcG1lbnRcbi8vLyB0b29scyB3aWxsIGF1dG8tc3VnZ2VzdCBjb2xvdXJzIHdpdGggYWN0dWFsIGV4YW1wbGVzIG9mIHRoZSBjb2xvdXIuXG4vLy8gVGhlIFBhbGxldGVzIG1vZHVsZSAoYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUpIHdpbGwgb3V0cHV0IHNoYWRlZCBuYW1lZCB2YXJpYXRpb25zLFxuLy8vLyA8Y29sb3VyPi1kYXJrIGFuZCA8Y29sb3VyPi1saWdodC4gSWYgeW91IG5lZWQgYWRkaXRpb25hbCBzaGFkZXMgcGxlYXNlIHJlZnJhaW0gZnJvbSBnb2luZyBkb3duXG4vLy8gdGhlICdsaWdodGVyJywgJ2xpZ2h0ZXN0JywgJ2RhcmtlcicsICdkYXJrZXN0JyBjb252ZW50aW9uLiBUaGVzZSBhcmUgbm90IHBhcnRpY3Vhcmx5IGxlZ2lhYmxlXG4vLy8gYW5kIHRoZXkgYXJlIGxpbWl0ZWQgYnkgaG93IGNyZWF0aXZlIChjb25mdXNpbmcpIHlvdXIgd29yZGluZyBjYW4gYmUuXG4vLy8gSXQgaXMgYmV0dGVyIHRvIGRlZmluZSBhIG5ldyBleHBsY2l0IGNvbG91ciBlbnRpcmVseS5cbi8vLyBAc2VlIGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vd2hhdC1kby15b3UtbmFtZS1jb2xvci12YXJpYWJsZXMvXG5cbiRibHVlOiAjMTMxZjZiOyAvLyBQcmltYXJ5XG4kYmx1ZTI6ICMyOTJiNjg7IC8vIE5ha2VkIExpbmtcbiRibHVlMzogIzNkM2Y3ZjsgLy8gTGlnbnQgR3JhZGllbnRcbiRibHVlNDogIzEwMTI0ZDsgLy8gRGFyayBHcmFkaWVudFxuJGJsdWU1OiAjMDA5NWZmOyAvLyBOYXZpZ2F0aW9uIGxpbmsgaG92ZXJcbi8vICRyZWQgICAgOiAjRTAzQTQwOyAvLyBTZWNvbmRhcnlcbiRyZWQ6ICNkZjMwMzU7IC8vIFNlY29uZGFyeSAtIFRoaXMgcGFzc2VzIHRoZSBjb250cmFzdCByYXRpbyBhY2Nlc3NpYmlsaXR5IHRlc3QgaW4gR29vZ2xlcyBMaWdodGhvdXNlXG4kZ3JleTogIzk2OTY5NTtcbiRncmV5MjogIzZhNmE2YTsgLy8gRm9udFxuJGdyZXkzOiAjZjRmNGY0OyAvLyBMaWdodGVyIEdyZXkgQmFja2dyb3VuZFxuJGdyZXk0OiAjZGNkY2RjO1xuJGdyZXk1OiAjYjFiMWIxOyAvLyBTcGFjZXJzIDxocj5cbiRncmV5NjogIzMzMzIzNjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyXG4kZ3JlZW46ICM1MGJjMDg7XG4kZ3JlZW4yOiAjNzZiYjI4OyAvLyBFU0cgZ3JlZW5cbiR5ZWxsb3c6ICNmNmY0ZGI7IC8vIERpc2NsYWltZXIgQmFja2dyb3VuZFxuJHllbGxvdzI6ICNmY2IwMDI7XG4kb3JhbmdlOiAjZmY2YTAwO1xuJG9yYW5nZTI6ICNkYThiMGY7XG4kYmxhY2s6ICMxZTFjMWM7XG5cbiRtYXJrOiAkYmx1ZTU7IC8vIGJhY2tncm91bmQgY29sb3VyIGZvciA8bWFyaz4gdGFnc1xuXG4kcHJpbWFyeTogdmFyKC0tcHJpbWFyeSwgI3skYmx1ZX0pO1xuJHNlY29uZGFyeTogdmFyKC0tc2Vjb25kYXJ5LCAjeyRyZWR9KTtcblxuLy8vIFBhbGV0dGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBCeSBsb2FkaW5nIGNvbmZpZ3VyYXRpb25zIGludG8gdGhpcyAncGFsbGV0ZScgbW9kdWxlLCB3ZSB3aWxsIGJlIGFibGVcbi8vLyB0byBkZWNsYXJlIHZhcmlhbnRzIG9mIGEgZmV3IGNvbW1vbiBjb2xvdXJzLiBZb3UgY2FuIGFsc28gYWRqdXN0IHRoZSBsaWdodG5lc3Ncbi8vLyBvciBkYXJrbmVzcyBvZiBlYWNoIHZhcmlhbnQgYnkgcGFzc2luZyBpbiB0aGUgcmVsZXZhbnQgcHJpdmF0ZSBydWxlcy5cbi8vLyBQYWxldHRlIHdpbGwgYWxzbyBleHBvc2UgcG9wdWxhciBzb2NpYWwgbWVkaWEgY29sb3VycyBhbmQgdGhlIFllbGxvIGJyYW5kIGNvbG91ci5cbi8vLyBAc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL2ZvcndhcmQjY29uZmlndXJpbmctbW9kdWxlc1xuLy8vIEBvdXRwdXQgJGdyZWVuIDogIzAyOTI5QTsgJGdyZWVuLWRhcmsgOiAjMjU2NTY5OyAkZ3JlZW4tbGlnaHQ6ICMwNGI5YzQ7XG5cbkBmb3J3YXJkICdjcmVhdGUvcGFsZXR0ZScgd2l0aCAoXG4gICRibHVlOiAkYmx1ZSxcbiAgJHJlZDogJHJlZCxcbiAgJGdyZXk6ICRncmV5LFxuICAkeWVsbG93OiAkeWVsbG93LFxuICAkb3JhbmdlOiAkb3JhbmdlLFxuICAkZ3JlZW46ICRncmVlbixcbiAgJGJsYWNrOiAkYmxhY2tcbik7XG5cbiRtYXA6IChcbiAgYmx1ZTogJGJsdWUsXG4gIHJlZDogJHJlZCxcbiAgZ3JleTogJGdyZXkzLFxuICB5ZWxsb3c6ICR5ZWxsb3csXG4gIG9yYW5nZTogJG9yYW5nZSxcbiAgZ3JlZW46ICRncmVlbixcbiAgYmxhY2s6ICRibGFjayxcbik7XG4iXX0= */