* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; }

/*
    Variable: fontsize-root
    'px' font size on root (html) element (with units removed).  Browser default is 16px.  Used to determine sizes for rem function.

    -@ based on http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
    */
/*
    Mixin: rem (https://github.com/tobymackenzie/html-boilerplate/blob/master/web/_/styles/src/mixins/_units.scss)
    Output a property with pixel values for non 'rem' supporting browsers followed by the 'rem' equivalent for rem support browsers.  Can't currently accept values with comma separation, like multiple backgrounds or the like.

    -@ based on http://hugogiraudel.com/2013/03/18/ultimate-rem-mixin/
    */
/*
    Mixin: stripUnit
    Strip the unit from a value that has a unit

    -@ based on http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/
    */
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary {
  display: block; }

audio, canvas, video {
  display: inline-block; }

audio:not([controls]) {
  display: none;
  height: 0; }

[hidden], template {
  display: none; }

html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%; }

body {
  margin: 0; }

*, *:before, *:after {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box; }

a {
  background: transparent; }

a:focus {
  outline: thin dotted; }

a:active, a:hover {
  outline: 0; }

h1 {
  font-size: 2em;
  margin: 0.67em 0; }

abbr[title] {
  border-bottom: 1px dotted; }

b, strong {
  font-weight: bold; }

dfn {
  font-style: italic; }

hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0; }

