@font-face {
  font-family: 'liberation';
  src: url("/themes/custom/custom/font/LiberationSans-Regular-webfont.woff") format("woff"), url("/themes/custom/custom/font/LiberationSans-Regular-webfont.ttf") format("truetype");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'liberation';
  src: url("/themes/custom/custom/font/LiberationSans-Italic-webfont.woff") format("woff"), url("/themes/custom/custom/font/LiberationSans-Italic-webfont.ttf") format("truetype");
  font-weight: normal;
  font-style: italic; }

@font-face {
  font-family: 'liberation';
  src: url("/themes/custom/custom/font/LiberationSans-BoldItalic-webfont.woff") format("woff"), url("/themes/custom/custom/font/LiberationSans-BoldItalic-webfont.ttf") format("truetype");
  font-weight: bold;
  font-style: italic; }

@font-face {
  font-family: 'liberation';
  src: url("/themes/custom/custom/font/LiberationSans-Bold-webfont.woff") format("woff"), url("/themes/custom/custom/font/LiberationSans-Bold-webfont.ttf") format("truetype");
  font-weight: bold;
  font-style: normal; }

.path-frontpage .sidebar .useful-information {
  display: none; }

/*
 Remove fixed sidebar from contact page
 */
html body.page-node--14 .sidebar .fix-dom-sidebar {
  display: none; }

html body .useful-info-link a[target="_blank"]:after {
  content: ''; }

html body .useful-info-link a .link {
  color: #00A7E7;
  font-style: normal; }
  html body .useful-info-link a .link:after {
    content: "\f35d";
    font-family: "Font Awesome 5 Free";
    font-weight: 900;
    font-size: 0.6em;
    margin-right: 10px;
    display: inline-block;
    vertical-align: middle;
    margin-left: 3px; }
  html body .useful-info-link a .link:hover, html body .useful-info-link a .link:focus {
    text-decoration: underline; }

