grade-filter {
  display: grid;
  grid-template-columns: 300px 1fr;
  grid-gap: var(--gutter1);
  flex-grow: 1;
  background-color: #f4f4f4;
}
grade-filter > h2 {
  grid-row: 1;
  grid-column: 1/-1;
}
grade-filter filter-bar {
  grid-row: 2;
  grid-column: 1/-1;
  display: grid;
  align-items: flex-start;
  grid-gap: var(--gap);
  grid-template-columns: auto 1fr;
}
grade-filter filter-bar button.filter {
  display: flex;
  grid-row: 1;
  width: -moz-fit-content;
  width: fit-content;
  place-items: center;
  place-content: center;
  margin-top: 1.8em;
}
grade-filter filter-bar button.filter span {
  margin-left: calc(var(--gap) * 0.5);
  font-weight: bold;
  font-size: 0.75em;
}
grade-filter filter-bar button.filter svg {
  width: 16px;
  height: 16px;
  fill: #969695;
}
grade-filter filter-bar .datalist-group {
  grid-row: 1;
  display: grid;
  grid-gap: 20px var(--gap);
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
}
@media (max-width: 480px) {
  grade-filter filter-bar {
    grid-template-columns: 1fr;
    display: flex;
    flex-direction: column;
  }
  grade-filter filter-bar button.filter {
    margin-bottom: var(--gap);
  }
  grade-filter filter-bar .datalist-group {
    grid-template-columns: 1fr;
    width: 100%;
  }
}
grade-filter filter-bar datalist-wrap {
  display: block;
  position: relative;
  flex-grow: 1;
  margin-top: 1em;
}
grade-filter filter-bar datalist-wrap label {
  font-size: 0.875em;
  color: #1e1c1c;
  margin-bottom: calc(var(--gap) * 0.5);
  display: block;
  position: absolute;
  bottom: 100%;
  left: 0;
}
grade-filter filter-bar datalist-wrap input {
  border: none;
  padding: 12px var(--gap);
  width: 100%;
  color: #6a6a6a;
  font-size: 0.875em;
  border-radius: var(--border-radius, 6px);
  background-color: white;
  border: 1px solid #f4f4f4;
  transition: border-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}
grade-filter filter-bar datalist-wrap input:focus {
  outline: none;
}
grade-filter filter-bar datalist-wrap input:valid + button.clear {
  pointer-events: all;
  opacity: 1;
  transform: scale(1);
}
grade-filter filter-bar datalist-wrap button.clear {
  cursor: pointer;
  position: absolute;
  right: 1px;
  top: 1px;
  opacity: 0;
  height: calc(100% - 2px);
  padding: 0 var(--gap);
  text-align: center;
  align-items: center;
  justify-content: center;
  background-color: white;
  pointer-events: none;
  transform: scale(0.7);
  border-top-right-radius: var(--border-radius, 6px);
  border-bottom-right-radius: var(--border-radius, 6px);
  transition: opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
grade-filter filter-bar datalist-wrap button.clear svg {
  width: 16px;
  height: 16px;
  color: #131f6b;
  transition: color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
grade-filter filter-bar datalist-wrap button.clear::after {
  content: "";
  width: 30px;
  height: 100%;
  position: absolute;
  top: 0;
  pointer-events: none;
  right: 100%;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), white);
}
@media (hover: hover) {
  grade-filter filter-bar datalist-wrap button.clear:hover svg {
    color: #df3035;
  }
}
grade-filter filter-bar datalist-wrap.active input {
  border-color: #131f6b;
}
grade-filter p#no-results {
  grid-row: 3;
  grid-column: 1/-1;
}
grade-filter p#no-results.hidden {
  display: None;
}
grade-filter section {
  grid-row: 3;
  grid-column: 2;
}
grade-filter section:not(.ungrouped) {
  display: none;
}
grade-filter section .heading {
  display: flex;
  margin-bottom: var(--gap);
  justify-content: space-between;
}
grade-filter section .heading svg {
  display: none;
  width: 1.6em;
  height: 1.6em;
}
grade-filter section .image {
  width: 100%;
  margin-bottom: var(--gutter1);
  border-radius: var(--border-radius, 6px);
  --aspect-ratio: 380/90;
  aspect-ratio: var(--aspect-ratio);
}
@supports not (aspect-ratio: 380/90) {
  grade-filter section .image {
    aspect-ratio: initial;
    padding-bottom: calc(100% / (var(--aspect-ratio)));
    height: 0;
  }
  grade-filter section .image > * {
    position: absolute;
  }
}
grade-filter section .text {
  font-size: 0.875em;
  margin-top: calc(var(--gap) * 2);
}
grade-filter section .text ul {
  margin-left: 0;
}
grade-filter section .text > figure {
  padding: 0;
}
grade-filter section.active {
  display: unset;
}
grade-filter section article h4 {
  display: flex;
  align-items: center;
  margin-bottom: var(--gap);
}
grade-filter section article h4::after {
  content: "";
  height: 1px;
  margin-left: var(--gap);
  background-color: #dcdcdc;
  flex-grow: 1;
}
ul.grades {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  grid-gap: var(--gap);
}
ul.grades li {
  --hover-height: calc(200% + var(--gap));
  --hover-width: 100%;
  min-height: 80px;
  background-color: white;
  border-radius: var(--border-radius, 6px);
  position: relative;
  z-index: 0;
  transition: z-index 0s 0.6s cubic-bezier(0.42, 0, 0.58, 1);
}
ul.grades li > * {
  text-decoration: none;
  display: flex;
  padding: var(--gap);
  height: 100%;
  font-size: 0.9em;
  flex-direction: column;
  transition: background-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
  border-radius: inherit;
}
ul.grades li > * mark {
  background-color: initial;
  color: inherit;
  border-radius: initial;
  padding: initial;
  transition: initial;
}
ul.grades li > * .summary {
  position: absolute;
  border-radius: inherit;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  padding: var(--gap);
  height: 100%;
  width: 100%;
  color: white;
  transition: background-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), height var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), width var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
  transition-delay: 0.2s;
  background-color: transparent;
}
ul.grades li > * .summary::after {
  content: "";
  width: 100%;
  height: 30px;
  position: absolute;
  bottom: 0;
  left: 0;
  background-image: linear-gradient(transparent, #df3035 20px);
}
ul.grades li > * .summary strong {
  opacity: 0;
  transition: opacity 0.2s 0.4s cubic-bezier(0.42, 0, 0.58, 1);
}
ul.grades li > * .summary p, ul.grades li > * .summary::after {
  font-size: 0.8125em;
  opacity: 0;
  transition: opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
ul.grades li > * > strong {
  color: var(--secondary, #df3035);
  transition: color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
ul.grades li > * em {
  font-style: normal;
  font-size: 0.75em;
  transition: color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
@media (hover: hover) {
  ul.grades li > *:hover {
    background-color: var(--secondary, #df3035);
  }
  ul.grades li > *:hover, ul.grades li > *:hover strong {
    color: white;
  }
}
@media (hover: hover) {
  ul.grades li:hover {
    z-index: 1;
    transition-delay: 0s !important;
    transition-duration: 0s !important;
  }
  ul.grades li:hover > * .summary {
    pointer-events: initial;
    height: var(--hover-height);
    width: var(--hover-width);
    transition-delay: 0.2s;
    background-color: #df3035;
  }
  ul.grades li:hover > * .summary strong {
    opacity: 1;
    transition-delay: 0s;
  }
  ul.grades li:hover > * .summary p, ul.grades li:hover > * .summary::after {
    opacity: 1;
    transition-delay: 0.4s;
  }
  ul.grades li:hover ~ * {
    transition-duration: 0s, 0s !important;
    transition: initial !important;
    z-index: 0 !important;
    transition-delay: 0s, 0s !important;
  }
}
ul.grades li.no-summary .summary {
  display: none;
}

#grades-sidebar-list {
  background-color: #FFFFFF;
  border: 1px solid #dcdcdc;
}
#grades-sidebar-list h4 {
  font-size: 1.5625em;
  line-height: 1.6;
  color: #1e1c1c;
  margin-bottom: var(--gap);
}
#grades-sidebar-list ul.grades {
  grid-template-columns: repeat(2, 1fr);
  grid-gap: calc(var(--gap) * 0.5);
}
#grades-sidebar-list ul.grades li {
  border: 1px solid #dcdcdc;
  min-height: auto;
  --hover-height: calc(300% + var(--gap) + 4px);
}
#grades-sidebar-list ul.grades li a {
  padding: calc(var(--gap) * 0.5) var(--gap);
  font-size: 0.8em !important;
}
#grades-sidebar-list ul.grades li a .summary {
  padding: calc(var(--gap) * 0.5) var(--gap);
}
#grades-sidebar-list ul.grades li a .summary strong {
  position: relative;
}

grade-filter aside {
  grid-row: 3;
  grid-column: 1;
}
grade-filter aside.ungrouped {
  display: none;
}
grade-filter aside.ungrouped ~ section {
  grid-column: 1/-1;
}
grade-filter[data-count="1"] section.active {
  grid-column: 1/-1;
}
grade-filter[data-count="1"] aside {
  display: none;
}

grade-filter aside nav {
  display: flex;
  flex-direction: column;
}
grade-filter aside nav button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--primary, #131f6b);
  text-align: left;
  width: 100%;
  font-family: lato, sans-serif;
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-transform: uppercase;
  padding: var(--gap) 0;
  transition: color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