mark {
  background: #ff0;
  color: #000; }

code, kbd, pre, samp {
  font-family: monospace, serif;
  font-size: 1em; }

pre {
  white-space: pre-wrap; }

q {
  quotes: "\201C" "\201D" "\2018" "\2019"; }

small {
  font-size: 80%; }

sub, sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

img, iframe, video {
  max-width: 100%; }

img {
  height: auto;
  border: 0;
  vertical-align: middle; }

svg:not(:root) {
  overflow: hidden; }

figure {
  margin: 0; }

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

legend {
  border: 0;
  padding: 0; }

button, input, select, textarea {
  font-family: inherit;
  font-size: 100%;
  margin: 0; }

button, input {
  line-height: normal; }

button, select {
  text-transform: none; }

button, html input[type="button"], input[type="reset"], input[type="submit"] {
  border: 0;
  -webkit-appearance: button;
  cursor: pointer; }

button[disabled], html input[disabled] {
  cursor: default; }

input[type="checkbox"], input[type="radio"] {
  box-sizing: border-box;
  padding: 0; }

input[type="search"] {
  -webkit-appearance: textfield; }

input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

button::-moz-focus-inner, input::-moz-focus-inner {
  border: 0;
  padding: 0; }

textarea {
  overflow: auto;
  vertical-align: top; }

textarea, input {
  outline: none; }

table {
  border-collapse: collapse;
  border-spacing: 0; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans_gdi.eot');
  src: url('webfonts/OpenSans_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans_gdi.woff') format('woff'), url('webfonts/OpenSans_gdi.ttf') format('truetype'), url('webfonts/OpenSans_gdi.svg#OpenSans-Regular') format('svg');
  font-weight: 400;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Italic_gdi.eot');
  src: url('webfonts/OpenSans-Italic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Italic_gdi.woff') format('woff'), url('webfonts/OpenSans-Italic_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Italic_gdi.svg#OpenSans-Italic') format('svg');
  font-weight: 400;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Light_gdi.eot');
  src: url('webfonts/OpenSans-Light_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Light_gdi.woff') format('woff'), url('webfonts/OpenSans-Light_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Light_gdi.svg#OpenSans-Light') format('svg');
  font-weight: 300;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSansLight-Italic_gdi.eot');
  src: url('webfonts/OpenSansLight-Italic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSansLight-Italic_gdi.woff') format('woff'), url('webfonts/OpenSansLight-Italic_gdi.ttf') format('truetype'), url('webfonts/OpenSansLight-Italic_gdi.svg#OpenSansLight-Italic') format('svg');
  font-weight: 300;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-Semibold_gdi.eot');
  src: url('webfonts/OpenSans-Semibold_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-Semibold_gdi.woff') format('woff'), url('webfonts/OpenSans-Semibold_gdi.ttf') format('truetype'), url('webfonts/OpenSans-Semibold_gdi.svg#OpenSans-Semibold') format('svg');
  font-weight: 600;
  font-style: normal;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

@font-face {
  font-family: 'Open Sans';
  src: url('webfonts/OpenSans-SemiboldItalic_gdi.eot');
  src: url('webfonts/OpenSans-SemiboldItalic_gdi.eot?#iefix') format('embedded-opentype'), url('webfonts/OpenSans-SemiboldItalic_gdi.woff') format('woff'), url('webfonts/OpenSans-SemiboldItalic_gdi.ttf') format('truetype'), url('webfonts/OpenSans-SemiboldItalic_gdi.svg#OpenSans-SemiboldItalic') format('svg');
  font-weight: 600;
  font-style: italic;
  font-stretch: normal;
  unicode-range: U20 -25CA; }

html, body {
  font-family: 'Open Sans', sans-serif;
  color: #333333;
  font-weight: 400;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden; }

h1, h2, h3, h4, h5, h6 {
  font-weight: 400; }

h1, .h1 {
  text-align: center;
  font-size: 36px; }

h2 {
  font-size: 22px; }

a {
  text-decoration: none;
  color: #cc0000; }
  a:hover {
    text-decoration: underline; }

dt {
  font-weight: 400; }

blockquote {
  border-left: 5px solid #666666;
  padding: 20px;
  background: #ffffff; }
  blockquote p:first-child {
    margin-top: 0; }

@font-face {
  font-family: 'icomoon';
  src: url('fonts/icomoon.eot?n0wbn8');
  src: url('fonts/icomoon.eot?#iefixn0wbn8') format('embedded-opentype'), url('fonts/icomoon.woff?n0wbn8') format('woff'), url('fonts/icomoon.ttf?n0wbn8') format('truetype'), url('fonts/icomoon.svg?n0wbn8#icomoon') format('svg');
  font-weight: normal;
  font-style: normal; }

[class^="icon-"], [class*=" icon-"] {
  font-family: 'icomoon';
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-legal:before {
  content: "\e900"; }

.icon-services:before {
  content: "\e901"; }

.icon-content-copy:before {
  content: "\e61a"; }

.icon-pencil:before {
  content: "\e617"; }

.icon-stack:before {
  content: "\e61b"; }

.icon-user:before {
  content: "\e605"; }

.icon-spinner:before {
  content: "\e606"; }

.icon-search:before {
  content: "\e616"; }

.icon-cog:before {
  content: "\e607"; }

.icon-leaf:before {
  content: "\e608"; }

.icon-switch:before {
  content: "\e609"; }

.icon-menu:before {
  content: "\e60a"; }

.icon-globe:before {
  content: "\e60b"; }

.icon-earth:before {
  content: "\e60c"; }

.icon-info:before {
  content: "\e60d"; }

.icon-cancel-circle:before {
  content: "\e60e"; }

.icon-checkmark-circle:before {
  content: "\e60f"; }

.icon-spam:before {
  content: "\e610"; }

.icon-close:before {
  content: "\e611"; }

.icon-checkmark:before {
  content: "\e612"; }

.icon-minus:before {
  content: "\e613"; }

.icon-plus:before {
  content: "\e614"; }

.icon-share:before {
  content: "\e615"; }

.icon-facebook:before {
  content: "\e601"; }

.icon-instagram:before {
  content: "\e602"; }

.icon-twitter:before {
  content: "\e603"; }

.icon-youtube:before {
  content: "\e604"; }

.icon-file-pdf:before {
  content: "\e61c"; }

.icon-file-word:before {
  content: "\e61d"; }

.icon-file-excel:before {
  content: "\e61e"; }

.icon-file-powerpoint:before {
  content: "\e61f"; }

.icon-chevron-right:before {
  content: "\e618"; }

.icon-chevron-left:before {
  content: "\e619"; }

.icon-linkedin:before {
  content: "\e600"; }

.styleguide {
  /*

	Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/

	*/ }
  .styleguide h1 {
    text-align: left; }
  .styleguide .color-swatches {
    margin: 0;
    padding: 0;
    color: #fff;
    list-style: none;
    display: -webkit-box;
    display: -moz-box;
    display: box;
    display: -webkit-flex;
    display: -moz-flex;
    display: -ms-flexbox;
    display: flex; }
    .styleguide .color-swatches li {
      padding: 2em 0;
      width: 6em;
      margin: 5px;
      text-align: center; }
    .styleguide .color-swatches .invert {
      color: #000; }
    .styleguide .color-swatches .border {
      border: 1px solid #c3c3c3; }
    .styleguide .color-swatches .c-cc0000 {
      background: #cc0000; }
    .styleguide .color-swatches .c-000000 {
      background: #000000; }
    .styleguide .color-swatches .c-ffffff {
      background: #ffffff; }
    .styleguide .color-swatches .c-f2f2f2 {
      background: #f2f2f2; }
    .styleguide .color-swatches .c-cccccc {
      background: #cccccc; }
    .styleguide .color-swatches .c-666666 {
      background: #666666; }
    .styleguide .color-swatches .c-333333 {
      background: #333333; }
    .styleguide .color-swatches .c-990000 {
      background: #990000; }
    .styleguide .color-swatches .c-d14905 {
      background: #d14905; }
    .styleguide .color-swatches .c-fdd726 {
      background: #fdd726; }
    .styleguide .color-swatches .c-7d8c1f {
      background: #7d8c1f; }
    .styleguide .color-swatches .c-427e93 {
      background: #427e93; }
    .styleguide .color-swatches .c-4156a1 {
      background: #4156a1; }
  .styleguide .toggle-code-block {
    display: inline-block;
    margin-bottom: 5px; }
  .styleguide code {
    height: 0;
    padding: 0 !important;
    background: #000;
    overflow: hidden;
    width: 100%; }
    .styleguide code.show {
      padding: 20px !important;
      height: auto;
      display: block;
      border-radius: 10px; }
  .styleguide .page-title {
    display: none; }
  .styleguide .component-title {
    color: #333333; }
  .styleguide .code-container {
    background: #cccccc;
    padding: 20px; }
  .styleguide .hljs {
    display: inline-block;
    padding: 0.5em;
    background: #23241f; }
  .styleguide .hljs, .styleguide .hljs-tag, .styleguide .css .hljs-rules, .styleguide .css .hljs-value, .styleguide .css .hljs-function .hljs-preprocessor, .styleguide .hljs-pragma {
    color: #f8f8f2; }
  .styleguide .hljs-strongemphasis, .styleguide .hljs-strong, .styleguide .hljs-emphasis {
    color: #a8a8a2; }
  .styleguide .hljs-bullet, .styleguide .hljs-blockquote, .styleguide .hljs-horizontal_rule, .styleguide .hljs-number, .styleguide .hljs-regexp, .styleguide .alias .hljs-keyword, .styleguide .hljs-literal, .styleguide .hljs-hexcolor {
    color: #ae81ff; }
  .styleguide .hljs-tag .hljs-value, .styleguide .hljs-code, .styleguide .hljs-title, .styleguide .css .hljs-class, .styleguide .hljs-class .hljs-title:last-child {
    color: #a6e22e; }
  .styleguide .hljs-link_url {
    font-size: 80%; }
  .styleguide .hljs-strong, .styleguide .hljs-strongemphasis {
    font-weight: bold; }
  .styleguide .hljs-emphasis, .styleguide .hljs-strongemphasis, .styleguide .hljs-class .hljs-title:last-child {
    font-style: italic; }
  .styleguide .hljs-keyword, .styleguide .hljs-function, .styleguide .hljs-change, .styleguide .hljs-winutils, .styleguide .hljs-flow, .styleguide .lisp .hljs-title, .styleguide .clojure .hljs-built_in, .styleguide .nginx .hljs-title, .styleguide .tex .hljs-special, .styleguide .hljs-header, .styleguide .hljs-attribute, .styleguide .hljs-symbol, .styleguide .hljs-symbol .hljs-string, .styleguide .hljs-tag .hljs-title, .styleguide .hljs-value, .styleguide .alias .hljs-keyword:first-child, .styleguide .css .hljs-tag, .styleguide .css .unit, .styleguide .css .hljs-important {
    color: #f92672; }
  .styleguide .hljs-function .hljs-keyword, .styleguide .hljs-class .hljs-keyword:first-child, .styleguide .hljs-constant, .styleguide .css .hljs-attribute {
    color: #66d9ef; }
  .styleguide .hljs-variable, .styleguide .hljs-params, .styleguide .hljs-class .hljs-title {
    color: #f8f8f2; }
  .styleguide .hljs-string, .styleguide .css .hljs-id, .styleguide .hljs-subst, .styleguide .haskell .hljs-type, .styleguide .ruby .hljs-class .hljs-parent, .styleguide .hljs-built_in, .styleguide .django .hljs-template_tag, .styleguide .django .hljs-variable, .styleguide .smalltalk .hljs-class, .styleguide .django .hljs-filter .hljs-argument, .styleguide .smalltalk .hljs-localvars, .styleguide .smalltalk .hljs-array, .styleguide .hljs-attr_selector, .styleguide .hljs-pseudo, .styleguide .hljs-addition, .styleguide .hljs-stream, .styleguide .hljs-envvar, .styleguide .apache .hljs-tag, .styleguide .apache .hljs-cbracket, .styleguide .tex .hljs-command, .styleguide .hljs-prompt, .styleguide .hljs-link_label, .styleguide .hljs-link_url {
    color: #e6db74; }
  .styleguide .hljs-comment, .styleguide .hljs-javadoc, .styleguide .java .hljs-annotation, .styleguide .python .hljs-decorator, .styleguide .hljs-template_comment, .styleguide .hljs-pi, .styleguide .hljs-doctype, .styleguide .hljs-deletion, .styleguide .hljs-shebang, .styleguide .apache .hljs-sqbracket, .styleguide .tex .hljs-formula {
    color: #75715e; }
  .styleguide .coffeescript .javascript, .styleguide .javascript .xml, .styleguide .tex .hljs-formula, .styleguide .xml .javascript, .styleguide .xml .vbscript, .styleguide .xml .css, .styleguide .xml .hljs-cdata, .styleguide .xml .php, .styleguide .php .xml {
    opacity: 0.5; }

body {
  -webkit-overflow-scrolling: touch;
  background: #f2f2f2; }

.header-container .wrapper, .content-container .wrapper, .footer-container .wrapper {
  max-width: 68em;
  margin-left: auto;
  margin-right: auto;
  padding: 0 10px; }
  .header-container .wrapper:after, .content-container .wrapper:after, .footer-container .wrapper:after {
    content: "";
    display: table;
    clear: both; }

.content-container {
  margin-bottom: 60px; }
  .content-container h1 {
    margin: 40px 0; }
    .content-container h1 sup {
      font-size: 18px;
      font-weight: 300;
      top: -0.9em; }
  .page-template-page-secondary-php .content-container {
    padding-top: 10px; }

.header-container {
  background: #fff;
  left: 0;
  right: 0;
  z-index: 300;
  -webkit-transition: all 0.2s linear;
  -moz-transition: all 0.2s linear;
  transition: all 0.2s linear; }
  .header-container .logo {
    float: left;
    font-size: 0;
    margin-top: 10px; }
    .header-container .logo a {
      display: inline-block; }
      .header-container .logo a img {
        -webkit-transition: all 0.2s linear;
        -moz-transition: all 0.2s linear;
        transition: all 0.2s linear;
        padding: 20px; }
      .header-container .logo a:first-child img {
        display: inline-block;
        padding-left: 0;
        border-right: 1px solid #000; }
  .header-container nav.primary {
    width: 55%;
    float: right;
    margin-right: 50px;
    margin-top: 30px;
    -webkit-transition: margin 0.2s linear;
    -moz-transition: margin 0.2s linear;
    transition: margin 0.2s linear; }
    .header-container nav.primary button {
      -webkit-transition: all 0.2s linear;
      -moz-transition: all 0.2s linear;
      transition: all 0.2s linear;
      display: none;
      background: #cc0000;
      height: 45px;
      width: 48px;
      top: 25px;
      right: 20px;
      overflow: hidden;
      position: absolute;
      cursor: pointer;
      outline: none;
      text-indent: -9999px; }
      .header-container nav.primary button:after {
        content: '';
        position: absolute;
        width: 68%;
        height: 5px;
        background: #ffffff;
        top: 10px;
        left: 16%;
        box-shadow: 0 10px 0 #ffffff, 0 20px 0 #ffffff; }
    @media screen and (max-width: 960px)  {
      .header-container nav.primary {
        position: fixed;
        width: 100%;
        top: 0;
        margin-top: 0;
        right: 0;
        z-index: 100; }
        .header-container nav.primary button {
          display: block; }
        .header-container nav.primary > ul {
          -webkit-transition: all 0.3s linear;
          -moz-transition: all 0.3s linear;
          transition: all 0.3s linear;
          background: #f2f2f2;
          overflow: hidden;
          max-height: 0;
          position: absolute;
          right: -50px;
          width: 100%;
          top: 100px;
          padding: 0;
          text-align: center; } }
  .header-container .share {
    position: absolute;
    right: 0;
    z-index: 500; }
  .header-container header {
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    position: relative;
    overflow: hidden;
    height: 100px;
    padding: 0 10px; }
    .page-template-page-secondary-php .header-container header {
      height: 140px; }

body.headroom--unpinned .header-container {
  position: fixed; }
  body.headroom--unpinned .header-container header {
    height: 70px; }
    body.headroom--unpinned .header-container header .logo {
      margin-top: 10px; }
      body.headroom--unpinned .header-container header .logo img {
        padding-top: 5px;
        padding-bottom: 5px; }
  @media screen and (min-width: 960px) {
    body.headroom--unpinned .header-container nav.primary {
      margin-top: 15px; } }
  body.headroom--unpinned .header-container nav.primary > ul {
    top: 70px; }
    body.headroom--unpinned .header-container nav.primary > ul .sub-menu {
      top: 70px; }
  body.headroom--unpinned .header-container nav.primary button {
    top: 10px; }
body.headroom--unpinned.page-template-page-secondary-php .content-container {
  padding-top: 140px; }
body.headroom--unpinned.page-template-page-secondary-php .header-container header {
  height: 70px; }

.content-container {
  padding-top: 40px; }
  .headroom--unpinned .content-container {
    padding-top: 130px; }
  .content-container .sub-nav {
    position: fixed;
    left: 0;
    z-index: 301;
    color: #ffffff;
    padding: 13.5px 10px;
    top: 100px;
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear; }
    @media screen and (max-width: 960px)  {
      .content-container .sub-nav {
        display: none; } }
    .headroom--unpinned .content-container .sub-nav {
      top: 70px; }
    .content-container .sub-nav span {
      margin-right: 10px; }
  .content-container .alignleft {
    float: left;
    margin-right: 20px; }
  .content-container .lcp_paginator {
    background: #333333;
    color: #ffffff;
    display: inline-block;
    float: right;
    margin: 0;
    padding: 0; }
    .content-container .lcp_paginator li {
      border: none; }
      .content-container .lcp_paginator li span {
        display: inline-block;
        padding: 10px 20px; }
      .content-container .lcp_paginator li a {
        display: inline-block;
        padding: 10px 20px;
        color: #cccccc; }
        .content-container .lcp_paginator li a:hover {
          color: #ffffff; }
  .content-container .lcp_catlist {
    margin: 0;
    padding: 0; }

.footer-container {
  margin-top: 20px;
  background: #000000;
  color: #ffffff;
  padding-bottom: 50px; }
  .footer-container .credits {
    background: #cc0000; }
    .footer-container .credits ul {
      margin: 0;
      padding: 0;
      list-style: none; }
      .footer-container .credits ul li {
        padding: 30px 0;
        text-align: center; }
        @media screen and (min-width: 768px) {
          .footer-container .credits ul li {
            width: 27%;
            float: left;
            text-align: left;
            display: inline-block; }
            .footer-container .credits ul li:first-child {
              width: 46%; }
            .footer-container .credits ul li:last-child {
              padding: 27px 0;
              text-align: right; } }
  .footer-container a {
    color: #fff; }
  .footer-container footer {
    margin-top: 20px; }
    .footer-container footer h2 {
      font-size: 24px;
      font-weight: 400; }
    @media screen and (min-width: 960px) {
      .footer-container footer > div {
        float: left;
        width: 27%; }
        .footer-container footer > div:first-child {
          width: 46%;
          padding-right: 30px; } }
    @media screen and (min-width: 960px) {
      .footer-container footer .social-bar h2 {
        min-height: 70px; } }
    .footer-container footer .social-bar ul {
      display: inline-block;
      list-style: none;
      margin: 0;
      padding: 0; }
      .footer-container footer .social-bar ul li {
        display: inline-block;
        border: 1px solid #ffffff;
        border-right: none;
        float: left;
        width: 48px;
        height: 48px;
        position: relative; }
        .footer-container footer .social-bar ul li:last-child {
          border-right: 1px solid #ffffff; }
        .footer-container footer .social-bar ul li a {
          position: absolute;
          width: 100%;
          top: 0;
          bottom: 0;
          font-size: 1.5em;
          text-decoration: none; }
          .footer-container footer .social-bar ul li a span {
            position: absolute;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            -moz-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
            -o-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%); }

input[type="submit"], button, a.button {
  padding: 10px 20px;
  padding: 0.625rem 1.25rem;
  margin: 0 0 10px;
  margin: 0 0 0.625rem;
  background-color: #cc0000;
  color: white;
  -webkit-transition: all 300ms ease-in-out;
  -moz-transition: all 300ms ease-in-out;
  transition: all 300ms ease-in-out; }
  input[type="submit"]:hover, button:hover, a.button:hover {
    background-color: #990000; }

label {
  display: block; }

input[type="text"], input[type="email"] {
  background-color: #fff;
  border: 1px solid #cc0000;
  padding: 8px 10px;
  padding: 0.5rem 0.625rem;
  -webkit-transition: all 300 ease-in-out;
  -moz-transition: all 300 ease-in-out;
  transition: all 300 ease-in-out; }
input[type="checkbox"] + label, input[type="radio"] + label {
  display: inline-block;
  cursor: pointer;
  position: relative;
  padding-left: 25px;
  margin-right: 15px;
  font-size: 13px; }
  input[type="checkbox"] + label:before, input[type="radio"] + label:before {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-right: 10px;
    position: absolute;
    left: 0;
    bottom: 1px;
    background-color: #f2f2f2; }
input[type="checkbox"] + label:before {
  border: 1px solid #a5a5a5; }
input[type="radio"] + label:before {
  border-radius: 8px;
  border: 1px solid #a5a5a5; }
input[type="checkbox"], input[type="radio"] {
  display: none; }
input[type="radio"]:checked + label:before {
  background-color: #cc0000;
  color: #f3f3f3;
  font-size: 32px;
  text-align: center;
  line-height: 14px;
  border: 1px solid #660000; }
input[type="radio"]:checked + label:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 4px;
  position: absolute;
  left: 4px;
  top: 5px; }
input[type="checkbox"]:checked + label:before {
  background-color: #cc0000;
  color: #f3f3f3;
  font-size: 32px;
  text-align: center;
  line-height: 14px;
  border: 1px solid #660000; }
input[type="checkbox"]:checked + label:after {
  content: "";
  display: inline-block;
  width: 7px;
  height: 12px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
  transform: rotate(45deg);
  position: absolute;
  left: 5px;
  top: 1px;
  border-right: 3px solid #fff;
  border-bottom: 3px solid #fff; }
input[type="search"]::-ms-clear {
  display: none; }

textarea {
  background-color: #fff;
  border: 1px solid #cc0000;
  padding: 8px 10px;
  padding: 0.5rem 0.625rem;
  -webkit-transition: all 300 ease-in-out;
  -moz-transition: all 300 ease-in-out;
  transition: all 300 ease-in-out; }

nav.primary ul {
  margin: 0;
  padding: 0; }
nav.primary > ul > li.current-menu-item > a {
  font-weight: 700; }

.flex-container {
  margin: 0;
  padding: 0;
  list-style: none; }
  .flex-containerul {
    font-size: 0; }
  .flex-container li {
    display: inline-block;
    font-size: 14px; }
    @media screen and (min-width: 1088px) { }
    .flex-container li a {
      color: #333;
      text-decoration: none;
      float: left;
      padding: 0.5em; }
  .flex-container .sub-menu {
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    display: none;
    position: fixed;
    top: 100px;
    left: 0;
    right: 0;
    list-style: none;
    background: #333333;
    font-size: 0; }
    .flex-container .sub-menu li {
      display: inline-block;
      text-align: left; }
      .flex-container .sub-menu li a {
        font-size: 14px;
        font-weight: 400;
        padding: 13.5px 20px;
        color: #ffffff;
        line-height: 24px; }
  .flex-container .current_page_item .sub-menu, .flex-container .current_page_ancestor .sub-menu {
    display: block;
    text-align: right; }
    @media screen and (max-width: 960px)  {
      .flex-container .current_page_item .sub-menu, .flex-container .current_page_ancestor .sub-menu {
        display: none; } }
  .flex-container .current-menu-item, .flex-container .current-menu-ancestor {
    font-weight: 600; }
    .flex-container .current-menu-item ul li, .flex-container .current-menu-ancestor ul li {
      font-weight: 300; }
      .flex-container .current-menu-item ul li.current-menu-item, .flex-container .current-menu-ancestor ul li.current-menu-item {
        font-weight: 400; }
  .styleguide .flex-container {
    background: #fff; }
  .flex-container.secondary li a {
    padding: 0.5em;
    line-height: 3em; }

.right {
  text-align: right; }

.no-scroll {
  overflow: hidden; }

.flyout-menu {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%;
  overflow: hidden;
  background: rgba(0, 0, 0, 0);
  z-index: -1; }
  .flyout-menu.active {
    background: rgba(0, 0, 0, 0.5);
    z-index: 500; }
    .flyout-menu.active ul, .flyout-menu.active div {
      display: block; }
  .flyout-menu h3 {
    height: 70px;
    padding: 20px;
    margin: 0; }
  .flyout-menu h4 {
    margin: 0;
    padding: 10px 20px; }
  .flyout-menu ul, .flyout-menu div {
    display: none; }
  .flyout-menu [data-level] {
    display: block;
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    min-width: 300px;
    background: #f2f2f2;
    -webkit-transition: all 0.2s linear;
    -moz-transition: all 0.2s linear;
    transition: all 0.2s linear;
    -webkit-transform: translateX(300px);
    -moz-transform: translateX(300px);
    -ms-transform: translateX(300px);
    -o-transform: translateX(300px);
    transform: translateX(300px);
    border-left: 3px solid #cc0000; }
    .flyout-menu [data-level].active {
      -webkit-transform: translateX(0px);
      -moz-transform: translateX(0px);
      -ms-transform: translateX(0px);
      -o-transform: translateX(0px);
      transform: translateX(0px);
      z-index: 501; }
  .flyout-menu[data-level-active="2"] [data-level="1"] {
    margin-right: 40px; }
    .flyout-menu[data-level-active="2"] [data-level="1"] > ul > .close-btn {
      background: rgba(0, 0, 0, 0.5);
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      cursor: pointer; }
  .flyout-menu[data-level-active="2"] [data-level="2"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
  .flyout-menu[data-level-active="3"] [data-level="1"] {
    margin-right: 80px; }
  .flyout-menu[data-level-active="3"] [data-level="2"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
    .flyout-menu[data-level-active="3"] [data-level="2"] > ul > .close-btn {
      background: rgba(0, 0, 0, 0.5);
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      cursor: pointer; }
  .flyout-menu[data-level-active="3"] [data-level="3"] {
    -webkit-transform: translateX(40px);
    -moz-transform: translateX(40px);
    -ms-transform: translateX(40px);
    -o-transform: translateX(40px);
    transform: translateX(40px); }
  .flyout-menu[data-level-active="3"] [data-level="1"] > ul > .close-btn {
    background: rgba(0, 0, 0, 0.5);
    top: 0;
    right: 0;
    left: 0;
    bottom: 0;
    cursor: pointer; }
  .flyout-menu nav ul {
    margin: 0;
    padding: 0;
    list-style: none; }
    .flyout-menu nav ul li {
      display: block;
      border-bottom: 1px solid #333; }
  .flyout-menu nav a {
    text-decoration: none;
    padding: 10px 20px;
    display: block;
    color: #000; }
    .flyout-menu nav a:hover {
      background: #a8a8a8; }
  .flyout-menu .close-btn {
    position: absolute;
    top: 20px;
    right: 10px;
    border: none; }
    .flyout-menu .close-btn button {
      position: relative;
      width: 25px;
      height: 25px;
      float: right;
      background: transparent; }
      .flyout-menu .close-btn button:before {
        content: '';
        position: absolute;
        width: 100%;
        top: 50%;
        height: 1px;
        left: 0;
        background: #000;
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        -o-transform: rotate(45deg);
        transform: rotate(45deg); }
      .flyout-menu .close-btn button:after {
        content: '';
        position: absolute;
        width: 100%;
        top: 50%;
        height: 1px;
        background: #000;
        left: 0;
        -webkit-transform: rotate(-45deg);
        -moz-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
        -o-transform: rotate(-45deg);
        transform: rotate(-45deg); }
  .flyout-menu h4 {
    color: #fff;
    background: #cc0000; }

.share {
  -webkit-transition: all 0.2s ease-in-out;
  -moz-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  height: 100px;
  width: 50px;
  background: #333333;
  overflow: hidden; }
  .share ul {
    margin: 0;
    padding: 0;
    list-style: none;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
    -webkit-transform: translateY(-50px);
    -moz-transform: translateY(-50px);
    -ms-transform: translateY(-50px);
    -o-transform: translateY(-50px);
    transform: translateY(-50px); }
    .share ul li a {
      display: inline-block;
      width: 50px;
      height: 50px;
      text-indent: -9999px;
      white-space: nowrap; }
    .share ul li .toggle {
      background: #333333 url(../img/social-share.png) no-repeat center; }
    .share ul li .fb {
      background: #3b5998 url(../img/social-fb.png) no-repeat center; }
    .share ul li .twitter {
      background: #00aced url(../img/social-twitter.png) no-repeat center; }
  .headroom--not-top .share {
    height: 70px; }
    .headroom--not-top .share ul {
      width: 190px;
      -webkit-transform: translateY(0px);
      -moz-transform: translateY(0px);
      -ms-transform: translateY(0px);
      -o-transform: translateY(0px);
      transform: translateY(0px); }
      .headroom--not-top .share ul li {
        float: left; }
        .headroom--not-top .share ul li a {
          width: 70px;
          height: 70px; }
        .headroom--not-top .share ul li:first-child a {
          width: 50px; }
    .headroom--not-top .share:hover, .headroom--not-top .share:focus {
      width: 190px; }

body.home .content-container {
  padding-top: 0; }
body.home.headroom--unpinned .content-container {
  padding-top: 100px; }

.search-container {
  background: #cc0000;
  color: #ffffff;
  display: inline-block;
  width: 100%; }
  .search-container .search-zip {
    text-align: center; }
  .search-container h2 {
    display: inline-block;
    text-align: center;
    font-weight: 400;
    padding: 20px 0;
    margin: 20px 0;
    border-bottom: 1px solid #ffffff; }
    @media screen and (min-width: 960px) {
      .search-container h2 {
        padding-right: 40px;
        border: none;
        border-right: 1px solid #ffffff;
        text-align: right;
        width: 50%;
        float: left; } }
  .search-container form {
    font-size: 0;
    text-align: center; }
    @media screen and (min-width: 960px) {
      .search-container form {
        float: left;
        width: 50%;
        padding: 20px 0;
        text-align: left; } }
    .search-container form .input {
      position: relative;
      margin-bottom: 40px;
      display: inline-block;
      font-size: 18px; }
      @media screen and (min-width: 960px) {
        .search-container form .input {
          margin: 0;
          padding: 13px 0;
          margin-left: 40px; } }
      .search-container form .input label {
        padding: 10px 0;
        padding-right: 10px;
        float: left; }
      .search-container form .input input[type=text] {
        float: left;
        border: none;
        text-shadow: none;
        box-shadow: none;
        padding: 10px;
        padding-left: 30px;
        display: inline-block;
        max-width: 190px;
        text-align: center;
        background: #ffffff url(../img/search-globe-icon.png) no-repeat 10px center; }
      .search-container form .input input[type=submit] {
        float: left;
        background: #660000;
        color: #ffffff;
        padding: 10px;
        display: inline-block;
        min-width: 110px; }
      .search-container form .input .error {
        position: absolute;
        display: none;
        top: 40px;
        width: 100%;
        text-align: center; }
        .search-container form .input .error.active {
          display: block; }

#chart_div {
  min-height: 880px;
  overflow: hidden; }

#chart_div path {
  stroke: #fff; }
  #chart_div path:hover {
    stroke: #fdd726;
    fill: #fdd726;
    cursor: pointer; }

.tooltip {
  width: 200px; }
  .tooltip h3 {
    color: #cc0000;
    padding-bottom: 0;
    margin-bottom: 5px; }

.google-visualization-tooltip-item:first-child {
  display: none; }

.map-container {
  position: relative;
  overflow: hidden; }
  .map-container #chart_div {
    display: none; }
    @media screen and (min-width: 960px) {
      .map-container #chart_div {
        display: block;
        margin-left: 30px;
        margin-right: -30px; } }
  .map-container h2 {
    font-size: 32px;
    text-align: center;
    font-weight: 400;
    margin: 40px 0;
    margin-bottom: 0; }
  .map-container .cta-buttons {
    display: none;
    position: relative;
    left: 0;
    bottom: 130px; }
    @media screen and (min-width: 960px) {
      .map-container .cta-buttons {
        display: block; } }
    @media screen and (min-width: 1068px) {
      .map-container .cta-buttons {
        width: 1068px; } }
    .map-container .cta-buttons ul {
      margin: 0;
      padding: 0 0 5px;
      list-style: none;
      width: 100%;
      text-align: center; }
      .map-container .cta-buttons ul:after {
        content: "";
        display: table;
        clear: both; }
      .map-container .cta-buttons ul li {
        display: inline-block;
        margin-left: 5px; }
        .map-container .cta-buttons ul li a {
          display: inline-block;
          vertical-align: middle;
          border: 1px solid #cccccc;
          padding: 5px 10px;
          background: #ffffff;
          color: #666666; }
          @media screen and (min-width: 1068px) {
            .map-container .cta-buttons ul li a {
              padding: 5px 20px; } }
          .map-container .cta-buttons ul li a .cta-icon {
            display: inline-block;
            text-align: center;
            vertical-align: middle;
            color: #ffffff;
            border-radius: 50%;
            background: #666666;
            font-weight: 700;
            width: 48px;
            height: 48px;
            line-height: 48px;
            font-size: 24px;
            margin-right: 5px; }
          .map-container .cta-buttons ul li a img {
            margin-right: 5px; }
          .map-container .cta-buttons ul li a span {
            display: inline-block;
            vertical-align: middle; }
          .map-container .cta-buttons ul li a [class^="icon-"], .map-container .cta-buttons ul li a [class*=" icon-"] {
            color: #cccccc;
            padding-left: 20px;
            line-height: 48px;
            vertical-align: middle; }
          .map-container .cta-buttons ul li a:hover {
            text-decoration: none;
            background: #f2f2f2; }
  .map-container .mobile-list {
    margin-top: 30px; }
    @media screen and (min-width: 960px) {
      .map-container .mobile-list {
        display: none; } }
    .map-container .mobile-list ul {
      margin: 0;
      padding: 0;
      list-style: none;
      max-width: 68em;
      margin-left: auto;
      margin-right: auto; }
      .map-container .mobile-list ul:after {
        content: "";
        display: table;
        clear: both; }
      .map-container .mobile-list ul li {
        background: #333333;
        color: #ffffff; }
        .map-container .mobile-list ul li.tablet-header, .map-container .mobile-list ul li:first-child {
          padding: 10px 20px; }
        .map-container .mobile-list ul li span:last-child {
          float: right;
          width: 40px;
          text-align: center; }
        .map-container .mobile-list ul li a {
          padding: 10px 20px;
          display: inline-block;
          width: 100%; }
          .map-container .mobile-list ul li a span:last-child {
            color: #666666; }
        .map-container .mobile-list ul li:nth-child(2n+3) {
          background: #efefef; }
        .map-container .mobile-list ul li:nth-child(2n+4) {
          background: #ffffff; }
        @media screen and (max-width: 640px)  {
          .map-container .mobile-list ul li.tablet-header {
            display: none; } }
        @media screen and (min-width: 640px) {
          .map-container .mobile-list ul li {
            float: left;
            display: block;
            margin-right: 4.82916%;
            width: 47.58542%; }
            .map-container .mobile-list ul li:nth-child(4n+3), .map-container .mobile-list ul li:nth-child(4n+4) {
              background: #efefef; }
            .map-container .mobile-list ul li:nth-child(4n+5), .map-container .mobile-list ul li:nth-child(4n+6) {
              background: #ffffff; }
            .map-container .mobile-list ul li:last-child {
              margin-right: 0; }
            .map-container .mobile-list ul li:nth-child(2n) {
              margin-right: 0; }
            .map-container .mobile-list ul li:nth-child(2n+1) {
              clear: left; } }

.sponsor-container {
  background: #fff; }

.sponsors-list {
  padding: 0;
  margin: 0;
  list-style: none; }
  @media screen and (min-width: 640px) {
    .sponsors-list {
      -webkit-box-align: center;
      -moz-box-align: center;
      box-align: center;
      -webkit-align-items: center;
      -moz-align-items: center;
      -ms-align-items: center;
      -o-align-items: center;
      align-items: center;
      -ms-flex-align: center;
      display: -webkit-box;
      display: -moz-box;
      display: box;
      display: -webkit-flex;
      display: -moz-flex;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: horizontal;
      -moz-box-orient: horizontal;
      box-orient: horizontal;
      -webkit-flex-direction: row;
      -moz-flex-direction: row;
      flex-direction: row;
      -ms-flex-direction: row;
      -webkit-box-pack: center;
      -moz-box-pack: center;
      box-pack: center;
      -webkit-justify-content: center;
      -moz-justify-content: center;
      -ms-justify-content: center;
      -o-justify-content: center;
      justify-content: center;
      -ms-flex-pack: center; } }
  .sponsors-list .sponsor {
    width: 250px;
    padding: 20px;
    margin: 0 auto; }
    @media screen and (min-width: 640px) {
      .sponsors-list .sponsor {
        display: inline-block;
        float: left;
        margin: 0; } }

.ir {
  display: block;
  overflow: hidden;
  border: 0;
  background-color: transparent;
  background-repeat: no-repeat;
  text-align: left;
  text-indent: -999em;
  direction: ltr;
  *line-height: 0; }
  .ir br {
    display: none; }

.hidden {
  display: none !important;
  visibility: hidden; }

.visuallyhidden {
  position: absolute;
  overflow: hidden;
  clip: rect(0 0 0 0);
  margin: -1px;
  padding: 0;
  width: 1px;
  height: 1px;
  border: 0; }
  .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus {
    position: static;
    overflow: visible;
    clip: auto;
    margin: 0;
    width: auto;
    height: auto; }

.invisible {
  visibility: hidden; }

.group {
  *zoom: 1; }
  .group:before, .group:after {
    display: table;
    content: ""; }
  .group:after {
    clear: both; }

img[src*="googleadservices.com"] {
  position: absolute;
  top: 0;
  left: -9000em; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJjc3Mvc2Nzcy9zdHlsZS5zY3NzIiwiY3NzL3Njc3MvdXRpbGl0aWVzL19pbXBvcnRzLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQuc2NzcyIsImNzcy9zY3NzL3V0aWxpdGllcy9fZnVuY3Rpb25zLnNjc3MiLCJjc3Mvc2Nzcy91dGlsaXRpZXMvX3NldHRpbmdzLnNjc3MiLCJjc3Mvc2Nzcy9iYXNlL19ub3JtYWxpemUuc2NzcyIsImNzcy9zY3NzL2Jhc2UvX3R5cG9ncmFwaHkuc2NzcyIsImNzcy9zY3NzL2Jhc2UvX3N0eWxlZ3VpZGUuc2NzcyIsImNzcy9zY3NzL2xheW91dHMvX2dsb2JhbC5zY3NzIiwiY3NzL3Njc3MvbGF5b3V0cy9faGVhZGVyLnNjc3MiLCJjc3Mvc2Nzcy9sYXlvdXRzL19jb250ZW50LnNjc3MiLCJjc3Mvc2Nzcy9sYXlvdXRzL19mb290ZXIuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX2FsZXJ0cy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fYW5pbWF0aW9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fYnV0dG9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fZm9ybXMuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX21lZGlhLnNjc3MiLCJjc3Mvc2Nzcy9jb21wb25lbnRzL19uYXZpZ2F0aW9ucy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fcGFuZWxzLnNjc3MiLCJjc3Mvc2Nzcy9jb21wb25lbnRzL19zZWFyY2gtZm9ybS5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fc2VhcmNoLXJlc3VsdHMuc2NzcyIsImNzcy9zY3NzL2NvbXBvbmVudHMvX3RhYmxlcy5zY3NzIiwiY3NzL3Njc3MvY29tcG9uZW50cy9fc29jaWFsLWhlYWRlci5zY3NzIiwiY3NzL3Njc3MvcGFnZXMvX2Vycm9yLTQwNC5zY3NzIiwiY3NzL3Njc3MvcGFnZXMvX2hvbWUuc2NzcyIsImNzcy9zY3NzL3V0aWxpdGllcy9faGVscGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtYXJnLXBhcnNlci5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JlbmRlci1ncmFkaWVudHMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3NoYXBlLXNpemUtc3RyaXBwZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fZmxleC1ncmlkLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2dyaWQtd2lkdGguc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fZ29sZGVuLXJhdGlvLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19tb2R1bGFyLXNjYWxlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3B4LXRvLWVtLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3JhZGlhbC1ncmFkaWVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19zdHJpcC11bml0cy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL190aW50LXNoYWRlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYW5pbWF0aW9uLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZmFjZS12aXNpYmlsaXR5LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19ib3JkZXItaW1hZ2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JvcmRlci1yYWRpdXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JveC1zaXppbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NvbHVtbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZsZXgtYm94LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mb250LWZhY2Uuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2h5cGhlbnMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19pbWFnZS1yZW5kZXJpbmcuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fa2V5ZnJhbWVzLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19saW5lYXItZ3JhZGllbnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3RyYW5zZm9ybS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdXNlci1zZWxlY3Quc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BsYWNlaG9sZGVyLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2J1dHRvbi5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19jbGVhcmZpeC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19mb250LWZhbWlseS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19oaWRlLXRleHQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9faHRtbDUtaW5wdXQtdHlwZXMuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcG9zaXRpb24uc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcmV0aW5hLWltYWdlLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3NpemUuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdGltaW5nLWZ1bmN0aW9ucy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL190cmlhbmdsZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24tZGVwcmVjYXRlZC11cGNvbWluZy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQtaGVscGVycy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcHJpdmF0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcmVzZXQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX2dyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX29tZWdhLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19vdXRlci1jb250YWluZXIuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3NwYW4tY29sdW1ucy5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcm93LnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19zaGlmdC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcGFkLnNjc3MiLCJub2RlX21vZHVsZXMvbm9kZS1uZWF0L2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19maWxsLXBhcmVudC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fbWVkaWEuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX3RvLWRlcHJlY2F0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fdmlzdWFsLWdyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHJpdmF0ZS5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19uZXctYnJlYWtwb2ludC5zY3NzIiwibm9kZV9tb2R1bGVzL25vZGUtbmVhdC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIm5vZGVfbW9kdWxlcy9ub2RlLW5lYXQvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL192aXN1YWwtZ3JpZC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBbUZBQTtFVFNRLG9CU1BnQjtFVFloQixpQlNaZ0I7RVQyQmhCLFlTM0JnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QTdFRnhCLFNBQVMsT0FBTyxTQUFTLFlBQVksUUFBUSxRQUFRLFFBQVEsUUFBUSxNQUFNLEtBQUssU0FBUztFQVNVLFNBQVM7O0FBQzVHLE9BQU8sUUFBUTtFQUFRLFNBQVM7O0FBQ2hDLEtBQUssS0FBSztFQUFjLFNBQVM7RUFBTSxRQUFROztBQUMvQyxV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Q1YsVUFBVTtJQUNWLE1BQU07SUFDTixRQUFRO0lBQ1IsT0FBTztJQUNQLFFBQVE7O0FBS3BCO0VBQ0ksWUFBWTs7QUFHaEI7RUFDSSxPQUFPO0VBQVgsTUFBTSxTQUFTLE1BQU07SUFHYixTQUFTO0lBQ1QsU0FBUztFQUNqQixNQUFNO0lBRUUsT0FBTzs7QUFJZixHQUFHO0VBRUMsVUFBVTtFQUNWLEtBQUs7RUFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdsb2JhbCBTdHlsZXNoZWV0IChJbmNsdWRlcyBtZWRpYSBxdWVyaWVzKVxuLy8gU3R5bGVzIHRoYXQgdXNlcyBtZWRpYSBxdWVyaWVzIGZvciBtb2Rlcm4gYnJvd3NlciBzdXBwb3J0XG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgQ29uZmlndXJhdGlvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5AaW1wb3J0IFwidXRpbGl0aWVzL2ltcG9ydHNcIjsiLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIEltcG9ydHNcbi8vIENvbmZpZ3VyZWQgY29tcG9uZW50IGltcG9ydHMgZm9yIHRoZSBzaXRlL2FwcGxpY2F0aW9uXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgSW1wb3J0c1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXHQvLyAxLiBJbXBvcnQgQ29uZmlndXJhdGlvbnNcdFx0XHRcdFx0XHRcdCAgKFJlcXVpcmVkKVxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEBpbXBvcnQgXCJib3VyYm9uXCI7XG5cdEBpbXBvcnQgXCJuZWF0XCI7XG5cdFxuXG5cdC8vIDIuIEltcG9ydCBHcmlkLCBGdW5jdGlvbnMgJiBTZXR0aW5nc1x0XHRcdFx0ICAoUmVxdWlyZWQpXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcInV0aWxpdGllcy9mdW5jdGlvbnNcIjtcblx0QGltcG9ydCBcInV0aWxpdGllcy9zZXR0aW5nc1wiO1xuXG5cblx0Ly8gMy4gSW1wb3J0IEJhc2UgXHRcdFx0XHRcdFx0XHRcdFx0ICAoUmVxdWlyZWQpXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcImJhc2Uvbm9ybWFsaXplXCI7XG5cdEBpbXBvcnQgXCJiYXNlL3R5cG9ncmFwaHlcIjtcblxuXHRAaW1wb3J0IFwiYmFzZS9zdHlsZWd1aWRlXCI7XG5cblxuXHQvLyA0LiBJbXBvcnQgTGF5b3V0c1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdEBpbXBvcnQgXCJsYXlvdXRzL2dsb2JhbFwiO1xuXHRAaW1wb3J0IFwibGF5b3V0cy9oZWFkZXJcIjtcblx0QGltcG9ydCBcImxheW91dHMvY29udGVudFwiO1xuXHRAaW1wb3J0IFwibGF5b3V0cy9mb290ZXJcIjtcblxuXG5cdC8vIDUuIEltcG9ydCBDb21wb25lbnRzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0QGltcG9ydCBcImNvbXBvbmVudHMvYWxlcnRzXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL2FuaW1hdGlvbnNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvYnV0dG9uc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9mb3Jtc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9tZWRpYVwiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9uYXZpZ2F0aW9uc1wiO1xuXHRAaW1wb3J0IFwiY29tcG9uZW50cy9wYW5lbHNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvc2VhcmNoLWZvcm1cIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvc2VhcmNoLXJlc3VsdHNcIjtcblx0QGltcG9ydCBcImNvbXBvbmVudHMvdGFibGVzXCI7XG5cdEBpbXBvcnQgXCJjb21wb25lbnRzL3NvY2lhbC1oZWFkZXJcIjtcblx0XG5cdFxuXHQvLyA2LiBJbXBvcnQgUGFnZXNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwicGFnZXMvZXJyb3ItNDA0XCI7XG5cdEBpbXBvcnQgXCJwYWdlcy9ob21lXCI7XG5cdFxuXG5cdC8vIDcuIEltcG9ydCBWZW5kb3JzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8gQGltcG9ydCBcInZlbmRvcnMvcGFydGlhbC1uYW1lXCI7XG5cblxuXHQvLyA4LiBJbXBvcnQgQWRkaXRpb25hbCBVdGlsaXRpZXNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRAaW1wb3J0IFwidXRpbGl0aWVzL2hlbHBlcnNcIjsiLCIvLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcblxuLy8gQ3VzdG9tIEhlbHBlcnNcbkBpbXBvcnQgXCJoZWxwZXJzL2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtYXJnLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JlbmRlci1ncmFkaWVudHNcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3NoYXBlLXNpemUtc3RyaXBwZXJcIjtcblxuLy8gQ3VzdG9tIEZ1bmN0aW9uc1xuQGltcG9ydCBcImZ1bmN0aW9ucy9mbGV4LWdyaWRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JpZC13aWR0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9nb2xkZW4tcmF0aW9cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcmFkaWFsLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3N0cmlwLXVuaXRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL3RpbnQtc2hhZGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lXCI7XG5cbi8vIENTUzMgTWl4aW5zXG5AaW1wb3J0IFwiY3NzMy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImNzczMvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvZmxleC1ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ZvbnQtZmFjZVwiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuc1wiO1xuQGltcG9ydCBcImNzczMvaGlkcGktbWVkaWEtcXVlcnlcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlLXJlbmRlcmluZ1wiO1xuQGltcG9ydCBcImNzczMvaW5saW5lLWJsb2NrXCI7XG5AaW1wb3J0IFwiY3NzMy9rZXlmcmFtZXNcIjtcbkBpbXBvcnQgXCJjc3MzL2xpbmVhci1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvcGVyc3BlY3RpdmVcIjtcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNmb3JtXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2l0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLXNlbGVjdFwiO1xuQGltcG9ydCBcImNzczMvcGxhY2Vob2xkZXJcIjtcblxuLy8gQWRkb25zICYgb3RoZXIgbWl4aW5zXG5AaW1wb3J0IFwiYWRkb25zL2J1dHRvblwiO1xuQGltcG9ydCBcImFkZG9ucy9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImFkZG9ucy9mb250LWZhbWlseVwiO1xuQGltcG9ydCBcImFkZG9ucy9oaWRlLXRleHRcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaHRtbDUtaW5wdXQtdHlwZXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcG9zaXRpb25cIjtcbkBpbXBvcnQgXCJhZGRvbnMvcHJlZml4ZXJcIjtcbkBpbXBvcnQgXCJhZGRvbnMvcmV0aW5hLWltYWdlXCI7XG5AaW1wb3J0IFwiYWRkb25zL3NpemVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdGltaW5nLWZ1bmN0aW9uc1wiO1xuQGltcG9ydCBcImFkZG9ucy90cmlhbmdsZVwiO1xuXG4vLyBTb29uIHRvIGJlIGRlcHJlY2F0ZWQgTWl4aW5zXG5AaW1wb3J0IFwiYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nXCI7XG4iLCIvLyBCb3VyYm9uIE5lYXQgMS42LjAucHJlXG4vLyBNSVQgTGljZW5zZWRcbi8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIHRob3VnaHRib3QsIGluYy5cblxuLy8gSGVscGVyc1xuQGltcG9ydCBcIm5lYXQtaGVscGVyc1wiO1xuXG4vLyBHcmlkXG5AaW1wb3J0IFwiZ3JpZC9wcml2YXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC9yZXNldFwiO1xuQGltcG9ydCBcImdyaWQvZ3JpZFwiO1xuQGltcG9ydCBcImdyaWQvb21lZ2FcIjtcbkBpbXBvcnQgXCJncmlkL291dGVyLWNvbnRhaW5lclwiO1xuQGltcG9ydCBcImdyaWQvc3Bhbi1jb2x1bW5zXCI7XG5AaW1wb3J0IFwiZ3JpZC9yb3dcIjtcbkBpbXBvcnQgXCJncmlkL3NoaWZ0XCI7XG5AaW1wb3J0IFwiZ3JpZC9wYWRcIjtcbkBpbXBvcnQgXCJncmlkL2ZpbGwtcGFyZW50XCI7XG5AaW1wb3J0IFwiZ3JpZC9tZWRpYVwiO1xuQGltcG9ydCBcImdyaWQvdG8tZGVwcmVjYXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC92aXN1YWwtZ3JpZFwiO1xuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZ1bmN0aW9ucyBhbmQgTWl4aW5zXG4vLyBPcmdhbml6ZXMgU1RBTVAgYW5kIGN1c3RvbSBTYXNzIG1peGlucyBmb3IgdGhlIHByb2plY3QuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS9cblxuXG4vLyBDb252ZXJ0IFB4IHRvIFJlbVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0vXG5cblx0LypcbiAgICBWYXJpYWJsZTogZm9udHNpemUtcm9vdFxuICAgICdweCcgZm9udCBzaXplIG9uIHJvb3QgKGh0bWwpIGVsZW1lbnQgKHdpdGggdW5pdHMgcmVtb3ZlZCkuICBCcm93c2VyIGRlZmF1bHQgaXMgMTZweC4gIFVzZWQgdG8gZGV0ZXJtaW5lIHNpemVzIGZvciByZW0gZnVuY3Rpb24uXG5cbiAgICAtQCBiYXNlZCBvbiBodHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cbiAgICAqL1xuICAgICRmb250c2l6ZS1yb290OiAxNiAhZGVmYXVsdDtcblxuICAgIC8qXG4gICAgTWl4aW46IHJlbSAoaHR0cHM6Ly9naXRodWIuY29tL3RvYnltYWNrZW56aWUvaHRtbC1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci93ZWIvXy9zdHlsZXMvc3JjL21peGlucy9fdW5pdHMuc2NzcylcbiAgICBPdXRwdXQgYSBwcm9wZXJ0eSB3aXRoIHBpeGVsIHZhbHVlcyBmb3Igbm9uICdyZW0nIHN1cHBvcnRpbmcgYnJvd3NlcnMgZm9sbG93ZWQgYnkgdGhlICdyZW0nIGVxdWl2YWxlbnQgZm9yIHJlbSBzdXBwb3J0IGJyb3dzZXJzLiAgQ2FuJ3QgY3VycmVudGx5IGFjY2VwdCB2YWx1ZXMgd2l0aCBjb21tYSBzZXBhcmF0aW9uLCBsaWtlIG11bHRpcGxlIGJhY2tncm91bmRzIG9yIHRoZSBsaWtlLlxuXG4gICAgLUAgYmFzZWQgb24gaHR0cDovL2h1Z29naXJhdWRlbC5jb20vMjAxMy8wMy8xOC91bHRpbWF0ZS1yZW0tbWl4aW4vXG4gICAgKi9cblxuICAgIEBtaXhpbiByZW0oJHByb3BlcnR5LCAkdmFsdWVzKSB7XG4gICAgICAgICRweDogKCk7XG4gICAgICAgICRyZW06ICgpO1xuXG4gICAgICAgIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVze1xuICAgICAgICAgICAgLy8tLWdldCB1bml0IG9yICduYW4nIGlmIHRoZSB2YWx1ZSBpc24ndCBhIG51bWJlclxuICAgICAgICAgICAgLy8gJHVuaXQ6IGlmKHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJywgdW5pdCgkdmFsdWUpLCAnbmFuJyk7XG4gICAgICAgICAgICAkdW5pdDogJ25hbic7XG4gICAgICAgICAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09ICdudW1iZXIne1xuICAgICAgICAgICAgICAgIEBpZiB1bml0bGVzcygkdmFsdWUpe1xuICAgICAgICAgICAgICAgICAgICAkdW5pdDogJ3VuaXRsZXNzJztcbiAgICAgICAgICAgICAgICB9QGVsc2V7XG4gICAgICAgICAgICAgICAgICAgICR1bml0OiB1bml0KCR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLy0tdW5pdGxlc3MgbnVtYmVycyBhcmUgYWRkZWQgYXMgaWYgdGhleSBhcmUgaW4gcGl4XG4gICAgICAgICAgICBAaWYgJHVuaXQgPT0gJ3VuaXRsZXNzJyBhbmQgJHZhbHVlICE9IDB7XG4gICAgICAgICAgICAgICAgJHB4IDogYXBwZW5kKCRweCwgJHZhbHVlICsgcHgpO1xuICAgICAgICAgICAgICAgICRyZW06IGFwcGVuZCgkcmVtLCAoJHZhbHVlIC8gJGZvbnRzaXplLXJvb3QgKyByZW0pKTtcbiAgICAgICAgICAgIC8vLS1weCBvciByZW0gZ2V0IGFkZGVkIHRvIHRoZWlyIGxpc3QgYW5kIHRoZW4gY29udmVydGVkIHRvIHRoZSBvdGhlciB1bml0XG4gICAgICAgICAgICB9QGVsc2UgaWYgJHVuaXQgPT0gJ3B4JyBvciAkdW5pdCA9PSAncmVtJ3tcbiAgICAgICAgICAgICAgICAkdW5pdGxlc3NWYWw6IHN0cmlwVW5pdCgkdmFsdWUpO1xuICAgICAgICAgICAgICAgIEBpZiAkdW5pdCA9PSAncHgne1xuICAgICAgICAgICAgICAgICAgICAkcHggOiBhcHBlbmQoJHB4LCAkdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAkcmVtOiBhcHBlbmQoJHJlbSwgKCR1bml0bGVzc1ZhbCAvICRmb250c2l6ZS1yb290ICsgcmVtKSk7XG4gICAgICAgICAgICAgICAgfUBlbHNlIGlmICR1bml0ID09ICdyZW0ne1xuICAgICAgICAgICAgICAgICAgICAkcHggOiBhcHBlbmQoJHB4LCgkdW5pdGxlc3NWYWwgKiAkZm9udHNpemUtcm9vdCArIHB4KSk7XG4gICAgICAgICAgICAgICAgICAgICRyZW06IGFwcGVuZCgkcmVtLCAkdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vLS1hbGwgb3RoZXIgdW5pdHMgZ2V0IGFwcGVuZGVkIGRpcmVjdGx5XG4gICAgICAgICAgICB9QGVsc2V7XG4gICAgICAgICAgICAgICAgJHB4IDogYXBwZW5kKCRweCAsICR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgJHJlbTogYXBwZW5kKCRyZW0sICR2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgJHB4ID09ICRyZW0ge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkcHg7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAkcHg7XG4gICAgICAgICAgICAjeyRwcm9wZXJ0eX06ICRyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgIE1peGluOiBzdHJpcFVuaXRcbiAgICBTdHJpcCB0aGUgdW5pdCBmcm9tIGEgdmFsdWUgdGhhdCBoYXMgYSB1bml0XG5cbiAgICAtQCBiYXNlZCBvbiBodHRwOi8vY3NzLXRyaWNrcy5jb20vc25pcHBldHMvY3NzL2xlc3MtbWl4aW4tZm9yLXJlbS1mb250LXNpemluZy9cbiAgICAqL1xuICAgIEBmdW5jdGlvbiBzdHJpcFVuaXQoJG51bSkge1xuICAgICAgICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbiAgICB9XG5cblx0Ly8gRm9udC1mYWNlIE1peGluXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRAbWl4aW4gZGVjbGFyZS1mb250LWZhY2UoJGZvbnQtZmFtaWx5LCAkZm9udC1maWxlbmFtZSwgJGZvbnQtd2VpZ2h0IDogbm9ybWFsLCAkZm9udC1zdHlsZSA6bm9ybWFsLCAkZm9udC1zdHJldGNoIDogbm9ybWFsKSB7XG5cdFx0QGZvbnQtZmFjZSB7XG5cdFx0XHRmb250LWZhbWlseTogJyN7JGZvbnQtZmFtaWx5fSc7XG5cdFx0XHRcdHNyYzogdXJsKCcuLi9mb250cy8jeyRmb250LWZpbGVuYW1lfS5lb3QnKTtcblx0XHRcdFx0c3JjOiB1cmwoJy4uL2ZvbnRzLyN7JGZvbnQtZmlsZW5hbWV9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0XHRcdHVybCgnLi4vZm9udHMvI3skZm9udC1maWxlbmFtZX0ud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdFx0XHR1cmwoJy4uL2ZvbnRzLyN7JGZvbnQtZmlsZW5hbWV9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHRcdFx0dXJsKCcuLi9mb250cy8jeyRmb250LWZpbGVuYW1lfS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG5cdFx0XHRmb250LXN0eWxlOiAkZm9udC1zdHlsZTtcblx0XHRcdGZvbnQtc3RyZXRjaDogJGZvbnQtc3RyZXRjaDtcblx0XHR9XG5cdH1cblxuXG5cbi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIGRpc3BsYXk6IC1tb3otYm94O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDsgLy8gSUUgMTBcbiAgZGlzcGxheTogYm94O1xufVxuXG5AbWl4aW4gYm94LW9yaWVudCgkb3JpZW50OiBpbmxpbmUtYXhpcykge1xuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxqdXN0aWZ5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkcGFjaywgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcGFjazogJHBhY2s7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LWFsaWduOiAkYWxpZ247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW9yZGVyOiAkaW50OyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwLjApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXg6ICR2YWx1ZTsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuLy8gVW5pZmllZCBhdHRyaWJ1dGVzIGZvciAyMDA5LCAyMDExLCBhbmQgMjAxMiBmbGF2b3Vycy5cblxuLy8gMjAwOSAtIGRpc3BsYXkgKGJveCB8IGlubGluZS1ib3gpXG4vLyAyMDExIC0gZGlzcGxheSAoZmxleGJveCB8IGlubGluZS1mbGV4Ym94KVxuLy8gMjAxMiAtIGRpc3BsYXkgKGZsZXggfCBpbmxpbmUtZmxleClcbkBtaXhpbiBkaXNwbGF5KCR2YWx1ZSkge1xuLy8gIGZsZXggfCBpbmxpbmUtZmxleFxuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4XCIge1xuICAgICAgICAvLyAyMDA5XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICBkaXNwbGF5OiAtbW96LWJveDtcbiAgICAgICAgZGlzcGxheTogYm94O1xuXG4gICAgICAgIC8vIDIwMTJcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICAgICAgICBkaXNwbGF5OiAtbW96LWZsZXg7XG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1ib3g7XG4gICAgICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLWJveDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4O1xuICAgICAgICBkaXNwbGF5OiAtbW96LWlubGluZS1mbGV4O1xuICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICAgZGlzcGxheTogJHZhbHVlO1xuICAgIH1cbn1cblxuLy8gMjAwOSAtIGJveC1mbGV4IChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXggKGRlY2ltYWwgfCB3aWR0aCBkZWNpbWFsKVxuLy8gMjAxMiAtIGZsZXggKGludGVnZXIgaW50ZWdlciB3aWR0aClcbkBtaXhpbiBmbGV4KCR2YWx1ZSkge1xuXG4gICAgLy8gR3JhYiBmbGV4LWdyb3cgZm9yIG9sZGVyIGJyb3dzZXJzLlxuICAgICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gICAgLy8gMjAwOVxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gYm94LW9yaWVudCAoIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcylcbi8vICAgICAgLSBib3gtZGlyZWN0aW9uIChub3JtYWwgfCByZXZlcnNlKSAgICAgIFxuLy8gMjAxMSAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxuLy8gMjAxMiAtIGZsZXgtZGlyZWN0aW9uIChyb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlKVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCR2YWx1ZTogcm93KSB7XG5cbiAgICAvLyBBbHQgdmFsdWVzLlxuICAgICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgICAkZGlyZWN0aW9uOiBcIm5vcm1hbFwiO1xuXG4gICAgQGlmICR2YWx1ZSA9PSByb3cge1xuICAgICAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xuICAgICAgICAkdmFsdWUtMjAwOTogaG9yaXpvbnRhbDtcbiAgICAgICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBjb2x1bW4ge1xuICAgICAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJjb2x1bW4tcmV2ZXJzZVwiIHtcbiAgICAgICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICAgIH1cblxuICAgIC8vIDIwMDlcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBcInJldmVyc2VcIiB7XG4gICAgICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sIHdlYmtpdCBtb3ogc3BlYyk7XG4gICAgfVxuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDExIChJRSAxMClcbiAgICAtbXMtZmxleC1kaXJlY3Rpb246ICR2YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1saW5lcyAoc2luZ2xlIHwgbXVsdGlwbGUpXG4vLyAyMDExIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuLy8gMjAxMiAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LXdyYXAoJHZhbHVlOiBub3dyYXApIHtcblxuICAgIC8vIEFsdCB2YWx1ZXMuXG4gICAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICAgIEBpZiAkdmFsdWUgPT0gbm93cmFwIHtcbiAgICAgICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IHdyYXAge1xuICAgICAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcIndyYXAtcmV2ZXJzZVwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZmxvdywgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gYm94LW9yZGluYWwtZ3JvdXAgKGludGVnZXIpXG4vLyAyMDExIC0gZmxleC1vcmRlciAoaW50ZWdlcilcbi8vIDIwMTIgLSBvcmRlciAoaW50ZWdlcilcbkBtaXhpbiBvcmRlcigkaW50OiAwKSB7XG4gICAgLy8gMjAwOVxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMSAoSUUgMTApXG4gICAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWdyb3cgKG51bWJlcilcbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcjogMCkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgICAtbXMtZmxleC1wb3NpdGl2ZTogJG51bWJlcjtcbn1cblxuLy8gMjAxMiAtIGZsZXgtc2hyaW5rIChudW1iZXIpXG5AbWl4aW4gZmxleC1zaHJpbmsoJG51bWJlcjogMSkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtc2hyaW5rLCAkbnVtYmVyLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1iYXNpcywgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAkd2lkdGg7XG59XG5cbi8vIDIwMDkgLSBib3gtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMSAtIGZsZXgtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMiAtIGp1c3RpZnktY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZClcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQgKCR2YWx1ZTogZmxleC1zdGFydCkge1xuXG4gICAgLy8gQWx0IHZhbHVlcy5cbiAgICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gICAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICAgIH1cblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgICAvLyAyMDEyXG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LXBhY2s6ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMSAtIGZsZXgtYWxpZ24gKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWl0ZW1zIChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG5AbWl4aW4gYWxpZ24taXRlbXMoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgICAkYWx0LXZhbHVlOiAkdmFsdWU7XG5cbiAgICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAgICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gICAgfSAgICBcblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgICB9XG5cbiAgICAvLyAyMDA5XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbiAgICBcbiAgICAvLyAyMDExIChJRSAxMClcbiAgICAtbXMtZmxleC1hbGlnbjogJGFsdC12YWx1ZTsgICAgXG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG5cbiAgICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gICAgfSAgICBcblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gICAgfVxuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLXNlbGYsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAgIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gICAgfSAgICBcblxuICAgIEBlbHNlaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gICAgfVxuXG4gICAgQGVsc2VpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgICB9XG5cbiAgICBAZWxzZWlmICR2YWx1ZSA9PSBcInNwYWNlLWFyb3VuZFwiIHtcbiAgICAgICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gICAgfVxuXG4gICAgLy8gMjAxMlxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAgIC8vIDIwMTEgKElFIDEwKVxuICAgIC1tcy1mbGV4LWxpbmUtcGFjazogJHZhbHVlLTIwMTE7XG59XG5cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gT21lZ2EgUmVzZXQgZm9yIEJvdXJib24gTmVhdFxuLy9cbi8vIGh0dHA6Ly9qb3NoZnJ5Lm1lL25vdGVzL29tZWdhLXJlc2V0LWZvci1ib3VyYm9uLW5lYXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIG9tZWdhLXJlc2V0KCRudGgpIHtcbiAgJjpudGgtY2hpbGQoI3skbnRofSkgeyBtYXJnaW4tcmlnaHQ6IGZsZXgtZ3V0dGVyKCRncmlkLWNvbHVtbnMsICRndXR0ZXIpOyB9XG4gICY6bnRoLWNoaWxkKCN7JG50aH0rMSkgeyBjbGVhcjogbm9uZSB9XG59XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2xvYmFsIFNldHRpbmdzXG4vLyBDZW50cmFsIGxvY2F0aW9uIGZvciBwcm9qZWN0LWxldmVsIHZhcmlhYmxlcy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gTGF5b3V0IFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8gTWVkaWEgUXVlcmllc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0JHBob25lOiAzMjBweDtcdFx0XHRcdFx0XHQvLyBtaW4td2lkdGggMzIwcHhcblx0JHRhYmxldDogNjQwcHg7XHRcdFx0XHRcdFx0Ly8gbWluLXdpZHRoIDY0MHB4XG5cdCRkZXNrdG9wOiA5NjBweDtcdFx0XHRcdFx0XHQvLyBtaW4td2lkdGggOTYwcHhcblx0JGRlc2t0b3BNZWQ6IDEwNjhweDtcblx0Ly8kY29udGFpbmVyX21pbl93aWR0aDogJHBob25lO1xuXHQvLyRjb250YWluZXJfbWF4X3dpZHRoOiA5NjBweDtcblxuXG5cdC8vIEdyaWRzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRjb2x1bW5zOiAxMjtcblx0Ly8kY29sdW1uX3dpZHRoOiA2MHB4O1xuXHQvLyRndXR0ZXJfd2lkdGg6IDIwcHg7XG5cblxuXHQvLyBCb3JkZXIgUmFkaXVzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRib3JkZXJfcmFkaXVzOiAzcHg7XHRcdFx0XHRcdC8vIHNldCB0byAwIGZvciBub25lXG5cblxuXG4vLyBDb2xvciBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vIEJyYW5kIFNwZWNpZmljXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQkY29sb3JfcHJpbWFyeTogI2NjMDAwMDtcblx0JGNvbG9yX3NlY29uZGFyeTogIzAwMDAwMDtcblx0JGNvbG9yX3RlcnRpYXJ5OiAjZmZmZmZmO1xuXG5cdCRjb2xvcl80OiAjZjJmMmYyO1xuXHQkY29sb3JfNTogI2NjY2NjYztcblx0JGNvbG9yXzY6ICM2NjY2NjY7XG5cdCRjb2xvcl83OiAjMzMzMzMzO1xuXG5cdCRjb2xvcl84OiAjOTkwMDAwO1xuXHQkY29sb3JfOTogI2QxNDkwNTtcblx0JGNvbG9yXzEwOiAjZmRkNzI2O1xuXHQkY29sb3JfMTE6ICM3ZDhjMWY7XG5cdCRjb2xvcl8xMjogIzQyN2U5Mztcblx0JGNvbG9yXzEzOiAjNDE1NmExO1xuXG5cblxuXHQvLyBJbmZvcm1hdGlvbiBhbmQgVmFsaWRhdGlvblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kYnJhbmRfaW5mbzogIzQyOGJjYTtcblx0Ly8kYnJhbmRfZXJyb3I6ICNkOTUzNGY7XG5cdC8vJGJyYW5kX3N1Y2Nlc3M6ICM1Y2I4NWM7XG5cblxuXHQvLyBUZXh0IGFuZCBMaW5rc1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kdGV4dF9jb2xvcjogIzMzMztcblx0Ly8kbGlua19jb2xvcjogJGJyYW5kX2luZm87XG5cdC8vJGxpbmtfY29sb3JfaG92ZXI6IGRhcmtlbigkbGlua19jb2xvciwgMTUlKTtcblxuXG5cbi8vIFR5cG9ncmFwaHkgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyBCYXNlIFNpemUgKG11c3QgdXNlIHB4IHZhbHVlKVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kYmFzZV9mb250X3NpemU6IDE2cHg7XG5cdC8vJGJhc2VfbGluZV9oZWlnaHQ6IDEuNTtcblxuXG5cdC8vIEhlYWRpbmdzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRoZWFkZXJfZm9udF9mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcblx0Ly8kaGVhZGVyX2ZvbnRfd2VpZ2h0OiBib2xkO1xuXHQvLyRoZWFkZXJfZm9udF9zdHlsZTogbm9ybWFsO1xuXHQvLyRoZWFkZXJfbGluZV9oZWlnaHQ6IDEuMztcblx0Ly8kaGVhZGVyX3RvcF9tYXJnaW46IDVweDtcblx0Ly8kaGVhZGVyX2JvdHRvbV9tYXJnaW46IDIwcHg7XG5cdC8vJGhlYWRlcl90ZXh0X3JlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuXG5cdC8vJGgxX2ZvbnRfc2l6ZTogNDRweDtcblx0Ly8kaDJfZm9udF9zaXplOiAzN3B4O1xuXHQvLyRoM19mb250X3NpemU6IDI3cHg7XG5cdC8vJGg0X2ZvbnRfc2l6ZTogMjNweDtcblx0Ly8kaDVfZm9udF9zaXplOiAxOHB4O1xuXHQvLyRoNl9mb250X3NpemU6IDE2cHg7XG5cblxuXHQvLyBQYXJhZ3JhcGhzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRwYXJhZ3JhcGhfZm9udF9mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcblx0Ly8kcGFyYWdyYXBoX2ZvbnRfd2VpZ2h0OiBub3JtYWw7XG5cdC8vJHBhcmFncmFwaF9mb250X3NpemU6ICRiYXNlX2ZvbnRfc2l6ZTtcblx0Ly8kcGFyYWdyYXBoX2xpbmVfaGVpZ2h0OiAxLjU7XG5cdC8vJHBhcmFncmFwaF9tYXJnaW5fYm90dG9tOiAyMHB4O1xuXHQvLyRwYXJhZ3JhcGhfdGV4dF9yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcblxuXG5cdC8vIExpbmtzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRsaW5rX3RleHRfZGVjb3JhdGlvbjogbm9uZTtcblxuXG5cdC8vIEJsb2NrcXVvdGVzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyRibG9ja3F1b3RlX3BhZGRpbmc6IDEwcHggMjBweDtcblx0Ly8kYmxvY2txdW90ZV9tYXJnaW46IDAgMCAyMHB4O1xuXG5cblxuLy8gQWxlcnRzIFNldHRpbmdzXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblx0Ly8kYWxlcnRib3hfZm9udF9jb2xvcjogI2ZmZjtcblx0Ly8kYWxlcnRib3hfbWFyZ2luOiAxNnB4O1xuXG5cblxuLy8gTWVkaWEgU2V0dGluZ3Ncbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXHQvLyRmaWd1cmVfYmFja2dyb3VuZDogIzAwMDtcblx0Ly8kZmlndXJlX21hcmdpbjogMCAwIDE2cHg7XG5cdC8vJGZpZ3VyZV9vcGFjaXR5OiAuOTtcblx0Ly8kZmlndXJlX29wYWNpdHlfaG92ZXI6IDE7XG5cblxuXG4vLyBGb3JtcyBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vJGZvcm1fbWFyZ2luOiAwIDAgMTZweDtcblxuXHQvLyRpbnB1dF9mb2N1c19ib3JkZXJfY29sb3I6ICRicmFuZF90ZXJ0aWFyeTtcblx0Ly8kaW5wdXRfZm9jdXNfYm9yZGVyX3dpZHRoOiAycHg7XG5cdC8vJGlucHV0X2ZvY3VzX2JhY2tncm91bmQ6IGxpZ2h0ZW4oJGJyYW5kX3RlcnRpYXJ5LCAzNSUpO1xuXG5cblxuLy8gQnV0dG9ucyBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vJGJ1dHRvbl9wYWRkaW5nOiAxMHB4IDIwcHg7XG5cdC8vJGJ1dHRvbl9iYWNrZ3JvdW5kOiAkYnJhbmRfcHJpbWFyeTtcblx0Ly8kYnV0dG9uX3RleHRfY29sb3I6ICNmZmY7XG5cblxuXG4vLyBUYWJsZSBTZXR0aW5nc1xuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cdC8vJHRhYmxlX2NlbGxfcGFkZGluZzogOHB4O1xuXHQvLyR0YWJsZV9jZWxsX2JvcmRlcl93aWR0aDogMXB4O1xuXHQvLyR0YWJsZV9jZWxsX2JvcmRlcl9zdHlsZTogc29saWQ7XG5cdC8vJHRhYmxlX2NlbGxfYm9yZGVyX2NvbG9yOiAjZmZmO1xuXG5cblx0Ly8gSGVhZGVyXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQvLyR0YWJsZV9oZWFkZXJfYmFja2dyb3VuZDogJGJyYW5kX3ByaW1hcnk7XG5cdC8vJHRhYmxlX2hlYWRlcl9jb2xvcjogI2ZmZjtcblxuXG5cdC8vIFplYnJhIFN0cmlwZXNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdC8vJHRhYmxlX2FsdF9yb3dfYmFja2dyb3VuZDogbGlnaHRlbigkYnJhbmRfcHJpbWFyeSwgNzAlKTtcblxuXG5cdC8vIEZvb3RlclxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0Ly8kdGFibGVfZm9vdGVyX2JhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHQvLyR0YWJsZV9mb290ZXJfYm9yZGVyX3dpZHRoOiAycHg7XG5cdC8vJHRhYmxlX2Zvb3Rlcl9ib3JkZXJfc3R5bGU6IHNvbGlkO1xuXHQvLyR0YWJsZV9mb290ZXJfYm9yZGVyX2NvbG9yOiAkYnJhbmRfdGVydGlhcnk7IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5vcm1hbGl6ZSBQYXJ0aWFsXG4vLyBNYWtlcyBicm93c2VycyByZW5kZXIgYWxsIGVsZW1lbnRzIG1vcmUgY29uc2lzdGVudGx5LlxuLy8gbm9ybWFsaXplLmNzcyB2Mi4xLjMgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemVcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG5hdiwgc2VjdGlvbiwgc3VtbWFyeSB7IGRpc3BsYXk6IGJsb2NrOyB9XG5hdWRpbywgY2FudmFzLCB2aWRlbyB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuYXVkaW86bm90KFtjb250cm9sc10pIHsgZGlzcGxheTogbm9uZTsgaGVpZ2h0OiAwOyB9XG5baGlkZGVuXSwgdGVtcGxhdGUgeyBkaXNwbGF5OiBub25lOyB9XG5cblxuLy8gQmFzZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmh0bWwgeyBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgfVxuYm9keSB7IG1hcmdpbjogMDsgfVxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG5cbi8vIExpbmtzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuYSB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG5hOmZvY3VzIHsgb3V0bGluZTogdGhpbiBkb3R0ZWQ7IH1cbmE6YWN0aXZlLCBhOmhvdmVyIHsgb3V0bGluZTogMDsgfVxuXG5cbi8vIFR5cG9ncmFwaHlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5oMSB7IGZvbnQtc2l6ZTogMmVtOyBtYXJnaW46IDAuNjdlbSAwOyB9XG5hYmJyW3RpdGxlXSB7IGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7IH1cbmIsIHN0cm9uZyB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5kZm4geyBmb250LXN0eWxlOiBpdGFsaWM7IH1cbmhyIHsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsgYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMDsgfVxubWFyayB7IGJhY2tncm91bmQ6ICNmZjA7IGNvbG9yOiAjMDAwOyB9XG5jb2RlLCBrYmQsIHByZSwgc2FtcCB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIHNlcmlmOyBmb250LXNpemU6IDFlbTsgfVxucHJlIHsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB9XG5xIHsgcXVvdGVzOiBcIlxcMjAxQ1wiIFwiXFwyMDFEXCIgXCJcXDIwMThcIiBcIlxcMjAxOVwiOyB9XG5zbWFsbCB7IGZvbnQtc2l6ZTogODAlOyB9XG5zdWIsIHN1cCB7IGZvbnQtc2l6ZTogNzUlOyBsaW5lLWhlaWdodDogMDsgcG9zaXRpb246IHJlbGF0aXZlOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cbnN1cCB7IHRvcDogLTAuNWVtOyB9XG5zdWIgeyBib3R0b206IC0wLjI1ZW07IH1cblxuXG4vLyBFbWJlZGRlZCBjb250ZW50XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuaW1nLCBpZnJhbWUsIHZpZGVvIHsgbWF4LXdpZHRoOiAxMDAlOyB9XG5pbWcgeyBoZWlnaHQ6IGF1dG87IGJvcmRlcjogMDsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuc3ZnOm5vdCg6cm9vdCkgeyBvdmVyZmxvdzogaGlkZGVuOyB9XG5cblxuLy8gRmlndXJlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmZpZ3VyZSB7IG1hcmdpbjogMDsgfVxuXG5cbi8vIEZvcm1zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZmllbGRzZXQgeyBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwOyBtYXJnaW46IDAgMnB4OyBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07IH1cbmxlZ2VuZCB7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgfVxuYnV0dG9uLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSB7IGZvbnQtZmFtaWx5OiBpbmhlcml0OyBmb250LXNpemU6IDEwMCU7IG1hcmdpbjogMDsgfVxuYnV0dG9uLCBpbnB1dCB7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cbmJ1dHRvbiwgc2VsZWN0IHsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgaW5wdXRbdHlwZT1cInJlc2V0XCJdLCBpbnB1dFt0eXBlPVwic3VibWl0XCJdIHsgYm9yZGVyOiAwOyAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgY3Vyc29yOiBwb2ludGVyOyB9XG5idXR0b25bZGlzYWJsZWRdLCBodG1sIGlucHV0W2Rpc2FibGVkXSB7IGN1cnNvcjogZGVmYXVsdDsgfVxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLCBpbnB1dFt0eXBlPVwicmFkaW9cIl0geyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiAwOyB9XG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHsgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IH1cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24geyAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwgaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIgeyBib3JkZXI6IDA7IHBhZGRpbmc6IDA7IH1cbnRleHRhcmVhIHsgb3ZlcmZsb3c6IGF1dG87IHZlcnRpY2FsLWFsaWduOiB0b3A7IH1cbnRleHRhcmVhLCBpbnB1dCB7IG91dGxpbmU6IG5vbmU7IH1cblxuXG4vLyBUYWJsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG50YWJsZSB7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IGJvcmRlci1zcGFjaW5nOiAwOyB9IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFR5cG9ncmFwaHkgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBvdmVyYWxsIHR5cG9ncmFwaHkgYW5kIG1pc2MuIGNvbnRlbnQgY29tcG9uZW50cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ3VzdG9tIEZvbnRzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQGluY2x1ZGUgZGVjbGFyZS1mb250LWZhY2UoJ0ZvbnQgTmFtZScsICdmb250LWxvY2F0aW9uLXJlbGF0aXZlLXRvLWZvbnRzLWZvbGRlcicpO1xuLy8gQGltcG9ydCB1cmwoLy9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU9wZW4rU2FuczozMDBpdGFsaWMsNjAwaXRhbGljLDMwMCw0MDAsNjAwKTtcblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OidPcGVuIFNhbnMnO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnNfZ2RpLmVvdCcpO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnNfZ2RpLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fuc19nZGkud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnNfZ2RpLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zX2dkaS5zdmcjT3BlblNhbnMtUmVndWxhcicpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0Zm9udC1zdHJldGNoOiBub3JtYWw7XG5cdHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0yNUNBO1xufVxuXG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6J09wZW4gU2Fucyc7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1JdGFsaWNfZ2RpLmVvdCcpO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtSXRhbGljX2dkaS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtSXRhbGljX2dkaS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1JdGFsaWNfZ2RpLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUl0YWxpY19nZGkuc3ZnI09wZW5TYW5zLUl0YWxpYycpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0Zm9udC1zdHJldGNoOiBub3JtYWw7XG5cdHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0yNUNBO1xufVxuXG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6J09wZW4gU2Fucyc7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1MaWdodF9nZGkuZW90Jyk7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1MaWdodF9nZGkuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLUxpZ2h0X2dkaS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1MaWdodF9nZGkudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtTGlnaHRfZ2RpLnN2ZyNPcGVuU2Fucy1MaWdodCcpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0Zm9udC1zdHJldGNoOiBub3JtYWw7XG5cdHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0yNUNBO1xufVxuXG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6J09wZW4gU2Fucyc7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fuc0xpZ2h0LUl0YWxpY19nZGkuZW90Jyk7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fuc0xpZ2h0LUl0YWxpY19nZGkuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zTGlnaHQtSXRhbGljX2dkaS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fuc0xpZ2h0LUl0YWxpY19nZGkudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnNMaWdodC1JdGFsaWNfZ2RpLnN2ZyNPcGVuU2Fuc0xpZ2h0LUl0YWxpYycpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0Zm9udC1zdHJldGNoOiBub3JtYWw7XG5cdHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0yNUNBO1xufVxuXG5AZm9udC1mYWNlIHtcblx0Zm9udC1mYW1pbHk6J09wZW4gU2Fucyc7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZF9nZGkuZW90Jyk7XG5cdHNyYzogdXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZF9nZGkuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkX2dkaS53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZF9nZGkudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRfZ2RpLnN2ZyNPcGVuU2Fucy1TZW1pYm9sZCcpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0Zm9udC1zdHJldGNoOiBub3JtYWw7XG5cdHVuaWNvZGUtcmFuZ2U6IFUrMDAyMC0yNUNBO1xufVxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OidPcGVuIFNhbnMnO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRJdGFsaWNfZ2RpLmVvdCcpO1xuXHRzcmM6IHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRJdGFsaWNfZ2RpLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCd3ZWJmb250cy9PcGVuU2Fucy1TZW1pYm9sZEl0YWxpY19nZGkud29mZicpIGZvcm1hdCgnd29mZicpLFxuXHRcdHVybCgnd2ViZm9udHMvT3BlblNhbnMtU2VtaWJvbGRJdGFsaWNfZ2RpLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcblx0XHR1cmwoJ3dlYmZvbnRzL09wZW5TYW5zLVNlbWlib2xkSXRhbGljX2dkaS5zdmcjT3BlblNhbnMtU2VtaWJvbGRJdGFsaWMnKSBmb3JtYXQoJ3N2ZycpO1xuXHRmb250LXdlaWdodDogNjAwO1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuXHR1bmljb2RlLXJhbmdlOiBVKzAwMjAtMjVDQTtcbn1cblxuXG4vLyBHbG9iYWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5odG1sLCBib2R5IHtcblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmO1xuXHRjb2xvcjogJGNvbG9yXzc7XG5cdGZvbnQtd2VpZ2h0OjQwMDtcblxuXHQvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi9cblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG5cblx0QGluY2x1ZGUgYmFja2ZhY2UtdmlzaWJpbGl0eShoaWRkZW4pO1xufVxuaHIge31cblxuXG4vLyBIZWFkaW5nc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuXHRmb250LXdlaWdodDo0MDA7XG5cbn1cbmgxLCAuaDEge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGZvbnQtc2l6ZTogMzZweDtcbn1cbmgyIHtcblx0Zm9udC1zaXplOiAyMnB4O1xufVxuXG4vLyBQYXJhZ3JhcGhzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxucCB7fVxuc3Ryb25nIHt9XG5cblxuLy8gTGlua3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5hIHsgXG5cdHRleHQtZGVjb3JhdGlvbjpub25lOyBcblx0Y29sb3I6ICRjb2xvcl9wcmltYXJ5O1xuXHQmOmhvdmVyIHtcblx0XHR0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO1xuXHR9XG59XG5cblxuLy8gTGlzdHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG51bCwgb2wsIGRsIHt9XG5cblxuXHQvLyBVbm9yZGVyZWRcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHR1bCB7fVxuXHR1bCBsaSB7fVxuXG5cblx0Ly8gT3JkZXJlZFxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdG9sIHt9XG5cdG9sIGxpIHt9XG5cblxuXHQvLyBEZWZpbml0aW9uXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0ZGwge31cblx0ZHQgeyBmb250LXdlaWdodDo0MDA7IH1cblx0ZGQge31cblxuXG4vLyBCbG9ja3F1b3Rlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmJsb2NrcXVvdGUge1xuXHRib3JkZXItbGVmdDogNXB4IHNvbGlkICRjb2xvcl82O1xuXHRwYWRkaW5nOiAyMHB4O1xuXHRiYWNrZ3JvdW5kOiAkY29sb3JfdGVydGlhcnk7XG5cdHA6Zmlyc3QtY2hpbGQge1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cbn1cblxuLy8gSWNvbnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuQGZvbnQtZmFjZSB7XG5cdGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG5cdHNyYzp1cmwoJ2ZvbnRzL2ljb21vb24uZW90P24wd2JuOCcpO1xuXHRzcmM6dXJsKCdmb250cy9pY29tb29uLmVvdD8jaWVmaXhuMHdibjgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG5cdFx0dXJsKCdmb250cy9pY29tb29uLndvZmY/bjB3Ym44JykgZm9ybWF0KCd3b2ZmJyksXG5cdFx0dXJsKCdmb250cy9pY29tb29uLnR0Zj9uMHdibjgnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG5cdFx0dXJsKCdmb250cy9pY29tb29uLnN2Zz9uMHdibjgjaWNvbW9vbicpIGZvcm1hdCgnc3ZnJyk7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuW2NsYXNzXj1cImljb24tXCJdLCBbY2xhc3MqPVwiIGljb24tXCJdIHtcblx0Zm9udC1mYW1pbHk6ICdpY29tb29uJztcblx0c3BlYWs6IG5vbmU7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0Zm9udC12YXJpYW50OiBub3JtYWw7XG5cdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRsaW5lLWhlaWdodDogMTtcblxuXHQvKiBCZXR0ZXIgRm9udCBSZW5kZXJpbmcgPT09PT09PT09PT0gKi9cblx0LXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbi5pY29uLWxlZ2FsOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU5MDBcIjtcbn1cbi5pY29uLXNlcnZpY2VzOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU5MDFcIjtcbn1cbi5pY29uLWNvbnRlbnQtY29weTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjFhXCI7XG59XG4uaWNvbi1wZW5jaWw6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxN1wiO1xufVxuLmljb24tc3RhY2s6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxYlwiO1xufVxuLmljb24tdXNlcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjA1XCI7XG59XG4uaWNvbi1zcGlubmVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDZcIjtcbn1cbi5pY29uLXNlYXJjaDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjE2XCI7XG59XG4uaWNvbi1jb2c6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwN1wiO1xufVxuLmljb24tbGVhZjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjA4XCI7XG59XG4uaWNvbi1zd2l0Y2g6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwOVwiO1xufVxuLmljb24tbWVudTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjBhXCI7XG59XG4uaWNvbi1nbG9iZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjBiXCI7XG59XG4uaWNvbi1lYXJ0aDpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjBjXCI7XG59XG4uaWNvbi1pbmZvOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MGRcIjtcbn1cbi5pY29uLWNhbmNlbC1jaXJjbGU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwZVwiO1xufVxuLmljb24tY2hlY2ttYXJrLWNpcmNsZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjBmXCI7XG59XG4uaWNvbi1zcGFtOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MTBcIjtcbn1cbi5pY29uLWNsb3NlOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MTFcIjtcbn1cbi5pY29uLWNoZWNrbWFyazpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjEyXCI7XG59XG4uaWNvbi1taW51czpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjEzXCI7XG59XG4uaWNvbi1wbHVzOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MTRcIjtcbn1cbi5pY29uLXNoYXJlOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MTVcIjtcbn1cbi5pY29uLWZhY2Vib29rOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDFcIjtcbn1cbi5pY29uLWluc3RhZ3JhbTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlNjAyXCI7XG59XG4uaWNvbi10d2l0dGVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDNcIjtcbn1cbi5pY29uLXlvdXR1YmU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYwNFwiO1xufVxuLmljb24tZmlsZS1wZGY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxY1wiO1xufVxuLmljb24tZmlsZS13b3JkOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MWRcIjtcbn1cbi5pY29uLWZpbGUtZXhjZWw6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxZVwiO1xufVxuLmljb24tZmlsZS1wb3dlcnBvaW50OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MWZcIjtcbn1cbi5pY29uLWNoZXZyb24tcmlnaHQ6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTYxOFwiO1xufVxuLmljb24tY2hldnJvbi1sZWZ0OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MTlcIjtcbn1cbi5pY29uLWxpbmtlZGluOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU2MDBcIjtcbn1cblxuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFN0eWxlIGd1aWRlIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3Igc3BlY2lmaWMgY29tcG9uZW50cyBvbiB0aGUgc3R5bGVndWlkLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN0eWxlZ3VpZGUge1xuXHRoMSB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0fVxuXHQuY29sb3Itc3dhdGNoZXMge1xuXHRcdG1hcmdpbjowO1xuXHRcdHBhZGRpbmc6MDtcblx0XHRjb2xvcjogI2ZmZjtcblx0XHRsaXN0LXN0eWxlOm5vbmU7XG5cdFx0QGluY2x1ZGUgZGlzcGxheShmbGV4KTtcblx0XHRsaSB7XG5cdFx0XHQvLyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRwYWRkaW5nOjJlbSAwO1xuXHRcdFx0d2lkdGg6NmVtO1xuXHRcdFx0bWFyZ2luOiA1cHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXHRcdC5pbnZlcnQge1xuXHRcdFx0Y29sb3I6ICMwMDA7XG5cdFx0fVxuXHRcdC5ib3JkZXIge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2MzYzNjMztcblx0XHR9XG5cdFx0XG5cdFx0LmMtY2MwMDAwIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl9wcmltYXJ5O1xuXHRcdH1cblx0XHQuYy0wMDAwMDAge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yX3NlY29uZGFyeTtcblx0XHR9XG5cdFx0LmMtZmZmZmZmIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl90ZXJ0aWFyeTtcblx0XHR9XG5cdFx0LmMtZjJmMmYyIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl80O1xuXHRcdH1cblx0XHQuYy1jY2NjY2Mge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yXzU7XG5cdFx0fVxuXHRcdC5jLTY2NjY2NiB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNjtcblx0XHR9XG5cdFx0LmMtMzMzMzMzIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl83O1xuXHRcdH1cblx0XHQuYy05OTAwMDAge1xuXHRcdFx0YmFja2dyb3VuZDogJGNvbG9yXzg7XG5cdFx0fVxuXHRcdC5jLWQxNDkwNSB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfOTtcblx0XHR9XG5cdFx0LmMtZmRkNzI2IHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl8xMDtcblx0XHR9XG5cdFx0LmMtN2Q4YzFmIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl8xMTtcblx0XHR9XG5cdFx0LmMtNDI3ZTkzIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl8xMjtcblx0XHR9XG5cdFx0LmMtNDE1NmExIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjb2xvcl8xMztcblx0XHR9XG5cdH1cblxuXHQvLyBjb2RlIHN5dGF4IHBsdWdpbihieSBEYXZlIERla2tlcilcblx0LmNvZGUtYmxvY2sge1xuXHQgICAgLy8gd2lkdGg6IDk2JTtcblx0fVxuXG5cdC50b2dnbGUtY29kZS1ibG9jayB7XG5cdCAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHQgIG1hcmdpbi1ib3R0b206IDVweDtcblx0fVxuXG5cdGNvZGUge1xuXHQgIGhlaWdodDogMDtcblx0ICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8vIG92ZXJyaWRlIHN5bnRheCBwbHVnaW4gc3R5bGVzXG5cdCAgYmFja2dyb3VuZDogIzAwMDtcblx0ICBvdmVyZmxvdzogaGlkZGVuO1xuXHQgIHdpZHRoOiAxMDAlO1xuXHQgIFxuXHQgICYuc2hvdyB7XG5cdCAgICBwYWRkaW5nOiAyMHB4ICFpbXBvcnRhbnQ7IC8vIG92ZXJyaWRlIHN5bnRheCBwbHVnaW4gc3R5bGVzXG5cdCAgICBoZWlnaHQ6IGF1dG87XG5cdCAgICBkaXNwbGF5OiBibG9jaztcblx0ICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG5cdCAgfVxuXHR9XG5cdC5wYWdlLXRpdGxlIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cdC5jb21wb25lbnQtdGl0bGUge1xuXHRcdGNvbG9yOiRjb2xvcl83O1xuXHR9XG5cdC5jb2RlLWNvbnRhaW5lciB7XG5cdFx0YmFja2dyb3VuZDokY29sb3JfNTtcblx0XHRwYWRkaW5nOjIwcHg7XG5cdH1cblxuXHQvLyBTdWJsaW1lIFRoZW1lXG5cdC8qXG5cblx0TW9ub2thaSBTdWJsaW1lIHN0eWxlLiBEZXJpdmVkIGZyb20gTW9ub2thaSBieSBub2Zvcm1ub2NvbnRlbnQgaHR0cDovL25uLm1pdC1saWNlbnNlLm9yZy9cblxuXHQqL1xuXG5cdC5obGpzIHtcblx0ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdCAgcGFkZGluZzogMC41ZW07XG5cdCAgYmFja2dyb3VuZDogIzIzMjQxZjtcblx0fVxuXG5cdC5obGpzLFxuXHQuaGxqcy10YWcsXG5cdC5jc3MgLmhsanMtcnVsZXMsXG5cdC5jc3MgLmhsanMtdmFsdWUsXG5cdC5jc3MgLmhsanMtZnVuY3Rpb25cblx0LmhsanMtcHJlcHJvY2Vzc29yLFxuXHQuaGxqcy1wcmFnbWEge1xuXHQgIGNvbG9yOiAjZjhmOGYyO1xuXHR9XG5cblx0LmhsanMtc3Ryb25nZW1waGFzaXMsXG5cdC5obGpzLXN0cm9uZyxcblx0LmhsanMtZW1waGFzaXMge1xuXHQgIGNvbG9yOiAjYThhOGEyO1xuXHR9XG5cblx0LmhsanMtYnVsbGV0LFxuXHQuaGxqcy1ibG9ja3F1b3RlLFxuXHQuaGxqcy1ob3Jpem9udGFsX3J1bGUsXG5cdC5obGpzLW51bWJlcixcblx0LmhsanMtcmVnZXhwLFxuXHQuYWxpYXMgLmhsanMta2V5d29yZCxcblx0LmhsanMtbGl0ZXJhbCxcblx0LmhsanMtaGV4Y29sb3Ige1xuXHQgIGNvbG9yOiAjYWU4MWZmO1xuXHR9XG5cblx0LmhsanMtdGFnIC5obGpzLXZhbHVlLFxuXHQuaGxqcy1jb2RlLFxuXHQuaGxqcy10aXRsZSxcblx0LmNzcyAuaGxqcy1jbGFzcyxcblx0LmhsanMtY2xhc3MgLmhsanMtdGl0bGU6bGFzdC1jaGlsZCB7XG5cdCAgY29sb3I6ICNhNmUyMmU7XG5cdH1cblxuXHQuaGxqcy1saW5rX3VybCB7XG5cdCAgZm9udC1zaXplOiA4MCU7XG5cdH1cblxuXHQuaGxqcy1zdHJvbmcsXG5cdC5obGpzLXN0cm9uZ2VtcGhhc2lzIHtcblx0ICBmb250LXdlaWdodDogYm9sZDtcblx0fVxuXG5cdC5obGpzLWVtcGhhc2lzLFxuXHQuaGxqcy1zdHJvbmdlbXBoYXNpcyxcblx0LmhsanMtY2xhc3MgLmhsanMtdGl0bGU6bGFzdC1jaGlsZCB7XG5cdCAgZm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0LmhsanMta2V5d29yZCxcblx0LmhsanMtZnVuY3Rpb24sXG5cdC5obGpzLWNoYW5nZSxcblx0LmhsanMtd2ludXRpbHMsXG5cdC5obGpzLWZsb3csXG5cdC5saXNwIC5obGpzLXRpdGxlLFxuXHQuY2xvanVyZSAuaGxqcy1idWlsdF9pbixcblx0Lm5naW54IC5obGpzLXRpdGxlLFxuXHQudGV4IC5obGpzLXNwZWNpYWwsXG5cdC5obGpzLWhlYWRlcixcblx0LmhsanMtYXR0cmlidXRlLFxuXHQuaGxqcy1zeW1ib2wsXG5cdC5obGpzLXN5bWJvbCAuaGxqcy1zdHJpbmcsXG5cdC5obGpzLXRhZyAuaGxqcy10aXRsZSxcblx0LmhsanMtdmFsdWUsXG5cdC5hbGlhcyAuaGxqcy1rZXl3b3JkOmZpcnN0LWNoaWxkLFxuXHQuY3NzIC5obGpzLXRhZyxcblx0LmNzcyAudW5pdCxcblx0LmNzcyAuaGxqcy1pbXBvcnRhbnQge1xuXHQgIGNvbG9yOiAjZjkyNjcyO1xuXHR9XG5cblx0LmhsanMtZnVuY3Rpb24gLmhsanMta2V5d29yZCxcblx0LmhsanMtY2xhc3MgLmhsanMta2V5d29yZDpmaXJzdC1jaGlsZCxcblx0LmhsanMtY29uc3RhbnQsXG5cdC5jc3MgLmhsanMtYXR0cmlidXRlIHtcblx0ICBjb2xvcjogIzY2ZDllZjtcblx0fVxuXG5cdC5obGpzLXZhcmlhYmxlLFxuXHQuaGxqcy1wYXJhbXMsXG5cdC5obGpzLWNsYXNzIC5obGpzLXRpdGxlIHtcblx0ICBjb2xvcjogI2Y4ZjhmMjtcblx0fVxuXG5cdC5obGpzLXN0cmluZyxcblx0LmNzcyAuaGxqcy1pZCxcblx0LmhsanMtc3Vic3QsXG5cdC5oYXNrZWxsIC5obGpzLXR5cGUsXG5cdC5ydWJ5IC5obGpzLWNsYXNzIC5obGpzLXBhcmVudCxcblx0LmhsanMtYnVpbHRfaW4sXG5cdC5kamFuZ28gLmhsanMtdGVtcGxhdGVfdGFnLFxuXHQuZGphbmdvIC5obGpzLXZhcmlhYmxlLFxuXHQuc21hbGx0YWxrIC5obGpzLWNsYXNzLFxuXHQuZGphbmdvIC5obGpzLWZpbHRlciAuaGxqcy1hcmd1bWVudCxcblx0LnNtYWxsdGFsayAuaGxqcy1sb2NhbHZhcnMsXG5cdC5zbWFsbHRhbGsgLmhsanMtYXJyYXksXG5cdC5obGpzLWF0dHJfc2VsZWN0b3IsXG5cdC5obGpzLXBzZXVkbyxcblx0LmhsanMtYWRkaXRpb24sXG5cdC5obGpzLXN0cmVhbSxcblx0LmhsanMtZW52dmFyLFxuXHQuYXBhY2hlIC5obGpzLXRhZyxcblx0LmFwYWNoZSAuaGxqcy1jYnJhY2tldCxcblx0LnRleCAuaGxqcy1jb21tYW5kLFxuXHQuaGxqcy1wcm9tcHQsXG5cdC5obGpzLWxpbmtfbGFiZWwsXG5cdC5obGpzLWxpbmtfdXJsIHtcblx0ICBjb2xvcjogI2U2ZGI3NDtcblx0fVxuXG5cdC5obGpzLWNvbW1lbnQsXG5cdC5obGpzLWphdmFkb2MsXG5cdC5qYXZhIC5obGpzLWFubm90YXRpb24sXG5cdC5weXRob24gLmhsanMtZGVjb3JhdG9yLFxuXHQuaGxqcy10ZW1wbGF0ZV9jb21tZW50LFxuXHQuaGxqcy1waSxcblx0LmhsanMtZG9jdHlwZSxcblx0LmhsanMtZGVsZXRpb24sXG5cdC5obGpzLXNoZWJhbmcsXG5cdC5hcGFjaGUgLmhsanMtc3FicmFja2V0LFxuXHQudGV4IC5obGpzLWZvcm11bGEge1xuXHQgIGNvbG9yOiAjNzU3MTVlO1xuXHR9XG5cblx0LmNvZmZlZXNjcmlwdCAuamF2YXNjcmlwdCxcblx0LmphdmFzY3JpcHQgLnhtbCxcblx0LnRleCAuaGxqcy1mb3JtdWxhLFxuXHQueG1sIC5qYXZhc2NyaXB0LFxuXHQueG1sIC52YnNjcmlwdCxcblx0LnhtbCAuY3NzLFxuXHQueG1sIC5obGpzLWNkYXRhLFxuXHQueG1sIC5waHAsXG5cdC5waHAgLnhtbCB7XG5cdCAgb3BhY2l0eTogMC41O1xuXHR9XG5cbn1cbiIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBnbG9iYWwgbGF5b3V0LlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIExheW91dFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmJvZHkge1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cdGJhY2tncm91bmQ6ICNmMmYyZjI7XG5cblxufVxuXG4uaGVhZGVyLWNvbnRhaW5lcixcbi5jb250ZW50LWNvbnRhaW5lcixcbi5mb290ZXItY29udGFpbmVyIHtcblxuXHQud3JhcHBlciB7XG5cdFx0QGluY2x1ZGUgb3V0ZXItY29udGFpbmVyO1xuXHRcdHBhZGRpbmc6IDAgMTBweDtcblx0fVxuXHRcbn1cblxuLmNvbnRlbnQtY29udGFpbmVyIHtcblx0Ly8gcGFkZGluZy10b3A6MTAwcHg7XG5cdGgxIHtcblx0XHRtYXJnaW46IDQwcHggMDtcblx0XHRzdXAge1xuXHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDMwMDtcblx0XHRcdHRvcDogLTAuOWVtO1xuXHRcdH1cblx0fVxuXHQucGFnZS10ZW1wbGF0ZS1wYWdlLXNlY29uZGFyeS1waHAgJiB7XG5cdFx0cGFkZGluZy10b3A6MTBweDtcblx0fVxuXHRtYXJnaW4tYm90dG9tOjYwcHg7XG59XG5cbi53cmFwcGVyIHt9IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhlYWRlciBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIGhlYWRlciBsYXlvdXQuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBIZWFkZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4kaGVhZGVySGVpZ2h0OiAxMDBweDtcblxuJGJ1dHRvblByaW1hcnk6ICRjb2xvcl9wcmltYXJ5O1xuJGJ1dHRvblNlY29uZGFyeTogJGNvbG9yX3RlcnRpYXJ5O1xuLmhlYWRlci1jb250YWluZXIge1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRsZWZ0OjA7XG5cdHJpZ2h0OjA7XG5cdHotaW5kZXg6IDMwMDtcblx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0LmxvZ28ge1xuXHRcdGZsb2F0OmxlZnQ7XG5cdFx0Zm9udC1zaXplOiAwO1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0YSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRpbWcge1xuXHRcdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBsaW5lYXIpO1xuXHRcdFx0XHRwYWRkaW5nOjIwcHg7XG5cdFx0XHR9XG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0aW1nIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OjA7XG5cdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzAwMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0bmF2LnByaW1hcnkgeyBcblx0XHR3aWR0aDo1NSU7IFxuXHRcdGZsb2F0OnJpZ2h0OyBcblx0XHRtYXJnaW4tcmlnaHQ6NTBweDtcblx0XHRtYXJnaW4tdG9wOjMwcHg7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAobWFyZ2luIDAuMnMgbGluZWFyKTtcblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uIChhbGwgMC4ycyBsaW5lYXIpO1xuXHRcdFx0ZGlzcGxheTpub25lO1xuXHRcdFx0YmFja2dyb3VuZDokYnV0dG9uUHJpbWFyeTtcblx0XHRcdGhlaWdodDo0NXB4O1xuXHRcdFx0d2lkdGg6IDQ4cHg7XG5cdFx0XHR0b3A6IDI1cHg7XG5cdFx0XHRyaWdodDogMjBweDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0dGV4dC1pbmRlbnQ6IC05OTk5cHg7XG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0d2lkdGg6IDY4JTtcblx0XHRcdFx0aGVpZ2h0OiA1cHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICRidXR0b25TZWNvbmRhcnk7XG5cdFx0XHRcdHRvcDogMTBweDtcblx0XHRcdFx0bGVmdDogMTYlO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDEwcHggMCAkYnV0dG9uU2Vjb25kYXJ5LCAwIDIwcHggMCAkYnV0dG9uU2Vjb25kYXJ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCA5NjBweCkge1xuXHRcdFx0cG9zaXRpb246Zml4ZWQ7XG5cdFx0XHR3aWR0aDoxMDAlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0ei1pbmRleDogMTAwO1xuXG5cdFx0XHRidXR0b24ge1xuXHRcdFx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0fVxuXHRcdFx0PiB1bCB7XG5cdFx0XHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjNzIGxpbmVhcik7XG5cdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yXzQ7XG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRcdG1heC1oZWlnaHQ6MDtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRyaWdodDogLTUwcHg7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR0b3A6MTAwcHg7XG5cdFx0XHRcdHBhZGRpbmc6MDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQuc2hhcmUgeyBcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6MDtcblx0XHR6LWluZGV4OiA1MDA7XG5cdH1cblx0XG5cdGhlYWRlciB7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRoZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG5cdFx0cGFkZGluZzogMCAxMHB4O1xuXHRcdC5wYWdlLXRlbXBsYXRlLXBhZ2Utc2Vjb25kYXJ5LXBocCAmIHtcblx0XHRcdGhlaWdodDogJGhlYWRlckhlaWdodCs0MHB4O1xuXHRcdH1cblx0fVxufVxuXG5cblxuLmhlYWRyb29tIHtcbiAgICBcbiAgIFxufVxuLmhlYWRyb29tLS1waW5uZWQge1xuICAgIC8vIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDAlKSk7XG5cbn1cbmJvZHkuaGVhZHJvb20tLXVucGlubmVkIHtcbiAgICAvLyBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtMTAwJSkpO1xuXG4gICBcbiAgICAuaGVhZGVyLWNvbnRhaW5lciB7XG5cdFx0cG9zaXRpb246Zml4ZWQ7XG5cdFx0aGVhZGVyIHtcblx0XHRcdGhlaWdodDo3MHB4O1xuXHRcdFx0LmxvZ28ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXG5cdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0cGFkZGluZy10b3A6NXB4O1xuXHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiA1cHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0bmF2LnByaW1hcnkgeyBcblx0XHRcdEBpbmNsdWRlIG1lZGlhKDk2MHB4KSB7XG5cdFx0XHRcdG1hcmdpbi10b3A6MTVweDtcblx0XHRcdH1cblx0XHRcdD4gdWwge1xuXHRcdFx0XHR0b3A6NzBweDtcblx0XHRcdFx0LnN1Yi1tZW51IHtcblx0XHRcdFx0XHR0b3A6NzBweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRidXR0b24ge1xuXHRcdFx0XHR0b3A6IDEwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdCYucGFnZS10ZW1wbGF0ZS1wYWdlLXNlY29uZGFyeS1waHAgIHtcblx0XHQuY29udGVudC1jb250YWluZXIge1xuXHRcdFx0cGFkZGluZy10b3A6ICRoZWFkZXJIZWlnaHQgKyA0MHB4OztcbiAgICBcdH1cbiAgICBcdC5oZWFkZXItY29udGFpbmVyIGhlYWRlciB7XG4gICAgXHRcdGhlaWdodDo3MHB4O1xuXHRcdH1cblx0fVxuXHRcbn1cbi5oZWFkcm9vbS0tbm90LXRvcCB7XG5cblx0XG5cdFxuXHRcbn0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29udGVudCBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIGNvbnRlbnQgbGF5b3V0LlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGVudFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5jb250ZW50LWNvbnRhaW5lciB7XG5cdHBhZGRpbmctdG9wOiA0MHB4O1xuXHQuaGVhZHJvb20tLXVucGlubmVkICYge1xuXHRcdHBhZGRpbmctdG9wOiAxMzBweDtcbiAgICB9XG5cblx0LnN1Yi1uYXYge1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRAaW5jbHVkZSBtZWRpYShtYXgtd2lkdGggOTYwcHgpIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHRcdGxlZnQ6IDA7XG5cdFx0ei1pbmRleDogMzAxO1xuXHRcdGNvbG9yOiRjb2xvcl90ZXJ0aWFyeTtcblx0XHRwYWRkaW5nOiAxMy41cHggMTBweDtcblx0XHR0b3A6MTAwcHg7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0XHQuaGVhZHJvb20tLXVucGlubmVkICYge1xuXHRcdFx0dG9wOjcwcHg7XG5cdFx0fVxuXG5cdFx0c3BhbiB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0fVxuXHR9XG5cdC5jb250ZW50LXdyYXBwZXIge31cblxuXHQuY29udGVudCB7fVxuXHQuYXNpZGUge31cblx0XG5cdC5hbGlnbmxlZnQge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxuXG5cdC5sY3BfcGFnaW5hdG9yIHtcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHRjb2xvcjokY29sb3JfdGVydGlhcnk7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzowO1xuXHRcdGxpIHtcblx0XHRcdGJvcmRlcjpub25lO1xuXHRcdFx0c3BhbiB7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHR9XG5cdFx0XHRhIHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRwYWRkaW5nOjEwcHggMjBweDtcblx0XHRcdFx0Y29sb3I6JGNvbG9yXzU7XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0Y29sb3I6JGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5sY3BfY2F0bGlzdCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6MDtcblx0fVxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGb290ZXIgUGFydGlhbFxuLy8gU3R5bGVzIGZvciBmb290ZXIgbGF5b3V0LlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRm9vdGVyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmZvb3Rlci1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiAyMHB4O1xuXHRiYWNrZ3JvdW5kOiAkY29sb3Jfc2Vjb25kYXJ5O1xuXHRjb2xvcjogJGNvbG9yX3RlcnRpYXJ5O1xuXHRwYWRkaW5nLWJvdHRvbTo1MHB4O1xuXG5cdC5jcmVkaXRzIHtcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeTtcblx0XHRcblx0XHR1bCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRcdGxpIHtcblx0XHRcdFx0cGFkZGluZzogMzBweCAwO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKDc2OHB4KSB7XG5cdFx0XHRcdFx0d2lkdGg6MjclO1xuXHRcdFx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0d2lkdGg6NDYlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0cGFkZGluZzoyN3B4IDA7XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0YSB7XG5cdFx0Y29sb3I6I2ZmZjtcblx0fVxuXHRmb290ZXIge1xuXHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdFx0aDIge1xuXHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHR9XG5cdFx0Jj5kaXYge1xuXHRcdFx0QGluY2x1ZGUgbWVkaWEoOTYwcHgpIHtcblx0XHQgICBcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdHdpZHRoOjI3JTtcblx0XHRcdFx0XG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdHdpZHRoOiA0NiU7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDogMzBweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHQuc29jaWFsLWJhciB7XG5cdFx0XHRoMiB7XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKDk2MHB4KSB7XG5cdFx0XHRcdFx0bWluLWhlaWdodDogNzBweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dWwge1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0XHRcdG1hcmdpbjowO1xuXHRcdFx0XHRwYWRkaW5nOjA7XG5cdFx0XHRcdGxpIHtcblx0XHRcdFx0XHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0Om5vbmU7XG5cdFx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdFx0d2lkdGg6IDQ4cHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiA0OHB4O1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRcdC8vIHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0XHRcdHdpZHRoOjEwMCU7XG5cdFx0XHRcdFx0XHR0b3A6IDA7XG5cdFx0XHRcdFx0XHRib3R0b206IDA7XG5cdFx0XHRcdFx0XHQvLyBwYWRkaW5nOiAxMHB4O1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxLjVlbTtcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdHNwYW4ge1xuXHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHR0b3A6IDUwJTtcblx0ICBcdFx0XHRcdFx0XHRsZWZ0OiA1MCU7XG5cdCAgXHRcdFx0XHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZSgtNTAlLC01MCUpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXG5cdFx0fVxuXHR9XG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFsZXJ0cyBQYXJ0aWFsXG4vLyBTdHlsZXMgdGhhdCBoZWxwIGNvbW11bmljYXRlIHN1Y2Nlc3MsIHdhcm5pbmdzLCBmYWlsdXJlcywgZXRjLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ2hyb21lIEZyYW1lIC0gZm9yIHVuc3VwcG9ydGVkIHZlcnNpb25zIG9mIElFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmNocm9tZWZyYW1lIHtcblxuXHRhIHt9XG5cbn1cblxuXG4vLyBBbGVydHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uYWxlcnQtYm94IHtcblxuXHQmLmluZm8ge31cblx0Ji5lcnJvciB7fVxuXHQmLnN1Y2Nlc3Mge31cblxufSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBbmltYXRpb25zIFBhcnRpYWxcbi8vIEN1c3RvbSBrZXlmcmFtZWQgYW5pbWF0aW9ucyB0byBiZSB1c2VkIGluIHRoZSBzaXRlL2FwcGxpY2F0aW9uXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1dHRvbnMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIHRyYWRpdGlvbmFsIGFjdGlvbnMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBCdXR0b25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5pbnB1dFt0eXBlPVwic3VibWl0XCJdLCBidXR0b24sIGEuYnV0dG9uIHtcblx0QGluY2x1ZGUgcmVtKHBhZGRpbmcsIDEwcHggMjBweCk7XG5cdEBpbmNsdWRlIHJlbShtYXJnaW4sIDAgMCAxMHB4KTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX3ByaW1hcnk7XG5cdGNvbG9yOiByZ2JhKCNmZmYsIDEpO1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAzMDBtcyBlYXNlLWluLW91dCk7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRjb2xvcl9wcmltYXJ5LCAxMCUpO1xuXHR9XG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZvcm1zIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdmFyaW91cyBmb3JtcyBhbmQgZm9ybSBlbGVtZW50cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBXcmFwcGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmZvcm0ge31cblxuXG5cdC8vIExlZ2VuZFxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGxlZ2VuZCB7fVxuXG5cblx0Ly8gRmllbGRzZXRzIC8gV3JhcHBlcnNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRmaWVsZHNldCB7fVxuXG5cdFx0LmZpZWxkLCAuZmllbGRwYWlyLCAuZmllbGRncm91cCB7fVxuXHRcdC5maWVsZHBhaXIsIC5maWVsZGdyb3VwIHt9XG5cblx0XHQvLyBGaWVsZCBQYWlyXG5cdFx0LmZpZWxkcGFpciA+IC5maWVsZCB7fVxuXHRcdC5maWVsZHBhaXIgPiAuZmllbGQ6Zmlyc3QtY2hpbGQge31cblxuXHRcdC8vIEZpZWxkIEdyb3VwXG5cdFx0LmZpZWxkZ3JvdXAgLmZpZWxkIHt9XG5cblxuXHQvLyBDaGVja2JveGVzICYgUmFkaW9zXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0LmNoZWNrYm94ZXMsIC5yYWRpb3Mge1xuXG5cdFx0dWwge31cblx0XHRpbnB1dCArIGxhYmVsIHt9XG5cblx0fVxuXG5cblx0Ly8gTGFiZWxzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0bGFiZWwge31cblxuXHRcdC8vIEZpZWxkZ3JvdXAgTGFiZWxcblx0XHQuZmllbGRncm91cC1sYWJlbCB7fVxuXG5cdFx0Ly8gQ2hlY2tib3gsIFJhZGlvIExhYmVsc1xuXHRcdC5maWVsZGdyb3VwLWxhYmVsICsgdWwsXG5cdFx0LmZpZWxkZ3JvdXAtbGFiZWwgKyBvbCB7fVxuXHRcdC5maWVsZGdyb3VwLWxhYmVsICsgdWwgbGksXG5cdFx0LmZpZWxkZ3JvdXAtbGFiZWwgKyBvbCBsaSxcblx0XHQuZmllbGRncm91cC1sYWJlbCArIHVsIGxhYmVsLFxuXHRcdC5maWVsZGdyb3VwLWxhYmxlICsgb2wgbGFiZWwge31cblx0bGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Ly8gRmllbGRzXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0aW5wdXQge1xuXHRcdCZbdHlwZT1cInRleHRcIl0sXG5cdFx0Jlt0eXBlPVwiZW1haWxcIl0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX3ByaW1hcnk7XG5cdFx0XHRAaW5jbHVkZSByZW0ocGFkZGluZywgOHB4IDEwcHgpO1xuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMzAwIGVhc2UtaW4tb3V0KTtcblx0XHR9XG5cdFx0Ly8gQ2hlY2tib3ggJiBSYWRpb1xuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdICsgbGFiZWwsXG5cdFx0Jlt0eXBlPVwicmFkaW9cIl0gKyBsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDI1cHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdFx0aGVpZ2h0OiAxNnB4O1xuXG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRib3R0b206IDFweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl0gKyBsYWJlbCB7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdC8vIGJvcmRlci1yYWRpdXM6IDhweDtcblx0XHRcdFx0Ym9yZGVyOjFweCBzb2xpZCBkYXJrZW4oI2YyZjJmMiwzMCUpO1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwicmFkaW9cIl0gKyBsYWJlbCB7XG5cdFx0XHQmOmJlZm9yZSB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhweDtcblx0XHRcdFx0Ym9yZGVyOjFweCBzb2xpZCBkYXJrZW4oI2YyZjJmMiwzMCUpO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHRcdCZbdHlwZT1cImNoZWNrYm94XCJdLFxuXHRcdCZbdHlwZT1cInJhZGlvXCJdIHtcblx0XHRcdFxuXHRcdFx0ZGlzcGxheTogbm9uZTsgIFxuXG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG5cdFx0ICAgIGJhY2tncm91bmQtY29sb3I6ICNjYzAwMDA7XG5cdFx0ICAgIGNvbG9yOiAjZjNmM2YzO1xuXHRcdCAgICBmb250LXNpemU6IDMycHg7XG5cdFx0ICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHQgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG5cdFx0ICAgIGJvcmRlcjoxcHggc29saWQgZGFya2VuKCNjYzAwMDAsMjAlKTtcblx0XHR9XG5cdFx0Jlt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0XHR3aWR0aDogOHB4O1xuXHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiA0cHg7XG5cdFx0XHR0b3A6IDVweDtcblx0XHR9XG5cblx0XHQmW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcblx0XHQgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjMDAwMDtcblx0XHQgICAgY29sb3I6ICNmM2YzZjM7XG5cdFx0ICAgIGZvbnQtc2l6ZTogMzJweDtcblx0XHQgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdCAgICBsaW5lLWhlaWdodDogMTRweDtcblx0XHQgICAgYm9yZGVyOjFweCBzb2xpZCBkYXJrZW4oI2NjMDAwMCwyMCUpO1xuXHRcdH1cblx0XHQmW3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YWZ0ZXIge1xuXHRcdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHRcdHdpZHRoOiA3cHg7XG5cdFx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0XHQvLyBib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDQ1ZGVnKSk7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiA1cHg7XG5cdFx0XHR0b3A6IDFweDtcblx0XHRcdGJvcmRlci1yaWdodDozcHggc29saWQgI2ZmZjtcblx0XHRcdGJvcmRlci1ib3R0b206M3B4IHNvbGlkICNmZmY7XG5cdFx0fVxuXG5cdFx0Jlt0eXBlPVwiY2hlY2tib3hcIl06Zm9jdXMsICZbdHlwZT1cInJhZGlvXCJdOmZvY3VzIHt9XG5cdFx0XG5cblxuXG5cdFx0Ly8gU2VhcmNoXG5cdFx0Jlt0eXBlPVwic2VhcmNoXCJdIHt9XG5cdFx0Jlt0eXBlPVwic2VhcmNoXCJdOjotbXMtY2xlYXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQvLyBGaWxlXG5cdFx0Jlt0eXBlPVwiZmlsZVwiXSB7fVxuXG5cdFx0Ly8gRm9jdXNcblx0XHQmOmZvY3VzIHt9XG5cblx0fVxuXHR0ZXh0YXJlYSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yX3ByaW1hcnk7XG5cdFx0QGluY2x1ZGUgcmVtKHBhZGRpbmcsIDhweCAxMHB4KTtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAzMDAgZWFzZS1pbi1vdXQpO1xuXHR9XG5cblx0Ly8gQ3VzdG9tIENoZWNrYm94ZXMgKyBSYWRpb3Ncblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQ6cm9vdCB7XG5cblx0XHQvLyBDb21tb25cblx0XHQucmFkaW8gbGFiZWwsXG5cdFx0LmNoZWNrYm94IGxhYmVsIHt9XG5cdFx0LmNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcblx0XHQucmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdIHt9XG5cblx0XHQvLyBDdXN0b20gUmFkaW9zXG5cdFx0LnJhZGlvIGxhYmVsOmJlZm9yZSB7fVxuXHRcdC5yYWRpbyBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7fVxuXHRcdC5yYWRpbyBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHt9XG5cblx0XHQvLyBDdXN0b20gQ2hlY2tib3hcblx0XHQuY2hlY2tib3ggbGFiZWw6YmVmb3JlIHt9XG5cdFx0LmNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHt9XG5cblx0fSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZWRpYSBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHZhcmlvdXMgbXVsdGltZWRpYSBlbGVtZW50cy5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZpZ3VyZXMgJiBJbWFnZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5maWd1cmUge1xuXG5cdGEge31cblx0YSA+IGltZyB7fVxuXHRhOmhvdmVyID4gaW1nIHt9XG5cbn1cblxuXG4vLyBWaWRlb3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG52aWRlbyB7fVxuXG5cbi8vIGlGcmFtZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5pZnJhbWUge31cblxuXG4vLyBGcmVzY28gLSBDdXN0b21pemF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLmZyLWNsb3NlIHt9XG5cblxuLy8gR29vZ2xlIE1hcHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uZ29vZ2xlLW1hcCBpbWcge30iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTmF2aWdhdGlvbnMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB2YXJpb3VzIHR5cGVzIG9mIG5hdmlnYXRpb24gY29tcG9uZW5ldHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQcmltYXJ5IE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5uYXYucHJpbWFyeSB7XG5cdC8vIGZvbnQtd2VpZ2h0OjQwMDtcblx0dWwge1x0XG5cdFx0bWFyZ2luOjA7XG5cdFx0cGFkZGluZzowO1xuXHR9XG5cblx0XG5cdD4gdWwge1xuXHRcdC8vIHRvcCBsZXZlbCBtYWluIG5hdiBpdGVtc1xuXHRcdD4gbGkge1xuXHRcdFx0Ji5jdXJyZW50LW1lbnUtaXRlbSB7XG5cdFx0XHRcdD4gYSB7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG59XG5cblxuLmZsZXgtY29udGFpbmVyIHtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcbiAgXHRsaXN0LXN0eWxlOiBub25lO1xuXHRcblx0JnVsIHtcblx0XHRmb250LXNpemU6IDA7XG5cdH1cblxuXHRsaSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRAaW5jbHVkZSBtZWRpYSgxMDg4cHgpIHtcblx0XHQgICAgLy8gZm9udC1zaXplOiAxZW07XG5cdFx0fVxuXHQgIFx0YSB7XG5cdFx0XHRcblx0XHRcdGNvbG9yOiAjMzMzO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRwYWRkaW5nOjAuNWVtO1xuXHRcdFx0Ly8gbGluZS1oZWlnaHQ6NGVtO1xuXHRcdFx0XG5cdFx0fVxuXHR9XG5cdC5zdWItbWVudSB7XG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDAuMnMgbGluZWFyKTtcblx0ICAgIGRpc3BsYXk6bm9uZTtcblx0ICAgIHBvc2l0aW9uOmZpeGVkO1xuXHQgICAgdG9wOiAxMDBweDtcblx0ICAgIGxlZnQ6IDA7XG5cdCAgICByaWdodDogMDtcblx0ICAgIGxpc3Qtc3R5bGU6bm9uZTtcblx0ICAgIGJhY2tncm91bmQ6ICRjb2xvcl83O1xuXHQgICAgZm9udC1zaXplOiAwO1xuXHQgICAgbGkge1xuXHQgICAgXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdCAgICBcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0ICAgIFx0YSB7XG5cdCAgICBcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHQgICAgXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdCAgICBcdFx0cGFkZGluZzogMTMuNXB4IDIwcHg7XG5cdCAgICBcdFx0Y29sb3I6JGNvbG9yX3RlcnRpYXJ5O1xuXHQgICAgXHRcdGxpbmUtaGVpZ2h0OiAyNHB4O1xuXHQgICAgXHR9XG5cdCAgICBcblx0ICAgIH1cblx0ICAvLyAgIEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCA5NjBweCkge1xuXHRcdFx0Ly8gLy8gcG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0Ly8gZGlzcGxheTogbm9uZTtcblx0ICAvLyAgIH1cblx0fVxuICBcdC5jdXJyZW50X3BhZ2VfaXRlbSxcbiAgXHQuY3VycmVudF9wYWdlX2FuY2VzdG9yIHtcblx0ICBcdC5zdWItbWVudSB7XG5cdCAgICBcdGRpc3BsYXk6YmxvY2s7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCA5NjBweCkge1xuXHRcdFx0XHQvLyBwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0ICAgIH1cblx0ICAgIFx0bGk6Zmlyc3QtY2hpbGQge1xuXHQgICAgXHRcdC8vIHRleHQtYWxpZ246IGxlZnQ7XG5cdCAgICBcdFx0Ly8gZmxvYXQ6IGxlZnQ7XG5cdCAgICBcdFx0Ly8gcGFkZGluZy1sZWZ0OjQwcHg7XG5cdCAgICBcdH1cblx0ICBcdH1cblx0fVxuXHQuY3VycmVudC1tZW51LWl0ZW0sXG5cdC5jdXJyZW50LW1lbnUtYW5jZXN0b3Ige1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0dWwgbGkge1xuXHRcdFx0Zm9udC13ZWlnaHQ6MzAwO1xuXHRcdFx0Ji5jdXJyZW50LW1lbnUtaXRlbSB7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHQuc3R5bGVndWlkZSAmIHtcblx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHR9XG5cdCYuc2Vjb25kYXJ5IHtcblx0XHRsaSBhIHtcblx0XHRcdHBhZGRpbmc6MC41ZW07XG5cdFx0XHRsaW5lLWhlaWdodDogM2VtO1xuXHRcdH1cblx0fVxuICBcbn1cblxuLnJpZ2h0IHtcblx0Ly8gQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGZsZXgtZW5kKTtcblx0dGV4dC1hbGlnbjpyaWdodDtcbn0gXG4ubm8tc2Nyb2xsIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xufVxuXG4uZmx5b3V0LW1lbnUge1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHRvcDowO1xuXHRib3R0b206MDtcblx0bGVmdDowO1xuXHRyaWdodDowO1xuXHR3aWR0aDoxMDAlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7XG5cdHotaW5kZXg6LTE7XG5cdCRwYW5lbFdpZHRoOjMwMHB4O1xuXG5cdCYuYWN0aXZlIHtcblx0XHRiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTtcblx0XHR6LWluZGV4OiA1MDA7XG5cdFx0dWwsIGRpdiB7XG5cdFx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdH1cblx0fVxuXHRoMyB7XG5cdFx0aGVpZ2h0OjcwcHg7XG5cdFx0cGFkZGluZzoyMHB4O1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXHRoNCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6MTBweCAyMHB4O1xuXHR9XG5cdHVsLCBkaXYge1xuXHRcdGRpc3BsYXk6bm9uZTtcblx0fVxuXHRbZGF0YS1sZXZlbF0ge1xuXHRcdGRpc3BsYXk6YmxvY2s7XG5cdFx0cG9zaXRpb246YWJzb2x1dGU7XG5cdFx0cmlnaHQ6MDtcblx0XHR0b3A6IDA7XG5cdFx0Ym90dG9tOjA7XG5cdFx0bWluLXdpZHRoOiAkcGFuZWxXaWR0aDtcblx0XHRiYWNrZ3JvdW5kOiRjb2xvcl80O1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGxpbmVhcik7XG5cdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoJHBhbmVsV2lkdGgpKTtcblx0XHRib3JkZXItbGVmdDogM3B4IHNvbGlkICNjYzAwMDA7XG5cblx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgwcHgpKTtcblx0XHRcdHotaW5kZXg6IDUwMTtcblx0XHR9XG5cdH1cblxuXHQmW2RhdGEtbGV2ZWwtYWN0aXZlPVwiMlwiXSB7XG5cdFx0W2RhdGEtbGV2ZWw9XCIxXCJdIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNDBweDtcblx0XHRcdD4gdWwgPiAuY2xvc2UtYnRuIHtcblx0XHRcdFx0YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7XG5cdFx0XHRcdHRvcDowO1xuXHRcdFx0XHRyaWdodDowO1xuXHRcdFx0XHRsZWZ0OjA7XG5cdFx0XHRcdGJvdHRvbTowO1xuXHRcdFx0XHRjdXJzb3I6cG9pbnRlcjtcblx0XHRcdH1cdFx0XHRcblx0XHR9XG5cdFx0W2RhdGEtbGV2ZWw9XCIyXCJdIHtcblx0XHRcdEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDQwcHgpKTtcblx0XHR9XG5cdH1cblx0JltkYXRhLWxldmVsLWFjdGl2ZT1cIjNcIl0ge1xuXHRcdFtkYXRhLWxldmVsPVwiMVwiXSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDgwcHg7XG5cdFx0fVxuXHRcdFtkYXRhLWxldmVsPVwiMlwiXSB7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg0MHB4KSk7XG5cdFx0XHQ+IHVsID4gLmNsb3NlLWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO1xuXHRcdFx0XHR0b3A6MDtcblx0XHRcdFx0cmlnaHQ6MDtcblx0XHRcdFx0bGVmdDowO1xuXHRcdFx0XHRib3R0b206MDtcblx0XHRcdFx0Y3Vyc29yOnBvaW50ZXI7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFtkYXRhLWxldmVsPVwiM1wiXSB7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCg0MHB4KSk7XG5cdFx0fVxuXHR9XG5cdCZbZGF0YS1sZXZlbC1hY3RpdmU9XCIzXCJdIHtcblx0XHRbZGF0YS1sZXZlbD1cIjFcIl0ge1xuXHRcdFx0PiB1bCA+IC5jbG9zZS1idG4ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTtcblx0XHRcdFx0dG9wOjA7XG5cdFx0XHRcdHJpZ2h0OjA7XG5cdFx0XHRcdGxlZnQ6MDtcblx0XHRcdFx0Ym90dG9tOjA7XG5cdFx0XHRcdGN1cnNvcjpwb2ludGVyO1xuXHRcdFx0fVx0XG5cdFx0fVxuXHR9XG5cdG5hdiB7XG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOjA7XG5cdFx0XHRwYWRkaW5nOjA7XG5cdFx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdFx0bGkge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzMzMztcblx0XHRcdH1cblx0XHR9XG5cdFx0YSB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRwYWRkaW5nOjEwcHggMjBweDtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Y29sb3I6ICMwMDA7XG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZDogZGFya2VuKCNjMWMxYzEsIDEwJSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5jbG9zZS1idG4ge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6MjBweDtcblx0XHRyaWdodDoxMHB4O1xuXHRcdGJvcmRlcjpub25lO1xuXHRcdFxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0XHRcdHdpZHRoOiAyNXB4O1xuXHRcdFx0aGVpZ2h0OiAyNXB4O1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0YmFja2dyb3VuZDp0cmFuc3BhcmVudDtcblxuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiAnJztcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRcdGhlaWdodDogMXB4O1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAjMDAwO1xuXHRcdFx0XHQvLyBsZWZ0OiAtM2VtO1xuXHRcdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDQ1ZGVnKSk7XG5cdFx0XHR9XG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdHRvcDogNTAlO1xuXHRcdFx0XHRoZWlnaHQ6IDFweDtcblx0XHRcdFx0YmFja2dyb3VuZDogIzAwMDtcblx0XHRcdFx0bGVmdDogMDtcblx0XHRcdFx0QGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgtNDVkZWcpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdH1cblx0aDQge1xuXHRcdGNvbG9yOiAjZmZmO1xuXHRcdGJhY2tncm91bmQ6I2NjMDAwMDtcblx0fVxuXHRcbn1cblxuXG4vLyBGb290ZXIgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbm5hdi5mb290ZXIge31cblxuXG4vLyBVdGlsaXR5IE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5uYXYudXRpbGl0eSB7fVxuXG5cbi8vIEJyZWFkY3J1bWIgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5icmVhZGNydW1icyB7fVxuXG5cbi8vIFBhZ2luYXRpb24gTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5wYWdpbmF0aW9uIHt9XG5cbi5wYWdpbmF0aW9uIHNwYW4sIC5wYWdpbmF0aW9uIGEge31cbi5wYWdpbmF0aW9uIHNwYW46Zmlyc3QtY2hpbGQge31cbi5wYWdpbmF0aW9uIGE6aG92ZXIge31cbi5wYWdpbmF0aW9uIC5jdXJyZW50IHt9IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhbmVscyBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHZhcmlvdXMgdHlwZXMgb2YgcGFuZWwgY29tcG9uZW5ldHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIFBhbmVsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi5wYW5lbCB7XG5cblxuXHQvLyBIZWFkaW5nXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0LnBhbmVsLWhlYWRpbmcge1xuXG5cdFx0LnBhbmVsLXRpdGxlIHt9XG5cblx0fVxuXG5cdC8vIENvbnRlbnRcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQucGFuZWwtY29udGVudCB7XG5cblx0XHQmID4gKjpsYXN0LWNoaWxkIHt9XG5cblx0fVxuXG59IiwiLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNlYXJjaCBGb3JtIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGhlIHNlYXJjaCBmb3JtLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2VhcmNoIFJlc3VsdHMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB0aGUgc2VhcmNoIHJlc3VsdHMuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIsIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUYWJsZXMgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB0YWJsZXMgYW5kIHRhYmxlIGNvbXBvbmVuZXRzLlxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVmFyaWFibGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIFRhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbnRhYmxlIHtcblxuXHQvLyBHbG9iYWxcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHR0ciB7fVxuXHR0aCwgdGQge31cblx0dGgge31cblxuXG5cdC8vIEhlYWRlciBDZWxsc1xuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdHRoZWFkIHt9XG5cdHRoZWFkIHRoIHt9XG5cblxuXHQvLyBCb2R5IENlbGxzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0dGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHt9XG5cblx0XHQvLyBIb3ZlclxuXHRcdHRib2R5IHRyOmhvdmVyIHt9XG5cdFx0dGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pOmhvdmVyIHt9XG5cblxuXHQvLyBGb290ZXIgQ2VsbHNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHR0Zm9vdCB7fVxuXHR0Zm9vdCB0ZCB7fVxuXG5cdFx0Ly8gSG92ZXJcblx0XHR0Zm9vdCB0cjpob3ZlciB7fVxuXHRcdHRmb290IHRyOm50aC1jaGlsZChldmVuKTpob3ZlciB7fVxuXG5cbn0iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU29jaWFsIEhlYWRlciBQYXJ0aWFsXG4vLyBTdHlsZXMgZm9yIHNvY2lhbCBzaGFyZSBidXR0b25zIGluIGhlYWRlci5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFZhcmlhYmxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiRkZWZhdWx0LWhlaWdodDogMTAwcHg7XG4kZGVmYXVsdC13aWR0aDogNTBweDtcbiRzbWFsbC1oZWlnaHQ6IDcwcHg7XG4kc21hbGwtd2lkdGg6ICRzbWFsbC1oZWlnaHQ7XG4vL2NhbGN1bGF0ZSB3aWR0aCBiYXNlZCBvbiBob3cgbWFueSBpY29ucyBhcmUgdXNlZC5cbiRleHBhbmRlZC13aWR0aDogJGRlZmF1bHQtd2lkdGggKyAoJHNtYWxsLXdpZHRoICogMik7XG5cbi5zaGFyZSB7XG5cdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGVhc2UtaW4tb3V0KTtcblx0aGVpZ2h0OiAkZGVmYXVsdC1oZWlnaHQ7XG5cdHdpZHRoOiAkZGVmYXVsdC13aWR0aDtcblxuXHRiYWNrZ3JvdW5kOiAjMzMzMzMzO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cblx0dWwge1xuXHRcdG1hcmdpbjowO1xuXHRcdHBhZGRpbmc6MDtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAwLjJzIGVhc2UtaW4tb3V0KTtcblx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSggLSgkZGVmYXVsdC1oZWlnaHQgLyAyKSApKTtcblxuXHRcdGxpIHtcblx0XHRcdGEge1xuXHRcdFx0XHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0XHRcdFx0d2lkdGg6ICRkZWZhdWx0LXdpZHRoO1xuXHRcdFx0XHRoZWlnaHQ6ICRkZWZhdWx0LWhlaWdodCAvIDI7XG5cdFx0XHRcdHRleHQtaW5kZW50OiAtOTk5OXB4O1xuXHRcdCAgICBcdHdoaXRlLXNwYWNlOiBub3dyYXA7XHRcdFx0XG5cdFx0ICAgIH1cblx0XHQgICAgLnRvZ2dsZSB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IzMzMzMzMyB1cmwoLi4vaW1nL3NvY2lhbC1zaGFyZS5wbmcpIG5vLXJlcGVhdCBjZW50ZXI7XG5cdFx0ICAgIH1cblx0XHRcdC5mYiB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IzNiNTk5OCB1cmwoLi4vaW1nL3NvY2lhbC1mYi5wbmcpIG5vLXJlcGVhdCBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0XHQudHdpdHRlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IzAwYWNlZCB1cmwoLi4vaW1nL3NvY2lhbC10d2l0dGVyLnBuZykgbm8tcmVwZWF0IGNlbnRlcjtcblx0XHRcdH1cblx0XHR9XHRcblx0fVxuXG5cdC5oZWFkcm9vbS0tbm90LXRvcCAmIHtcblx0XHRoZWlnaHQ6ICRzbWFsbC1oZWlnaHQ7XG5cblx0XHR1bCB7XG5cdFx0XHR3aWR0aDokZXhwYW5kZWQtd2lkdGg7XG5cdFx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwcHgpKTtcblx0XHRcdGxpIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdGEge1xuXHRcdFx0XHRcdHdpZHRoOiRzbWFsbC1oZWlnaHQ7XG5cdFx0XHRcdFx0aGVpZ2h0OiRzbWFsbC1oZWlnaHQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0XHR3aWR0aDokZGVmYXVsdC1oZWlnaHQgLyAyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0d2lkdGg6JGV4cGFuZGVkLXdpZHRoO1x0XG5cdFx0fVxuXHR9XG59XG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNDA0IFBhZ2UgUGFydGlhbFxuLy8gU3R5bGVzIGZvciB0aGUgNDA0IEVycm9yIFBhZ2UuXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBFcnJvciA0MDRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4uZXJyb3I0MDQge30iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSG9tZSBQYWdlIFBhcnRpYWxcbi8vIFN0eWxlcyBmb3IgdGhlIGhvbWUgcGFnZS5cbi8vIChjKSBBdGxhbnRpYyBCVC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmJvZHkuaG9tZSB7XG5cdC5jb250ZW50LWNvbnRhaW5lciB7XG5cdFx0cGFkZGluZy10b3A6MDtcblx0fVxuXHQmLmhlYWRyb29tLS11bnBpbm5lZCB7XG5cdFx0LmNvbnRlbnQtY29udGFpbmVyIHtcblx0XHRcdHBhZGRpbmctdG9wOiAxMDBweDtcblx0XHR9XG5cdH1cbn1cblxuLnNlYXJjaC1jb250YWluZXIge1xuXHRiYWNrZ3JvdW5kOiAkY29sb3JfcHJpbWFyeTtcblx0Y29sb3I6ICRjb2xvcl90ZXJ0aWFyeTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDoxMDAlO1xuXHQuc2VhcmNoLXppcCB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cdGgyIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0Ly8gQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdHBhZGRpbmc6IDIwcHggMDtcblx0XHRcblx0XHRtYXJnaW46IDIwcHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiA0MHB4O1xuXHRcdFx0Ym9yZGVyOm5vbmU7XG5cdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHdpZHRoOjUwJTtcblx0XHRcdGZsb2F0OmxlZnQ7XG5cdFx0fVxuXHR9XG5cdGZvcm0ge1xuXHRcdGZvbnQtc2l6ZTogMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0d2lkdGg6IDUwJTtcblx0XHRcdHBhZGRpbmc6IDIwcHggMDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0fVxuXHRcdFxuXHRcdC8vIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHQuaW5wdXQge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTo0MHB4O1xuXHRcdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdFx0bWFyZ2luOjA7XG5cdFx0XHRcdHBhZGRpbmc6IDEzcHggMDtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDQwcHg7XG5cdFx0XHR9XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0XHRsYWJlbCB7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRcdFx0cGFkZGluZy1yaWdodDoxMHB4O1xuXHRcdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdFx0XG5cdFx0XHR9XG5cdFx0XHRpbnB1dFt0eXBlPXRleHRdIHtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdGJvcmRlcjpub25lOyBcblx0XHRcdFx0dGV4dC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcdGJveC1zaGFkb3c6bm9uZTtcblx0XHRcdFx0cGFkZGluZzogMTBweDtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAzMHB4O1xuXHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdG1heC13aWR0aDogMTkwcHg7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0YmFja2dyb3VuZDogJGNvbG9yX3RlcnRpYXJ5IHVybCguLi9pbWcvc2VhcmNoLWdsb2JlLWljb24ucG5nKSBuby1yZXBlYXQgMTBweCBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0XHRpbnB1dFt0eXBlPXN1Ym1pdF0ge1xuXHRcdFx0XHRmbG9hdDogbGVmdDtcblx0XHRcdFx0YmFja2dyb3VuZDogZGFya2VuKCRjb2xvcl84LDEwJSk7XG5cdFx0XHRcdGNvbG9yOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHg7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0bWluLXdpZHRoOiAxMTBweDtcblx0XHRcdH1cblx0XHRcdC5lcnJvciB7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdFx0dG9wOiA0MHB4O1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0XHRcblx0fVxufVxuI2NoYXJ0X2RpdiB7XG5cdG1pbi1oZWlnaHQ6ODgwcHg7XG5cdG92ZXJmbG93OmhpZGRlbjtcbn1cbiNjaGFydF9kaXYgcGF0aCB7XG5cdC8vIHN0cm9rZS13aWR0aDoxOyBcblx0c3Ryb2tlOiNmZmY7XG5cblx0Jjpob3ZlciB7XG5cdFx0c3Ryb2tlOiNmZGQ3MjY7XG5cdFx0ZmlsbDojZmRkNzI2O1xuXHRcdGN1cnNvcjpwb2ludGVyO1xuXHR9XG59XG4udG9vbHRpcCB7XG5cdGgzIHtcblx0XHRjb2xvcjokY29sb3JfcHJpbWFyeTtcblx0XHRwYWRkaW5nLWJvdHRvbTowO1xuXHRcdG1hcmdpbi1ib3R0b206NXB4O1xuXHR9XG5cdFxuXHR3aWR0aDogMjAwcHg7XG59XG4uZ29vZ2xlLXZpc3VhbGl6YXRpb24tdG9vbHRpcC1pdGVtOmZpcnN0LWNoaWxkIHtcblx0ZGlzcGxheTpub25lO1xufVxuXG4ubWFwLWNvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXG5cdCNjaGFydF9kaXYge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLWxlZnQ6MzBweDtcblx0XHRcdG1hcmdpbi1yaWdodDogLTMwcHg7XG5cdFx0fVxuXHR9XG5cdGgyIHtcblx0XHRmb250LXNpemU6IDMycHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XG5cdFx0bWFyZ2luOiA0MHB4IDA7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxuXG5cdC8vIENUQSBCdXR0b25zIFxuXG5cdC5jdGEtYnV0dG9ucyB7XG5cdFx0ZGlzcGxheTpub25lO1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wKSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGxlZnQ6IDA7XG5cdFx0Ym90dG9tOiAxMzBweDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCRkZXNrdG9wTWVkKSB7XG5cdFx0XHR3aWR0aDogMTA2OHB4O1x0XG5cdFx0fVxuXG5cdFx0dWwge1xuXHRcdFx0QGluY2x1ZGUgY2xlYXJmaXg7XG5cdFx0XHRtYXJnaW46MDtcblx0XHRcdHBhZGRpbmc6MCAwIDVweDtcblx0XHRcdGxpc3Qtc3R5bGU6bm9uZTtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0XHRsaSB7XG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDVweDtcblxuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3JfNTtcblx0XHRcdFx0XHRwYWRkaW5nOjVweCAxMHB4O1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHRcdGNvbG9yOiAkY29sb3JfNjtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRAaW5jbHVkZSBtZWRpYSgkZGVza3RvcE1lZCkge1xuXHRcdFx0XHRcdFx0cGFkZGluZzo1cHggMjBweDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQuY3RhLWljb24ge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHRcdFx0XHRcdGNvbG9yOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiRjb2xvcl82O1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0XHRcdFx0XHRcdHdpZHRoOjQ4cHg7XG5cdFx0XHRcdFx0XHRoZWlnaHQ6NDhweDtcblx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA0OHB4O1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAyNHB4O1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7IFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdFx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFtjbGFzc149XCJpY29uLVwiXSwgW2NsYXNzKj1cIiBpY29uLVwiXSB7XG5cdFx0XHRcdFx0XHRjb2xvcjokY29sb3JfNTtcblx0XHRcdFx0XHRcdHBhZGRpbmctbGVmdDoyMHB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDQ4cHg7XG5cdFx0XHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdFx0XHRcdGJhY2tncm91bmQ6JGNvbG9yXzQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5tb2JpbGUtbGlzdCB7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJGRlc2t0b3ApIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXHRcdG1hcmdpbi10b3A6IDMwcHg7XG5cdFx0dWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzowO1xuXHRcdFx0bGlzdC1zdHlsZTpub25lO1xuXHRcdFx0QGluY2x1ZGUgb3V0ZXItY29udGFpbmVyO1xuXHRcdFx0bGkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfNztcblx0XHRcdFx0Y29sb3I6ICRjb2xvcl90ZXJ0aWFyeTtcblxuXHRcdFx0XHQmLnRhYmxldC1oZWFkZXIsXG5cdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdHBhZGRpbmc6MTBweCAyMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRzcGFuIHtcblx0XHRcdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdFx0d2lkdGg6IDQwcHg7XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0cGFkZGluZzoxMHB4IDIwcHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdHNwYW4ge1xuXHRcdFx0XHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6JGNvbG9yXzY7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdCY6bnRoLWNoaWxkKDJuKzMpIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWZlZmVmO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHQmOm50aC1jaGlsZCgybis0KSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogJGNvbG9yX3RlcnRpYXJ5O1xuXHRcdFx0XHR9XG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKG1heC13aWR0aCAkdGFibGV0KSB7XG5cdFx0XHRcdFx0Ly8gQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDIgb2YgMik7XG5cdFx0XHRcdFx0Ly8gQGluY2x1ZGUgb21lZ2EoMm4pO1xuXHRcdFx0XHRcdCYudGFibGV0LWhlYWRlciB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdEBpbmNsdWRlIG1lZGlhKCR0YWJsZXQpIHtcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0biszKSxcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis0KSB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjZWZlZmVmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis1KSxcblx0XHRcdFx0XHQmOm50aC1jaGlsZCg0bis2KSB7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAkY29sb3JfdGVydGlhcnk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygzIG9mIDYpO1xuXHRcdFx0XHRcdC8vIEBpbmNsdWRlIG9tZWdhLXJlc2V0KDJuKTtcblx0XHRcdFx0XHRAaW5jbHVkZSBvbWVnYSgybik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH1cblx0fVxufVxuXG4vLyBTcG9uc29ycyBMaXN0XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi5zcG9uc29yLWNvbnRhaW5lciB7XG5cdGJhY2tncm91bmQ6ICNmZmY7XG59XG5cbi5zcG9uc29ycy1saXN0IHtcblx0cGFkZGluZzogMDtcblx0bWFyZ2luOiAwO1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRcblx0QGluY2x1ZGUgbWVkaWEoJHRhYmxldCkge1xuXHRcdEBpbmNsdWRlIGFsaWduLWl0ZW1zKGNlbnRlcik7XG5cdFx0QGluY2x1ZGUgZGlzcGxheShmbGV4KTtcblx0XHRAaW5jbHVkZSBmbGV4LWRpcmVjdGlvbihyb3cpO1xuXHRcdEBpbmNsdWRlIGp1c3RpZnktY29udGVudChjZW50ZXIpO1xuXHR9XG5cblx0LnNwb25zb3Ige1xuXHRcdHdpZHRoOiAyNTBweDtcblx0XHRwYWRkaW5nOiAyMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFxuXHRcdEBpbmNsdWRlIG1lZGlhKCR0YWJsZXQpIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4iLCIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSGVscGVycyBQYXJ0aWFsXG4vLyBWYXJpb3VzIGNsYXNzZXMgdGhhdCB3aWxsIGhlbHAgY2xlYW4gdXAgbGF5b3V0cyBhbmQgc3R5bGVzXG4vLyAoYykgQXRsYW50aWMgQlQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LWluZGVudDogLTk5OWVtO1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICpsaW5lLWhlaWdodDogMDtcbiAgICBiciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uaGlkZGVuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4udmlzdWFsbHloaWRkZW4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBib3JkZXI6IDA7XG4gICAgJi5mb2N1c2FibGUge1xuICAgICAgICAmOmFjdGl2ZSxcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICAgICAgICBjbGlwOiBhdXRvO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnZpc2libGUge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmdyb3VwIHtcbiAgICAqem9vbTogMTtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG59XG5cbi8vIFByZXZlbnQgbGF5b3V0IGJyZWFrIHdpdGggR29vZ2xlIEFkV29yZHNcbmltZ1tzcmMqPVwiZ29vZ2xlYWRzZXJ2aWNlcy5jb21cIl0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTkwMDBlbTtcbn0iLCIvLyBWYXJpYWJsZSBzZXR0aW5ncyBmb3IgL2FkZG9ucy9wcmVmaXhlci5zY3NzXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1tb3ppbGxhOiAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1zcGVjOiAgICAgIHRydWUgIWRlZmF1bHQ7IC8vIHJlcXVpcmVkIGZvciBrZXlmcmFtZSBtaXhpblxuIiwiJGVtLWJhc2U6IDE2cHggIWRlZmF1bHQ7XG4iLCJAZnVuY3Rpb24gX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpIHtcbiAgQGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtcG9zaXRpb25zXG4gIGFuZCAoJGdyYWRpZW50LXR5cGUgPT0gcmFkaWFsKVxuICBhbmQgKHR5cGUtb2YoJGdyYWRpZW50LXBvc2l0aW9ucykgIT0gY29sb3IpIHtcbiAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvc2l0aW9ucyk7XG4gIH1cbiAgQHJldHVybiAkZ3JhZGllbnQtcG9zaXRpb25zO1xufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItcG9zaXRpb25zLXBhcnNlcigkcG9zKSB7XG4gICR0eXBlOiB0eXBlLW9mKG50aCgkcG9zLCAxKSk7XG4gICRzcGVjOiBudWxsO1xuICAkZGVncmVlOiBudWxsO1xuICAkc2lkZTogbnVsbDtcbiAgJGNvcm5lcjogbnVsbDtcbiAgJGxlbmd0aDogbGVuZ3RoKCRwb3MpO1xuICAvLyBQYXJzZSBTaWRlIGFuZCBjb3JuZXIgcG9zaXRpb25zXG4gIEBpZiAoJGxlbmd0aCA+IDEpIHtcbiAgICBAaWYgbnRoKCRwb3MsIDEpID09IFwidG9cIiB7IC8vIE5ld2VyIHN5bnRheFxuICAgICAgJHNpZGU6IG50aCgkcG9zLCAyKTtcblxuICAgICAgQGlmICRsZW5ndGggPT0gMiB7IC8vIGVnLiB0byB0b3BcbiAgICAgICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGFiaWxpdHlcbiAgICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDIpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMyB7IC8vIGVnLiB0byB0b3AgbGVmdFxuICAgICAgICAkY29ybmVyOiBudGgoJHBvcywgMyk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRsZW5ndGggPT0gMiB7IC8vIE9sZGVyIHN5bnRheCAoXCJ0b3AgbGVmdFwiKVxuICAgICAgJHNpZGU6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAxKSk7XG4gICAgICAkY29ybmVyOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgIH1cblxuICAgIEBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IHRvcFwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJ0b3AgcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJyaWdodCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIHJpZ2h0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwibGVmdCBib3R0b21cIikgb3IgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwiYm90dG9tIGxlZnRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICAkc3BlYzogdG8gJHNpZGUgJGNvcm5lcjtcbiAgfVxuICBAZWxzZSBpZiAkbGVuZ3RoID09IDEge1xuICAgIC8vIFN3YXAgZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5XG4gICAgQGlmICR0eXBlID09IHN0cmluZyB7XG4gICAgICAkZGVncmVlOiAkcG9zO1xuICAgICAgJHNwZWM6IHRvIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkZGVncmVlOiAtMjcwIC0gJHBvczsgLy9yb3RhdGUgdGhlIGdyYWRpZW50IG9wcG9zaXRlIGZyb20gc3BlY1xuICAgICAgJHNwZWM6ICRwb3M7XG4gICAgfVxuICB9XG4gICRkZWdyZWU6IHVucXVvdGUoJGRlZ3JlZSArIFwiLFwiKTtcbiAgJHNwZWM6ICAgdW5xdW90ZSgkc3BlYyArIFwiLFwiKTtcbiAgQHJldHVybiAkZGVncmVlICRzcGVjO1xufVxuXG5AZnVuY3Rpb24gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcykge1xuIEByZXR1cm4gaWYoJHBvcyA9PSBsZWZ0LCByaWdodCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gcmlnaHQsIGxlZnQsIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IHRvcCwgYm90dG9tLCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSBib3R0b20sIHRvcCwgbnVsbCk7XG59XG4iLCJAZnVuY3Rpb24gX3JhZGlhbC1hcmctcGFyc2VyKCRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZSkge1xuICBAZWFjaCAkdmFsdWUgaW4gJEcxLCAkRzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJEcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkRzEge1xuICAgICAgICAgICAgJEcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkRzEge1xuICAgICAgICAgICAgJEcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkRzIge1xuICAgICAgICAgICAgJEcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICAkc2hhcGUtc2l6ZTogbnRoKCRncmFkaWVudC1wb3MsIDEpO1xuICAkcG9zOiAgICAgICAgbnRoKCRncmFkaWVudC1wb3MsIDIpO1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgJHByZS1zcGVjOiB1bnF1b3RlKGlmKCRwb3MsIFwiI3skcG9zfSwgXCIsIG51bGwpKVxuICAgICAgICAgICAgIHVucXVvdGUoaWYoJHNoYXBlLXNpemUsIFwiI3skc2hhcGUtc2l6ZX0sXCIsIG51bGwpKTtcbiAgJHBvcy1zcGVjOiBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG5cbiAgJHNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyRwb3Mtc3BlY31cIjtcblxuICAvLyBBZGQgY29tbWFcbiAgQGlmICgkc3BlYyAhPSAnICAnKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCJcbiAgfVxuXG4gIEByZXR1cm4gJHByZS1zcGVjICRzcGVjO1xufVxuIiwiLy8gVXNlciBmb3IgbGluZWFyIGFuZCByYWRpYWwgZ3JhZGllbnRzIHdpdGhpbiBiYWNrZ3JvdW5kLWltYWdlIG9yIGJvcmRlci1pbWFnZSBwcm9wZXJ0aWVzXG5cbkBmdW5jdGlvbiBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnRzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcjogZmFsc2UpIHtcbiAgJHByZS1zcGVjOiBudWxsO1xuICAkc3BlYzogbnVsbDtcbiAgJHZlbmRvci1ncmFkaWVudHM6IG51bGw7XG4gIEBpZiAkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIge1xuICAgIEBpZiAkZ3JhZGllbnQtcG9zaXRpb25zIHtcbiAgICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IHJhZGlhbCB7XG4gICAgJHByZS1zcGVjOiBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMSk7XG4gICAgJHNwZWM6ICAgICBudGgoJGdyYWRpZW50LXBvc2l0aW9ucywgMik7XG4gIH1cblxuICBAaWYgJHZlbmRvciB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IC0jeyR2ZW5kb3J9LSN7JGdyYWRpZW50LXR5cGV9LWdyYWRpZW50KCN7JHByZS1zcGVjfSAkZ3JhZGllbnRzKTtcbiAgfVxuICBAZWxzZSBpZiAkdmVuZG9yID09IGZhbHNlIHtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogXCIjeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRzcGVjfSAjeyRncmFkaWVudHN9KVwiO1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiB1bnF1b3RlKCR2ZW5kb3ItZ3JhZGllbnRzKTtcbiAgfVxuICBAcmV0dXJuICR2ZW5kb3ItZ3JhZGllbnRzO1xufVxuIiwiQGZ1bmN0aW9uIF9zaGFwZS1zaXplLXN0cmlwcGVyKCRzaGFwZS1zaXplKSB7XG4gICRzaGFwZS1zaXplLXNwZWM6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkc2hhcGUtc2l6ZSB7XG4gICAgQGlmICgkdmFsdWUgPT0gXCJjb3ZlclwiKSBvciAoJHZhbHVlID09IFwiY29udGFpblwiKSB7XG4gICAgICAkdmFsdWU6IG51bGw7XG4gICAgfVxuICAgICRzaGFwZS1zaXplLXNwZWM6IFwiI3skc2hhcGUtc2l6ZS1zcGVjfSAjeyR2YWx1ZX1cIjtcbiAgfVxuICBAcmV0dXJuICRzaGFwZS1zaXplLXNwZWM7XG59XG4iLCIvLyBGbGV4aWJsZSBncmlkXG5AZnVuY3Rpb24gZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucykge1xuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuLy8gRmxleGlibGUgZ3V0dGVyXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbi8vIFRoZSAkZmctY29sdW1uLCAkZmctZ3V0dGVyIGFuZCAkZmctbWF4LWNvbHVtbnMgdmFyaWFibGVzIG11c3QgYmUgZGVmaW5lZCBpbiB5b3VyIGJhc2Ugc3R5bGVzaGVldCB0byBwcm9wZXJseSB1c2UgdGhlIGZsZXgtZ3JpZCBmdW5jdGlvbi5cbi8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGZsdWlkIGdyaWQgZXF1YXRpb24gKHRhcmdldCAvIGNvbnRleHQgPSByZXN1bHQpIGFuZCB1c2VzIGNvbHVtbnMgdG8gaGVscCBkZWZpbmUgZWFjaC5cbi8vXG4vLyBUaGUgY2FsY3VsYXRpb24gcHJlc3VtZXMgdGhhdCB5b3VyIGNvbHVtbiBzdHJ1Y3R1cmUgd2lsbCBiZSBtaXNzaW5nIHRoZSBsYXN0IGd1dHRlcjpcbi8vXG4vLyAgIC0tIGNvbHVtbiAtLSBndXR0ZXIgLS0gY29sdW1uIC0tIGd1dHRlciAtLSBjb2x1bW5cbi8vXG4vLyAgJGZnLWNvbHVtbjogNjBweDsgICAgICAgICAgICAgLy8gQ29sdW1uIFdpZHRoXG4vLyAgJGZnLWd1dHRlcjogMjVweDsgICAgICAgICAgICAgLy8gR3V0dGVyIFdpZHRoXG4vLyAgJGZnLW1heC1jb2x1bW5zOiAxMjsgICAgICAgICAgLy8gVG90YWwgQ29sdW1ucyBGb3IgTWFpbiBDb250YWluZXJcbi8vXG4vLyAgZGl2IHtcbi8vICAgIHdpZHRoOiBmbGV4LWdyaWQoNCk7ICAgICAgICAvLyByZXR1cm5zICgzMTVweCAvIDk5NXB4KSA9IDMxLjY1ODI5JTtcbi8vICAgIG1hcmdpbi1sZWZ0OiBmbGV4LWd1dHRlcigpOyAvLyByZXR1cm5zICgyNXB4IC8gOTk1cHgpID0gMi41MTI1NiU7XG4vL1xuLy8gICAgcCB7XG4vLyAgICAgIHdpZHRoOiBmbGV4LWdyaWQoMiwgNCk7ICAvLyByZXR1cm5zICgxNDVweCAvIDMxNXB4KSA9IDQ2LjAzMTc0NiU7XG4vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8gICAgICBtYXJnaW46IGZsZXgtZ3V0dGVyKDQpOyAgLy8gcmV0dXJucyAoMjVweCAvIDMxNXB4KSA9IDcuOTM2NTA4JTtcbi8vICAgIH1cbi8vXG4vLyAgICBibG9ja3F1b3RlIHtcbi8vICAgICAgZmxvYXQ6IGxlZnQ7XG4vLyAgICAgIHdpZHRoOiBmbGV4LWdyaWQoMiwgNCk7IC8vIHJldHVybnMgKDE0NXB4IC8gMzE1cHgpID0gNDYuMDMxNzQ2JTtcbi8vICAgIH1cbi8vICB9IiwiQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbi8vIFRoZSAkZ3ctY29sdW1uIGFuZCAkZ3ctZ3V0dGVyIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQgaW4geW91ciBiYXNlIHN0eWxlc2hlZXQgdG8gcHJvcGVybHkgdXNlIHRoZSBncmlkLXdpZHRoIGZ1bmN0aW9uLlxuLy9cbi8vICAkZ3ctY29sdW1uOiAxMDBweDsgICAgICAgICAvLyBDb2x1bW4gV2lkdGhcbi8vICAkZ3ctZ3V0dGVyOiA0MHB4OyAgICAgICAgICAvLyBHdXR0ZXIgV2lkdGhcbi8vXG4vLyAgZGl2IHtcbi8vICAgIHdpZHRoOiBncmlkLXdpZHRoKDQpOyAgICAvLyByZXR1cm5zIDUyMHB4O1xuLy8gICAgbWFyZ2luLWxlZnQ6ICRndy1ndXR0ZXI7IC8vIHJldHVybnMgNDBweDtcbi8vICB9XG4iLCJAZnVuY3Rpb24gZ29sZGVuLXJhdGlvKCR2YWx1ZSwgJGluY3JlbWVudCkge1xuICBAcmV0dXJuIG1vZHVsYXItc2NhbGUoJHZhbHVlLCAkaW5jcmVtZW50LCAkZ29sZGVuKVxufVxuIiwiQGZ1bmN0aW9uIGxpbmVhci1ncmFkaWVudCgkcG9zLCAkZ3JhZGllbnRzLi4uKSB7XG4gICR0eXBlOiBsaW5lYXI7XG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuXG4gIC8vIGlmICRwb3MgZG9lc24ndCBleGlzdCwgZml4ICRncmFkaWVudFxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJGdyYWRpZW50czogemlwKCRwb3MgJGdyYWRpZW50cyk7XG4gICAgJHBvczogZmFsc2U7XG4gIH1cblxuICAkdHlwZS1ncmFkaWVudDogJHR5cGUsICRwb3MsICRncmFkaWVudHM7XG4gIEByZXR1cm4gJHR5cGUtZ3JhZGllbnQ7XG59XG4iLCIvLyBTY2FsaW5nIFZhcmFpYmxlc1xuJGdvbGRlbjogICAgICAgICAgIDEuNjE4O1xuJG1pbm9yLXNlY29uZDogICAgIDEuMDY3O1xuJG1ham9yLXNlY29uZDogICAgIDEuMTI1O1xuJG1pbm9yLXRoaXJkOiAgICAgIDEuMjtcbiRtYWpvci10aGlyZDogICAgICAxLjI1O1xuJHBlcmZlY3QtZm91cnRoOiAgIDEuMzMzO1xuJGF1Z21lbnRlZC1mb3VydGg6IDEuNDE0O1xuJHBlcmZlY3QtZmlmdGg6ICAgIDEuNTtcbiRtaW5vci1zaXh0aDogICAgICAxLjY7XG4kbWFqb3Itc2l4dGg6ICAgICAgMS42Njc7XG4kbWlub3Itc2V2ZW50aDogICAgMS43Nzg7XG4kbWFqb3Itc2V2ZW50aDogICAgMS44NzU7XG4kb2N0YXZlOiAgICAgICAgICAgMjtcbiRtYWpvci10ZW50aDogICAgICAyLjU7XG4kbWFqb3ItZWxldmVudGg6ICAgMi42Njc7XG4kbWFqb3ItdHdlbGZ0aDogICAgMztcbiRkb3VibGUtb2N0YXZlOiAgICA0O1xuXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkdmFsdWUsICRpbmNyZW1lbnQsICRyYXRpbykge1xuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcbiAgJHZhbHVlOiAkdjE7XG5cbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXG4gIEB3aGlsZSAkdjIgPiAkdjEge1xuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcbiAgfVxuICBAd2hpbGUgJHYyIDwgJHYxIHtcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxuICB9XG5cbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xuXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxICogJHJhdGlvKSA+ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxuICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIHtcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgLyAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICAgJHB4dmFsOiBzdHJpcC11bml0cygkcHh2YWwpO1xuICB9XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAgICRiYXNlOiBzdHJpcC11bml0cygkYmFzZSk7XG4gIH1cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMWVtO1xufVxuIiwiLy8gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBhbmQgdXNlZCBieSB0aGUgYmFja2dyb3VuZC1pbWFnZSBtaXhpbi5cbkBmdW5jdGlvbiByYWRpYWwtZ3JhZGllbnQoJEcxLCAgICAgICAgJEcyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICAkRzQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRHNTogbnVsbCwgICRHNjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJEc3OiBudWxsLCAgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICAkRzEwOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkcG9zOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAkc2hhcGUtc2l6ZTogbnVsbCkge1xuXG4gICRkYXRhOiBfcmFkaWFsLWFyZy1wYXJzZXIoJEcxLCAkRzIsICRwb3MsICRzaGFwZS1zaXplKTtcbiAgJEcxOiAgbnRoKCRkYXRhLCAxKTtcbiAgJEcyOiAgbnRoKCRkYXRhLCAyKTtcbiAgJHBvczogbnRoKCRkYXRhLCAzKTtcbiAgJHNoYXBlLXNpemU6IG50aCgkZGF0YSwgNCk7XG5cbiAgJHR5cGU6IHJhZGlhbDtcbiAgJGdyYWRpZW50OiAkRzEsICRHMiwgJEczLCAkRzQsICRHNSwgJEc2LCAkRzcsICRHOCwgJEc5LCAkRzEwO1xuXG4gICR0eXBlLWdyYWRpZW50OiAkdHlwZSwgJHNoYXBlLXNpemUgJHBvcywgJGdyYWRpZW50O1xuICBAcmV0dXJuICR0eXBlLWdyYWRpZW50O1xufVxuXG5cbiIsIi8vIFNydGlwcyB0aGUgdW5pdHMgZnJvbSBhIHZhbHVlLiBlLmcuIDEycHggLT4gMTJcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWwpIHtcbiAgQHJldHVybiAoJHZhbCAvICgkdmFsICogMCArIDEpKTtcbn1cbiIsIi8vIEFkZCBwZXJjZW50YWdlIG9mIHdoaXRlIHRvIGEgY29sb3JcbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnQpe1xuICBAcmV0dXJuIG1peCh3aGl0ZSwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG5cbi8vIEFkZCBwZXJjZW50YWdlIG9mIGJsYWNrIHRvIGEgY29sb3JcbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KXtcbiAgQHJldHVybiBtaXgoYmxhY2ssICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiLy8gUmV0dXJuIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyBpZiBhcHByb3ByaWF0ZVxuLy8gRXhhbXBsZTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygodHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZCksIG1veikgLT4gLW1vei10cmFuc2Zvcm0sIGNvbG9yLCBiYWNrZ3JvdW5kXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcHMsICR2ZW5kb3I6IGZhbHNlKSB7XG5cdCRuZXctcHJvcHM6ICgpO1xuXHRcblx0QGVhY2ggJHByb3AgaW4gJHByb3BzIHtcblx0XHQkbmV3LXByb3BzOiBhcHBlbmQoJG5ldy1wcm9wcywgdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yKSwgY29tbWEpO1xuXHR9XG5cblx0QHJldHVybiAkbmV3LXByb3BzO1xufVxuXG5AZnVuY3Rpb24gdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lKCRwcm9wLCAkdmVuZG9yOiBmYWxzZSkge1xuXHQvLyBwdXQgb3RoZXIgcHJvcGVydGllcyB0aGF0IG5lZWQgdG8gYmUgcHJlZml4ZWQgaGVyZSBhc3dlbGxcblx0QGlmICR2ZW5kb3IgYW5kICRwcm9wID09IHRyYW5zZm9ybSB7XG5cdFx0QHJldHVybiB1bnF1b3RlKCctJyskdmVuZG9yKyctJyskcHJvcCk7XG5cdH1cblx0QGVsc2Uge1xuXHRcdEByZXR1cm4gJHByb3A7XG5cdH1cbn0iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbi8vIE9mZmljaWFsIGFuaW1hdGlvbiBzaG9ydGhhbmQgcHJvcGVydHkuXG5AbWl4aW4gYW5pbWF0aW9uICgkYW5pbWF0aW9ucy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRhbmltYXRpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBJbmRpdmlkdWFsIEFuaW1hdGlvbiBQcm9wZXJ0aWVzXG5AbWl4aW4gYW5pbWF0aW9uLW5hbWUgKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tbmFtZSwgJG5hbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24gKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZHVyYXRpb24sICR0aW1lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiAoJG1vdGlvbnMuLi4pIHtcbi8vIGVhc2UgfCBsaW5lYXIgfCBlYXNlLWluIHwgZWFzZS1vdXQgfCBlYXNlLWluLW91dFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkbW90aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCAoJHZhbHVlcy4uLikge1xuLy8gaW5maW5pdGUgfCA8bnVtYmVyPlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCAkdmFsdWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tZGlyZWN0aW9uICgkZGlyZWN0aW9ucy4uLikge1xuLy8gbm9ybWFsIHwgYWx0ZXJuYXRlXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kaXJlY3Rpb24sICRkaXJlY3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSAoJHN0YXRlcy4uLikge1xuLy8gcnVubmluZyB8IHBhdXNlZFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tcGxheS1zdGF0ZSwgJHN0YXRlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5ICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cblxuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUgKCRtb2Rlcy4uLikge1xuLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSAoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gQmFja2ZhY2UtdmlzaWJpbGl0eSBtaXhpblxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYmFja2ZhY2UtdmlzaWJpbGl0eSwgJHZpc2liaWxpdHksIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kcyB1c2luZyBzaG9ydGhhbmRcbi8vIG5vdGF0aW9uLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSAgICAgICAsICRiYWNrZ3JvdW5kLTI6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTM6IG51bGwsICRiYWNrZ3JvdW5kLTQ6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTU6IG51bGwsICRiYWNrZ3JvdW5kLTY6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTc6IG51bGwsICRiYWNrZ3JvdW5kLTg6IG51bGwsXG4gICRiYWNrZ3JvdW5kLTk6IG51bGwsICRiYWNrZ3JvdW5kLTEwOiBudWxsLFxuICAkZmFsbGJhY2s6IG51bGxcbikge1xuICAkYmFja2dyb3VuZHM6ICRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsXG4gICAgICAgICAgICAgICAgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCxcbiAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC01LCAkYmFja2dyb3VuZC02LFxuICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsXG4gICAgICAgICAgICAgICAgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTA7XG5cbiAgJGZhbGxiYWNrLWNvbG9yOiBmYWxzZTtcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmYWxsYmFjay1jb2xvcjogX2V4dHJhY3QtYmFja2dyb3VuZC1jb2xvcigkYmFja2dyb3VuZHMpO1xuICB9XG5cbiAgQGlmICRmYWxsYmFjay1jb2xvciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGZhbGxiYWNrLWNvbG9yO1xuICB9XG4gIGJhY2tncm91bmQ6IF9iYWNrZ3JvdW5kLWFkZC1wcmVmaXgoJGJhY2tncm91bmRzLCB3ZWJraXQpO1xuICBiYWNrZ3JvdW5kOiBfYmFja2dyb3VuZC1hZGQtcHJlZml4KCRiYWNrZ3JvdW5kcyk7XG59XG5cbkBmdW5jdGlvbiBfZXh0cmFjdC1iYWNrZ3JvdW5kLWNvbG9yKCRiYWNrZ3JvdW5kcykge1xuICAkZmluYWwtYmctbGF5ZXI6IG50aCgkYmFja2dyb3VuZHMsIGxlbmd0aCgkYmFja2dyb3VuZHMpKTtcbiAgQGlmIHR5cGUtb2YoJGZpbmFsLWJnLWxheWVyKSA9PSBsaXN0IHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkZmluYWwtYmctbGF5ZXIpIHtcbiAgICAgICR2YWx1ZTogbnRoKCRmaW5hbC1iZy1sYXllciwgJGkpO1xuICAgICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBjb2xvciB7XG4gICAgICAgIEByZXR1cm4gJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG5AZnVuY3Rpb24gX2JhY2tncm91bmQtYWRkLXByZWZpeCgkYmFja2dyb3VuZHMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGJhY2tncm91bmRzKSB7XG4gICAgJHNob3J0aGFuZDogbnRoKCRiYWNrZ3JvdW5kcywgJGkpOyAvLyBHZXQgbWVtYmVyIGZvciBjdXJyZW50IGluZGV4XG4gICAgJHR5cGU6IHR5cGUtb2YoJHNob3J0aGFuZCk7IC8vIEdldCB0eXBlIG9mIHZhcmlhYmxlIC0gTGlzdCAoZ3JhZGllbnQpIG9yIFN0cmluZyAoaW1hZ2UpXG5cbiAgICAvLyBJZiBzaG9ydGhhbmQgaXMgYSBsaXN0IChncmFkaWVudClcbiAgICBAaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgICAkZmlyc3QtbWVtYmVyOiBudGgoJHNob3J0aGFuZCwgMSk7IC8vIEdldCBmaXJzdCBtZW1iZXIgb2Ygc2hvcnRoYW5kXG5cbiAgICAgIC8vIExpbmVhciBHcmFkaWVudFxuICAgICAgQGlmIGluZGV4KGxpbmVhciByYWRpYWwsIG50aCgkZmlyc3QtbWVtYmVyLCAxKSkge1xuICAgICAgICAkZ3JhZGllbnQtdHlwZTogbnRoKCRmaXJzdC1tZW1iZXIsIDEpOyAvLyBsaW5lYXIgfHwgcmFkaWFsXG4gICAgICAgICRncmFkaWVudC1hcmdzOiAgICAgIGZhbHNlO1xuICAgICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBmYWxzZTtcbiAgICAgICAgJHNob3J0aGFuZC1zdGFydDogICAgZmFsc2U7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmaXJzdC1tZW1iZXIpID09IGxpc3QgeyAvLyBMaW5lYXIgZ3JhZGllbnQgcGx1cyBhZGRpdGlvbmFsIHNob3J0aGFuZCB2YWx1ZXMgLSBsZyhyZWQsb3JhbmdlKXJlcGVhdCwuLi5cbiAgICAgICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBudGgoJGZpcnN0LW1lbWJlciwgMik7XG4gICAgICAgICAgJGdyYWRpZW50LWFyZ3M6ICAgICAgbnRoKCRmaXJzdC1tZW1iZXIsIDMpO1xuICAgICAgICAgICRzaG9ydGhhbmQtc3RhcnQ6IDI7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgeyAvLyBMaW5lYXIgZ3JhZGllbnQgb25seSAtIGxnKHJlZCxvcmFuZ2UpLC4uLlxuICAgICAgICAgICRncmFkaWVudC1wb3NpdGlvbnM6IG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgICAgICAgICAkZ3JhZGllbnQtYXJnczogICAgICBudGgoJHNob3J0aGFuZCwgMyk7IC8vIEdldCBncmFkaWVudCAocmVkLCBibHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2dyYWRpZW50LXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXR5cGUsICRncmFkaWVudC1wb3NpdGlvbnMpO1xuICAgICAgICAkZ3JhZGllbnQ6IF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudC1hcmdzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcik7XG5cbiAgICAgICAgLy8gQXBwZW5kIGFueSBhZGRpdGlvbmFsIHNob3J0aGFuZCBhcmdzIHRvIGdyYWRpZW50XG4gICAgICAgIEBpZiAkc2hvcnRoYW5kLXN0YXJ0IHtcbiAgICAgICAgICBAZm9yICRqIGZyb20gJHNob3J0aGFuZC1zdGFydCB0aHJvdWdoIGxlbmd0aCgkc2hvcnRoYW5kKSB7XG4gICAgICAgICAgICAkZ3JhZGllbnQ6IGpvaW4oJGdyYWRpZW50LCBudGgoJHNob3J0aGFuZCwgJGopLCBzcGFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogYXBwZW5kKCRiYWNrZ3JvdW5kcy1wcmVmaXhlZCwgJGdyYWRpZW50LCBjb21tYSk7XG4gICAgICB9XG4gICAgICAvLyBJbWFnZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllc1xuICAgICAgQGVsc2Uge1xuICAgICAgICAkYmFja2dyb3VuZHMtcHJlZml4ZWQ6IGFwcGVuZCgkYmFja2dyb3VuZHMtcHJlZml4ZWQsICRzaG9ydGhhbmQsIGNvbW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSWYgc2hvcnRoYW5kIGlzIGEgc2ltcGxlIHN0cmluZyAoY29sb3Igb3IgaW1hZ2UpXG4gICAgQGVsc2UgaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRiYWNrZ3JvdW5kcy1wcmVmaXhlZDogam9pbigkYmFja2dyb3VuZHMtcHJlZml4ZWQsICRzaG9ydGhhbmQsIGNvbW1hKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkYmFja2dyb3VuZHMtcHJlZml4ZWQ7XG59XG5cbi8vRXhhbXBsZXM6XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZChsaW5lYXItZ3JhZGllbnQodG9wLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQocmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA0MCUgNDAlLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQodXJsKFwiL2ltYWdlcy9hLnBuZ1wiKSBuby1yZXBlYXQsIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQodXJsKFwiaW1hZ2UucG5nXCIpIGNlbnRlciBjZW50ZXIsIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCksIHVybChcImltYWdlLnBuZ1wiKSk7XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kLWltYWdlIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZCBpbWFnZXMgd2l0aFxuLy8gZ3JhZGllbnRzLCBvciBmb3Igc3RyaW5naW5nIG11bHRpcGxlIGdyYWRpZW50cyB0b2dldGhlci5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlcy4uLikge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBfYWRkLXByZWZpeCgkaW1hZ2VzLCB3ZWJraXQpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBfYWRkLXByZWZpeCgkaW1hZ2VzKTtcbn1cblxuQGZ1bmN0aW9uIF9hZGQtcHJlZml4KCRpbWFnZXMsICR2ZW5kb3I6IGZhbHNlKSB7XG4gICRpbWFnZXMtcHJlZml4ZWQ6ICgpO1xuICAkZ3JhZGllbnQtcG9zaXRpb25zOiBmYWxzZTtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGltYWdlcykge1xuICAgICR0eXBlOiB0eXBlLW9mKG50aCgkaW1hZ2VzLCAkaSkpOyAvLyBHZXQgdHlwZSBvZiB2YXJpYWJsZSAtIExpc3Qgb3IgU3RyaW5nXG5cbiAgICAvLyBJZiB2YXJpYWJsZSBpcyBhIGxpc3QgLSBHcmFkaWVudFxuICAgIEBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAgICRncmFkaWVudC10eXBlOiBudGgobnRoKCRpbWFnZXMsICRpKSwgMSk7IC8vIGxpbmVhciBvciByYWRpYWxcbiAgICAgICRncmFkaWVudC1wb3M6IG51bGw7XG4gICAgICAkZ3JhZGllbnQtYXJnczogbnVsbDtcblxuICAgICAgQGlmICgkZ3JhZGllbnQtdHlwZSA9PSBsaW5lYXIpIG9yICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpIHtcbiAgICAgICAgJGdyYWRpZW50LXBvczogIG50aChudGgoJGltYWdlcywgJGkpLCAyKTsgLy8gR2V0IGdyYWRpZW50IHBvc2l0aW9uXG4gICAgICAgICRncmFkaWVudC1hcmdzOiBudGgobnRoKCRpbWFnZXMsICRpKSwgMyk7IC8vIEdldCBhY3R1YWwgZ3JhZGllbnQgKHJlZCwgYmx1ZSlcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGdyYWRpZW50LWFyZ3M6IG50aChudGgoJGltYWdlcywgJGkpLCAyKTsgLy8gR2V0IGFjdHVhbCBncmFkaWVudCAocmVkLCBibHVlKVxuICAgICAgfVxuXG4gICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvcyk7XG4gICAgICAkZ3JhZGllbnQ6IF9yZW5kZXItZ3JhZGllbnRzKCRncmFkaWVudC1wb3NpdGlvbnMsICRncmFkaWVudC1hcmdzLCAkZ3JhZGllbnQtdHlwZSwgJHZlbmRvcik7XG4gICAgICAkaW1hZ2VzLXByZWZpeGVkOiBhcHBlbmQoJGltYWdlcy1wcmVmaXhlZCwgJGdyYWRpZW50LCBjb21tYSk7XG4gICAgfVxuICAgIC8vIElmIHZhcmlhYmxlIGlzIGEgc3RyaW5nIC0gSW1hZ2VcbiAgICBAZWxzZSBpZiAkdHlwZSA9PSBzdHJpbmcge1xuICAgICAgJGltYWdlcy1wcmVmaXhlZDogam9pbigkaW1hZ2VzLXByZWZpeGVkLCBudGgoJGltYWdlcywgJGkpLCBjb21tYSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGltYWdlcy1wcmVmaXhlZDtcbn1cblxuLy9FeGFtcGxlczpcbiAgLy9AaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGxpbmVhci1ncmFkaWVudCh0b3AsIG9yYW5nZSwgcmVkKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShyYWRpYWwtZ3JhZGllbnQoNTAlIDUwJSwgY292ZXIgY2lyY2xlLCBvcmFuZ2UsIHJlZCkpO1xuICAvL0BpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UodXJsKFwiL2ltYWdlcy9hLnBuZ1wiKSwgbGluZWFyLWdyYWRpZW50KG9yYW5nZSwgcmVkKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSh1cmwoXCJpbWFnZS5wbmdcIiksIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCksIHVybChcImltYWdlLnBuZ1wiKSk7XG4gIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShsaW5lYXItZ3JhZGllbnQoaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjI1KSAwJSwgaHNsYSgwLCAxMDAlLCAxMDAlLCAwLjA4KSA1MCUsIHRyYW5zcGFyZW50IDUwJSksIGxpbmVhci1ncmFkaWVudChvcmFuZ2UsIHJlZCkpO1xuIiwiQG1peGluIGJvcmRlci1pbWFnZSgkaW1hZ2VzKSB7XG4gIC13ZWJraXQtYm9yZGVyLWltYWdlOiBfYm9yZGVyLWFkZC1wcmVmaXgoJGltYWdlcywgd2Via2l0KTtcbiAgICAgLW1vei1ib3JkZXItaW1hZ2U6IF9ib3JkZXItYWRkLXByZWZpeCgkaW1hZ2VzLCBtb3opO1xuICAgICAgIC1vLWJvcmRlci1pbWFnZTogX2JvcmRlci1hZGQtcHJlZml4KCRpbWFnZXMsIG8pO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogX2JvcmRlci1hZGQtcHJlZml4KCRpbWFnZXMpO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG59XG5cbkBmdW5jdGlvbiBfYm9yZGVyLWFkZC1wcmVmaXgoJGltYWdlcywgJHZlbmRvcjogZmFsc2UpIHtcbiAgJGJvcmRlci1pbWFnZTogbnVsbDtcbiAgJGltYWdlcy10eXBlOiAgdHlwZS1vZihudGgoJGltYWdlcywgMSkpO1xuICAkZmlyc3QtdmFyOiAgICBudGgobnRoKCRpbWFnZXMsIDEpLCAxKTsgICAgICAgICAgLy8gR2V0IHR5cGUgb2YgR3JhZGllbnQgKExpbmVhciB8fCByYWRpYWwpXG5cbiAgLy8gSWYgaW5wdXQgaXMgYSBncmFkaWVudFxuICBAaWYgJGltYWdlcy10eXBlID09IHN0cmluZyB7XG4gICAgQGlmICgkZmlyc3QtdmFyID09IFwibGluZWFyXCIpIG9yICgkZmlyc3QtdmFyID09IFwicmFkaWFsXCIpIHtcbiAgICAgICRncmFkaWVudC10eXBlOiBudGgoJGltYWdlcywgMSk7ICAgICAgICAgICAvLyBHZXQgdHlwZSBvZiBncmFkaWVudCAobGluZWFyIHx8IHJhZGlhbClcbiAgICAgICRncmFkaWVudC1wb3M6ICBudGgoJGltYWdlcywgMik7ICAgICAgICAgICAvLyBHZXQgZ3JhZGllbnQgcG9zaXRpb25cbiAgICAgICRncmFkaWVudC1hcmdzOiBudGgoJGltYWdlcywgMyk7ICAgICAgICAgICAvLyBHZXQgYWN0dWFsIGdyYWRpZW50IChyZWQsIGJsdWUpXG4gICAgICAkZ3JhZGllbnQtcG9zaXRpb25zOiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvcyk7XG4gICAgICAkYm9yZGVyLWltYWdlOiAgX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50LWFyZ3MsICRncmFkaWVudC10eXBlLCAkdmVuZG9yKTtcbiAgICB9XG4gICAgLy8gSWYgaW5wdXQgaXMgYSBVUkxcbiAgICBAZWxzZSB7XG4gICAgICAkYm9yZGVyLWltYWdlOiAkaW1hZ2VzO1xuICAgIH1cbiAgfVxuICAvLyBJZiBpbnB1dCBpcyBncmFkaWVudCBvciB1cmwgKyBhZGRpdGlvbmFsIGFyZ3NcbiAgQGVsc2UgaWYgJGltYWdlcy10eXBlID09IGxpc3Qge1xuICAgICR0eXBlOiB0eXBlLW9mKG50aCgkaW1hZ2VzLCAxKSk7ICAgICAgICAgICAvLyBHZXQgdHlwZSBvZiB2YXJpYWJsZSAtIExpc3Qgb3IgU3RyaW5nXG5cbiAgICAvLyBJZiB2YXJpYWJsZSBpcyBhIGxpc3QgLSBHcmFkaWVudFxuICAgIEBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAgICRncmFkaWVudDogbnRoKCRpbWFnZXMsIDEpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IG50aCgkZ3JhZGllbnQsIDEpOyAgICAgICAgICAgLy8gR2V0IHR5cGUgb2YgZ3JhZGllbnQgKGxpbmVhciB8fCByYWRpYWwpXG4gICAgICAkZ3JhZGllbnQtcG9zOiAgbnRoKCRncmFkaWVudCwgMik7ICAgICAgICAgICAvLyBHZXQgZ3JhZGllbnQgcG9zaXRpb25cbiAgICAgICRncmFkaWVudC1hcmdzOiBudGgoJGdyYWRpZW50LCAzKTsgICAgICAgICAgIC8vIEdldCBhY3R1YWwgZ3JhZGllbnQgKHJlZCwgYmx1ZSlcbiAgICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC10eXBlLCAkZ3JhZGllbnQtcG9zKTtcbiAgICAgICRib3JkZXItaW1hZ2U6ICBfcmVuZGVyLWdyYWRpZW50cygkZ3JhZGllbnQtcG9zaXRpb25zLCAkZ3JhZGllbnQtYXJncywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3IpO1xuXG4gICAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaW1hZ2VzKSB7XG4gICAgICAgICRib3JkZXItaW1hZ2U6IGFwcGVuZCgkYm9yZGVyLWltYWdlLCBudGgoJGltYWdlcywgJGkpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkYm9yZGVyLWltYWdlO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuXG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBTaG9ydGhhbmQgQm9yZGVyLXJhZGl1cyBtaXhpbnNcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaWkpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci10b3AtbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG5cbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpaSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItdG9wLXJpZ2h0LXJhZGl1cywgJHJhZGlpLCBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMsICRyYWRpaSwgc3BlYyk7XG59XG4iLCJAbWl4aW4gYm94LXNpemluZyAoJGJveCkge1xuLy8gIGNvbnRlbnQtYm94IHwgYm9yZGVyLWJveCB8IGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXNpemluZywgJGJveCwgd2Via2l0IG1veiBzcGVjKTtcbn1cbiIsIkBtaXhpbiBjb2x1bW5zKCRhcmc6IGF1dG8pIHtcbi8vIDxjb2x1bW4tY291bnQ+IHx8IDxjb2x1bW4td2lkdGg+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbnMsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tY291bnQoJGludDogYXV0bykge1xuLy8gYXV0byB8fCBpbnRlZ2VyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1jb3VudCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1nYXAoJGxlbmd0aDogbm9ybWFsKSB7XG4vLyBub3JtYWwgfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1nYXAsICRsZW5ndGgsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZmlsbCgkYXJnOiBhdXRvKSB7XG4vLyBhdXRvIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLWZpbGwsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZSgkYXJnKSB7XG4vLyA8Ym9yZGVyLXdpZHRoPiB8fCA8Ym9yZGVyLXN0eWxlPiB8fCA8Y29sb3I+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtY29sb3IoJGNvbG9yKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1zdHlsZSgkc3R5bGU6IG5vbmUpIHtcbi8vIG5vbmUgfCBoaWRkZW4gfCBkYXNoZWQgfCBkb3R0ZWQgfCBkb3VibGUgfCBncm9vdmUgfCBpbnNldCB8IGluc2V0IHwgb3V0c2V0IHwgcmlkZ2UgfCBzb2xpZFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGggKCR3aWR0aDogbm9uZSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuLy8gbm9uZSB8fCBhbGxcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4td2lkdGgoJGxlbmd0aDogYXV0bykge1xuLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG5cbi8vIEN1c3RvbSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGZsZXhib3hcbkBtaXhpbiBib3goJG9yaWVudDogaW5saW5lLWF4aXMsICRwYWNrOiBzdGFydCwgJGFsaWduOiBzdHJldGNoKSB7XG4gIEBpbmNsdWRlIGRpc3BsYXktYm94O1xuICBAaW5jbHVkZSBib3gtb3JpZW50KCRvcmllbnQpO1xuICBAaW5jbHVkZSBib3gtcGFjaygkcGFjayk7XG4gIEBpbmNsdWRlIGJveC1hbGlnbigkYWxpZ24pO1xufVxuXG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtYWxpZ24oJGFsaWduOiBzdHJldGNoKSB7XG4vLyBzdGFydHxlbmR8Y2VudGVyfGJhc2VsaW5lfHN0cmV0Y2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWFsaWduLCAkYWxpZ24sIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtZGlyZWN0aW9uKCRkaXJlY3Rpb246IG5vcm1hbCkge1xuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYm94LWZsZXgoJHZhbHVlOiAwLjApIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1mbGV4LWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBPcmRlciBvZiB0aGUgaW5jbHVkZXMgbWF0dGVycywgYW5kIGl0IGlzOiBub3JtYWwsIGJvbGQsIGl0YWxpYywgYm9sZCtpdGFsaWMuXG5cbkBtaXhpbiBmb250LWZhY2UoJGZvbnQtZmFtaWx5LCAkZmlsZS1wYXRoLCAkd2VpZ2h0OiBub3JtYWwsICRzdHlsZTogbm9ybWFsLCAkYXNzZXQtcGlwZWxpbmU6IGZhbHNlICkge1xuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgICAgc3JjOiBmb250LXVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgICAgICAgICAgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgICAgICBmb250LXVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgICAgICAgICAgICAgICAgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgICAgIGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpICAgICAgICAgICAgICAgICBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgICAgIGZvbnQtdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgICAgICAgICAgICAgICBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgICAgIHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICAgICAgdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICAgICAgdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSAgICAgIGZvcm1hdCgnc3ZnJyk7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gaHlwaGVucygkaHlwaGVuYXRpb246IG5vbmUpIHtcbi8vIG5vbmUgfCBtYW51YWwgfCBhdXRvXG4gIEBpbmNsdWRlIHByZWZpeGVyKGh5cGhlbnMsICRoeXBoZW5hdGlvbiwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn0iLCIvLyBIaURQSSBtaXhpbi4gRGVmYXVsdCB2YWx1ZSBzZXQgdG8gMS4zIHRvIHRhcmdldCBHb29nbGUgTmV4dXMgNyAoaHR0cDovL2JqYW5nby5jb20vYXJ0aWNsZXMvbWluLWRldmljZS1waXhlbC1yYXRpby8pXG5AbWl4aW4gaGlkcGkoJHJhdGlvOiAxLjMpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICN7cm91bmQoJHJhdGlvKjk2KX1kcGkpLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAjeyRyYXRpb31kcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBpbWFnZS1yZW5kZXJpbmcgKCRtb2RlOm9wdGltaXplUXVhbGl0eSkge1xuXG4gIEBpZiAoJG1vZGUgPT0gb3B0aW1pemUtY29udHJhc3QpIHtcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlcztcbiAgICAgIGltYWdlLXJlbmRlcmluZzogLW8tY3Jpc3AtZWRnZXM7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJhc3Q7XG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IG9wdGltaXplLWNvbnRyYXN0O1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICAgaW1hZ2UtcmVuZGVyaW5nOiAkbW9kZTtcbiAgfVxufVxuIiwiLy8gTGVnYWN5IHN1cHBvcnQgZm9yIGlubGluZS1ibG9jayBpbiBJRTcgKG1heWJlIElFNilcbkBtaXhpbiBpbmxpbmUtYmxvY2sge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgem9vbTogMTtcbiAgKmRpc3BsYXk6IGlubGluZTtcbiAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xufVxuIiwiLy8gQWRkcyBrZXlmcmFtZXMgYmxvY2tzIGZvciBzdXBwb3J0ZWQgcHJlZml4ZXMsIHJlbW92aW5nIHJlZHVuZGFudCBwcmVmaXhlcyBpbiB0aGUgYmxvY2sncyBjb250ZW50XG5AbWl4aW4ga2V5ZnJhbWVzKCRuYW1lKSB7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdDogICAgJHByZWZpeC1mb3Itd2Via2l0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhOiAgICRwcmVmaXgtZm9yLW1vemlsbGE7XG4gICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1pY3Jvc29mdDogJHByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1vcGVyYTogICAgICRwcmVmaXgtZm9yLW9wZXJhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjOiAgICAgICRwcmVmaXgtZm9yLXNwZWM7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgQGluY2x1ZGUgZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpO1xuICAgICRwcmVmaXgtZm9yLXdlYmtpdDogdHJ1ZTtcbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3ItbW96aWxsYTogdHJ1ZTtcbiAgICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci1zcGVjIHtcbiAgICBAaW5jbHVkZSBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCk7XG4gICAgJHByZWZpeC1mb3Itc3BlYzogdHJ1ZTtcbiAgICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0O1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGE7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0O1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLW9wZXJhO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWM7XG59XG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRHMSwgJEcyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICRHNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc1OiBudWxsLCAkRzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHNzogbnVsbCwgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICRHMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuICAkcG9zLXNwZWM6IG51bGw7XG4gICRwb3MtZGVncmVlOiBudWxsO1xuXG4gIC8vIElmICRwb3MgaXMgbWlzc2luZyBmcm9tIG1peGluLCByZWFzc2lnbiB2YXJzIGFuZCBhZGQgZGVmYXVsdCBwb3NpdGlvblxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJEcxMDogJEc5OyAkRzk6ICRHODsgJEc4OiAkRzc7ICRHNzogJEc2OyAkRzY6ICRHNTtcbiAgICAgJEc1OiAkRzQ7ICRHNDogJEczOyAkRzM6ICRHMjsgJEcyOiAkRzE7ICRHMTogJHBvcztcbiAgICAgJHBvczogbnVsbDtcbiAgfVxuXG4gIEBpZiAkcG9zIHtcbiAgICAkcG9zaXRpb25zOiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcyk7XG4gICAgJHBvcy1kZWdyZWU6IG50aCgkcG9zaXRpb25zLCAxKTtcbiAgICAkcG9zLXNwZWM6ICAgbnRoKCRwb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgJGZ1bGw6ICRHMSwgJEcyLCAkRzMsICRHNCwgJEc1LCAkRzYsICRHNywgJEc4LCAkRzksICRHMTA7XG5cbiAgLy8gU2V0ICRHMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmFsbGJhY2stY29sb3I6IG50aCgkRzEsIDEpO1xuXG4gIC8vIElmICRmYWxsYmFjayBpcyBhIGNvbG9yIHVzZSB0aGF0IGNvbG9yIGFzIHRoZSBmYWxsYmFjayBjb2xvclxuICBAaWYgKHR5cGUtb2YoJGZhbGxiYWNrKSA9PSBjb2xvcikgb3IgKCRmYWxsYmFjayA9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAkZmFsbGJhY2stY29sb3I6ICRmYWxsYmFjaztcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoJHBvcy1kZWdyZWUgJGZ1bGwpOyAvLyBTYWZhcmkgNS4xKywgQ2hyb21lXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJsaW5lYXItZ3JhZGllbnQoI3skcG9zLXNwZWN9I3skZnVsbH0pXCIpO1xufVxuIiwiQG1peGluIHBlcnNwZWN0aXZlKCRkZXB0aDogbm9uZSkge1xuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBSZXF1aXJlcyBTYXNzIDMuMStcbkBtaXhpbiByYWRpYWwtZ3JhZGllbnQoJEcxLCAgICAgICAgJEcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzM6IG51bGwsICRHNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJEc1OiBudWxsLCAkRzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRHNzogbnVsbCwgJEc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkRzk6IG51bGwsICRHMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcblxuICAkZGF0YTogX3JhZGlhbC1hcmctcGFyc2VyKCRHMSwgJEcyLCAkcG9zLCAkc2hhcGUtc2l6ZSk7XG4gICRHMTogIG50aCgkZGF0YSwgMSk7XG4gICRHMjogIG50aCgkZGF0YSwgMik7XG4gICRwb3M6IG50aCgkZGF0YSwgMyk7XG4gICRzaGFwZS1zaXplOiBudGgoJGRhdGEsIDQpO1xuXG4gICRmdWxsOiAkRzEsICRHMiwgJEczLCAkRzQsICRHNSwgJEc2LCAkRzcsICRHOCwgJEc5LCAkRzEwO1xuXG4gIC8vIFN0cmlwIGRlcHJlY2F0ZWQgY292ZXIvY29udGFpbiBmb3Igc3BlY1xuICAkc2hhcGUtc2l6ZS1zcGVjOiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSk7XG5cbiAgLy8gU2V0ICRHMSBhcyB0aGUgZGVmYXVsdCBmYWxsYmFjayBjb2xvclxuICAkZmlyc3QtY29sb3I6IG50aCgkZnVsbCwgMSk7XG4gICRmYWxsYmFjay1jb2xvcjogbnRoKCRmaXJzdC1jb2xvciwgMSk7XG5cbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICAvLyBBZGQgQ29tbWFzIGFuZCBzcGFjZXNcbiAgJHNoYXBlLXNpemU6IGlmKCRzaGFwZS1zaXplLCAnI3skc2hhcGUtc2l6ZX0sICcsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgJyN7JHBvc30sICcsIG51bGwpO1xuICAkcG9zLXNwZWM6ICAgaWYoJHBvcywgJ2F0ICN7JHBvc30nLCBudWxsKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogaWYoKCRzaGFwZS1zaXplLXNwZWMgIT0gJyAnKSBhbmQgKCRwb3MgPT0gbnVsbCksICcjeyRzaGFwZS1zaXplLXNwZWN9LCAnLCAnI3skc2hhcGUtc2l6ZS1zcGVjfSAnKTtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAgJGZhbGxiYWNrLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudCh1bnF1b3RlKCN7JHBvc30jeyRzaGFwZS1zaXplfSN7JGZ1bGx9KSk7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVucXVvdGUoXCJyYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4vLyAgbm9uZSB8IDx0cmFuc2Zvcm0tZnVuY3Rpb24+XG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybSwgJHByb3BlcnR5LCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tb3JpZ2luKCRheGVzOiA1MCUpIHtcbi8vIHgtYXhpcyAtIGxlZnQgfCBjZW50ZXIgfCByaWdodCAgfCBsZW5ndGggfCAlXG4vLyB5LWF4aXMgLSB0b3AgIHwgY2VudGVyIHwgYm90dG9tIHwgbGVuZ3RoIHwgJVxuLy8gei1heGlzIC0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0tb3JpZ2luLCAkYXhlcywgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlICgkc3R5bGU6IGZsYXQpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcbn1cbiIsIi8vIFNob3J0aGFuZCBtaXhpbi4gU3VwcG9ydHMgbXVsdGlwbGUgcGFyZW50aGVzZXMtZGVsaW1pbmF0ZWQgdmFsdWVzIGZvciBlYWNoIHZhcmlhYmxlLlxuLy8gRXhhbXBsZTogQGluY2x1ZGUgdHJhbnNpdGlvbiAoYWxsIDJzIGVhc2UtaW4tb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24gKG9wYWNpdHkgMXMgZWFzZS1pbiAycywgd2lkdGggMnMgZWFzZS1vdXQpO1xuLy8gICAgICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbi1wcm9wZXJ0eSAodHJhbnNmb3JtLCBvcGFjaXR5KTtcblxuQG1peGluIHRyYW5zaXRpb24gKCRwcm9wZXJ0aWVzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHByb3BlcnRpZXMpID49IDEge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgICRwcm9wZXJ0aWVzOiBhbGwgMC4xNXMgZWFzZS1vdXQgMHM7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbiwgJHByb3BlcnRpZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIH1cbn1cblxuQG1peGluIHRyYW5zaXRpb24tcHJvcGVydHkgKCRwcm9wZXJ0aWVzLi4uKSB7XG4gICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BlcnRpZXMsICd3ZWJraXQnKTtcbiAgICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNpdGlvbi1wcm9wZXJ0eS1uYW1lcygkcHJvcGVydGllcywgJ21veicpO1xuICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gKCRtb3Rpb25zLi4uKSB7XG4vLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5ICgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIHVzZXItc2VsZWN0KCRhcmc6IG5vbmUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIodXNlci1zZWxlY3QsICRhcmcsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCIkcGxhY2Vob2xkZXJzOiAnLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAnLW1vei1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAnLW1zLWlucHV0LXBsYWNlaG9sZGVyJztcblxuQG1peGluIHBsYWNlaG9sZGVyIHtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgIEBpZiAkcGxhY2Vob2xkZXIgPT0gXCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyXCIge1xuICAgICAgJjo6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwbGFjZWhvbGRlciA9PSBcIi1tb3otcGxhY2Vob2xkZXJcIiB7XG4gICAgICAvLyBGRiAxOC1cbiAgICAgICY6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIEZGIDE5K1xuICAgICAgJjo6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICY6I3skcGxhY2Vob2xkZXJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gYnV0dG9uICgkc3R5bGU6IHNpbXBsZSwgJGJhc2UtY29sb3I6ICM0Mjk0ZjApIHtcblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IGNvbG9yIHtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuICB9XG5cbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJGJhc2UtY29sb3IgPT0gZ3JheXNjYWxlKCRiYXNlLWNvbG9yKSB7XG4gICAgQGlmICRzdHlsZSA9PSBzaW1wbGUge1xuICAgICAgQGluY2x1ZGUgc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiB0cnVlKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkc3R5bGUgPT0gc2hpbnkge1xuICAgICAgQGluY2x1ZGUgc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IHRydWUpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRzdHlsZSA9PSBwaWxsIHtcbiAgICAgIEBpbmNsdWRlIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvbG9yZWQgYnV0dG9uXG4gIEBlbHNlIHtcbiAgICBAaWYgJHN0eWxlID09IHNpbXBsZSB7XG4gICAgICBAaW5jbHVkZSBzaW1wbGUoJGJhc2UtY29sb3IpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRzdHlsZSA9PSBzaGlueSB7XG4gICAgICBAaW5jbHVkZSBzaGlueSgkYmFzZS1jb2xvcik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHN0eWxlID09IHBpbGwge1xuICAgICAgQGluY2x1ZGUgcGlsbCgkYmFzZS1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cbn1cblxuXG4vLyBTaW1wbGUgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2ltcGxlKCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGxpZ2h0bmVzcygkYmFzZS1jb2xvcikgPiA3MCUge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc3RvcC1ncmFkaWVudDogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50KTtcbiAgICAkdGV4dC1zaGFkb3c6ICAgZ3JheXNjYWxlKCR0ZXh0LXNoYWRvdyk7XG4gIH1cblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3IsICRzdG9wLWdyYWRpZW50KTtcbiAgcGFkZGluZzogN3B4IDE4cHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgJHRleHQtc2hhZG93O1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNCUsICRsaWdodG5lc3M6IC01JSk7XG4gICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC03JSwgJGxpZ2h0bmVzczogIDUlKTtcbiAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDglLCAkbGlnaHRuZXNzOiAtMTQlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkaW5zZXQtc2hhZG93LWhvdmVyOiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3ctaG92ZXIpO1xuICAgICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCAwIDFweCAxcHggMCAjZWVlO1xuICB9XG59XG5cblxuLy8gU2hpbnkgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gc2hpbnkoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlKSB7XG4gICRjb2xvcjogICAgICAgICBoc2woMCwgMCwgMTAwJSk7XG4gICRib3JkZXI6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMTcsICRncmVlbjogLTExMSwgJGJsdWU6IC04MSk7XG4gICRib3JkZXItYm90dG9tOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMjYsICRncmVlbjogLTEyNywgJGJsdWU6IC0xMjIpO1xuICAkZm91cnRoLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNzksICAkZ3JlZW46IC03MCwgICRibHVlOiAtNDYpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAgMzcsICAkZ3JlZW46ICAyOSwgICRibHVlOiAgMTIpO1xuICAkc2Vjb25kLXN0b3A6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNTYsICAkZ3JlZW46IC01MCwgICRibHVlOiAtMzMpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTQwLCAkZ3JlZW46IC0xNDEsICRibHVlOiAtMTE0KTtcbiAgJHRoaXJkLXN0b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAgJGdyZWVuOiAtNzUsICAkYmx1ZTogLTQ4KTtcblxuICBAaWYgbGlnaHRuZXNzKCRiYXNlLWNvbG9yKSA+IDcwJSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkZm91cnRoLXN0b3A6ICAgZ3JheXNjYWxlKCRmb3VydGgtc3RvcCk7XG4gICAgJGluc2V0LXNoYWRvdzogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93KTtcbiAgICAkc2Vjb25kLXN0b3A6ICAgZ3JheXNjYWxlKCRzZWNvbmQtc3RvcCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICAgICR0aGlyZC1zdG9wOiAgICBncmF5c2NhbGUoJHRoaXJkLXN0b3ApO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlcjtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRib3JkZXItYm90dG9tO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcbiAgcGFkZGluZzogOHB4IDIwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3c7XG5cbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgJGZpcnN0LXN0b3AtaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xMywgJGdyZWVuOiAtMTUsICRibHVlOiAtMTgpO1xuICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtNjYsICRncmVlbjogLTYyLCAkYmx1ZTogLTUxKTtcbiAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTkzLCAkZ3JlZW46IC04NSwgJGJsdWU6IC02Nik7XG4gICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC04NiwgJGdyZWVuOiAtODAsICRibHVlOiAtNjMpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkZmlyc3Qtc3RvcC1ob3Zlcik7XG4gICAgICAkc2Vjb25kLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkc2Vjb25kLXN0b3AtaG92ZXIpO1xuICAgICAgJHRoaXJkLXN0b3AtaG92ZXI6ICBncmF5c2NhbGUoJHRoaXJkLXN0b3AtaG92ZXIpO1xuICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyOiBncmF5c2NhbGUoJGZvdXJ0aC1zdG9wLWhvdmVyKTtcbiAgICB9XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50KHRvcCwgJGZpcnN0LXN0b3AtaG92ZXIgIDAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWNvbmQtc3RvcC1ob3ZlciA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXJkLXN0b3AtaG92ZXIgIDUwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91cnRoLXN0b3AtaG92ZXIgMTAwJSk7XG4gIH1cblxuICAmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG4gICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExMSwgJGdyZWVuOiAtMTE2LCAkYmx1ZTogLTEyMik7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgIH1cblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAyMHB4IDAgJGluc2V0LXNoYWRvdy1hY3RpdmUsIDAgMXB4IDAgI2ZmZjtcbiAgfVxufVxuXG5cbi8vIFBpbGwgQnV0dG9uXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AbWl4aW4gcGlsbCgkYmFzZS1jb2xvciwgJGdyYXlzY2FsZTogZmFsc2UpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDgsICRzYXR1cmF0aW9uOiAtMTElLCAkbGlnaHRuZXNzOiAtMjYlKTtcbiAgJGJvcmRlci1zaWRlczogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogIDQsICRzYXR1cmF0aW9uOiAtMjElLCAkbGlnaHRuZXNzOiAtMjElKTtcbiAgJGJvcmRlci10b3A6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMzAlLCAkbGlnaHRuZXNzOiAtMTUlKTtcbiAgJGluc2V0LXNoYWRvdzogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMSUsICAkbGlnaHRuZXNzOiAgNyUpO1xuICAkc3RvcC1ncmFkaWVudDogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246ICAxNCUsICRsaWdodG5lc3M6IC0xMCUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNSwgJHNhdHVyYXRpb246IC0xOSUsICRsaWdodG5lc3M6IC0xNSUpO1xuXG4gIEBpZiBsaWdodG5lc3MoJGJhc2UtY29sb3IpID4gNzAlIHtcbiAgICAkY29sb3I6ICAgICAgIGhzbCgwLCAwLCAyMCUpO1xuICAgICR0ZXh0LXNoYWRvdzogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogMTAlLCAkbGlnaHRuZXNzOiA0JSk7XG4gIH1cblxuICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAkYm9yZGVyLWJvdHRvbTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgZ3JheXNjYWxlKCRib3JkZXItc2lkZXMpO1xuICAgICRib3JkZXItdG9wOiAgICBncmF5c2NhbGUoJGJvcmRlci10b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHN0b3AtZ3JhZGllbnQ6IGdyYXlzY2FsZSgkc3RvcC1ncmFkaWVudCk7XG4gICAgJHRleHQtc2hhZG93OiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3cpO1xuICB9XG5cbiAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci10b3A7XG4gIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3csIDAgMXB4IDJweCAwICNiM2IzYjM7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiA1cHggMTZweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLXRvcDtcbiAgICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3ctaG92ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctaG92ZXI7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNCwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTEwJSk7XG4gICAgJGJvcmRlci1hY3RpdmU6ICAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDYsICAkc2F0dXJhdGlvbjogLTIuNSUsICRsaWdodG5lc3M6IC0zMCUpO1xuICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAxMSwgJHNhdHVyYXRpb246ICA2JSwgICAkbGlnaHRuZXNzOiAtMzElKTtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogOSwgICRzYXR1cmF0aW9uOiAgMiUsICAgJGxpZ2h0bmVzczogLTIxLjUlKTtcbiAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNSwgICRzYXR1cmF0aW9uOiAtMTIlLCAgJGxpZ2h0bmVzczogLTIxLjUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGFjdGl2ZS1jb2xvcjogICAgICAgICBncmF5c2NhbGUoJGFjdGl2ZS1jb2xvcik7XG4gICAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyLWFjdGl2ZSk7XG4gICAgICAkYm9yZGVyLWJvdHRvbS1hY3RpdmU6IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbS1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1hY3RpdmUpO1xuICAgICAgJHRleHQtc2hhZG93LWFjdGl2ZTogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZDogJGFjdGl2ZS1jb2xvcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWFjdGl2ZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b20tYWN0aXZlO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggM3B4ICRpbnNldC1zaGFkb3ctYWN0aXZlLCAwIDFweCAwIDAgI2ZmZjtcbiAgICB0ZXh0LXNoYWRvdzogMCAtMXB4IDFweCAkdGV4dC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG4iLCIvLyBNb2Rlcm4gbWljcm8gY2xlYXJmaXggcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY29udGFpbiBmbG9hdHMgd2l0aG91dCBhZGRpbmcgYWRkaXRpb25hbCBtYXJrdXAuXG4vL1xuLy8gRXhhbXBsZSB1c2FnZTpcbi8vXG4vLyAgICAvLyBDb250YWluIGFsbCBmbG9hdHMgd2l0aGluIC53cmFwcGVyXG4vLyAgICAud3JhcHBlciB7XG4vLyAgICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuLy8gICAgICAuY29udGVudCxcbi8vICAgICAgLnNpZGViYXIge1xuLy8gICAgICAgIGZsb2F0IDogbGVmdDtcbi8vICAgICAgfVxuLy8gICAgfVxuXG5AbWl4aW4gY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OlwiXCI7XG4gICAgZGlzcGxheTp0YWJsZTtcbiAgICBjbGVhcjpib3RoO1xuICB9XG59XG5cbi8vIEFja25vd2xlZGdlbWVudHNcbi8vIEJlYXQgKnRoYXQqIGNsZWFyZml4OiBbVGhpZXJyeSBLb2JsZW50el0oaHR0cDovL3d3dy5jc3MtMTAxLm9yZy9hcnRpY2xlcy9jbGVhcmZpeC9sYXRlc3QtbmV3LWNsZWFyZml4LXNvLWZhci5waHApXG4iLCIkZ2VvcmdpYTogR2VvcmdpYSwgQ2FtYnJpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgVGltZXMsIHNlcmlmO1xuJGhlbHZldGljYTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGx1Y2lkYS1ncmFuZGU6IFwiTHVjaWRhIEdyYW5kZVwiLCBUYWhvbWEsIFZlcmRhbmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgQ29uc29sYXMsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiR2ZXJkYW5hOiBWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWY7XG4iLCJAbWl4aW4gaGlkZS10ZXh0IHtcbiAgY29sb3I6ICAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIGZvbnQ6ICAgICAgICAgICAgIDAvMCBhO1xuICB0ZXh0LXNoYWRvdzogICAgICBub25lO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gR2VuZXJhdGUgYSB2YXJpYWJsZSAoJGFsbC10ZXh0LWlucHV0cykgd2l0aCBhIGxpc3Qgb2YgYWxsIGh0bWw1XG4vLyBpbnB1dCB0eXBlcyB0aGF0IGhhdmUgYSB0ZXh0LWJhc2VkIGlucHV0LCBleGNsdWRpbmcgdGV4dGFyZWEuXG4vLyBodHRwOi8vZGl2ZWludG9odG1sNS5vcmcvZm9ybXMuaHRtbFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuJGlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImVtYWlsXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInRlbFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidXJsXCJdJyxcblxuICAgICAgICAgICAgICAvLyBXZWJraXQgJiBHZWNrbyBtYXkgY2hhbmdlIHRoZSBkaXNwbGF5IG9mIHRoZXNlIGluIHRoZSBmdXR1cmVcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJjb2xvclwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdJyxcbiAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJtb250aFwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGltZVwiXScsXG4gICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwid2Vla1wiXSc7XG5cbiR1bnF1b3RlZC1pbnB1dHMtbGlzdDogKCk7XG5AZWFjaCAkaW5wdXQtdHlwZSBpbiAkaW5wdXRzLWxpc3Qge1xuICAkdW5xdW90ZWQtaW5wdXRzLWxpc3Q6IGFwcGVuZCgkdW5xdW90ZWQtaW5wdXRzLWxpc3QsIHVucXVvdGUoJGlucHV0LXR5cGUpLCBjb21tYSk7XG59XG5cbiRhbGwtdGV4dC1pbnB1dHM6ICR1bnF1b3RlZC1pbnB1dHMtbGlzdDtcblxuXG4vLyBIb3ZlciBQc2V1ZG8tY2xhc3Ncbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbiRhbGwtdGV4dC1pbnB1dHMtaG92ZXI6ICgpO1xuQGVhY2ggJGlucHV0LXR5cGUgaW4gJHVucXVvdGVkLWlucHV0cy1saXN0IHtcbiAgICAgICRpbnB1dC10eXBlLWhvdmVyOiAkaW5wdXQtdHlwZSArIFwiOmhvdmVyXCI7XG4gICAgICAkYWxsLXRleHQtaW5wdXRzLWhvdmVyOiBhcHBlbmQoJGFsbC10ZXh0LWlucHV0cy1ob3ZlciwgJGlucHV0LXR5cGUtaG92ZXIsIGNvbW1hKTtcbn1cblxuLy8gRm9jdXMgUHNldWRvLWNsYXNzXG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4kYWxsLXRleHQtaW5wdXRzLWZvY3VzOiAoKTtcbkBlYWNoICRpbnB1dC10eXBlIGluICR1bnF1b3RlZC1pbnB1dHMtbGlzdCB7XG4gICAgICAkaW5wdXQtdHlwZS1mb2N1czogJGlucHV0LXR5cGUgKyBcIjpmb2N1c1wiO1xuICAgICAgJGFsbC10ZXh0LWlucHV0cy1mb2N1czogYXBwZW5kKCRhbGwtdGV4dC1pbnB1dHMtZm9jdXMsICRpbnB1dC10eXBlLWZvY3VzLCBjb21tYSk7XG59XG5cbi8vIFlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTpcbi8vICN7JGFsbC10ZXh0LWlucHV0c31cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn1cbi8vICN7JGFsbC10ZXh0LWlucHV0cy1mb2N1c31cblxuLy8gRXhhbXBsZVxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9LCB0ZXh0YXJlYSB7XG4vLyAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuLy8gICB9XG4iLCJAbWl4aW4gcG9zaXRpb24gKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogMCAwIDAgMCkge1xuXG4gIEBpZiB0eXBlLW9mKCRwb3NpdGlvbikgPT0gbGlzdCB7XG4gICAgJGNvb3JkaW5hdGVzOiAkcG9zaXRpb247XG4gICAgJHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG5cbiAgQGlmICR0b3AgPT0gYXV0byB7XG4gICAgdG9wOiAkdG9wO1xuICB9XG4gIEBlbHNlIGlmIG5vdCh1bml0bGVzcygkdG9wKSkge1xuICAgIHRvcDogJHRvcDtcbiAgfVxuXG4gIEBpZiAkcmlnaHQgPT0gYXV0byB7XG4gICAgcmlnaHQ6ICRyaWdodDtcbiAgfVxuICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJHJpZ2h0KSkge1xuICAgIHJpZ2h0OiAkcmlnaHQ7XG4gIH1cblxuICBAaWYgJGJvdHRvbSA9PSBhdXRvIHtcbiAgICBib3R0b206ICRib3R0b207XG4gIH1cbiAgQGVsc2UgaWYgbm90KHVuaXRsZXNzKCRib3R0b20pKSB7XG4gICAgYm90dG9tOiAkYm90dG9tO1xuICB9XG5cbiAgQGlmICRsZWZ0ID09IGF1dG8ge1xuICAgIGxlZnQ6ICRsZWZ0O1xuICB9XG4gIEBlbHNlIGlmIG5vdCh1bml0bGVzcygkbGVmdCkpIHtcbiAgICBsZWZ0OiAkbGVmdDtcbiAgfVxufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gRXhhbXBsZTogQGluY2x1ZGUgcHJlZml4ZXIoYm9yZGVyLXJhZGl1cywgJHJhZGlpLCB3ZWJraXQgbXMgc3BlYyk7XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBWYXJpYWJsZXMgbG9jYXRlZCBpbiAvc2V0dGluZ3MvX3ByZWZpeGVyLnNjc3NcblxuQG1peGluIHByZWZpeGVyICgkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeGVzKSB7XG4gIEBlYWNoICRwcmVmaXggaW4gJHByZWZpeGVzIHtcbiAgICBAaWYgJHByZWZpeCA9PSB3ZWJraXQge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLXdlYmtpdCB7XG4gICAgICAgIC13ZWJraXQtI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJHByZWZpeCA9PSBtcyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3ItbWljcm9zb2Z0IHtcbiAgICAgICAgLW1zLSN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAkcHJlZml4ID09IG8ge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW9wZXJhIHtcbiAgICAgICAgLW8tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSAge1xuICAgICAgQHdhcm4gXCJVbnJlY29nbml6ZWQgcHJlZml4OiAjeyRwcmVmaXh9XCI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBkaXNhYmxlLXByZWZpeC1mb3ItYWxsKCkge1xuICAkcHJlZml4LWZvci13ZWJraXQ6ICAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1taWNyb3NvZnQ6IGZhbHNlO1xuICAkcHJlZml4LWZvci1vcGVyYTogICAgIGZhbHNlO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlO1xufVxuIiwiQG1peGluIHJldGluYS1pbWFnZSgkZmlsZW5hbWUsICRiYWNrZ3JvdW5kLXNpemUsICRleHRlbnNpb246IHBuZywgJHJldGluYS1maWxlbmFtZTogbnVsbCwgJHJldGluYS1zdWZmaXg6IF8yeCwgJGFzc2V0LXBpcGVsaW5lOiBmYWxzZSkge1xuICBAaWYgJGFzc2V0LXBpcGVsaW5lIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRmaWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH1cblxuICBAaW5jbHVkZSBoaWRwaSB7XG4gICAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJHJldGluYS1maWxlbmFtZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JHJldGluYS1maWxlbmFtZX0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYWNrZ3JvdW5kLXNpemU7XG5cbiAgfVxufVxuIiwiQG1peGluIHNpemUoJHNpemUpIHtcbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgQGlmICRzaXplID09IGF1dG8ge1xuICAgICAgd2lkdGg6ICAkc2l6ZTtcbiAgICAgIGhlaWdodDogJHNpemU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgdW5pdGxlc3MoJHNpemUpIHtcbiAgICAgIHdpZHRoOiAgJHNpemUgKyBweDtcbiAgICAgIGhlaWdodDogJHNpemUgKyBweDtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJHNpemUpKSB7XG4gICAgICB3aWR0aDogICRzaXplO1xuICAgICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB9XG4gIH1cblxuICAvLyBXaWR0aCB4IEhlaWdodFxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICAkd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG5cbiAgICBAaWYgJHdpZHRoID09IGF1dG8ge1xuICAgICAgd2lkdGg6ICR3aWR0aDtcbiAgICB9XG4gICAgQGVsc2UgaWYgbm90KHVuaXRsZXNzKCR3aWR0aCkpIHtcbiAgICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgfVxuICAgIEBlbHNlIGlmIHVuaXRsZXNzKCR3aWR0aCkge1xuICAgICAgd2lkdGg6ICR3aWR0aCArIHB4O1xuICAgIH1cblxuICAgIEBpZiAkaGVpZ2h0ID09IGF1dG8ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICBAZWxzZSBpZiBub3QodW5pdGxlc3MoJGhlaWdodCkpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgQGVsc2UgaWYgdW5pdGxlc3MoJGhlaWdodCkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0ICsgcHg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBDU1MgY3ViaWMtYmV6aWVyIHRpbWluZyBmdW5jdGlvbnMuIFRpbWluZyBmdW5jdGlvbnMgY291cnRlc3kgb2YganF1ZXJ5LmVhc2llIChnaXRodWIuY29tL2phdWtpYS9lYXNpZSlcbi8vIFRpbWluZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGRlbW8nZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9kZW1vcy9lZmZlY3QvZWFzaW5nLmh0bWxcblxuLy8gRUFTRSBJTlxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbi8vIEVBU0UgT1VUXG4kZWFzZS1vdXQtcXVhZDogICAgIGN1YmljLWJlemllcigwLjI1MCwgIDAuNDYwLCAwLjQ1MCwgMC45NDApO1xuJGVhc2Utb3V0LWN1YmljOiAgICBjdWJpYy1iZXppZXIoMC4yMTUsICAwLjYxMCwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWFydDogICAgY3ViaWMtYmV6aWVyKDAuMTY1LCAgMC44NDAsIDAuNDQwLCAxLjAwMCk7XG4kZWFzZS1vdXQtcXVpbnQ6ICAgIGN1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApO1xuJGVhc2Utb3V0LXNpbmU6ICAgICBjdWJpYy1iZXppZXIoMC4zOTAsICAwLjU3NSwgMC41NjUsIDEuMDAwKTtcbiRlYXNlLW91dC1leHBvOiAgICAgY3ViaWMtYmV6aWVyKDAuMTkwLCAgMS4wMDAsIDAuMjIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtY2lyYzogICAgIGN1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWJhY2s6ICAgICBjdWJpYy1iZXppZXIoMC4xNzUsICAwLjg4NSwgMC4zMjAsIDEuMjc1KTtcblxuLy8gRUFTRSBJTiBPVVRcbiRlYXNlLWluLW91dC1xdWFkOiAgY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSk7XG4kZWFzZS1pbi1vdXQtY3ViaWM6IGN1YmljLWJlemllcigwLjY0NSwgIDAuMDQ1LCAwLjM1NSwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXF1YXJ0OiBjdWJpYy1iZXppZXIoMC43NzAsICAwLjAwMCwgMC4xNzUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWludDogY3ViaWMtYmV6aWVyKDAuODYwLCAgMC4wMDAsIDAuMDcwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtc2luZTogIGN1YmljLWJlemllcigwLjQ0NSwgIDAuMDUwLCAwLjU1MCwgMC45NTApO1xuJGVhc2UtaW4tb3V0LWV4cG86ICBjdWJpYy1iZXppZXIoMS4wMDAsICAwLjAwMCwgMC4wMDAsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1jaXJjOiAgY3ViaWMtYmV6aWVyKDAuNzg1LCAgMC4xMzUsIDAuMTUwLCAwLjg2MCk7XG4kZWFzZS1pbi1vdXQtYmFjazogIGN1YmljLWJlemllcigwLjY4MCwgLTAuNTUwLCAwLjI2NSwgMS41NTApO1xuIiwiQG1peGluIHRyaWFuZ2xlICgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcblxuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogICAkY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAgICAkY29sb3I7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICAkY29sb3I7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdXAtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHVwLWxlZnQpIHtcbiAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHVwLWxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG5cbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBUaGVzZSBtaXhpbnMvZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkXG4vLyBUaGV5IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2Vcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBtaXhpbiBib3gtc2hhZG93ICgkc2hhZG93cy4uLikge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtc2hhZG93LCAkc2hhZG93cywgc3BlYyk7XG4gIEB3YXJuIFwiYm94LXNoYWRvdyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUgKCRsZW5ndGhzLi4uKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJhY2tncm91bmQtc2l6ZSwgJGxlbmd0aHMsIHNwZWMpO1xuICBAd2FybiBcImJhY2tncm91bmQtc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiByZWxlYXNlXCI7XG59XG4iLCIvLyBGdW5jdGlvbnNcbkBpbXBvcnQgXCJmdW5jdGlvbnMvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9uZXctYnJlYWtwb2ludFwiO1xuXG4vLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL2dyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy92aXN1YWwtZ3JpZFwiO1xuIiwiJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0O1xuJGZnLWNvbHVtbjogJGNvbHVtbjtcbiRmZy1ndXR0ZXI6ICRndXR0ZXI7XG4kZmctbWF4LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4kY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFkZWZhdWx0O1xuJGxheW91dC1kaXJlY3Rpb246IG5pbCAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHdpZHRoIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbHVtbnMpIHtcbiAgQGlmICRjb2x1bW5zICE9ICRncmlkLWNvbHVtbnMge1xuICAgICRwYXJlbnQtY29sdW1uczogJGNvbHVtbnM7XG4gIH0gQGVsc2Uge1xuICAgICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xufVxuXG5AZnVuY3Rpb24gaXMtZGlzcGxheS10YWJsZSgkY29udGFpbmVyLWlzLWRpc3BsYXktdGFibGUsICRkaXNwbGF5KSB7XG4gICRkaXNwbGF5LXRhYmxlOiBmYWxzZTtcblxuICBAaWYgJGNvbnRhaW5lci1pcy1kaXNwbGF5LXRhYmxlID09IHRydWUge1xuICAgICRkaXNwbGF5LXRhYmxlOiB0cnVlO1xuICB9IEBlbHNlIGlmICRkaXNwbGF5ID09IHRhYmxlIHtcbiAgICAkZGlzcGxheS10YWJsZTogdHJ1ZTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpc3BsYXktdGFibGU7XG59XG4iLCJAbWl4aW4gcmVzZXQtZGlzcGxheSB7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2U7XG59XG5cbkBtaXhpbiByZXNldC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgJGxheW91dC1kaXJlY3Rpb246ICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb247XG59XG5cbkBtaXhpbiByZXNldC1hbGwge1xuICBAaW5jbHVkZSByZXNldC1kaXNwbGF5O1xuICBAaW5jbHVkZSByZXNldC1sYXlvdXQtZGlyZWN0aW9uO1xufVxuIiwiQGlmICRib3JkZXItYm94LXNpemluZyA9PSB0cnVlIHtcbiAgKiB7XG4gICAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTtcbiAgfVxufVxuIiwiLy8gUmVtb3ZlIGxhc3QgZWxlbWVudCBndXR0ZXJcbkBtaXhpbiBvbWVnYSgkcXVlcnk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gICR0YWJsZTogaWYoYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KSwgdHJ1ZSwgZmFsc2UpO1xuICAkYXV0bzogaWYoYmVsb25ncy10byhhdXRvLCAkcXVlcnkpLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGlmICRkaXJlY3Rpb24gIT0gZGVmYXVsdCB7XG4gICAgQHdhcm4gXCJUaGUgb21lZ2EgbWl4aW4gd2lsbCBubyBsb25nZXIgdGFrZSBhICRkaXJlY3Rpb24gYXJndW1lbnQuIFRvIGNoYW5nZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiwgdXNlIHJvdygkZGlyZWN0aW9uKSBvciBzZXQgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiBpbnN0ZWFkLlwiXG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICB9XG5cbiAgQGlmICR0YWJsZSB7XG4gICAgQHdhcm4gXCJUaGUgb21lZ2EgbWl4aW4gbm8gbG9uZ2VyIHJlbW92ZXMgcGFkZGluZyBpbiB0YWJsZSBsYXlvdXRzLlwiXG4gIH1cblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgQGlmICRhdXRvIHtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIGlmIGNvbnRhaW5zLWRpc3BsYXktdmFsdWUoJHF1ZXJ5KSBhbmQgJHRhYmxlID09IGZhbHNlIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIG50aC1jaGlsZCgkcXVlcnksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBudGgtY2hpbGQobnRoKCRxdWVyeSwgMSksICRkaXJlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlRvbyBtYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIG9tZWdhKCkgbWl4aW4uXCJcbiAgfVxufVxuXG5AbWl4aW4gbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSkge1xuICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSsxKSB7XG4gICAgICBjbGVhcjogJG9wcG9zaXRlLWRpcmVjdGlvbjtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBvdXRlci1jb250YWluZXIge1xuICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICBtYXJnaW46IHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICB9XG59XG4iLCJAbWl4aW4gc3Bhbi1jb2x1bW5zKCRzcGFuOiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMsICRkaXNwbGF5OiBibG9jaykge1xuICAkY29sdW1uczogbnRoKCRzcGFuLCAxKTtcbiAgJGNvbnRhaW5lci1jb2x1bW5zOiBjb250YWluZXItc3Bhbigkc3Bhbik7XG5cbiAgLy8gU2V0IG5lc3RpbmcgY29udGV4dCAodXNlZCBieSBzaGlmdCgpKVxuICAkcGFyZW50LWNvbHVtbnM6IGdldC1wYXJlbnQtY29sdW1ucygkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICRkaXNwbGF5LXRhYmxlOiBpcy1kaXNwbGF5LXRhYmxlKCRjb250YWluZXItZGlzcGxheS10YWJsZSwgJGRpc3BsYXkpO1xuXG4gIEBpZiAkZGlzcGxheS10YWJsZSAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgd2lkdGg6IHBlcmNlbnRhZ2UoJGNvbHVtbnMgLyAkY29udGFpbmVyLWNvbHVtbnMpO1xuICB9IEBlbHNlIHtcbiAgICBmbG9hdDogI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTtcblxuICAgIEBpZiAkZGlzcGxheSAhPSBuby1kaXNwbGF5IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSB7XG4gICAgICBAd2FybiBcIlRoZSAnY29sbGFwc2UnIGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZC4gVXNlICdibG9jay1jb2xsYXBzZScgaW5zdGVhZC5cIlxuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSBvciAkZGlzcGxheSA9PSBibG9jay1jb2xsYXBzZSB7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpICsgZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgIH0gQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiByb3coJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcblxuICBAaWYgJGRpc3BsYXkgPT0gdGFibGUge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIEBpbmNsdWRlIGZpbGwtcGFyZW50O1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiB0cnVlO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2U7XG4gIH1cbn1cblxuIiwiQG1peGluIHNoaWZ0KCRuLWNvbHVtbnM6IDEpIHtcbiAgQGluY2x1ZGUgc2hpZnQtaW4tY29udGV4dCgkbi1jb2x1bW5zKTtcbn1cblxuQG1peGluIHNoaWZ0LWluLWNvbnRleHQoJHNoaWZ0OiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMpIHtcbiAgJG4tY29sdW1uczogbnRoKCRzaGlmdCwgMSk7XG4gICRwYXJlbnQtY29sdW1uczogY29udGFpbmVyLXNoaWZ0KCRzaGlmdCk7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgbWFyZ2luLSN7JG9wcG9zaXRlLWRpcmVjdGlvbn06ICRuLWNvbHVtbnMgKiBmbGV4LWdyaWQoMSwgJHBhcmVudC1jb2x1bW5zKSArICRuLWNvbHVtbnMgKiBmbGV4LWd1dHRlcigkcGFyZW50LWNvbHVtbnMpO1xuXG4gIC8vIFJlc2V0IG5lc3RpbmcgY29udGV4dFxuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG59XG4iLCJAbWl4aW4gcGFkKCRwYWRkaW5nOiBmbGV4LWd1dHRlcigpKSB7XG4gICRwYWRkaW5nLWxpc3Q6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkcGFkZGluZyB7XG4gICAgJHZhbHVlOiBpZigkdmFsdWUgPT0gJ2RlZmF1bHQnLCBmbGV4LWd1dHRlcigpLCAkdmFsdWUpO1xuICAgICRwYWRkaW5nLWxpc3Q6IGpvaW4oJHBhZGRpbmctbGlzdCwgJHZhbHVlKTtcbiAgfVxuICBwYWRkaW5nOiAkcGFkZGluZy1saXN0O1xufVxuIiwiQG1peGluIGZpbGwtcGFyZW50KCkge1xuICB3aWR0aDogMTAwJTtcblxuICBAaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IGZhbHNlIHtcbiAgICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpO1xuICB9XG59XG4iLCJAbWl4aW4gbWVkaWEoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgJGxvb3BUbzogbGVuZ3RoKCRxdWVyeSk7XG4gICAgJG1lZGlhUXVlcnk6ICdzY3JlZW4gYW5kICc7XG4gICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuXG4gICAgQGlmIGxlbmd0aCgkcXVlcnkpICUgMiAhPSAwIHtcbiAgICAgICRncmlkLWNvbHVtbnM6IG50aCgkcXVlcnksICRsb29wVG8pO1xuICAgICAgJGxvb3BUbzogJGxvb3BUbyAtIDE7XG4gICAgfVxuXG4gICAgJGk6IDE7XG4gICAgQHdoaWxlICRpIDw9ICRsb29wVG8ge1xuICAgICAgJG1lZGlhUXVlcnk6ICRtZWRpYVF1ZXJ5ICsgJygnICsgbnRoKCRxdWVyeSwgJGkpICsgJzogJyArIG50aCgkcXVlcnksICRpICsgMSkgKyAnKSAnO1xuXG4gICAgICBAaWYgKCRpICsgMSkgIT0gJGxvb3BUbyB7XG4gICAgICAgICRtZWRpYVF1ZXJ5OiAkbWVkaWFRdWVyeSArICdhbmQgJztcbiAgICAgIH1cblxuICAgICAgJGk6ICRpICsgMjtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skbWVkaWFRdWVyeX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gYnJlYWtwb2ludCgkcXVlcnk6JGZlYXR1cmUgJHZhbHVlICRjb2x1bW5zLCAkdG90YWwtY29sdW1uczogJGdyaWQtY29sdW1ucykge1xuICBAd2FybiBcIlRoZSBicmVha3BvaW50KCkgbWl4aW4gd2FzIHJlbmFtZWQgdG8gbWVkaWEoKSBpbiBOZWF0IDEuMC4gUGxlYXNlIHVwZGF0ZSB5b3VyIHByb2plY3Qgd2l0aCB0aGUgbmV3IHN5bnRheCBiZWZvcmUgdGhlIG5leHQgdmVyc2lvbiBidW1wLlwiO1xuXG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAzIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCAzKTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDQge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucztcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDUge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCA1KTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGJyZWFrcG9pbnQoKS4gUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlwiO1xuICB9XG59XG5cbkBtaXhpbiBudGgtb21lZ2EoJG50aCwgJGRpc3BsYXk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gIEB3YXJuIFwiVGhlIG50aC1vbWVnYSgpIG1peGluIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ugb21lZ2EoKSBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBvbWVnYSgkbnRoICRkaXNwbGF5LCAkZGlyZWN0aW9uKTtcbn1cbiIsIkBtaXhpbiBncmlkLWNvbHVtbi1ncmFkaWVudCgkdmFsdWVzLi4uKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGRlcHJlY2F0ZWQtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogIC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgLW1vei1saW5lYXItZ3JhZGllbnQobGVmdCwgJHZhbHVlcyk7XG4gIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KGxlZnQsICN7JHZhbHVlc30pXCIpO1xufVxuXG5AaWYgJHZpc3VhbC1ncmlkID09IHRydWUgb3IgJHZpc3VhbC1ncmlkID09IHllcyB7XG4gIGJvZHk6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgQGluY2x1ZGUgZ3JpZC1jb2x1bW4tZ3JhZGllbnQoZ3JhZGllbnQtc3RvcHMoJGdyaWQtY29sdW1ucykpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgICBvcGFjaXR5OiAkdmlzdWFsLWdyaWQtb3BhY2l0eTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBAaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGJhY2sge1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJHZpc3VhbC1ncmlkLWluZGV4ID09IGZyb250IHtcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgfVxuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiAkYnJlYWtwb2ludCAhPSBuaWwge1xuICAgICAgICBAaW5jbHVkZSBtZWRpYSgkYnJlYWtwb2ludCkge1xuICAgICAgICAgIEBpbmNsdWRlIGdyaWQtY29sdW1uLWdyYWRpZW50KGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8gQ2hlY2tzIGlmIGEgbnVtYmVyIGlzIGV2ZW5cbkBmdW5jdGlvbiBpcy1ldmVuKCRpbnQpIHtcbiAgQGlmICRpbnQlMiA9PSAwICAge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vIENoZWNrcyBpZiBhbiBlbGVtZW50IGJlbG9uZ3MgdG8gYSBsaXN0XG5AZnVuY3Rpb24gYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSB7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgJGl0ZW0gPT0gJHRlc3RlZC1pdGVtIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBDb250YWlucyBkaXNwbGF5IHZhbHVlXG5AZnVuY3Rpb24gY29udGFpbnMtZGlzcGxheS12YWx1ZSgkcXVlcnkpIHtcbiAgQGlmIGJlbG9uZ3MtdG8odGFibGUsICRxdWVyeSkgb3IgYmVsb25ncy10byhibG9jaywgJHF1ZXJ5KSBvciBiZWxvbmdzLXRvKGlubGluZS1ibG9jaywgJHF1ZXJ5KSBvciBiZWxvbmdzLXRvKGlubGluZSwgJHF1ZXJ5KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8gUGFyc2VzIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzcGFuLWNvbHVtbnMoKVxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zcGFuKCRzcGFuOiAkc3Bhbikge1xuICBAaWYgbGVuZ3RoKCRzcGFuKSA9PSAzIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc3BhbiwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNwYW4pID09IDIge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRncmlkLWNvbHVtbnM7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zaGlmdCgkc2hpZnQ6ICRzaGlmdCkge1xuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWRlZmF1bHQ7XG5cbiAgQGlmIGxlbmd0aCgkc2hpZnQpID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzaGlmdCwgMyk7XG4gICAgQHJldHVybiAkY29udGFpbmVyLWNvbHVtbnM7XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNoaWZ0KSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc2hpZnQsIDIpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHBhcmVudC1jb2x1bW5zO1xuICB9XG59XG5cbi8vIEdlbmVyYXRlcyBhIHN0cmlwZWQgYmFja2dyb3VuZFxuQGZ1bmN0aW9uIGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMsICRjb2xvcjogJHZpc3VhbC1ncmlkLWNvbG9yKSB7XG4gICR0cmFuc3BhcmVudDogcmdiYSgwLDAsMCwwKTtcblxuICAkY29sdW1uLXdpZHRoOiBmbGV4LWdyaWQoMSwgJGdyaWQtY29sdW1ucyk7XG4gICRndXR0ZXItd2lkdGg6IGZsZXgtZ3V0dGVyKCRncmlkLWNvbHVtbnMpO1xuICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi13aWR0aDtcblxuICAkdmFsdWVzOiAoJHRyYW5zcGFyZW50IDAsICRjb2xvciAwKTtcblxuICBAZm9yICRpIGZyb20gMSB0byAkZ3JpZC1jb2x1bW5zKjIge1xuICAgIEBpZiBpcy1ldmVuKCRpKSB7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJHRyYW5zcGFyZW50ICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkdmFsdWVzOiBhcHBlbmQoJHZhbHVlcywgJGNvbG9yICRjb2x1bW4tb2Zmc2V0LCBjb21tYSk7XG4gICAgICAkY29sdW1uLW9mZnNldDogJGNvbHVtbi1vZmZzZXQgKyAkY29sdW1uLXdpZHRoO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRndXR0ZXItd2lkdGg7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBMYXlvdXQgZGlyZWN0aW9uXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbigkbGF5b3V0LCAkZGVmYXVsdCkge1xuICAkZGlyZWN0aW9uOiBuaWw7XG4gIFxuICBAaWYgJGxheW91dCA9PSBMVFIgb3IgJGxheW91dCA9PSBSVEwge1xuICAgICRkaXJlY3Rpb246IGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KTtcbiAgfSBAZWxzZSB7XG4gICAgJGRpcmVjdGlvbjogZGlyZWN0aW9uLWZyb20tbGF5b3V0KCRkZWZhdWx0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGRpcmVjdGlvbjtcbn1cblxuQGZ1bmN0aW9uIGRpcmVjdGlvbi1mcm9tLWxheW91dCgkbGF5b3V0KSB7XG4gICRkaXJlY3Rpb246IG5pbDtcblxuICBAaWYgJGxheW91dCA9PSBMVFIge1xuICAgICRkaXJlY3Rpb246IHJpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBsZWZ0O1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGxlZnQ7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgJG9wcG9zaXRlLWRpcmVjdGlvbjogcmlnaHQ7XG4gIH1cblxuICBAcmV0dXJuICRvcHBvc2l0ZS1kaXJlY3Rpb247XG59XG4iLCJAZnVuY3Rpb24gbmV3LWJyZWFrcG9pbnQoJHF1ZXJ5OiRmZWF0dXJlICR2YWx1ZSAkY29sdW1ucywgJHRvdGFsLWNvbHVtbnM6ICRncmlkLWNvbHVtbnMpIHtcblxuICBAaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMSB7XG4gICAgJHF1ZXJ5OiAkZGVmYXVsdC1mZWF0dXJlIG50aCgkcXVlcnksIDEpICR0b3RhbC1jb2x1bW5zO1xuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgJSAyID09IDAge1xuICAgICRxdWVyeTogYXBwZW5kKCRxdWVyeSwgJHRvdGFsLWNvbHVtbnMpO1xuICB9XG5cbiAgQGlmIG5vdCBiZWxvbmdzLXRvKCRxdWVyeSwgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzKSB7XG4gICAgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzOiBhcHBlbmQoJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzLCAkcXVlcnksIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiJGNvbHVtbjogZ29sZGVuLXJhdGlvKDFlbSwgMykgIWRlZmF1bHQ7IC8vIENvbHVtbiB3aWR0aFxuJGd1dHRlcjogZ29sZGVuLXJhdGlvKDFlbSwgMSkgIWRlZmF1bHQ7IC8vIEd1dHRlciBiZXR3ZWVuIGVhY2ggdHdvIGNvbHVtbnNcbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0OyAvLyBUb3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZFxuJG1heC13aWR0aDogZW0oMTA4OCkgIWRlZmF1bHQ7IC8vIE1heC13aWR0aCBvZiB0aGUgb3V0ZXIgY29udGFpbmVyXG4kYm9yZGVyLWJveC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7IC8vIE1ha2VzIGFsbCBlbGVtZW50cyBoYXZlIGEgYm9yZGVyLWJveCBsYXlvdXRcbiRkZWZhdWx0LWZlYXR1cmU6IG1pbi13aWR0aDsgLy8gRGVmYXVsdCBAbWVkaWEgZmVhdHVyZSBmb3IgdGhlIGJyZWFrcG9pbnQoKSBtaXhpblxuJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbjogTFRSICFkZWZhdWx0O1xuIiwiJHZpc3VhbC1ncmlkOiBmYWxzZSAhZGVmYXVsdDsgLy8gRGlzcGxheSB0aGUgYmFzZSBncmlkXG4kdmlzdWFsLWdyaWQtY29sb3I6ICNFRUUgIWRlZmF1bHQ7XG4kdmlzdWFsLWdyaWQtaW5kZXg6IGJhY2sgIWRlZmF1bHQ7IC8vIFNob3cgZ3JpZCBiZWhpbmQgY29udGVudCAoYmFjaykgb3Igb3ZlcmxheSBpdCBvdmVyIHRoZSBjb250ZW50IChmcm9udClcbiR2aXN1YWwtZ3JpZC1vcGFjaXR5OiAwLjQgIWRlZmF1bHQ7XG4kdmlzdWFsLWdyaWQtYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuIl19*/
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHbG9iYWwgU3R5bGVzaGVldCAoSW5jbHVkZXMgbWVkaWEgcXVlcmllcylcbi8vIFN0eWxlcyB0aGF0IHVzZXMgbWVkaWEgcXVlcmllcyBmb3IgbW9kZXJuIGJyb3dzZXIgc3VwcG9ydFxuLy8gKGMpIEF0bGFudGljIEJULiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IENvbmZpZ3VyYXRpb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuQGltcG9ydCBcInV0aWxpdGllcy9pbXBvcnRzXCI7Il0sImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