.region-content {
  padding: 0;
  min-height: calc(100vh - 150px); }
  .region-content .field--name-field-sidebar .field__item {
    margin-bottom: 10px; }
  .region-content blockquote {
    padding: 20px;
    background: #f1f1f1;
    border: 1px solid #ccc; }
  .region-content a {
    transition: all 0.3s ease-in-out; }
    .region-content a img {
      filter: brightness(100%);
      transition: all 0.3s ease-in-out; }
    .region-content a:hover img {
      filter: brightness(85%); }
  .region-content .caption {
    display: table; }
    .region-content .caption > figcaption {
      display: table-caption;
      caption-side: bottom;
      max-width: none; }
  .region-content .caption figcaption {
    font-size: 14px;
    font-style: italic; }
  .region-content table {
    padding: 0 30px;
    display: block; }
    .region-content table thead tr th {
      text-align: center;
      background: #757575;
      color: white;
      border-left: 1px solid #ccc;
      border-bottom: 1px solid #ccc;
      border-right: 1px solid #ccc;
      text-transform: initial; }
    .region-content table tbody tr {
      border-bottom: 1px solid #ccc; }
      .region-content table tbody tr:hover, .region-content table tbody tr:focus {
        background: #fafafa; }
      .region-content table tbody tr td {
        border-right: 1px solid #ccc;
        border-left: 1px solid #ccc;
        color: black; }
        .region-content table tbody tr td:nth-of-type(1) {
          background: #f1f1f1; }
  .region-content .node--type-page.green h1, .region-content .node--type-page.green h2, .region-content .node--type-page.green h3, .region-content .node--type-page.green h4, .region-content .node--type-page.green h5, .region-content .node--type-page.green h6 {
    color: #008540; }
  .region-content .node--type-page.lightblue h1, .region-content .node--type-page.lightblue h2, .region-content .node--type-page.lightblue h3, .region-content .node--type-page.lightblue h4, .region-content .node--type-page.lightblue h5, .region-content .node--type-page.lightblue h6 {
    color: #00a7e7; }
  .region-content .node--type-page.darkblue h1, .region-content .node--type-page.darkblue h2, .region-content .node--type-page.darkblue h3, .region-content .node--type-page.darkblue h4, .region-content .node--type-page.darkblue h5, .region-content .node--type-page.darkblue h6 {
    color: #26348c; }
  .region-content .node--type-page.purple h1, .region-content .node--type-page.purple h2, .region-content .node--type-page.purple h3, .region-content .node--type-page.purple h4, .region-content .node--type-page.purple h5, .region-content .node--type-page.purple h6 {
    color: #b2107c; }
  .region-content ul {
    padding-left: 0; }
  .region-content .paragraph.paragraph--type--column-2 {
    overflow: hidden;
    margin-bottom: 15px; }
    .region-content .paragraph.paragraph--type--column-2 .field--name-field-column-1 {
      float: left;
      width: 50%;
      padding-right: 10px; }
      @media (max-width: 767px) {
        .region-content .paragraph.paragraph--type--column-2 .field--name-field-column-1 {
          padding: 0; } }
    .region-content .paragraph.paragraph--type--column-2 .field--name-field-column-2 {
      float: right;
      width: 50%;
      padding-left: 10px; }
      @media (max-width: 767px) {
        .region-content .paragraph.paragraph--type--column-2 .field--name-field-column-2 {
          padding: 0; } }
    @media (max-width: 767px) {
      .region-content .paragraph.paragraph--type--column-2 > div.field {
        width: 100%;
        float: none;
        margin-bottom: 15px; } }
  .region-content .paragraph--type--image-link {
    text-align: left; }
    .region-content .paragraph--type--image-link a:hover, .region-content .paragraph--type--image-link a:focus {
      text-decoration: none; }
      .region-content .paragraph--type--image-link a:hover .field--name-field-image:after, .region-content .paragraph--type--image-link a:focus .field--name-field-image:after {
        content: '';
        position: absolute;
        background: rgba(0, 0, 0, 0.3);
        top: 0;
        left: 0;
        right: 0;
        bottom: 0; }
    .region-content .paragraph--type--image-link .field--name-field-title {
      font-weight: bold;
      color: black; }
    .region-content .paragraph--type--image-link .content p {
      color: #000; }
  .region-content .node--type-page > h2 {
    display: none; }
  .region-content .field--name-field-content {
    text-align: left;
    margin-top: 20px; }
  .region-content .title {
    text-align: center;
    padding: 0;
    margin-top: 20px;
    margin-bottom: 10px;
    padding: 0 20px;
    width: 100%; }
  .region-content .paragraph--type--image {
    margin-bottom: 20px; }
  .region-content .paragraph--type--image-list {
    margin: 30px 0;
    margin-bottom: 15px;
    text-align: center; }
    .region-content .paragraph--type--image-list .field--name-field-title {
      margin-top: 10px; }
    @media (max-width: 767px) {
      .region-content .paragraph--type--image-list .field--name-field-body {
        display: none; } }
  .region-content .field--name-field-image img {
    width: 100%; }
  .region-content .content--header {
    position: relative; }
    .region-content .content--header .title {
      position: absolute;
      bottom: 0;
      color: white;
      background: rgba(0, 0, 0, 0.6);
      width: 100%;
      padding: 10px 20px; }
  .region-content .field--name-field-image-link > div {
    margin-bottom: 15px; }
  .region-content .field--name-field-image-link .field--name-field-image.field--type-image {
    position: relative; }
  .region-content .sidebar {
    margin-top: 20px; }
    .region-content .sidebar .paragraph--type--image-link {
      display: block; }
      .region-content .sidebar .paragraph--type--image-link .field--name-field-image {
        position: relative; }
    .region-content .sidebar .paragraph .field--name-field-title {
      padding: 8px 2px 0; }
    .region-content .sidebar .paragraph .content .field--type-text-long {
      padding: 3px 2px; }
    .region-content .sidebar .useful-info-link {
      margin: 0;
      padding: 0;
      list-style-type: none; }
      .region-content .sidebar .useful-info-link li {
        list-style-type: none;
        margin-bottom: 15px; }
        .region-content .sidebar .useful-info-link li a {
          color: black; }
          .region-content .sidebar .useful-info-link li a:hover, .region-content .sidebar .useful-info-link li a:focus {
            color: black;
            text-decoration: none; }
          .region-content .sidebar .useful-info-link li a i {
            font-size: 25px;
            display: inline-block;
            vertical-align: middle;
            margin-right: 10px; }
          .region-content .sidebar .useful-info-link li a span {
            display: inline-block;
            vertical-align: middle;
            position: absolute;
            line-height: 17px;
            font-size: 15px; }
            @media (max-width: 991px) {
              .region-content .sidebar .useful-info-link li a span {
                line-height: 16px;
                font-size: 15px; } }

body .region-content article.green table.achieved-color thead tr th {
  background: #009E4D; }

body .region-content article.green table.achieved-color tbody tr td:nth-of-type(1) {
  background: #c5e4da; }

body .region-content article.green table.achieved-color tbody tr:hover, body .region-content article.green table.achieved-color tbody tr:focus {
  background: #c5e4da; }

body .region-content article.darkblue table.achieved-color thead tr th {
  background: #26348c; }

body .region-content article.darkblue table.achieved-color tbody tr td:nth-of-type(1) {
  background: #d3d9ff; }

body .region-content article.darkblue table.achieved-color tbody tr:hover, body .region-content article.darkblue table.achieved-color tbody tr:focus {
  background: #d3d9ff; }

body .region-content article.purple table.achieved-color thead tr th {
  background: #b2107c; }

body .region-content article.purple table.achieved-color tbody tr td:nth-of-type(1) {
  background: #ffe8f7; }

body .region-content article.purple table.achieved-color tbody tr:hover, body .region-content article.purple table.achieved-color tbody tr:focus {
  background: #ffe8f7; }

body .region-content article.lightblue table.achieved-color thead tr th {
  background: #00A7E7; }

body .region-content article.lightblue table.achieved-color tbody tr td:nth-of-type(1) {
  background: #bbecff; }

body .region-content article.lightblue table.achieved-color tbody tr:hover, body .region-content article.lightblue table.achieved-color tbody tr:focus {
  background: #bbecff; }

body .region-content article.green table.action-color thead tr th {
  background: #00cb6c; }

body .region-content article.green table.action-color tbody tr td:nth-of-type(1) {
  background: #c5e4da; }

body .region-content article.green table.action-color tbody tr:hover, body .region-content article.green table.action-color tbody tr:focus {
  background: #c5e4da; }

body .region-content article.darkblue table.action-color thead tr th {
  background: #3a4fd5; }

body .region-content article.darkblue table.action-color tbody tr td:nth-of-type(1) {
  background: #d3d9ff; }

body .region-content article.darkblue table.action-color tbody tr:hover, body .region-content article.darkblue table.action-color tbody tr:focus {
  background: #d3d9ff; }

body .region-content article.purple table.action-color thead tr th {
  background: #e510a0; }

body .region-content article.purple table.action-color tbody tr td:nth-of-type(1) {
  background: #ffe8f7; }

body .region-content article.purple table.action-color tbody tr:hover, body .region-content article.purple table.action-color tbody tr:focus {
  background: #ffe8f7; }

body .region-content article.lightblue table.action-color thead tr th {
  background: #00beff; }

body .region-content article.lightblue table.action-color tbody tr td:nth-of-type(1) {
  background: #bbecff; }

body .region-content article.lightblue table.action-color tbody tr:hover, body .region-content article.lightblue table.action-color tbody tr:focus {
  background: #bbecff; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5jc3MiLCJzb3VyY2VzIjpbImNvbnRlbnQuc2NzcyIsIl92YXJpYWJsZXMuc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L19icmVha3BvaW50LnNjc3MiLCIuLi92ZW5kb3IvYnJlYWtwb2ludC9icmVha3BvaW50L19zZXR0aW5ncy5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9fY29udGV4dC5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9fcGFyc2Vycy5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9wYXJzZXJzL19xdWVyeS5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L2JyZWFrcG9pbnQvcGFyc2Vycy9zaW5nbGUvX2RlZmF1bHQuc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L2JyZWFrcG9pbnQvcGFyc2Vycy9fZG91YmxlLnNjc3MiLCIuLi92ZW5kb3IvYnJlYWtwb2ludC9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RvdWJsZS1zdHJpbmcuc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L2JyZWFrcG9pbnQvcGFyc2Vycy9kb3VibGUvX2RlZmF1bHQuc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L2JyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCIuLi92ZW5kb3IvYnJlYWtwb2ludC9icmVha3BvaW50L3BhcnNlcnMvdHJpcGxlL19kZWZhdWx0LnNjc3MiLCIuLi92ZW5kb3IvYnJlYWtwb2ludC9icmVha3BvaW50L3BhcnNlcnMvX3Jlc29sdXRpb24uc2NzcyIsIi4uL3ZlbmRvci9icmVha3BvaW50L2JyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCIuLi92ZW5kb3IvYnJlYWtwb2ludC9icmVha3BvaW50L19uby1xdWVyeS5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9fcmVzcG9uZC10by5zY3NzIiwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFyaWFibGVzJztcblxuLnBhdGgtZnJvbnRwYWdlIHtcbiAgLnNpZGViYXIge1xuICAgIC51c2VmdWwtaW5mb3JtYXRpb24ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbi8qXG4gUmVtb3ZlIGZpeGVkIHNpZGViYXIgZnJvbSBjb250YWN0IHBhZ2VcbiAqL1xuaHRtbCBib2R5LnBhZ2Utbm9kZS0tMTQge1xuICAuc2lkZWJhciB7XG4gICAgLmZpeC1kb20tc2lkZWJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG5odG1sIGJvZHkgLnVzZWZ1bC1pbmZvLWxpbmsge1xuICBhIHtcbiAgICAmW3RhcmdldD1cIl9ibGFua1wiXTphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICB9XG5cbiAgICAubGluayB7XG4gICAgICBjb2xvcjogIzAwQTdFNztcbiAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcblxuICAgICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXFxmMzVkXCI7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA1IEZyZWVcIjtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjZlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLnJlZ2lvbi1jb250ZW50IHtcbiAgcGFkZGluZzogMDtcbiAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDE1MHB4KTtcblxuXG4gIC5maWVsZC0tbmFtZS1maWVsZC1zaWRlYmFyIHtcbiAgICAuZmllbGRfX2l0ZW0ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB9XG4gIH1cblxuICBibG9ja3F1b3RlIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6ICNmMWYxZjE7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcbiAgfVxuXG4gIGF7XG4gICAgdHJhbnNpdGlvbjogJGRlZi10cmFuc2l0aW9uO1xuICAgIGltZ3tcbiAgICAgIGZpbHRlcjpicmlnaHRuZXNzKDEwMCUpO1xuICAgICAgdHJhbnNpdGlvbjogJGRlZi10cmFuc2l0aW9uO1xuICAgIH1cbiAgICAmOmhvdmVye1xuICAgICAgaW1ne1xuICAgICAgICBmaWx0ZXI6YnJpZ2h0bmVzcyg4NSUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAuY2FwdGlvbiB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgPiBmaWdjYXB0aW9uIHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247XG4gICAgICBjYXB0aW9uLXNpZGU6IGJvdHRvbTtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG4gIH1cblxuICAuY2FwdGlvbiB7XG4gICAgZmlnY2FwdGlvbiB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxuICB9XG5cbiAgdGFibGUge1xuICAgIHBhZGRpbmc6IDAgMzBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0aGVhZCB7XG4gICAgICB0ciB7XG4gICAgICAgIHRoIHtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgYmFja2dyb3VuZDogIzc1NzU3NTtcbiAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjO1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xuICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjY2M7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IGluaXRpYWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGJvZHkge1xuICAgICAgdHIge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcblxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmFmYWZhO1xuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICY6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2YxZjFmMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2NjYztcbiAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNjY2M7XG4gICAgICAgICAgY29sb3I6IGJsYWNrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm5vZGUtLXR5cGUtcGFnZSB7XG4gICAgJi5ncmVlbiB7XG4gICAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcm9qZWN0LXR3bztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxpZ2h0Ymx1ZSB7XG4gICAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcm9qZWN0LW9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmRhcmtibHVlIHtcbiAgICAgIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICAgICAgICBjb2xvcjogJGNvbG9yLXByb2plY3QtdGhyZWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5wdXJwbGUge1xuICAgICAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJvamVjdC1mb3VyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVsIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cblxuICAucGFyYWdyYXBoLnBhcmFncmFwaC0tdHlwZS0tY29sdW1uLTIge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcblxuICAgIC5maWVsZC0tbmFtZS1maWVsZC1jb2x1bW4tMSB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbSkge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5maWVsZC0tbmFtZS1maWVsZC1jb2x1bW4tMiB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICB3aWR0aDogNTAlO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuXG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRzbSkge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgICA+IGRpdi5maWVsZCB7XG4gICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkc20pIHtcbiAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgIH1cbiAgICAgfVxuICB9XG5cbiAgLnBhcmFncmFwaC0tdHlwZS0taW1hZ2UtbGluayB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgIGEge1xuICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgLmZpZWxkLS1uYW1lLWZpZWxkLWltYWdlIHtcbiAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuZmllbGQtLW5hbWUtZmllbGQtdGl0bGUge1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjb2xvcjogYmxhY2s7XG4gICAgfVxuXG4gICAgLmNvbnRlbnQge1xuICAgICAgcCB7XG4gICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5ub2RlLS10eXBlLXBhZ2Uge1xuICAgID4gaDIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgfVxuICAuZmllbGQtLW5hbWUtZmllbGQtY29udGVudCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICB9XG5cbiAgLnRpdGxlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLnBhcmFncmFwaC0tdHlwZS0taW1hZ2Uge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gIH1cblxuICAucGFyYWdyYXBoLS10eXBlLS1pbWFnZS1saXN0IHtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgIC5maWVsZC0tbmFtZS1maWVsZC10aXRsZSB7XG4gICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIH1cblxuICAgIC5maWVsZC0tbmFtZS1maWVsZC1ib2R5IHtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHNtKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmJsb2NrLXN5c3RlbS1tYWluLWJsb2NrIHtcbiAgfVxuXG4gIC5maWVsZC0tbmFtZS1maWVsZC1pbWFnZSB7XG4gICAgaW1nIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5jb250ZW50LS1oZWFkZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAudGl0bGUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjYpO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgfVxuICB9XG5cbiAgLmZpZWxkLS1uYW1lLWZpZWxkLWltYWdlLWxpbmsge1xuICAgID4gZGl2IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgfVxuXG4gICAgLmZpZWxkLS1uYW1lLWZpZWxkLWltYWdlLmZpZWxkLS10eXBlLWltYWdlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAvLyAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgLy8gICAgJjphZnRlciB7XG4gICAgLy8gICAgICBjb250ZW50OiAnJztcbiAgICAvLyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAvLyAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICAvLyAgICAgIHRvcDogMDtcbiAgICAvLyAgICAgIGxlZnQ6IDA7XG4gICAgLy8gICAgICByaWdodDogMDtcbiAgICAvLyAgICAgIGJvdHRvbTogMDtcbiAgICAvLyAgICB9XG4gICAgLy8gIH1cbiAgICB9XG4gIH1cblxuICAuc2lkZWJhciB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcblxuICAgIC5wYXJhZ3JhcGgtLXR5cGUtLWltYWdlLWxpbmsge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAgIC5maWVsZC0tbmFtZS1maWVsZC1pbWFnZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLnBhcmFncmFwaHtcbiAgICAgIC5maWVsZC0tbmFtZS1maWVsZC10aXRsZXtcbiAgICAgICAgcGFkZGluZzogOHB4IDJweCAwO1xuICAgICAgfVxuICAgICAgLmNvbnRlbnR7XG5cbiAgICAgICAgLmZpZWxkLS10eXBlLXRleHQtbG9uZ3tcbiAgICAgICAgICBwYWRkaW5nOiAzcHggMnB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnVzZWZ1bC1pbmZvLWxpbmsge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICAgICAgbGkge1xuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG5cbiAgICAgICAgYSB7XG4gICAgICAgICAgY29sb3I6IGJsYWNrO1xuXG4gICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICBjb2xvcjogYmxhY2s7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTdweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1kKSB7XG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5ib2R5e1xuICAucmVnaW9uLWNvbnRlbnR7XG4gICAgYXJ0aWNsZXtcbiAgICAgICYuZ3JlZW57XG4gICAgICAgIHRhYmxlLmFjaGlldmVkLWNvbG9yIHtcbiAgICAgICAgICB0aGVhZCB7XG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgIHRoIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbnN3LWdyZWVuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRib2R5e1xuICAgICAgICAgICAgdHJ7XG4gICAgICAgICAgICAgIHRkOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbnN3LWdyZWVuLWw7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbnN3LWdyZWVuLWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYuZGFya2JsdWV7XG4gICAgICAgIHRhYmxlLmFjaGlldmVkLWNvbG9yIHtcbiAgICAgICAgICB0aGVhZCB7XG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgIHRoIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbnN3LW5hdnk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGJvZHl7XG4gICAgICAgICAgICB0cntcbiAgICAgICAgICAgICAgdGQ6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuc3ctbmF2eS1sO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1uYXZ5LWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYucHVycGxle1xuICAgICAgICB0YWJsZS5hY2hpZXZlZC1jb2xvciB7XG4gICAgICAgICAgdGhlYWQge1xuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1waW5rO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRib2R5e1xuICAgICAgICAgICAgdHJ7XG4gICAgICAgICAgICAgIHRkOm50aC1vZi10eXBlKDEpIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbnN3LXBpbmstbDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuc3ctcGluay1sO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmxpZ2h0Ymx1ZXtcbiAgICAgICAgdGFibGUuYWNoaWV2ZWQtY29sb3Ige1xuICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuc3ctYmx1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0Ym9keXtcbiAgICAgICAgICAgIHRye1xuICAgICAgICAgICAgICB0ZDpudGgtb2YtdHlwZSgxKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1ibHVlLWw7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAkbnN3LWJsdWUtbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5ib2R5e1xuICAucmVnaW9uLWNvbnRlbnR7XG4gICAgYXJ0aWNsZXtcbiAgICAgICYuZ3JlZW57XG4gICAgICAgIHRhYmxlLmFjdGlvbi1jb2xvciB7XG4gICAgICAgICAgdGhlYWQge1xuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICB0aCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwY2I2YztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0Ym9keXtcbiAgICAgICAgICAgIHRye1xuICAgICAgICAgICAgICB0ZDpudGgtb2YtdHlwZSgxKSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1ncmVlbi1sO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1ncmVlbi1sO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAmLmRhcmtibHVle1xuICAgICAgICB0YWJsZS5hY3Rpb24tY29sb3Ige1xuICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzYTRmZDU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGJvZHl7XG4gICAgICAgICAgICB0cntcbiAgICAgICAgICAgICAgdGQ6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuc3ctbmF2eS1sO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1uYXZ5LWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYucHVycGxle1xuICAgICAgICB0YWJsZS5hY3Rpb24tY29sb3Ige1xuICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlNTEwYTA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGJvZHl7XG4gICAgICAgICAgICB0cntcbiAgICAgICAgICAgICAgdGQ6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuc3ctcGluay1sO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1waW5rLWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICYubGlnaHRibHVle1xuICAgICAgICB0YWJsZS5hY3Rpb24tY29sb3Ige1xuICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIHRyIHtcbiAgICAgICAgICAgICAgdGgge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMGJlZmY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGJvZHl7XG4gICAgICAgICAgICB0cntcbiAgICAgICAgICAgICAgdGQ6bnRoLW9mLXR5cGUoMSkge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuc3ctYmx1ZS1sO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJG5zdy1ibHVlLWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuIiwiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnbGliZXJhdGlvbic7XG4gIHNyYzogdXJsKCcvdGhlbWVzL2N1c3RvbS9jdXN0b20vZm9udC9MaWJlcmF0aW9uU2Fucy1SZWd1bGFyLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICB1cmwoJy90aGVtZXMvY3VzdG9tL2N1c3RvbS9mb250L0xpYmVyYXRpb25TYW5zLVJlZ3VsYXItd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnbGliZXJhdGlvbic7XG4gIHNyYzogdXJsKCcvdGhlbWVzL2N1c3RvbS9jdXN0b20vZm9udC9MaWJlcmF0aW9uU2Fucy1JdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gIHVybCgnL3RoZW1lcy9jdXN0b20vY3VzdG9tL2ZvbnQvTGliZXJhdGlvblNhbnMtSXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ2xpYmVyYXRpb24nO1xuICBzcmM6IHVybCgnL3RoZW1lcy9jdXN0b20vY3VzdG9tL2ZvbnQvTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgdXJsKCcvdGhlbWVzL2N1c3RvbS9jdXN0b20vZm9udC9MaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdsaWJlcmF0aW9uJztcbiAgc3JjOiB1cmwoJy90aGVtZXMvY3VzdG9tL2N1c3RvbS9mb250L0xpYmVyYXRpb25TYW5zLUJvbGQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gIHVybCgnL3RoZW1lcy9jdXN0b20vY3VzdG9tL2ZvbnQvTGliZXJhdGlvblNhbnMtQm9sZC13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuJGNvbG9yLXByb2plY3Qtb25lOiAjMDBhN2U3O1xuJGNvbG9yLXByb2plY3QtdHdvOiAjMDA4NTQwO1xuJGNvbG9yLXByb2plY3QtdGhyZWU6ICMyNjM0OGM7XG4kY29sb3ItcHJvamVjdC1mb3VyOiAjYjIxMDdjO1xuXG4kY29sb3ItcHJpbWFyeTogYmxhY2s7XG4kY29sb3Itc2Vjb25kYXJ5OiAjNTU1NTVkO1xuJGNvbG9yLXRoaXJkOiAjYjJiMmI3O1xuXG4kY29sb3ItaGlnaGxpZ2h0OiAjMDBBN0U3O1xuJGNvbG9yLWhpZ2hsaWdodC1saWdodDogIzAwOTZkMDtcblxuJGRlZi10cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2UtaW4tb3V0O1xuXG4kbnN3LW9yYW5nZTogI2Y2ODkxZTtcbiRuc3ctcGluazogI2IyMTA3YztcbiRuc3ctcGluay1sOiAjZmZlOGY3O1xuJG5zdy1ncmVlbi1mOiAjMDA3MzY3O1xuJG5zdy1ncmVlbi1mbDogIzAwOTY4MTtcbiRuc3ctZ3JlZW46ICMwMDlFNEQ7XG4kbnN3LWdyZWVuLWw6ICNjNWU0ZGE7XG4kbnN3LW5hdnk6ICMyNjM0OGM7XG4kbnN3LW5hdnktbDogI2QzZDlmZjtcbiRuc3ctYmx1ZTogIzAwQTdFNztcbiRuc3ctYmx1ZS1sOiAjYmJlY2ZmO1xuXG4kdG9wLW5hdmlnYXRpb24taGVpZ2h0OiA2MHB4O1xuJGZvb3Rlci1oZWlnaHQ6IDYwcHg7XG5cbiRwcmltYXJ5LWZvbnQtdHlwZTogJ2xpYmVyYXRpb24nLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuXG4keHM6IChtYXgtd2lkdGggNTc1cHgpO1xuLy8gU21hbGwgc2NyZWVuIC8gcGhvbmVcbiRzbTogKG1heC13aWR0aCA3NjdweCk7XG4vLyBNZWRpdW0gc2NyZWVuIC8gdGFibGV0XG4kbWQ6IChtYXgtd2lkdGggOTkxcHgpO1xuLy8gTGFyZ2Ugc2NyZWVuIC8gZGVza3RvcFxuJGxnOiAobWF4LXdpZHRoIDExOTlweCk7XG4vLyBFeHRyYSBsYXJnZSBzY3JlZW4gLyB3aWRlIGRlc2t0b3BcbiR4bDogKG1heC13aWR0aCAxNjAwcHgpO1xuLy8gWEV4dHJhIGxhcmdlciB0aGVuIDE2MDBcblxuXG5AaW1wb3J0IFwiLi4vdmVuZG9yL2JyZWFrcG9pbnQvYnJlYWtwb2ludFwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFDQUEsVUFBVTtFQUNSLFdBQVcsRUFBRSxZQUFZO0VBQ3pCLEdBQUcsRUFBRSxxRUFBcUUsQ0FBQyxjQUFjLEVBQ3pGLG9FQUFvRSxDQUFDLGtCQUFrQjtFQUN2RixXQUFXLEVBQUUs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 */