grade-filter aside nav button svg {
  width: 50px;
  height: 30px;
  fill: #1e1c1c;
  transition: fill var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
grade-filter aside nav button + button {
  border-top: 1px solid #dcdcdc;
}
@media (hover: hover) {
  grade-filter aside nav button:hover {
    color: var(--secondary, #df3035);
  }
  grade-filter aside nav button:hover svg {
    fill: var(--secondary, #df3035);
  }
}
grade-filter aside nav button.active {
  color: var(--secondary, #df3035);
}
grade-filter aside nav button.active svg {
  fill: var(--secondary, #df3035);
}
grade-filter aside nav a {
  margin-top: var(--spacer1);
}
grade-filter .grade-filter-cta {
  grid-column: 1/-1;
  width: -moz-fit-content;
  width: fit-content;
}
@media (max-width: 1400px) {
  grade-filter aside {
    display: none;
  }
  grade-filter section {
    border-top: 1px dashed #dcdcdc;
    padding-top: var(--gap);
    display: block !important;
    grid-row: auto;
    grid-column: 1/-1;
  }
  grade-filter section .heading svg {
    display: block;
  }
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZ3JhZGUtZmlsdGVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jcmVhdGUvX3VuaXRzLnNjc3MiLCJfdmFyaWFibGVzL2NvbG91cnMuc2NzcyIsImNvbXBvbmVudHMvZ3JhZGUtZmlsdGVyLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2hlbHBlcnMvX2JyZWFrLnNjc3MiLCJfdmFyaWFibGVzL3VuaXRzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jb2xsZWN0aW9ucy9zdHlsaW5nL19ob3Zlci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY29sbGVjdGlvbnMvc3R5bGluZy9fYXNwZWN0LXJhdGlvLnNjc3MiLCJfZWxlbWVudHMvbWFyay5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY3JlYXRlL19wYWxldHRlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jcmVhdGUvX2hlYWRpbmdzLnNjc3MiLCJfdmFyaWFibGVzL2ZvbnRzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxhQUFBO0VBQ0EsZ0NBQUE7RUFDQSx3QkMrSFM7RUQ5SFQsWUFBQTtFQUNBLHlCRW9CTTtBQ3JCUjtBSEtFO0VBQ0UsV0FBQTtFQUNBLGlCQUFBO0FHSEo7QUhRRTtFQUNFLFdBQUE7RUFDQSxpQkFBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtFQUNBLG9CQzRCSTtFRDNCSiwrQkFBQTtBR05KO0FIT0k7RUFDRSxhQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBO0VBQUEsa0JBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFB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QUdBZDtBSEtjO0VBQ0UsMENBQUE7RUFDQSwyQkFBQTtBR0hoQjtBSE9nQjtFQUNFLDBDQUFBO0FHTGxCO0FITWtCO0VBQ0Usa0JBQUE7QUdKcEI7O0FIbUJFO0VBQ0UsV0FBQTtFQUNBLGNBQUE7QUdoQko7QUhpQkk7RUFBYyxhQUFBO0FHZGxCO0FIZU07RUFBWSxpQkFBQTtBR1psQjtBSGVNO0VBQ0UsaUJBQUE7QUdiUjtBSGVNO0VBQVEsYUFBQTtBR1pkOztBSGNJO0VBQ0UsYUFBQTtFQUNBLHNCQUFBO0FHWE47QUhZTTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLDhCQUFBO0VBQ0EsOEJFcFZFO0VGcVZGLGdCQUFBO0VBQ0EsV0FBQTtFV25XTiw2QkFBQTtFQUNBLGtCQUFBO0VBS0UsZ0JBQUE7RUFLRixrQkFBQTtFQUNBLG1DQUFBO0VBQ0Qsa0NBQUE7RVh3Vk8seUJBQUE7RUFDQSxxQkFBQTtFQUNBLG1JQUFBO0FHTFI7QUhPUTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsYUVuV0Y7RUZvV0Usa0lBQUE7QUdMVjtBSE9RO0VBQVcsNkJBQUE7QUdKbkI7QUdsWUU7RUFDRTtJTnVZTSxnQ0VuV0U7RUNpV1Y7RUhHUTtJQUFNLCtCRXBXSjtFQ29XVjtBQUNGO0FIQ1E7RUFDRSxnQ0V2V0U7QUN3V1o7QUhBVTtFQUFNLCtCRXhXSjtBQzJXWjtBSENNO0VBQUksMEJDN1NDO0FFK1NYO0FIRUU7RUFDRSxpQkFBQTtFQUNBLHVCQUFBO0VBQUEsa0JBQUE7QUdBSjtBQ2paRTtFSnFaRTtJQUFRLGFBQUE7RUdBVjtFSENFO0lBQ0UsOEJBQUE7SUFDQSx1QkNoWEU7SURpWEYseUJBQUE7SUFDQSxjQUFBO0lBQ0EsaUJBQUE7RUdDSjtFSENNO0lBQU0sY0FBQTtFR0VaO0FBQ0YiLCJmaWxlIjoiY29tcG9uZW50cy9ncmFkZS1maWx0ZXIuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnX21vZHVsZXMnIGFzICo7XG5cbmdyYWRlLWZpbHRlciB7XG4gIGRpc3BsYXk6Z3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMDBweCAxZnI7XG4gIGdyaWQtZ2FwOiRndXR0ZXI7XG4gIGZsZXgtZ3JvdzogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXkzOyBcblxuICAvLyBIZWFkaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICA+IGgyIHtcbiAgICBncmlkLXJvdzoxO1xuICAgIGdyaWQtY29sdW1uOjEgLyAtMTtcbiAgfVxuXG4gIC8vIEZpbHRlciBCYXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGZpbHRlci1iYXIge1xuICAgIGdyaWQtcm93OjI7XG4gICAgZ3JpZC1jb2x1bW46MSAvIC0xO1xuICAgIGRpc3BsYXk6Z3JpZDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBncmlkLWdhcDokZ2FwOyBcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xuICAgIGJ1dHRvbi5maWx0ZXIge1xuICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgZ3JpZC1yb3c6MTtcbiAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBtYXJnaW4tdG9wOjEuOGVtO1xuICAgICAgc3BhbiB7IFxuICAgICAgICBtYXJnaW4tbGVmdDokZ2FwMDsgXG4gICAgICAgIGZvbnQtd2VpZ2h0OmJvbGQ7IFxuICAgICAgICBmb250LXNpemU6Zm9udC1zaXplKDEyKTsgXG4gICAgICB9XG4gICAgICBzdmcgeyB3aWR0aDoxNnB4OyBoZWlnaHQ6MTZweDsgZmlsbDokZ3JleTsgfVxuICAgIH1cbiAgICAuZGF0YWxpc3QtZ3JvdXAge1xuICAgICAgZ3JpZC1yb3c6MTtcbiAgICAgIGRpc3BsYXk6Z3JpZDtcbiAgICAgIGdyaWQtZ2FwOjIwcHggJGdhcDsgXG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgxODBweCwgMWZyKSk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrLWluKHNtYWxsKSB7XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBidXR0b24uZmlsdGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTokZ2FwOyBcbiAgICAgIH1cbiAgICAgIC5kYXRhbGlzdC1ncm91cCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7XG4gICAgICAgIHdpZHRoOjEwMCU7XG4gICAgICB9XG4gICAgfVxuICAgIGRhdGFsaXN0LXdyYXAge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBtYXJnaW4tdG9wOjFlbTtcbiAgICAgIGxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOmZvbnQtc2l6ZSgxNCk7XG4gICAgICAgIGNvbG9yOiRibGFjazsgXG4gICAgICAgIG1hcmdpbi1ib3R0b206JGdhcDA7IFxuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbToxMDAlO1xuICAgICAgICBsZWZ0OjA7IFxuICAgICAgfVxuICAgICAgaW5wdXQge1xuICAgICAgICBib3JkZXI6bm9uZTsgXG4gICAgICAgIHBhZGRpbmc6MTJweCAkZ2FwOyBcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGNvbG9yOiRmb250LWNvbG91cjtcbiAgICAgICAgZm9udC1zaXplOmZvbnQtc2l6ZSgxNCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JleTM7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbjtcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgICY6Zm9jdXN7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAmOnZhbGlkICsgYnV0dG9uLmNsZWFyIHtcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgdHJhbnNmb3JtOnNjYWxlKDEpO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgICAgYnV0dG9uLmNsZWFyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OjFweDtcbiAgICAgICAgdG9wOjFweDtcbiAgICAgICAgb3BhY2l0eTowOyBcbiAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAycHgpO1xuICAgICAgICBwYWRkaW5nOjAgJGdhcDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2Zvcm06c2NhbGUoMC43KTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJHRyYW5zaXRpb24sIHRyYW5zZm9ybSAwLjJzICRlYXNlLW91dC1iYWNrO1xuICAgICAgICBzdmcge1xuICAgICAgICAgIHdpZHRoOjE2cHg7XG4gICAgICAgICAgaGVpZ2h0OjE2cHg7XG4gICAgICAgICAgY29sb3I6JGJsdWU7IFxuICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yICR0cmFuc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OlwiXCI7XG4gICAgICAgICAgd2lkdGg6MzBweDtcbiAgICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOjA7IFxuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgIHJpZ2h0OjEwMCU7IFxuICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSh3aGl0ZSwgMCksIHdoaXRlKTtcbiAgICAgICAgfVxuICAgICAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgICAgc3ZnIHsgXG4gICAgICAgICAgICBjb2xvcjokcmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5hY3RpdmUgaW5wdXQge1xuICAgICAgICBib3JkZXItY29sb3I6JGJsdWU7XG4gICAgICB9XG4gIFxuICAgIH1cbiAgfVxuICAvLyBObyByZXN1bHRzIG1lc3NhZ2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcCNuby1yZXN1bHRzIHtcbiAgICBncmlkLXJvdzozO1xuICAgIGdyaWQtY29sdW1uOiAxLy0xO1xuICAgICYuaGlkZGVuIHtcbiAgICAgIGRpc3BsYXk6IE5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gU2VjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgc2VjdGlvbiB7IFxuICAgIGdyaWQtcm93OjM7XG4gICAgZ3JpZC1jb2x1bW46MjtcbiAgICAmOm5vdCgudW5ncm91cGVkKSB7XG4gICAgICBkaXNwbGF5Om5vbmU7XG4gICAgfVxuXG4gICAgLmhlYWRpbmcge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIG1hcmdpbi1ib3R0b206JGdhcDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6bm9uZTtcbiAgICAgICAgd2lkdGg6MS42ZW07IFxuICAgICAgICBoZWlnaHQ6MS42ZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmltYWdlIHtcbiAgICAgIHdpZHRoOjEwMCU7XG4gICAgICBtYXJnaW4tYm90dG9tOiRndXR0ZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1czsgXG4gICAgICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8oJzM4MC85MCcpO1xuICAgIH1cblxuICAgIC50ZXh0IHtcbiAgICAgIGZvbnQtc2l6ZTpmb250LXNpemUoMTQpO1xuICAgICAgbWFyZ2luLXRvcDokZ2FwMjsgXG4gICAgICAvLyBtYXJnaW4tYm90dG9tOiRnYXAyOyBcbiAgICAgIHVsIHsgbWFyZ2luLWxlZnQ6MDsgfVxuICAgICAgPiBmaWd1cmUge1xuICAgICAgICBwYWRkaW5nOjA7IFxuICAgICAgfVxuICAgIH1cblxuICAgICYuYWN0aXZlIHtcbiAgICAgIGRpc3BsYXk6IHVuc2V0O1xuICAgIH1cblxuICAgIGFydGljbGUge1xuICAgICAgaDQge1xuICAgICAgICBkaXNwbGF5OmZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IFxuICAgICAgICBtYXJnaW4tYm90dG9tOiRnYXA7ICBcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICBoZWlnaHQ6MXB4OyBcbiAgICAgICAgICBtYXJnaW4tbGVmdDokZ2FwOyBcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiRncmV5NDsgXG4gICAgICAgICAgZmxleC1ncm93OjE7XG4gICAgICAgIH0gICBcbiAgICAgIH1cbiAgICAgIEBhdC1yb290IHtcbiAgICAgICAgdWwuZ3JhZGVzIHtcbiAgICAgICAgICBkaXNwbGF5OmdyaWQ7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTYwcHgsIDFmcikpO1xuICAgICAgICAgIGdyaWQtZ2FwOiRnYXA7IFxuICAgICAgICAgIGxpIHtcblxuICAgICAgICAgICAgLS1ob3Zlci1oZWlnaHQgOiBjYWxjKDIwMCUgKyAjeyRnYXB9KTtcbiAgICAgICAgICAgIC0taG92ZXItd2lkdGggOiAxMDAlO1xuXG4gICAgICAgICAgICBtaW4taGVpZ2h0OjgwcHg7IFxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblxuICAgICAgICAgICAgLy8gb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHBvc2l0aW9uOnJlbGF0aXZlOyBcbiAgICAgICAgICAgIHotaW5kZXg6MDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHotaW5kZXggMHMgMC42cyAkZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ZmxleDsgXG4gICAgICAgICAgICAgIHBhZGRpbmc6JGdhcDsgXG4gICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgZm9udC1zaXplOjAuOWVtO1xuICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6aW5oZXJpdDtcblxuICAgICAgICAgICAgICBtYXJrIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBtYXJrLXJlc2V0KClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC5zdW1tYXJ5IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czppbmhlcml0O1xuICAgICAgICAgICAgICAgIGluc2V0OjA7IFxuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OmhpZGRlbjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiRnYXA7XG4gICAgICAgICAgICAgICAgLy8gZm9udC1zaXplOmZvbnQtc2l6ZSgxNCk7IFxuICAgICAgICAgICAgICAgIC8vIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgIC8vIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgLy8gd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6MTAwJTtcbiAgICAgICAgICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICAgICAgICAgIGNvbG9yOndoaXRlOyBcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLCBoZWlnaHQgJHRyYW5zaXRpb24sIHdpZHRoICR0cmFuc2l0aW9uO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuMnM7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgY29udGVudDpcIlwiO1xuICAgICAgICAgICAgICAgICAgd2lkdGg6MTAwJTtcbiAgICAgICAgICAgICAgICAgIGhlaWdodDozMHB4O1xuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgYm90dG9tOjA7IFxuICAgICAgICAgICAgICAgICAgbGVmdDowOyBcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCAkcmVkIDIwcHgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgICAgb3BhY2l0eTowOyBcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyAwLjRzICRlYXNlLWluLW91dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCwgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOmZvbnQtc2l6ZSgxMyk7IFxuICAgICAgICAgICAgICAgICAgb3BhY2l0eTowOyBcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJHRyYW5zaXRpb247XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPiBzdHJvbmcgeyBcbiAgICAgICAgICAgICAgICBjb2xvcjokc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246Y29sb3IgJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZW0geyBcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOmZvbnQtc2l6ZSgxMik7IFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246Y29sb3IgJHRyYW5zaXRpb247XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6JHNlY29uZGFyeTtcbiAgICAgICAgICAgICAgICAmLCBzdHJvbmcgeyBjb2xvcjp3aGl0ZTsgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICB6LWluZGV4OjE7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6MHMgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjowcyAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICA+ICogLnN1bW1hcnkge1xuICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGhlaWdodDp2YXIoLS1ob3Zlci1oZWlnaHQpO1xuICAgICAgICAgICAgICAgIHdpZHRoOnZhcigtLWhvdmVyLXdpZHRoKTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjJzO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6JHJlZDtcbiAgICAgICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgICAgb3BhY2l0eToxO1xuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHAsICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk6MTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDAuNHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH4gKiAgeyBcbiAgICAgICAgICAgICAgICAvLyAuc3VtbWFyeSB7IGJhY2tncm91bmQ6Z3JlZW4gIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246MHMsIDBzICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjppbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgei1pbmRleDowICFpbXBvcnRhbnQ7IFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6MHMsIDBzICFpbXBvcnRhbnQ7IFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLm5vLXN1bW1hcnkge1xuICAgICAgICAgICAgICAuc3VtbWFyeSB7IGRpc3BsYXk6bm9uZTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAjZ3JhZGVzLXNpZGViYXItbGlzdCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICAgIGJvcmRlcjoxcHggc29saWQgJGdyZXk0OyBcbiAgICAgICAgICBoNCB7IFxuICAgICAgICAgICAgQGluY2x1ZGUgaGVhZGluZy1oMzsgXG4gICAgICAgICAgICBjb2xvcjokYmxhY2s7IFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTokZ2FwOyBcbiAgICAgICAgICB9XG4gICAgICAgICAgdWwuZ3JhZGVzIHsgXG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICAgICAgZ3JpZC1nYXA6JGdhcDA7IFxuICAgICAgICAgICAgbGkgeyBcbiAgICAgICAgICAgICAgYm9yZGVyOjFweCBzb2xpZCAkZ3JleTQ7IFxuICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAtLWhvdmVyLWhlaWdodCA6IGNhbGMoMzAwJSArICN7JGdhcH0gKyA0cHgpO1xuICAgICAgICAgICAgICAvLyAtLWhvdmVyLXdpZHRoIDogY2FsYygyMDAlICsgI3skZ2FwMH0gKyAycHgpO1xuICAgICAgICAgICAgICAvLyAtLWhvdmVyLWhlaWdodCA6IDEwMCU7XG4gICAgICAgICAgICAgIC8vIC0taG92ZXItd2lkdGggOiAxMDAlO1xuICAgICAgXG4gICAgICAgICAgICAgIGEgeyBcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiRnYXAwICRnYXA7IFxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTowLjhlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHN0cm9uZyB7IFxuICAgICAgICAgICAgICAgICAgLy8gZm9udC1zaXplOmZvbnQtc2l6ZSgxMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5zdW1tYXJ5IHsgXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiRnYXAwICRnYXA7IFxuICAgICAgICAgICAgICAgICAgc3Ryb25nIHsgXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9wOiAtMC4zNWVtO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTmF2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgYXNpZGUge1xuICAgIGdyaWQtcm93OjM7XG4gICAgZ3JpZC1jb2x1bW46MTtcbiAgICAmLnVuZ3JvdXBlZCB7IGRpc3BsYXk6bm9uZTsgXG4gICAgICB+IHNlY3Rpb24geyBncmlkLWNvbHVtbiA6IDEgLyAtMTsgfVxuICAgIH1cbiAgICBAYXQtcm9vdCBncmFkZS1maWx0ZXJbZGF0YS1jb3VudD1cIjFcIl0ge1xuICAgICAgc2VjdGlvbi5hY3RpdmUge1xuICAgICAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xuICAgICAgfVxuICAgICAgYXNpZGUgeyBkaXNwbGF5Om5vbmU7IH1cbiAgICB9XG4gICAgbmF2IHtcbiAgICAgIGRpc3BsYXk6ZmxleDsgXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTpmbGV4OyBcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBjb2xvcjokcHJpbWFyeTsgXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHdpZHRoOjEwMCU7IFxuICAgICAgICBAaW5jbHVkZSBmb250LWxhdG8oc2VtaWJvbGQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBwYWRkaW5nOiRnYXAgMDsgXG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yICR0cmFuc2l0aW9uO1xuICAgICAgICBcbiAgICAgICAgc3ZnIHsgXG4gICAgICAgICAgd2lkdGg6NTBweDtcbiAgICAgICAgICBoZWlnaHQ6MzBweDtcbiAgICAgICAgICBmaWxsOiRibGFjazsgXG4gICAgICAgICAgdHJhbnNpdGlvbjogZmlsbCAkdHJhbnNpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICArIGJ1dHRvbiB7IGJvcmRlci10b3A6MXB4IHNvbGlkICRncmV5NDsgfVxuICAgICAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgICAgY29sb3I6JHNlY29uZGFyeTsgXG4gICAgICAgICAgc3ZnIHsgZmlsbDokc2Vjb25kYXJ5OyB9XG4gICAgICAgIH1cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgIGNvbG9yOiRzZWNvbmRhcnk7XG4gICAgICAgICAgc3ZnIHsgZmlsbDokc2Vjb25kYXJ5OyB9XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgICAgYSB7IG1hcmdpbi10b3A6JHNwYWNlcjsgfVxuICAgIH1cbiAgfVxuXG4gIC5ncmFkZS1maWx0ZXItY3RhIHtcbiAgICBncmlkLWNvbHVtbjoxIC8gLTE7XG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWstaW4obGFyZ2UpIHtcbiAgICBhc2lkZSB7IGRpc3BsYXk6bm9uZTsgfVxuICAgIHNlY3Rpb24ge1xuICAgICAgYm9yZGVyLXRvcDoxcHggZGFzaGVkICRncmV5NDtcbiAgICAgIHBhZGRpbmctdG9wOiRnYXA7XG4gICAgICBkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICBncmlkLXJvdzphdXRvO1xuICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgIC5oZWFkaW5nIHtcbiAgICAgICAgc3ZnIHsgZGlzcGxheTpibG9jazsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVuaXRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AdXNlIFwic2FzczptYXRoXCI7XG5AdXNlICdzYXNzOnN0cmluZyc7XG5AdXNlICdzYXNzOm1ldGEnO1xuXG4vLyBUaGlzIHVuaXRzIGNyZWF0b3Igd2lsbCByZW5kZXIgc2l4IHBvc2l0aXZlIGFuZCBzaXggbmVnYXRpdmUgc2FzcyB2YXJpYWJsZXMgZm9yIFxuLy8gZ2Fwcywgc3BhY2VycywgYW5kIGd1dHRlcnMgcmVsYXRpdmUgdG8gdGhlIGJhc2V2IHZhbHVlcyBkZWZpbmVkIGJlbG93LlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJhc2UgVmFsdWVzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8vIEBzZWUgaHR0cHM6Ly9jb2RlcGVuLmlvL21hcmtub3R0b24vcGVuL0V4UGJOR2VcblxuLy8gVGhlc2UgdGhyZWUgdmFsdWVzIHdpbGwgYWN0IGEgY29uc3RhbnQgYmFzZWxpbmUgZm9yIGFsbCBmb2xsb3dpbmcgdW5pdCBkZWxjYXJhdGlvbnMuXG5cbi8vIEdhcHMgbXVzdCB1c2UgYW4gYWJzb2x1dGUgYW5kIHN0YXRpYyAncHgnIHVuaXQuIEl0IHNob3VsZCBub3QgYmUgcmVsYXRpdmUgdG8gYW55XG4vLyBwYXJlbnQgY29udGFpbmVyIGFuZCBpcyBub3QgaW50ZW5kZWQgZm9yIGZvbnQgc2l6ZXMsIHNvIHlvdSBzaG91bGQgbm90IHVzZSAncmVtJyBvciAnZW0nLiBcbiRnYXAgOiAxNnB4ICFkZWZhdWx0O1xuJGJhc2UtZ2FwIDogJGdhcDtcblxuLy8gU3BhY2VycyBtdXN0IHVzZSBhICd2aCcgdW5pdCBzbyB0aGV5IGFyZSByZWxhdGl2ZSB0byB0aGUgdXNlcnMgdmlld3BvcnQgaGVpZ2h0LXdpc2UuXG4vLyBUaGV5IHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBmb3IgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb24gYSBjb21wb25lbnQgbGV2ZWwuXG4kc3BhY2VyIDogNHZoICFkZWZhdWx0OyBcbiRiYXNlLXNwYWNlciA6ICRzcGFjZXI7IFxuXG4vLyBHdXR0ZXJzIG11c3QgdXNlIGEgJ3Z3JyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCB3aWR0aC13aXNlLiBcbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvciBtYXJnaW4gb24gYSBwYXJlbnQgbGV2ZWwuXG4vLyBBcyBhIHN1Z2dlc3Rpb24sIHRoaXMgZ3V0dGVyIGNvbnN0YW50IHNob3VsZCBiZSBoYWxmIHRoZSBzaXplIG9mIHRoZSBzcGFjZXIgdmFsdWUuXG4kZ3V0dGVyIDogM3Z3ICFkZWZhdWx0O1xuJGJhc2UtZ3V0dGVyIDogJGd1dHRlcjsgXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBc2JvbHV0ZSBVbml0cyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdhcHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHYXBzIGFyZSBhbiBhYnNvbHV0ZSB1bml0IChweCkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBpbmRpdmlkdWFsIGVsZW1lbnRzIHdpdGhpbiBhIGNvbXBvbmVudGVkLiBcbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgc3BhY2luZyBhbW9uZ3N0IGJsb2NrLCBpbmxpbmUsIHRhYmxlIGFuZCBncm91cCBodG1sIGVsZW1lbnRzLlxuXG5AZnVuY3Rpb24gZ2FwKCRhbW91bnQgOiAxKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMSApIHsgXG4gICAgQHJldHVybiB2YXIoLS1nYXApOyBcbiAgfSBAZWxzZSB7IFxuICAgIEByZXR1cm4gY2FsYyh2YXIoLS1nYXApICogI3skYW1vdW50fSk7IFxuICB9XG59XG5cbiRnYXAwIDogZ2FwKDAuNSk7ICRnYXAwLSA6IGdhcCgtMC41KTtcbiRnYXAgIDogZ2FwKDEpOyAgICRnYXAtICA6IGdhcCgtMSk7XG4kZ2FwMiA6IGdhcCgyKTsgICAkZ2FwMi0gOiBnYXAoLTIpO1xuJGdhcDMgOiBnYXAoMyk7ICAgJGdhcDMtIDogZ2FwKC0zKTtcbiRnYXA0IDogZ2FwKDQpOyAgICRnYXA0LSA6IGdhcCgtNCk7XG4kZ2FwNSA6IGdhcCg1KTsgICAkZ2FwNS0gOiBnYXAoLTUpO1xuJGdhcDYgOiBnYXAoNik7ICAgJGdhcDYtIDogZ2FwKC02KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlbGF0aXZlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGZ1bmN0aW9uIF9keW5hbWljLXVuaXQoJGN1c3RvbS1wcm9wZXJ0eSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuXG4gIC8vIENhbGMgTWV0aG9kXG4gICRyZXN1bHQgOiBjYWxjKCgjeyRjdXN0b20tcHJvcGVydHl9ICogI3skYW1vdW50fSkgKyAje2lmKCRtaW4gPT0gMCwgMHB4LCAkbWluKX0pO1xuICBcbiAgLy8gQ2xhbXAgTWV0aG9kXG4gIEBpZiAoICR1c2UtY2xhbXAgKSB7XG4gICAgQGlmICggJGFtb3VudCA9PSAwICkge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7bWF0aC5kaXYoJG1pbiwgMil9LCAjeyRjdXN0b20tcHJvcGVydHl9ICogMC41LCAjeyRtYXh9KTtcbiAgICB9IEBlbHNlIGlmICggJGFtb3VudCA9PSAxICkge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7JG1pbn0sICN7JGN1c3RvbS1wcm9wZXJ0eX0sICN7JG1heH0pO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7JG1pbn0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9LCAjeyRtYXh9KTtcbiAgICB9XG4gIH0gXG5cbiAgQGlmICggJHVzZS1uZWdhdGl2ZSApIHtcbiAgICAkcmVzdWx0IDogY2FsYygtMSAqICN7JHJlc3VsdH0pO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xuXG59IFxuXG4vLyBTcGFjZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3BhY2VycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCBoZWlnaHQgKHZoKSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBjb21wb25lbnRlZCBsZXZlbC5cbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgdG9wIGFuZCBib3R0b20gc3BhY2luZyBhbW9uZ3N0ICdzZWN0aW9uJyBhbmQgJ2N1c3RvbScgZWxlbWVudHMuXG4vLyBTcGFjZXJzIHdpbGwgZXF1YXRlIHRvIHNvbWV0aGluZyBsaWtlOiBgKCRzcGFjZXIgKiB4KSArICRnYXBgLiBcbi8vIFRoZSAnJGdhcCcgaXMgYWRkZWQgc28gdGhhdCB2aCBzcGFjaW5nIHdpbGwgbmV2ZXIgc2NhbGUgdG9vIGNsb3NlIHRvIDBweC4gXG5cbkBmdW5jdGlvbiBzcGFjZXIoJGFtb3VudCA6IDEsICRtaW4gOiAkYmFzZS1nYXAsICRtYXggOiBudWxsLCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMCkgeyAkYW1vdW50IDogMC41OyAkbWluIDogbWF0aC5kaXYoJG1pbiwgMik7IH1cbiAgQGlmICggbWV0YS50eXBlLW9mKCRtYXgpID09ICdudWxsJyApIHsgXG4gICAgQGlmICggbWV0YS50eXBlLW9mKCRtaW4pID09ICdzdHJpbmcnIGFuZCBzdHJpbmcuaW5kZXgoJG1pbiwgJ3ZhcicpICkge1xuICAgICAgJG1heCA6IGNhbGMoI3skbWlufSAqICN7JGFtb3VudCArIDF9KTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWF4IDogI3skbWluICogKCRhbW91bnQgKyAxKX07IFxuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9keW5hbWljLXVuaXQodmFyKC0tc3BhY2VyKSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSwgJHVzZS1jbGFtcCk7XG59XG5cbiRzcGFjZXIwIDogdmFyKC0tc3BhY2VyMCk7ICRzcGFjZXIwLSA6IHZhcigtLXNwYWNlcjAtKTtcbiRzcGFjZXIgIDogdmFyKC0tc3BhY2VyMSk7ICRzcGFjZXItICA6IHZhcigtLXNwYWNlcjEtKTtcbiRzcGFjZXIyIDogdmFyKC0tc3BhY2VyMik7ICRzcGFjZXIyLSA6IHZhcigtLXNwYWNlcjItKTtcbiRzcGFjZXIzIDogdmFyKC0tc3BhY2VyMyk7ICRzcGFjZXIzLSA6IHZhcigtLXNwYWNlcjMtKTtcbiRzcGFjZXI0IDogdmFyKC0tc3BhY2VyNCk7ICRzcGFjZXI0LSA6IHZhcigtLXNwYWNlcjQtKTtcbiRzcGFjZXI1IDogdmFyKC0tc3BhY2VyNSk7ICRzcGFjZXI1LSA6IHZhcigtLXNwYWNlcjUtKTtcbiRzcGFjZXI2IDogdmFyKC0tc3BhY2VyNik7ICRzcGFjZXI2LSA6IHZhcigtLXNwYWNlcjYtKTtcblxuLy8gR3V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEd1dHRlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgd2lkdGggKHZ3KSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBwYXJlbnQgbGV2ZWw7XG4vLyBmb3IgZXhhbXBsZSwgYSB3cmFwcGVyIGNvbnRhaW5lciBvciBib2R5IHdpdGggbmVzdGVkIGNvbXBvbmVudHMuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBsZWZ0IGFuZCByaWdodCBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIEd1dHRlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJGd1dHRlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZ3IHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIGd1dHRlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1ndXR0ZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJGd1dHRlcjAgOiB2YXIoLS1ndXR0ZXIwKTsgJGd1dHRlcjAtIDogdmFyKC0tZ3V0dGVyMC0pO1xuJGd1dHRlciAgOiB2YXIoLS1ndXR0ZXIxKTsgJGd1dHRlci0gIDogdmFyKC0tZ3V0dGVyMS0pO1xuJGd1dHRlcjIgOiB2YXIoLS1ndXR0ZXIyKTsgJGd1dHRlcjItIDogdmFyKC0tZ3V0dGVyMi0pO1xuJGd1dHRlcjMgOiB2YXIoLS1ndXR0ZXIzKTsgJGd1dHRlcjMtIDogdmFyKC0tZ3V0dGVyMy0pO1xuJGd1dHRlcjQgOiB2YXIoLS1ndXR0ZXI0KTsgJGd1dHRlcjQtIDogdmFyKC0tZ3V0dGVyNC0pO1xuJGd1dHRlcjUgOiB2YXIoLS1ndXR0ZXI1KTsgJGd1dHRlcjUtIDogdmFyKC0tZ3V0dGVyNS0pO1xuJGd1dHRlcjYgOiB2YXIoLS1ndXR0ZXI2KTsgJGd1dHRlcjYtIDogdmFyKC0tZ3V0dGVyNi0pO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG91cnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLyBFeHBsaWNpdCBDb2xvdXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gRXhwbGljaXQgY29sb3VycyBhcmUgYSB3aGF0IHRoZXkgYXJlLiBHcmVlbiBpcyBncmVlbiwgYmx1ZSBpcyBibHVlLi4uIG5vIG9ic2N1cml0eS5cbi8vLyBXZSBzdWZmaXggbnVtYmVycyB0byBkZWZpbmUgdmFyaWF0aW9ucyBvZiBjb2xvdXJzIGluIG5vIHBhcnRpY3VsYXIgb3JkZXIgb2Ygc2hhZGUuXG4vLy8gRXhhbXBsZTogZ3JlZW4xLCBncmVlbjIsIGdyZWVuMywgZ3JlZW40LiBUaGlzIGlzIHNvIHdlIGNhbiBpbW1pZGlhdGVseSBzZWUgaG93XG4vLy8gbWFueSBvcHRpb25zIHdlIGhhdmUgZm9yIGEgc2luZ2xlIGNvbG91ciBhdCBhIGdsYW5jZS4gSWYgeW91IHNlZSAkZ3JlZW40LCB5b3Uga25vdyB0aGlzXG4vLy8gcHJvamVjdCBpcyB1c2luZyBmb3VyIHZhcmlhdGlvbnMgb2YgZ3JlZW4uIFRoaXMgaXMgYWxzbyBvZnRlbiB1c2VmdWwgYmVjYXVzZSBtYW55IGRldmVsb3BtZW50XG4vLy8gdG9vbHMgd2lsbCBhdXRvLXN1Z2dlc3QgY29sb3VycyB3aXRoIGFjdHVhbCBleGFtcGxlcyBvZiB0aGUgY29sb3VyLlxuLy8vIFRoZSBQYWxsZXRlcyBtb2R1bGUgKGF0IHRoZSBib3R0b20gb2YgdGhpcyBmaWxlKSB3aWxsIG91dHB1dCBzaGFkZWQgbmFtZWQgdmFyaWF0aW9ucyxcbi8vLy8gPGNvbG91cj4tZGFyayBhbmQgPGNvbG91cj4tbGlnaHQuIElmIHlvdSBuZWVkIGFkZGl0aW9uYWwgc2hhZGVzIHBsZWFzZSByZWZyYWltIGZyb20gZ29pbmcgZG93blxuLy8vIHRoZSAnbGlnaHRlcicsICdsaWdodGVzdCcsICdkYXJrZXInLCAnZGFya2VzdCcgY29udmVudGlvbi4gVGhlc2UgYXJlIG5vdCBwYXJ0aWN1YXJseSBsZWdpYWJsZVxuLy8vIGFuZCB0aGV5IGFyZSBsaW1pdGVkIGJ5IGhvdyBjcmVhdGl2ZSAoY29uZnVzaW5nKSB5b3VyIHdvcmRpbmcgY2FuIGJlLlxuLy8vIEl0IGlzIGJldHRlciB0byBkZWZpbmUgYSBuZXcgZXhwbGNpdCBjb2xvdXIgZW50aXJlbHkuXG4vLy8gQHNlZSBodHRwczovL2Nzcy10cmlja3MuY29tL3doYXQtZG8teW91LW5hbWUtY29sb3ItdmFyaWFibGVzL1xuXG4kYmx1ZTogIzEzMWY2YjsgLy8gUHJpbWFyeVxuJGJsdWUyOiAjMjkyYjY4OyAvLyBOYWtlZCBMaW5rXG4kYmx1ZTM6ICMzZDNmN2Y7IC8vIExpZ250IEdyYWRpZW50XG4kYmx1ZTQ6ICMxMDEyNGQ7IC8vIERhcmsgR3JhZGllbnRcbiRibHVlNTogIzAwOTVmZjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyXG4vLyAkcmVkICAgIDogI0UwM0E0MDsgLy8gU2Vjb25kYXJ5XG4kcmVkOiAjZGYzMDM1OyAvLyBTZWNvbmRhcnkgLSBUaGlzIHBhc3NlcyB0aGUgY29udHJhc3QgcmF0aW8gYWNjZXNzaWJpbGl0eSB0ZXN0IGluIEdvb2dsZXMgTGlnaHRob3VzZVxuJGdyZXk6ICM5Njk2OTU7XG4kZ3JleTI6ICM2YTZhNmE7IC8vIEZvbnRcbiRncmV5MzogI2Y0ZjRmNDsgLy8gTGlnaHRlciBHcmV5IEJhY2tncm91bmRcbiRncmV5NDogI2RjZGNkYztcbiRncmV5NTogI2IxYjFiMTsgLy8gU3BhY2VycyA8aHI+XG4kZ3JleTY6ICMzMzMyMzY7IC8vIE5hdmlnYXRpb24gbGluayBob3ZlclxuJGdyZWVuOiAjNTBiYzA4O1xuJGdyZWVuMjogIzc2YmIyODsgLy8gRVNHIGdyZWVuXG4keWVsbG93OiAjZjZmNGRiOyAvLyBEaXNjbGFpbWVyIEJhY2tncm91bmRcbiR5ZWxsb3cyOiAjZmNiMDAyO1xuJG9yYW5nZTogI2ZmNmEwMDtcbiRvcmFuZ2UyOiAjZGE4YjBmO1xuJGJsYWNrOiAjMWUxYzFjO1xuXG4kbWFyazogJGJsdWU1OyAvLyBiYWNrZ3JvdW5kIGNvbG91ciBmb3IgPG1hcms+IHRhZ3NcblxuJHByaW1hcnk6IHZhcigtLXByaW1hcnksICN7JGJsdWV9KTtcbiRzZWNvbmRhcnk6IHZhcigtLXNlY29uZGFyeSwgI3skcmVkfSk7XG5cbi8vLyBQYWxldHRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gQnkgbG9hZGluZyBjb25maWd1cmF0aW9ucyBpbnRvIHRoaXMgJ3BhbGxldGUnIG1vZHVsZSwgd2Ugd2lsbCBiZSBhYmxlXG4vLy8gdG8gZGVjbGFyZSB2YXJpYW50cyBvZiBhIGZldyBjb21tb24gY29sb3Vycy4gWW91IGNhbiBhbHNvIGFkanVzdCB0aGUgbGlnaHRuZXNzXG4vLy8gb3IgZGFya25lc3Mgb2YgZWFjaCB2YXJpYW50IGJ5IHBhc3NpbmcgaW4gdGhlIHJlbGV2YW50IHByaXZhdGUgcnVsZXMuXG4vLy8gUGFsZXR0ZSB3aWxsIGFsc28gZXhwb3NlIHBvcHVsYXIgc29jaWFsIG1lZGlhIGNvbG91cnMgYW5kIHRoZSBZZWxsbyBicmFuZCBjb2xvdXIuXG4vLy8gQHNlZSBodHRwczovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9hdC1ydWxlcy9mb3J3YXJkI2NvbmZpZ3VyaW5nLW1vZHVsZXNcbi8vLyBAb3V0cHV0ICRncmVlbiA6ICMwMjkyOUE7ICRncmVlbi1kYXJrIDogIzI1NjU2OTsgJGdyZWVuLWxpZ2h0OiAjMDRiOWM0O1xuXG5AZm9yd2FyZCAnY3JlYXRlL3BhbGV0dGUnIHdpdGggKFxuICAkYmx1ZTogJGJsdWUsXG4gICRyZWQ6ICRyZWQsXG4gICRncmV5OiAkZ3JleSxcbiAgJHllbGxvdzogJHllbGxvdyxcbiAgJG9yYW5nZTogJG9yYW5nZSxcbiAgJGdyZWVuOiAkZ3JlZW4sXG4gICRibGFjazogJGJsYWNrXG4pO1xuIiwiZ3JhZGUtZmlsdGVyIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzMDBweCAxZnI7XG4gIGdyaWQtZ2FwOiB2YXIoLS1ndXR0ZXIxKTtcbiAgZmxleC1ncm93OiAxO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0O1xufVxuZ3JhZGUtZmlsdGVyID4gaDIge1xuICBncmlkLXJvdzogMTtcbiAgZ3JpZC1jb2x1bW46IDEvLTE7XG59XG5ncmFkZS1maWx0ZXIgZmlsdGVyLWJhciB7XG4gIGdyaWQtcm93OiAyO1xuICBncmlkLWNvbHVtbjogMS8tMTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGdyaWQtZ2FwOiB2YXIoLS1nYXApO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyO1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgYnV0dG9uLmZpbHRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdyaWQtcm93OiAxO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMS44ZW07XG59XG5ncmFkZS1maWx0ZXIgZmlsdGVyLWJhciBidXR0b24uZmlsdGVyIHNwYW4ge1xuICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1nYXApICogMC41KTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgYnV0dG9uLmZpbHRlciBzdmcge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBmaWxsOiAjOTY5Njk1O1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgLmRhdGFsaXN0LWdyb3VwIHtcbiAgZ3JpZC1yb3c6IDE7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtZ2FwOiAyMHB4IHZhcigtLWdhcCk7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDE4MHB4LCAxZnIpKTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuICBncmFkZS1maWx0ZXIgZmlsdGVyLWJhciB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG4gIGdyYWRlLWZpbHRlciBmaWx0ZXItYmFyIGJ1dHRvbi5maWx0ZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWdhcCk7XG4gIH1cbiAgZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgLmRhdGFsaXN0LWdyb3VwIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgZGF0YWxpc3Qtd3JhcCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgZGF0YWxpc3Qtd3JhcCBsYWJlbCB7XG4gIGZvbnQtc2l6ZTogMC44NzVlbTtcbiAgY29sb3I6ICMxZTFjMWM7XG4gIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tZ2FwKSAqIDAuNSk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMTAwJTtcbiAgbGVmdDogMDtcbn1cbmdyYWRlLWZpbHRlciBmaWx0ZXItYmFyIGRhdGFsaXN0LXdyYXAgaW5wdXQge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDEycHggdmFyKC0tZ2FwKTtcbiAgd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAjNmE2YTZhO1xuICBmb250LXNpemU6IDAuODc1ZW07XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMsIDZweCk7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZjRmNGY0O1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgZGF0YWxpc3Qtd3JhcCBpbnB1dDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG5ncmFkZS1maWx0ZXIgZmlsdGVyLWJhciBkYXRhbGlzdC13cmFwIGlucHV0OnZhbGlkICsgYnV0dG9uLmNsZWFyIHtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbn1cbmdyYWRlLWZpbHRlciBmaWx0ZXItYmFyIGRhdGFsaXN0LXdyYXAgYnV0dG9uLmNsZWFyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxcHg7XG4gIHRvcDogMXB4O1xuICBvcGFjaXR5OiAwO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDJweCk7XG4gIHBhZGRpbmc6IDAgdmFyKC0tZ2FwKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKSwgdHJhbnNmb3JtIDAuMnMgY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpO1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgZGF0YWxpc3Qtd3JhcCBidXR0b24uY2xlYXIgc3ZnIHtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbiAgY29sb3I6ICMxMzFmNmI7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApO1xufVxuZ3JhZGUtZmlsdGVyIGZpbHRlci1iYXIgZGF0YWxpc3Qtd3JhcCBidXR0b24uY2xlYXI6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgd2lkdGg6IDMwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICByaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApLCB3aGl0ZSk7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBncmFkZS1maWx0ZXIgZmlsdGVyLWJhciBkYXRhbGlzdC13cmFwIGJ1dHRvbi5jbGVhcjpob3ZlciBzdmcge1xuICAgIGNvbG9yOiAjZGYzMDM1O1xuICB9XG59XG5ncmFkZS1maWx0ZXIgZmlsdGVyLWJhciBkYXRhbGlzdC13cmFwLmFjdGl2ZSBpbnB1dCB7XG4gIGJvcmRlci1jb2xvcjogIzEzMWY2Yjtcbn1cbmdyYWRlLWZpbHRlciBwI25vLXJlc3VsdHMge1xuICBncmlkLXJvdzogMztcbiAgZ3JpZC1jb2x1bW46IDEvLTE7XG59XG5ncmFkZS1maWx0ZXIgcCNuby1yZXN1bHRzLmhpZGRlbiB7XG4gIGRpc3BsYXk6IE5vbmU7XG59XG5ncmFkZS1maWx0ZXIgc2VjdGlvbiB7XG4gIGdyaWQtcm93OiAzO1xuICBncmlkLWNvbHVtbjogMjtcbn1cbmdyYWRlLWZpbHRlciBzZWN0aW9uOm5vdCgudW5ncm91cGVkKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5ncmFkZS1maWx0ZXIgc2VjdGlvbiAuaGVhZGluZyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWdhcCk7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbmdyYWRlLWZpbHRlciBzZWN0aW9uIC5oZWFkaW5nIHN2ZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAxLjZlbTtcbiAgaGVpZ2h0OiAxLjZlbTtcbn1cbmdyYWRlLWZpbHRlciBzZWN0aW9uIC5pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1ndXR0ZXIxKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgLS1hc3BlY3QtcmF0aW86IDM4MC85MDtcbiAgYXNwZWN0LXJhdGlvOiB2YXIoLS1hc3BlY3QtcmF0aW8pO1xufVxuQHN1cHBvcnRzIG5vdCAoYXNwZWN0LXJhdGlvOiAzODAvOTApIHtcbiAgZ3JhZGUtZmlsdGVyIHNlY3Rpb24gLmltYWdlIHtcbiAgICBhc3BlY3QtcmF0aW86IGluaXRpYWw7XG4gICAgcGFkZGluZy1ib3R0b206IGNhbGMoMTAwJSAvICh2YXIoLS1hc3BlY3QtcmF0aW8pKSk7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG4gIGdyYWRlLWZpbHRlciBzZWN0aW9uIC5pbWFnZSA+ICoge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxufVxuZ3JhZGUtZmlsdGVyIHNlY3Rpb24gLnRleHQge1xuICBmb250LXNpemU6IDAuODc1ZW07XG4gIG1hcmdpbi10b3A6IGNhbGModmFyKC0tZ2FwKSAqIDIpO1xufVxuZ3JhZGUtZmlsdGVyIHNlY3Rpb24gLnRleHQgdWwge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbmdyYWRlLWZpbHRlciBzZWN0aW9uIC50ZXh0ID4gZmlndXJlIHtcbiAgcGFkZGluZzogMDtcbn1cbmdyYWRlLWZpbHRlciBzZWN0aW9uLmFjdGl2ZSB7XG4gIGRpc3BsYXk6IHVuc2V0O1xufVxuZ3JhZGUtZmlsdGVyIHNlY3Rpb24gYXJ0aWNsZSBoNCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWdhcCk7XG59XG5ncmFkZS1maWx0ZXIgc2VjdGlvbiBhcnRpY2xlIGg0OjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW4tbGVmdDogdmFyKC0tZ2FwKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYztcbiAgZmxleC1ncm93OiAxO1xufVxudWwuZ3JhZGVzIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTYwcHgsIDFmcikpO1xuICBncmlkLWdhcDogdmFyKC0tZ2FwKTtcbn1cbnVsLmdyYWRlcyBsaSB7XG4gIC0taG92ZXItaGVpZ2h0OiBjYWxjKDIwMCUgKyB2YXIoLS1nYXApKTtcbiAgLS1ob3Zlci13aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogODBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMsIDZweCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMDtcbiAgdHJhbnNpdGlvbjogei1pbmRleCAwcyAwLjZzIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKTtcbn1cbnVsLmdyYWRlcyBsaSA+ICoge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IHZhcigtLWdhcCk7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1zaXplOiAwLjllbTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKTtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cbnVsLmdyYWRlcyBsaSA+ICogbWFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaXRpYWw7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBib3JkZXItcmFkaXVzOiBpbml0aWFsO1xuICBwYWRkaW5nOiBpbml0aWFsO1xuICB0cmFuc2l0aW9uOiBpbml0aWFsO1xufVxudWwuZ3JhZGVzIGxpID4gKiAuc3VtbWFyeSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgaW5zZXQ6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiB2YXIoLS1nYXApO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogd2hpdGU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIGhlaWdodCB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKSwgd2lkdGggdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDAuMnM7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxudWwuZ3JhZGVzIGxpID4gKiAuc3VtbWFyeTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCAjZGYzMDM1IDIwcHgpO1xufVxudWwuZ3JhZGVzIGxpID4gKiAuc3VtbWFyeSBzdHJvbmcge1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgMC40cyBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSk7XG59XG51bC5ncmFkZXMgbGkgPiAqIC5zdW1tYXJ5IHAsIHVsLmdyYWRlcyBsaSA+ICogLnN1bW1hcnk6OmFmdGVyIHtcbiAgZm9udC1zaXplOiAwLjgxMjVlbTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKTtcbn1cbnVsLmdyYWRlcyBsaSA+ICogPiBzdHJvbmcge1xuICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LCAjZGYzMDM1KTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG59XG51bC5ncmFkZXMgbGkgPiAqIGVtIHtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICB1bC5ncmFkZXMgbGkgPiAqOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWNvbmRhcnksICNkZjMwMzUpO1xuICB9XG4gIHVsLmdyYWRlcyBsaSA+ICo6aG92ZXIsIHVsLmdyYWRlcyBsaSA+ICo6aG92ZXIgc3Ryb25nIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cbn1cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gIHVsLmdyYWRlcyBsaTpob3ZlciB7XG4gICAgei1pbmRleDogMTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcyAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDBzICFpbXBvcnRhbnQ7XG4gIH1cbiAgdWwuZ3JhZGVzIGxpOmhvdmVyID4gKiAuc3VtbWFyeSB7XG4gICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG4gICAgaGVpZ2h0OiB2YXIoLS1ob3Zlci1oZWlnaHQpO1xuICAgIHdpZHRoOiB2YXIoLS1ob3Zlci13aWR0aCk7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMC4ycztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGYzMDM1O1xuICB9XG4gIHVsLmdyYWRlcyBsaTpob3ZlciA+ICogLnN1bW1hcnkgc3Ryb25nIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG4gIHVsLmdyYWRlcyBsaTpob3ZlciA+ICogLnN1bW1hcnkgcCwgdWwuZ3JhZGVzIGxpOmhvdmVyID4gKiAuc3VtbWFyeTo6YWZ0ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMC40cztcbiAgfVxuICB1bC5ncmFkZXMgbGk6aG92ZXIgfiAqIHtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwcywgMHMgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzLCAwcyAhaW1wb3J0YW50O1xuICB9XG59XG51bC5ncmFkZXMgbGkubm8tc3VtbWFyeSAuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNncmFkZXMtc2lkZWJhci1saXN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RjZGNkYztcbn1cbiNncmFkZXMtc2lkZWJhci1saXN0IGg0IHtcbiAgZm9udC1zaXplOiAxLjU2MjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6ICMxZTFjMWM7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLWdhcCk7XG59XG4jZ3JhZGVzLXNpZGViYXItbGlzdCB1bC5ncmFkZXMge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICBncmlkLWdhcDogY2FsYyh2YXIoLS1nYXApICogMC41KTtcbn1cbiNncmFkZXMtc2lkZWJhci1saXN0IHVsLmdyYWRlcyBsaSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RjZGM7XG4gIG1pbi1oZWlnaHQ6IGF1dG87XG4gIC0taG92ZXItaGVpZ2h0OiBjYWxjKDMwMCUgKyB2YXIoLS1nYXApICsgNHB4KTtcbn1cbiNncmFkZXMtc2lkZWJhci1saXN0IHVsLmdyYWRlcyBsaSBhIHtcbiAgcGFkZGluZzogY2FsYyh2YXIoLS1nYXApICogMC41KSB2YXIoLS1nYXApO1xuICBmb250LXNpemU6IDAuOGVtICFpbXBvcnRhbnQ7XG59XG4jZ3JhZGVzLXNpZGViYXItbGlzdCB1bC5ncmFkZXMgbGkgYSAuc3VtbWFyeSB7XG4gIHBhZGRpbmc6IGNhbGModmFyKC0tZ2FwKSAqIDAuNSkgdmFyKC0tZ2FwKTtcbn1cbiNncmFkZXMtc2lkZWJhci1saXN0IHVsLmdyYWRlcyBsaSBhIC5zdW1tYXJ5IHN0cm9uZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuZ3JhZGUtZmlsdGVyIGFzaWRlIHtcbiAgZ3JpZC1yb3c6IDM7XG4gIGdyaWQtY29sdW1uOiAxO1xufVxuZ3JhZGUtZmlsdGVyIGFzaWRlLnVuZ3JvdXBlZCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5ncmFkZS1maWx0ZXIgYXNpZGUudW5ncm91cGVkIH4gc2VjdGlvbiB7XG4gIGdyaWQtY29sdW1uOiAxLy0xO1xufVxuZ3JhZGUtZmlsdGVyW2RhdGEtY291bnQ9XCIxXCJdIHNlY3Rpb24uYWN0aXZlIHtcbiAgZ3JpZC1jb2x1bW46IDEvLTE7XG59XG5ncmFkZS1maWx0ZXJbZGF0YS1jb3VudD1cIjFcIl0gYXNpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5ncmFkZS1maWx0ZXIgYXNpZGUgbmF2IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cbmdyYWRlLWZpbHRlciBhc2lkZSBuYXYgYnV0dG9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBjb2xvcjogdmFyKC0tcHJpbWFyeSwgIzEzMWY2Yik7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LWZhbWlseTogbGF0bywgc2Fucy1zZXJpZjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LWRpc3BsYXk6IHN3YXA7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBwYWRkaW5nOiB2YXIoLS1nYXApIDA7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApO1xufVxuZ3JhZGUtZmlsdGVyIGFzaWRlIG5hdiBidXR0b24gc3ZnIHtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgZmlsbDogIzFlMWMxYztcbiAgdHJhbnNpdGlvbjogZmlsbCB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKTtcbn1cbmdyYWRlLWZpbHRlciBhc2lkZSBuYXYgYnV0dG9uICsgYnV0dG9uIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RjZGM7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICBncmFkZS1maWx0ZXIgYXNpZGUgbmF2IGJ1dHRvbjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLXNlY29uZGFyeSwgI2RmMzAzNSk7XG4gIH1cbiAgZ3JhZGUtZmlsdGVyIGFzaWRlIG5hdiBidXR0b246aG92ZXIgc3ZnIHtcbiAgICBmaWxsOiB2YXIoLS1zZWNvbmRhcnksICNkZjMwMzUpO1xuICB9XG59XG5ncmFkZS1maWx0ZXIgYXNpZGUgbmF2IGJ1dHRvbi5hY3RpdmUge1xuICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LCAjZGYzMDM1KTtcbn1cbmdyYWRlLWZpbHRlciBhc2lkZSBuYXYgYnV0dG9uLmFjdGl2ZSBzdmcge1xuICBmaWxsOiB2YXIoLS1zZWNvbmRhcnksICNkZjMwMzUpO1xufVxuZ3JhZGUtZmlsdGVyIGFzaWRlIG5hdiBhIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2VyMSk7XG59XG5ncmFkZS1maWx0ZXIgLmdyYWRlLWZpbHRlci1jdGEge1xuICBncmlkLWNvbHVtbjogMS8tMTtcbiAgd2lkdGg6IGZpdC1jb250ZW50O1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDE0MDBweCkge1xuICBncmFkZS1maWx0ZXIgYXNpZGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgZ3JhZGUtZmlsdGVyIHNlY3Rpb24ge1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2RjZGNkYztcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tZ2FwKTtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIGdyaWQtcm93OiBhdXRvO1xuICAgIGdyaWQtY29sdW1uOiAxLy0xO1xuICB9XG4gIGdyYWRlLWZpbHRlciBzZWN0aW9uIC5oZWFkaW5nIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEJyZWFrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnJlYWtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBvdXQoJGJyZWFrcG9pbnQpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6I3skYnJlYWtwb2ludCArIDF9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGluKCRicmVha3BvaW50KSB7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiN7JGJyZWFrcG9pbnR9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJldHdlZW4oJG1pbiwgJG1heCkge1xuICBAbWVkaWEgKG1pbi13aWR0aDojeyRtaW59KSBhbmQgKG1heC13aWR0aDojeyRtYXh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVW5pdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLyBAc2VlIGh0dHBzOi8vY29kZXBlbi5pby9tYXJrbm90dG9uL3Blbi9FeFBiTkdlXG4vLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWFya25vdHRvbi9kb2dnaXN0eWxlL2Jsb2IvbWFzdGVyL2xpYnJhcnkvc3JjL2NyZWF0ZS9fdW5pdHMuc2Nzc1xuXG4vLy8gVGhpcyB1bml0cyBjcmVhdG9yIHdpbGwgcmVuZGVyIHNpeCBwb3NpdGl2ZSBhbmQgc2l4IG5lZ2F0aXZlIHNhc3MgdmFyaWFibGVzIGZvciBcbi8vLyBnYXBzLCBzcGFjZXJzLCBhbmQgZ3V0dGVycyByZWxhdGl2ZSB0byB0aGUgYmFzZSB2YWx1ZXMgZGVmaW5lZCBiZWxvdy4gXG5cbkBmb3J3YXJkICdjcmVhdGUvdW5pdHMnIHdpdGggKFxuXG4gIC8vLyBHYXBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLy8gR2FwcyBhcmUgYW4gYWJzb2x1dGUgdW5pdCAocHgpIGludGVuZGVkIHRvIGJlIHVzZWQgb24gaW5kaXZpZHVhbCBlbGVtZW50cyB3aXRoaW4gYSBjb21wb25lbnRlZC4gXG4gIC8vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IHNwYWNpbmcgYW1vbmdzdCBibG9jaywgaW5saW5lLCB0YWJsZSBhbmQgZ3JvdXAgaHRtbCBlbGVtZW50cy5cbiAgLy8vIEdhcHMgbXVzdCB1c2UgYW4gYWJzb2x1dGUgYW5kIHN0YXRpYyAncHgnIHVuaXQuIEl0IHNob3VsZCBub3QgYmUgcmVsYXRpdmUgdG8gYW55XG4gIC8vLyBwYXJlbnQgY29udGFpbmVyIGFuZCBpcyBub3QgaW50ZW5kZWQgZm9yIGZvbnQgc2l6ZXMsIHNvIHlvdSBzaG91bGQgbm90IHVzZSAncmVtJyBvciAnZW0nLiBcbiAgLy8vIEByZXN1bHQgOiAkZ2FwMCwgJGdhcCwgJGdhcDIsICRnYXAzLCAkZ2FwNCwgJGdhcDUgLCAkZ2FwNiwgJGdhcDAtLCAkZ2FwLSwgJGdhcDItLCAkZ2FwMy0sICRnYXA0LSwgJGdhcDUtIGFuZCAkZ2FwNi1cbiAgXG4gICRnYXAgOiAxNnB4LFxuXG4gIC8vIFNwYWNlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFNwYWNlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgaGVpZ2h0ICh2aCkgdW5pdCBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGEgY29tcG9uZW50ZWQgbGV2ZWwuXG4gIC8vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IHRvcCBhbmQgYm90dG9tIHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuICAvLy8gU3BhY2VycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkc3BhY2VyICogeCkgKyAkZ2FwYC4gXG4gIC8vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdmggc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuICAvLy8gU3BhY2VycyBtdXN0IHVzZSBhICd2aCcgdW5pdCBzbyB0aGV5IGFyZSByZWxhdGl2ZSB0byB0aGUgdXNlcnMgdmlld3BvcnQgaGVpZ2h0LXdpc2UuXG4gIC8vLyBUaGV5IHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBmb3IgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb24gYSBjb21wb25lbnQgbGV2ZWwuXG4gIC8vLyBAcmVzdWx0IDogJHNwYWNlcjAsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXIsICRzcGFjZXI0LCAkc3BhY2VyNSwgJHNwYWNlcjYsICRzcGFjZXIwLSwgJHNwYWNlci0sICRzcGFjZXItLCAkc3BhY2VyLSwgJHNwYWNlcjQtLCAkc3BhY2VyNS0gYW5kICRzcGFjZXI2LVxuICBcbiAgJHNwYWNlciA6IDR2aCwgXG5cbiAgLy8gR3V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gR3V0dGVycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCB3aWR0aCAodncpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHBhcmVudCBsZXZlbDtcbiAgLy8gZm9yIGV4YW1wbGUsIGEgd3JhcHBlciBjb250YWluZXIgb3IgYm9keSB3aXRoIG5lc3RlZCBjb21wb25lbnRzLiBcbiAgLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBsZWZ0IGFuZCByaWdodCBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbiAgLy8vIEd1dHRlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJGd1dHRlciAqIHgpICsgJGdhcGAuIFxuICAvLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZ3IHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcbiAgLy8vIEd1dHRlcnMgbXVzdCB1c2UgYSAndncnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IHdpZHRoLXdpc2UuIFxuICAvLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9yIG1hcmdpbiBvbiBhIHBhcmVudCBsZXZlbC5cbiAgLy8vIEFzIGEgc3VnZ2VzdGlvbiwgdGhpcyBndXR0ZXIgY29uc3RhbnQgc2hvdWxkIGJlIGhhbGYgdGhlIHNpemUgb2YgdGhlIHNwYWNlciB2YWx1ZS5cbiAgLy8vIEByZXN1bHQgOiAkZ3V0dGVyMCwgJGd1dHRlciwgJGd1dHRlcjIsICRndXR0ZXIzLCAkZ3V0dGVyNCwgJGd1dHRlcjUsICRndXR0ZXI2LCAkZ3V0dGVyMC0sICRndXR0ZXItLCAkZ3V0dGVyMi0sICRndXR0ZXIzLSwgJGd1dHRlcjQtLCAkZ3V0dGVyNS0gYW5kICRndXR0ZXI2LVxuICBcbiAgJGd1dHRlciA6IDN2dywgXG5cbik7XG5cbiRib3JkZXItcmFkaXVzIDogdmFyKC0tYm9yZGVyLXJhZGl1cywgNnB4KTtcbiRzaWRlYmFyLXdpZHRoIDogNTAwcHg7IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBIb3ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdmVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gaG92ZXIoJHNlbGVjdG9yIDogbnVsbCkge1xuICBAbWVkaWEgKCBob3ZlciA6IGhvdmVyICkge1xuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzZWxlY3RvciB7XG4gICAgJiN7JHNlbGVjdG9yfSB7IFxuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEFzcGVjdCBSYXRpbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNhc3BlY3QtcmF0aW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgXCJzYXNzOnN0cmluZ1wiO1xuXG4vLy8gQGV4YW1wbGUgQGluY2x1ZGUgYXNwZWN0LXJhdGlvKDE2LzkpXG5cbkBtaXhpbiBhc3BlY3QtcmF0aW8oJHJhdGlvIDogJzE2LzknKSB7XG5cbiAgLS1hc3BlY3QtcmF0aW86ICN7c3RyaW5nLnVucXVvdGUoJHJhdGlvKX07XG4gIGFzcGVjdC1yYXRpbzogdmFyKC0tYXNwZWN0LXJhdGlvKTtcblxuICBAc3VwcG9ydHMgbm90IChhc3BlY3QtcmF0aW86ICN7c3RyaW5nLnVucXVvdGUoJHJhdGlvKX0pIHtcbiAgICBhc3BlY3QtcmF0aW86aW5pdGlhbDtcbiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygxMDAlLyh2YXIoLS1hc3BlY3QtcmF0aW8pKSk7XG4gICAgaGVpZ2h0OiAwO1xuICAgID4gKiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfSBcbiAgfVxufSIsIkB1c2UgJy4uL192YXJpYWJsZXMnIGFzICo7XG5cbkBtaXhpbiBtYXJrKCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Vycy1tYXJrO1xuICBjb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IGNhbGMoI3skYm9yZGVyLXJhZGl1c30gLyAyKTtcbiAgcGFkZGluZzowIDVweDtcbiAgdHJhbnNpdGlvbjogY29sb3IgJHRyYW5zaXRpb24sIGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb247XG59XG5cbkBtaXhpbiBtYXJrLXJlc2V0KCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbml0aWFsO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogaW5pdGlhbDtcbiAgcGFkZGluZzppbml0aWFsO1xuICB0cmFuc2l0aW9uOiBpbml0aWFsO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvdXIgUGFsZXR0ZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSBcIi4vbW9kdWxlcy9jb2xvdXJcIjtcblxuLy8gQWRqdXN0IHRoZXNlIHRvIGFtZW5kIHRoZSBsaWdodG5lc3Mgb3IgZGFya25lc3MgYW1vdW50cyBmb3IgdGhlIGNvbG91cnMgbHNpdGVkIGJlbG93Li4gXG5cbiRfbGlnaHRuZXNzIDogMTUlICFkZWZhdWx0O1xuJF9kYXJrbmVzcyAgOiAyMCUgIWRlZmF1bHQ7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21tb24gQ29sb3Vyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJHJlZCAgICAgICAgICA6ICM5NzA4MEUgIWRlZmF1bHQ7XG4kcmVkLWxpZ2h0ICAgIDogY29sb3VyLmxpZ2h0ZW4oJHJlZCwgJF9saWdodG5lc3MpICFkZWZhdWx0O1xuJHJlZC1kYXJrICAgICA6IGNvbG91ci5kYXJrZW4oJHJlZCwgJF9kYXJrbmVzcykgIWRlZmF1bHQ7XG5cbiRvcmFuZ2UgICAgICAgOiAjREE0QjBGICFkZWZhdWx0O1xuJG9yYW5nZS1saWdodCA6IGNvbG91ci5saWdodGVuKCRvcmFuZ2UsICRfbGlnaHRuZXNzKSAhZGVmYXVsdDtcbiRvcmFuZ2UtZGFyayAgOiBjb2xvdXIuZGFya2VuKCRvcmFuZ2UsICRfZGFya25lc3MpICFkZWZhdWx0O1xuXG4keWVsbG93ICAgICAgIDogI0U5QjEwNCAhZGVmYXVsdDtcbiR5ZWxsb3ctbGlnaHQgOiBjb2xvdXIubGlnaHRlbigkeWVsbG93LCAkX2xpZ2h0bmVzcykgIWRlZmF1bHQ7XG4keWVsbG93LWRhcmsgIDogY29sb3VyLmRhcmtlbigkeWVsbG93LCAkX2RhcmtuZXNzKSAhZGVmYXVsdDtcblxuJGdyZWVuICAgICAgICA6ICM0ODhDMTMgIWRlZmF1bHQ7XG4kZ3JlZW4tbGlnaHQgIDogY29sb3VyLmxpZ2h0ZW4oJGdyZWVuLCAkX2xpZ2h0bmVzcykgIWRlZmF1bHQ7XG4kZ3JlZW4tZGFyayAgIDogY29sb3VyLmRhcmtlbigkZ3JlZW4sICRfZGFya25lc3MpICFkZWZhdWx0O1xuXG4kYmx1ZSAgICAgICAgIDogIzFCNTVDMCAhZGVmYXVsdDtcbiRibHVlLWxpZ2h0ICAgOiBjb2xvdXIubGlnaHRlbigkYmx1ZSwgJF9saWdodG5lc3MpICFkZWZhdWx0O1xuJGJsdWUtZGFyayAgICA6IGNvbG91ci5kYXJrZW4oJGJsdWUsICRfZGFya25lc3MpICFkZWZhdWx0O1xuXG4kcGluayAgICAgICAgIDogI0UwNUQ2QiAhZGVmYXVsdDtcbiRwaW5rLWxpZ2h0ICAgOiBjb2xvdXIubGlnaHRlbigkcGluaywgJF9saWdodG5lc3MpICFkZWZhdWx0O1xuJHBpbmstZGFyayAgICA6IGNvbG91ci5kYXJrZW4oJHBpbmssICRfZGFya25lc3MpICFkZWZhdWx0O1xuXG4kcHVycGxlICAgICAgIDogIzYxM0Q1QSAhZGVmYXVsdDtcbiRwdXJwbGUtbGlnaHQgOiBjb2xvdXIubGlnaHRlbigkcHVycGxlLCAkX2xpZ2h0bmVzcykgIWRlZmF1bHQ7XG4kcHVycGxlLWRhcmsgIDogY29sb3VyLmRhcmtlbigkcHVycGxlLCAkX2RhcmtuZXNzKSAhZGVmYXVsdDtcblxuJGdyZXkgICAgICAgICA6ICM3ODc4NzggIWRlZmF1bHQ7XG4kZ3JleS1saWdodCAgIDogY29sb3VyLmxpZ2h0ZW4oJGdyZXksICRfbGlnaHRuZXNzKSAhZGVmYXVsdDtcbiRncmV5LWRhcmsgICAgOiBjb2xvdXIuZGFya2VuKCRncmV5LCAkX2RhcmtuZXNzKSAhZGVmYXVsdDtcblxuJGJyb3duICAgICAgICA6ICM3NzRGMzggIWRlZmF1bHQ7XG4kYnJvd24tbGlnaHQgIDogY29sb3VyLmxpZ2h0ZW4oJGJyb3duLCAkX2xpZ2h0bmVzcykgIWRlZmF1bHQ7XG4kYnJvd24tZGFyayAgIDogY29sb3VyLmRhcmtlbigkYnJvd24sICRfZGFya25lc3MpICFkZWZhdWx0O1xuXG4kd2hpdGUgICAgICAgIDogI0ZGRkZGRiAhZGVmYXVsdCA7XG4kd2hpdGUtZGFyayAgIDogY29sb3VyLmxpZ2h0ZW4oJHdoaXRlLCAkX2xpZ2h0bmVzcykgIWRlZmF1bHQ7XG5cbiRibGFjayAgICAgICAgOiAjMDAwMDAwICFkZWZhdWx0IDtcbiRibGFjay1saWdodCAgOiBjb2xvdXIuZGFya2VuKCRibGFjaywgJF9kYXJrbmVzcykgIWRlZmF1bHQ7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTb2NpYWwgTWVkaWEgQ29sb3Vyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8vIEBzZWUgaHR0cHM6Ly93d3cubG9ja2Vkb3duc2VvLmNvbS9zb2NpYWwtbWVkaWEtY29sb3JzL1xuXG4kZmFjZWJvb2s6ICAgICMxODc3ZjIgIWRlZmF1bHQ7XG4kdHdpdHRlcjogICAgICMxZGExZjIgIWRlZmF1bHQ7XG4kZ29vZ2xlOiAgICAgICM0Mjg1ZjQgIWRlZmF1bHQ7XG4keW91dHViZTogICAgICNmZjAwMDAgIWRlZmF1bHQ7XG4kbGlua2VkaW46ICAgICMwMDdiYjUgIWRlZmF1bHQ7XG4kaW5zdGFncmFtOiAgICNjMzJhYTMgIWRlZmF1bHQ7XG4kcGludGVyZXN0OiAgICNiZDA4MWMgIWRlZmF1bHQ7XG4kZGFpbHltb3Rpb246ICMwMDY2REMgIWRlZmF1bHQ7XG4kc25hcGNoYXQ6ICAgICNmZmZjMDAgIWRlZmF1bHQ7XG4kZmxpY2tyOiAgICAgICNmNDAwODMgIWRlZmF1bHQ7XG4kdmltZW86ICAgICAgICMxYWI3ZWEgIWRlZmF1bHQ7XG4kdGh1bWJsZXI6ICAgICMzNTQ2NWQgIWRlZmF1bHQ7XG4kcmVkZGl0OiAgICAgICNmZjQ1MDAgIWRlZmF1bHQ7XG4kd2hhdHNhcHA6ICAgICMyNWQzNjYgIWRlZmF1bHQ7XG4kc2t5cGU6ICAgICAgICMwMGFmZjAgIWRlZmF1bHQ7XG4kZGlzY29yZDogICAgICM3Mjg5ZGEgIWRlZmF1bHQ7XG5cbiRzb2NpYWwtbWVkaWEgOiAoXG4gIGZhY2Vib29rOiAgICAgJGZhY2Vib29rLFxuICB0d2l0dGVyOiAgICAgICR0d2l0dGVyLFxuICBnb29nbGU6ICAgICAgICRnb29nbGUsXG4gIHlvdXR1YmU6ICAgICAgJHlvdXR1YmUsXG4gIGxpbmtlZGluOiAgICAgJGxpbmtlZGluLFxuICBpbnN0YWdyYW06ICAgICRpbnN0YWdyYW0sXG4gIHBpbnRlcmVzdDogICAgJHBpbnRlcmVzdCxcbiAgZGFpbHltb3Rpb246ICAkZGFpbHltb3Rpb24sXG4gIHNuYXBjaGF0OiAgICAgJHNuYXBjaGF0LFxuICBmbGlja3I6ICAgICAgICRmbGlja3IsXG4gIHZpbWVvOiAgICAgICAgJHZpbWVvLFxuICB0aHVtYmxlcjogICAgICR0aHVtYmxlcixcbiAgcmVkZGl0OiAgICAgICAkcmVkZGl0LFxuICB3aGF0c2FwcDogICAgICR3aGF0c2FwcCxcbiAgc2t5cGU6ICAgICAgICAkc2t5cGUsXG4gIGRpc2NvcmQ6ICAgICAgJGRpc2NvcmRcbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPdGhlciBDb2xvdXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4keWVsbG86ICNGRkNCMDggIWRlZmF1bHQ7XG5cbi8vLyBIYW5kbGVzIHRoZSBjdXJzb3Igc2VsZWN0aW9uIGNvbG91clxuLy8vIEBzZWUgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9hbG1hbmFjL3NlbGVjdG9ycy9zL3NlbGVjdGlvbi9cblxuJGhpZ2hsaWdodDogI0IyRDNGQSAhZGVmYXVsdDsgXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGVhZGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgJ3Nhc3M6c3RyaW5nJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnLi9jb2xsZWN0aW9ucy9mb250JztcbkB1c2UgJy4vbW9kdWxlcy91bml0JztcblxuLy8gRGVmYXVsdCBIZWFkaW5nIFZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGgxIDogKFxuICAnZm9udC1zaXplJyAgIDogMy4wcmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS4xXG4pICFkZWZhdWx0O1xuXG4kaDIgOiAoXG4gICdmb250LXNpemUnICAgOiAyLjVyZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjNcbikgIWRlZmF1bHQ7XG5cbiRoMyA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDIuMnJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuNFxuKSAhZGVmYXVsdDtcblxuJGg0IDogKFxuICAnZm9udC1zaXplJyAgIDogMi4wcmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kaDUgOiAoXG4gICdmb250LXNpemUnICAgOiAxLjhyZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjRcbikgIWRlZmF1bHQ7XG5cbiRoNiA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDEuNnJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuNFxuKSAhZGVmYXVsdDtcblxuJGJhc2UgOiA2Mi41ICFkZWZhdWx0O1xuJHNjYWxlciA6IDEuNXZ3ICFkZWZhdWx0O1xuJGVuYWJsZS1jcm9wcGluZyA6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBGYWxsYmFjayBMaW5lLWhlaWdodHMgc2hvdWxkIHRoZXkgbm90IGhhdmUgYmVlbiBwYXNzZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AaWYgbm90IG1hcC5oYXMta2V5KCRoMSwgXCJsaW5lLWhlaWdodFwiKSB7ICRoMSA6IG1hcC5zZXQoJGgxLCAnbGluZS1oZWlnaHQnLCAxLjEpOyB9XG5AaWYgbm90IG1hcC5oYXMta2V5KCRoMiwgXCJsaW5lLWhlaWdodFwiKSB7ICRoMiA6IG1hcC5zZXQoJGgyLCAnbGluZS1oZWlnaHQnLCAxLjMpOyB9XG5AaWYgbm90IG1hcC5oYXMta2V5KCRoMywgXCJsaW5lLWhlaWdodFwiKSB7ICRoMyA6IG1hcC5zZXQoJGgzLCAnbGluZS1oZWlnaHQnLCAxLjQpOyB9XG5AaWYgbm90IG1hcC5oYXMta2V5KCRoNCwgXCJsaW5lLWhlaWdodFwiKSB7ICRoNCA6IG1hcC5zZXQoJGg0LCAnbGluZS1oZWlnaHQnLCAxLjQpOyB9XG5AaWYgbm90IG1hcC5oYXMta2V5KCRoNSwgXCJsaW5lLWhlaWdodFwiKSB7ICRoNSA6IG1hcC5zZXQoJGg1LCAnbGluZS1oZWlnaHQnLCAxLjQpOyB9XG5AaWYgbm90IG1hcC5oYXMta2V5KCRoNiwgXCJsaW5lLWhlaWdodFwiKSB7ICRoNiA6IG1hcC5zZXQoJGg2LCAnbGluZS1oZWlnaHQnLCAxLjQpOyB9XG5cbi8vIERlZmluZSB0aGUgdmFyaWFibGVzIHNvIHRoZXkgYXJlIHN0aWxsIGFjY2VzaWJsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRoMS1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDEsICdmb250LXNpemUnKTtcbiRoMS1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDEsICdsaW5lLWhlaWdodCcpO1xuJGgxLWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDEsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDEsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGgxLXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDEsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoMSwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDItZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGgyLCAnZm9udC1zaXplJyk7XG4kaDItbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGgyLCAnbGluZS1oZWlnaHQnKTtcbiRoMi1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGgyLCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGgyLCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoMi1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGgyLCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDIsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGgzLWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoMywgJ2ZvbnQtc2l6ZScpO1xuJGgzLWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoMywgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDMtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoMywgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoMywgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDMtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoMywgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGgzLCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoNC1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDQsICdmb250LXNpemUnKTtcbiRoNC1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDQsICdsaW5lLWhlaWdodCcpO1xuJGg0LWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDQsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDQsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGg0LXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDQsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoNCwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDUtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGg1LCAnZm9udC1zaXplJyk7XG4kaDUtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGg1LCAnbGluZS1oZWlnaHQnKTtcbiRoNS1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGg1LCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGg1LCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoNS1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGg1LCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDUsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGg2LWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoNiwgJ2ZvbnQtc2l6ZScpO1xuJGg2LWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoNiwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDYtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoNiwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoNiwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDYtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoNiwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGg2LCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbi8vIEhhbmRsZXMgQ3JvcHMgc2hvdWxkIHRoZXkgbm90IGhhdmUgYmVlbiBwYXNzZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiRfaDEtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDEsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGgxLCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2gyLWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGgyLCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoMiwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oMy1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoMywgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDMsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDQtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDQsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGg0LCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2g1LWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGg1LCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoNSwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oNi1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoNiwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDYsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcblxuJF9oMS1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDEsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDItY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGgyLCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2gzLWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoMywgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oNC1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDQsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDUtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGg1LCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2g2LWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoNiwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuXG5cbi8vIE1peGlucyBmb3IgZWFjaCBoZWFkaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiBfc2V0LWNyb3AoJGZvbnQtc2l6ZSwgJGxpbmUtaGVpZ2h0LCAkY3JvcCkge1xuXG4gIEBpZiAobWV0YS50eXBlLW9mKCRjcm9wKSA9PSAnbWFwJykge1xuXG4gICAgJGZvbnQtc2l6ZSAgIDogdW5pdC5zdHJpcCgkZm9udC1zaXplKSAqIDEwO1xuICAgICRsaW5lLWhlaWdodCA6IHVuaXQuc3RyaXAoJGxpbmUtaGVpZ2h0KTtcbiAgICAkdG9wICAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkY3JvcCwgXCJ0b3BcIiksIHVuaXQuc3RyaXAobWFwLmdldCgkY3JvcCwgXCJ0b3BcIikpLCAwKTtcbiAgICAkYm90dG9tICAgICAgOiBpZihtYXAuaGFzLWtleSgkY3JvcCwgXCJib3R0b21cIiksIHVuaXQuc3RyaXAobWFwLmdldCgkY3JvcCwgXCJib3R0b21cIikpLCAwKTtcblxuICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICR0b3AsICRib3R0b20pO1xuXG4gIH1cblxufVxuXG5AbWl4aW4gaDEoJGZvbnQtc2l6ZS1vbmx5IDogZmFsc2UsICRjcm9wIDogJGVuYWJsZS1jcm9wcGluZykge1xuXG4gIGZvbnQtc2l6ZSA6IGZvbnQuc2l6ZSgkaDEtZm9udC1zaXplKTtcblxuICBAaWYgKCAkaDEtZm9udC1zaXplLW1pbiBhbmQgJGgxLWZvbnQtc2l6ZS1taW4gPCAkaDEtZm9udC1zaXplICkge1xuICAgIGZvbnQtc2l6ZSA6IGNsYW1wKCN7Zm9udC5zaXplKCRoMS1mb250LXNpemUtbWluKX0sICN7JGgxLXNjYWxlcn0sICN7Zm9udC5zaXplKCRoMS1mb250LXNpemUpfSk7XG4gIH1cblxuICBAaWYgbm90ICRmb250LXNpemUtb25seSB7IFxuXG4gICAgQGlmICggJGNyb3AgKSB7IFxuICAgICAgQGluY2x1ZGUgZm9udC5jcm9wKCRoMS1mb250LXNpemUsICRoMS1saW5lLWhlaWdodCwgJF9oMS1jcm9wLXRvcCwgJF9oMS1jcm9wLWJvdHRvbSApOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0IDogJGgxLWxpbmUtaGVpZ2h0OyBcbiAgICB9XG5cbiAgfVxuXG59XG5cbkBtaXhpbiBoMigkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoMi1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoMi1mb250LXNpemUtbWluIGFuZCAkaDItZm9udC1zaXplLW1pbiA8ICRoMi1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGgyLWZvbnQtc2l6ZS1taW4pfSwgI3skaDItc2NhbGVyfSwgI3tmb250LnNpemUoJGgyLWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGgyLWZvbnQtc2l6ZSwgJGgyLWxpbmUtaGVpZ2h0LCAkX2gyLWNyb3AtdG9wLCAkX2gyLWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDItbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cbkBtaXhpbiBoMygkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoMy1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoMy1mb250LXNpemUtbWluIGFuZCAkaDMtZm9udC1zaXplLW1pbiA8ICRoMy1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGgzLWZvbnQtc2l6ZS1taW4pfSwgI3skaDMtc2NhbGVyfSwgI3tmb250LnNpemUoJGgzLWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGgzLWZvbnQtc2l6ZSwgJGgzLWxpbmUtaGVpZ2h0LCAkX2gzLWNyb3AtdG9wLCAkX2gzLWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDMtbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cbkBtaXhpbiBoNCgkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoNC1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoNC1mb250LXNpemUtbWluIGFuZCAkaDQtZm9udC1zaXplLW1pbiA8ICRoNC1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGg0LWZvbnQtc2l6ZS1taW4pfSwgI3skaDQtc2NhbGVyfSwgI3tmb250LnNpemUoJGg0LWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGg0LWZvbnQtc2l6ZSwgJGg0LWxpbmUtaGVpZ2h0LCAkX2g0LWNyb3AtdG9wLCAkX2g0LWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDQtbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cbkBtaXhpbiBoNSgkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoNS1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoNS1mb250LXNpemUtbWluIGFuZCAkaDUtZm9udC1zaXplLW1pbiA8ICRoNS1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGg1LWZvbnQtc2l6ZS1taW4pfSwgI3skaDUtc2NhbGVyfSwgI3tmb250LnNpemUoJGg1LWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGg1LWZvbnQtc2l6ZSwgJGg1LWxpbmUtaGVpZ2h0LCAkX2g1LWNyb3AtdG9wLCAkX2g1LWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDUtbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cbkBtaXhpbiBoNigkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoNi1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoNi1mb250LXNpemUtbWluIGFuZCAkaDYtZm9udC1zaXplLW1pbiA8ICRoNi1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGg2LWZvbnQtc2l6ZS1taW4pfSwgI3skaDYtc2NhbGVyfSwgI3tmb250LnNpemUoJGg2LWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AyKCRoNi1mb250LXNpemUsICRoNi1saW5lLWhlaWdodCwgJF9oNi1jcm9wLXRvcCwgJF9oNi1jcm9wLWJvdHRvbSApOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgIGxpbmUtaGVpZ2h0IDogJGg2LWxpbmUtaGVpZ2h0OyBcbiAgICB9XG4gICAgXG4gIH1cblxufVxuXG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gRm9udFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSAnY29sb3VycycgYXMgKjtcblxuJGNvbG91ciAgICAgIDogJGdyZXkyO1xuJHNpemUgICAgICAgIDogMS41cmVtICFkZWZhdWx0O1xuJHNpemUtbWluICAgIDogMS40cmVtICFkZWZhdWx0OyBcbiRzaXplLW1heCAgICA6IDEuNnJlbSAhZGVmYXVsdDsgXG4kbGluZS1oZWlnaHQgOiAxLjYgIWRlZmF1bHQ7IFxuXG4kc2l6ZS1oMSAgICAgOiA2LjFlbSAhZGVmYXVsdDtcbiRzaXplLWgxLW1pbiA6IDRlbSAhZGVmYXVsdDtcbiRzaXplLWgyICAgICA6IDMuMmVtICFkZWZhdWx0O1xuJHNpemUtaDMgICAgIDogMi41ZW0gIWRlZmF1bHQ7XG4kc2l6ZS1oNCAgICAgOiAxLjdlbSAhZGVmYXVsdDtcbiRzaXplLWg1ICAgICA6IDEuN2VtICFkZWZhdWx0O1xuJHNpemUtaDYgICAgIDogMS43ZW0gIWRlZmF1bHQ7XG4gIFxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBMYXRvIEZvbnRcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gVGhpcyBmb250IGl0IHByaW1hcmlseSB1c2VkIGZvciBoZWFkaW5ncyAoPGgqPiB0YWdzKVxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIGZvbnQtbGF0byhib2xkKVxuXG5AbWl4aW4gbGF0bygkd2VpZ2h0OnJlZ3VsYXIpIHtcblxuICBmb250LWZhbWlseTpsYXRvLCBzYW5zLXNlcmlmO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG5cbiAgQGlmICggJHdlaWdodCA9PSAncmVndWxhcicpIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICB9IEBlbHNlIGlmICggJHdlaWdodCA9PSAnc2VtaS1ib2xkJyBvciAkd2VpZ2h0ID09ICdzZW1pYm9sZCcpIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICB9IEBlbHNlIGlmICggJHdlaWdodCA9PSAnYm9sZCcpIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG5cbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vLyBNb250c2VycmF0IEZvbnRcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gVGhpcyBpcyB0aGUgYmFzZSBmb250IHVzZWQgZm9yIGFsbCBzdGFuZGFyZCBjb3B5IHRocm91Z2hvdXQgdGhlIHNpdGUuXG4vLy8gQGV4YW1wbGUgQGluY2x1ZGUgZm9udC1tb250c2VycmF0KClcblxuQG1peGluIG1vbnRzZXJyYXQoJHdlaWdodDpyZWd1bGFyKSB7XG5cbiAgZm9udC1mYW1pbHk6bW9udHNlcnJhdCwgc2Fucy1zZXJpZjtcbiAgXG4gIEBpZiAoICR3ZWlnaHQgPT0gJ3JlZ3VsYXInKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH0gQGVsc2UgaWYgKCAkd2VpZ2h0ID09ICdpdGFsaWMnKSB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIH0gQGVsc2UgaWYgKCAkd2VpZ2h0ID09ICdib2xkJykge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxufSJdfQ== */