/*!
Theme Name: Voidx
Theme URI: https://github.com/synapticism/wordpress-gulp-bower-sass
Author: Alexander Synaptic
Author URI: http://synapticism.com
Description:
Version: 0.0.4
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl.txt
Tags: light, responsive-layout, right-sidebar, starter-theme, two-column, translation-ready, white
Text Domain:
Domain Path: /languages/
*/
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.2.0
* Docs at http://davidtheclark.github.io/scut
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
 * Remove default margin.
 */
body {
  margin: 0; }

/* HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */
[hidden],
template {
  display: none; }

/* Links
   ========================================================================== */
/**
 * Remove the gray background color from active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */
a:active,
a:hover {
  outline: 0; }

/* Text-level semantics
   ========================================================================== */
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted; }

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */
b,
strong {
  font-weight: bold; }

/**
 * Address styling not present in Safari and Chrome.
 */
dfn {
  font-style: italic; }

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
 * Address styling not present in IE 8/9.
 */
mark {
  background: #ff0;
  color: #000; }

/**
 * Address inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove border when inside `a` element in IE 8/9/10.
 */
img {
  border: 0; }

/**
 * Correct overflow not hidden in IE 9/10/11.
 */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
   ========================================================================== */
/**
 * Address margin not present in IE 8/9 and Safari.
 */
figure {
  margin: 1em 40px; }

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  box-sizing: content-box;
  height: 0; }

/**
 * Contain overflow in all browsers.
 */
pre {
  overflow: auto; }

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */
button {
  overflow: visible; }

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none; }

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type="button"], input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default; }

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal; }

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */
textarea {
  overflow: auto; }

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */
optgroup {
  font-weight: bold; }

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

.wrap-main:after, .nav-posts:after, footer .footer3up:after {
  content: "";
  display: table;
  clear: both; }

.site-content {
  margin-bottom: 30px; }

.site-content article {
  margin-bottom: 60px; }

.nav-posts {
  margin-bottom: 90px; }

.clear {
  clear: both; }

html {
  font-size: 18px; }

body {
  background: white;
  color: #333;
  font-family: 'Lato', sans-serif;
  font-weight: 400;
  line-height: 1.44444;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: normal;
  line-height: 1.22222;
  text-transform: uppercase; }

h1 {
  font-size: 2em;
  font-weight: 700; }

h2 {
  font-size: 1.5em;
  font-weight: 700; }

p {
  margin-top: 0; }

a {
  border: 0;
  color: #0067b1;
  text-decoration: none;
  -webkit-transition: color 0.2s ease-out;
          transition: color 0.2s ease-out; }
  .wrap-content a,
  .menu-inline a {
    color: steelblue; }
  .wrap-sidebar a {
    color: steelblue; }

figure {
  margin: 0; }

img {
  height: auto;
  max-width: 100%; }

.wrap-header, .wrap-content, .wrap-sidebar, .wrap-footer {
  box-sizing: border-box;
  padding: 0 30px 0 30px; }

.wrap-header {
  padding-bottom: 15px;
  padding-top: 15px; }
  @media screen and (min-width: 800px) {
    .wrap-header {
      padding-left: 60px;
      padding-right: 60px; } }

.wrap-main {
  clear: both; }
  @media screen and (min-width: 800px) {
    .wrap-main {
      margin-left: auto;
      margin-right: auto;
      max-width: 1000px;
      padding: 0 60px 0 60px; } }

.wrap-content {
  padding: 30px; }
  @media screen and (min-width: 800px) {
    .wrap-content {
      float: left;
      padding-left: 0;
      padding-right: 30px;
      width: 63%; } }

.wrap-sidebar {
  padding: 30px; }
  @media screen and (min-width: 800px) {
    .wrap-sidebar {
      float: right;
      padding-left: 30px;
      padding-right: 0;
      width: 37%; } }

.wrap-footer {
  padding-bottom: 60px;
  padding-top: 15px; }
  @media screen and (min-width: 800px) {
    .wrap-footer {
      padding-left: 60px;
      padding-right: 60px; } }

.site-header,
.site-footer {
  margin-left: auto;
  margin-right: auto;
  max-width: 1000px; }

.site-title {
  margin-top: 0; }

.alignright {
  float: right; }

.alignleft {
  float: left; }

.menu-main-menu-container {
  margin-top: 15px;
  width: 100%;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); }

.menu-main-menu-container ul {
  list-style: none;
  position: relative;
  display: inline-block;
  margin: 0;
  padding: 0;
  font-size: 0; }

.menu-main-menu-container ul a {
  display: block;
  color: #333;
  text-decoration: none;
  font-weight: 700;
  font-size: 14px;
  line-height: 80px;
  padding: 0 20px;
  color: #fff;
  text-transform: uppercase; }

.menu-main-menu-container ul li {
  position: relative;
  display: inline-block;
  margin: 0;
  padding: 0;
  margin-right: -3px; }

.menu-main-menu-container ul li.current-menu-item {
  background: #0067b1;
  position: relative; }
  .menu-main-menu-container ul li.current-menu-item:before {
    content: "";
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 8px 12.5px 0 12.5px;
    border-color: #fff transparent transparent transparent;
    position: absolute;
    top: 0px;
    left: 50%;
    margin-left: -12.2px;
    -moz-transform: scale(0.9999); }

.sub-menu li.current-menu-item a {
  background: #0067b1; }

.sub-menu li.current-menu-item:before {
  display: none; }

.menu-main-menu-container ul li:hover {
  background: #0067b1; }

.menu-main-menu-container ul ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: #fff;
  padding: 0;
  z-index: 999999; }

.menu-main-menu-container ul ul li {
  float: none;
  width: 200px; }

.menu-main-menu-container ul ul a {
  background: #6B6B6B;
  font-size: 14px;
  line-height: 80px;
  padding: 0 20px; }
  .menu-main-menu-container ul ul a:hover {
    background: #0067b1; }

.menu-main-menu-container ul ul ul {
  top: 0;
  left: 100%; }

.menu-main-menu-container ul li:hover > ul {
  display: block; }

.menu-main-menu-container .menu-item-has-children {
  padding-right: 40px !important; }
  .menu-main-menu-container .menu-item-has-children:after {
    content: "";
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 6px 5px 0 5px;
    border-color: #fff transparent transparent transparent;
    position: absolute;
    top: 50%;
    margin-top: -3px;
    right: 20px;
    margin-left: -12.2px; }

@media screen and (min-width: 880px) {
  .wrap-padding {
    padding-left: 60px;
    padding-right: 60px; } }

@media screen and (max-width: 880px) {
  .wrap-padding {
    padding-left: 0;
    padding-right: 0; } }

@media screen and (max-width: 880px) {
  .wrap-padding-mobile {
    padding-left: 1em;
    padding-right: 1em; } }

.menu-footer-menu-container ul {
  margin: 0;
  padding: 0; }

.menu-footer-menu-container ul li {
  display: inline; }

.menu-footer-menu-container ul li:after {
  content: "|";
  padding: 0 15px; }

.menu-footer-menu-container ul li:last-child:after {
  display: none; }

.shiftnav.shiftnav-skin-dark-blue ul.shiftnav-menu li.menu-item.current-menu-item > .shiftnav-target, .shiftnav.shiftnav-skin-dark-blue ul.shiftnav-menu li.menu-item ul.sub-menu .current-menu-item .shiftnav-target {
  background: #0067b1 !important; }

.shiftnav.shiftnav-skin-dark-blue ul.shiftnav-menu li.menu-item.shiftnav-active > .shiftnav-target, .shiftnav.shiftnav-skin-dark-blue ul.shiftnav-menu li.menu-item.shiftnav-in-transition > .shiftnav-target {
  background: #0067b1 !important; }

#shiftnav-toggle-main.shiftnav-toggle-position-absolute {
  top: 100px;
  z-index: 999; }

.shiftnav .shiftnav-menu-image-padded {
  padding: 20px 50px !important; }

.nav-previous {
  box-sizing: border-box;
  float: left;
  padding-right: 15px;
  width: 50%; }

.nav-next {
  box-sizing: border-box;
  float: right;
  padding-left: 15px;
  text-align: right;
  width: 50%; }

.widget ul {
  list-style-type: none;
  margin: 0;
  padding: 0; }

.site-title {
  text-indent: -999999px;
  background: url("./img/logo.png");
  width: 297px;
  height: 73px;
  float: left; }
  @media screen and (max-width: 880px) {
    .site-title {
      position: absolute;
      top: 15px;
      background-size: 250px 61px;
      width: 250px;
      height: 61px;
      left: 50%;
      margin-left: -125px; } }

.tagline-wrap {
  float: left;
  margin-left: 20px;
  padding-left: 20px;
  border-left: 1px solid #cccccc;
  margin-top: 15px; }
  @media screen and (max-width: 880px) {
    .tagline-wrap {
      display: none; } }

.site-description {
  font-weight: 700;
  text-transform: uppercase;
  font-size: 0.9em;
  line-height: 100%;
  margin: 0 0 5px; }

.description-tags {
  font-weight: 400;
  font-size: 0.7em; }

nav {
  clear: both;
  display: block; }

.nav-wrap {
  clear: both;
  background: #353333;
  display: block;
  width: 100%;
  min-height: 10px; }

.quick-contact {
  float: right;
  font-weight: 700;
  font-size: 0.8em; }
  @media screen and (max-width: 1050px) {
    .quick-contact {
      display: none; } }
  .quick-contact a {
    color: #353333; }
    .quick-contact a:hover {
      color: #0067b1; }
  .quick-contact i {
    display: inline-block;
    border-radius: 60px;
    background: #0067b1;
    color: #fff;
    padding: 6px;
    font-size: 0.8em;
    margin-top: 5px;
    margin-right: 5px;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5); }
  .quick-contact .fa-phone {
    margin-top: 5px;
    width: 12px;
    text-indent: 1px; }

.shift-contact {
  float: right; }
  .shift-contact .fa-envelope-o, .shift-contact .fa-phone {
    margin-left: 20px;
    border-left: 1px solid #fff;
    padding-left: 20px; }

.entry-content, .widget-area {
  font-size: 0.8rem; }

@media screen and (max-width: 880px) {
  .page .wrap-main {
    margin-top: 50px; } }

.splash-image {
  width: 100%;
  min-height: 600px;
  background-size: cover;
  background-repeat: none;
  background-position: center;
  position: relative; }
  @media screen and (max-width: 880px) {
    .splash-image {
      min-height: 300px;
      margin-top: 70px; } }
  .splash-image .wrap-main {
    position: relative; }
    @media screen and (max-width: 880px) {
      .splash-image .wrap-main {
        margin-top: 0 !important; } }

.splash-wrap, .splash-wrap-mobile {
  background-color: rgba(0, 0, 0, 0.62);
  color: #fff;
  padding: 2em; }
  .splash-wrap h1, .splash-wrap-mobile h1 {
    margin: 0;
    font-weight: 700;
    font-size: 1.6em; }
  .splash-wrap p, .splash-wrap-mobile p {
    font-size: 0.8em;
    max-width: 600px; }

.splash-image .splash-wrap {
  position: absolute;
  bottom: -600px;
  margin-right: 60px;
  margin-left: 60px;
  left: 0;
  right: 0; }
  @media screen and (max-width: 880px) {
    .splash-image .splash-wrap {
      display: none; } }

.splash-wrap-mobile {
  display: none; }
  @media screen and (max-width: 880px) {
    .splash-wrap-mobile {
      display: block;
      background-color: #000; } }

.grey2white {
  background: url("./img/grey2white.png") top center no-repeat;
  width: 100%;
  margin-top: -10px;
  height: 240px; }

.grey {
  background: #353333;
  width: 100%;
  display: block;
  color: #fff; }

.white2grey {
  background: url("./img/white2grey.png") top center no-repeat;
  width: 100%;
  margin-top: -10px;
  height: 240px; }
  @media screen and (max-width: 880px) {
    .white2grey {
      margin-top: -80px; } }

.section-block {
  width: 33%;
  float: left;
  text-align: center;
  padding: 2em 1em 1em;
  box-sizing: border-box; }
  @media screen and (max-width: 880px) {
    .section-block {
      width: 100%;
      padding: 1em 1em 0; } }
  .section-block h2 {
    font-size: 0.9em;
    font-weight: 700;
    text-transform: uppercase;
    padding-top: 1.5em;
    margin-bottom: 1em;
    color: #fff; }
  .section-block p {
    padding: 0 1.5em 2em 1.5em;
    font-size: 0.7em;
    font-weight: 700;
    color: #fff; }
  .section-block .section-item {
    background: #0067b1;
    width: 100%;
    min-height: 290px;
    box-shadow: 7px 7px 0px 0px black;
    max-width: 400px;
    margin: 0 auto;
    -webkit-transition: background-color 200ms;
    transition: background-color 200ms; }
    .section-block .section-item:hover {
      background: #013B65; }
  .section-block img {
    padding: 1em 2em 0.5em;
    width: 30%; }

.about-excerpt h2 {
  text-align: center;
  margin-bottom: 2em; }

.about-excerpt .about-content {
  font-size: 0.8em; }
  @media screen and (min-width: 880px) {
    .about-excerpt .about-content {
      -webkit-column-count: 2;
      /* Chrome, Safari, Opera */
      -moz-column-count: 2;
      /* Firefox */
      column-count: 2;
      -webkit-column-gap: 40px;
      /* Chrome, Safari, Opera */
      -moz-column-gap: 40px;
      /* Firefox */
      column-gap: 40px; } }

footer {
  text-align: center;
  position: relative; }
  footer .site-title {
    text-indent: -999999px;
    background: url("./img/logo-footer.png");
    width: 200px;
    height: 49px;
    background-size: 200px 49px;
    float: none;
    margin: 0 auto 0.5em; }
    @media screen and (max-width: 880px) {
      footer .site-title {
        position: relative;
        top: 0;
        left: 0;
        margin: 0 auto 0.5em; } }
  footer #menu-footer a {
    color: #fff;
    text-transform: uppercase;
    font-size: 0.8em;
    font-weight: 700; }
    footer #menu-footer a:hover {
      color: #0067b1; }
  footer .site-credits {
    font-size: 0.6em;
    margin-top: 0.5em; }
  footer .quick-contact {
    float: left;
    text-align: left;
    margin-top: 3.8em; }
    footer .quick-contact a {
      color: #fff; }
  footer .footer3up {
    width: 33%;
    float: left; }
    @media screen and (max-width: 880px) {
      footer .footer3up {
        width: 100%; } }
  footer .footer-address {
    float: right;
    text-align: right;
    font-size: 0.8em;
    margin-top: 2.3em; }
    @media screen and (max-width: 880px) {
      footer .footer-address {
        display: none; } }
  footer .scroll-top {
    color: #fff;
    background: #0067b1;
    padding: 15px;
    font-size: 2em;
    line-height: 100%;
    box-shadow: 5px 5px 0px 0px black;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.5);
    position: absolute;
    top: -220px;
    right: 0; }
    @media screen and (max-width: 880px) {
      footer .scroll-top {
        top: -170px; } }

@media screen and (max-width: 800px) {
  #secondary, #wrap-sidebar {
    display: none; } }

@media screen and (max-width: 800px) {
  .page-id-34 #secondary, .page-id-34 #wrap-sidebar {
    display: block; } }

.site-content {
  margin-bottom: 0; }

.wrap-content {
  padding-bottom: 0; }

#services, #successes, #principals {
  padding-top: 40px; }

#secondary #gform_widget-2 {
  background: #e9e8e8;
  padding: 1.5em;
  box-shadow: 7px 7px 0px 0px rgba(0, 0, 0, 0.5); }
  #secondary #gform_widget-2 li {
    margin-bottom: 1em; }
  #secondary #gform_widget-2 input, #secondary #gform_widget-2 textarea {
    width: 100%;
    border: none;
    padding: 1em;
    box-sizing: border-box; }
  #secondary #gform_widget-2 input[type="submit"] {
    width: 50%;
    background: #0067b1;
    color: #fff;
    font-weight: 700;
    padding: 1em 0; }

#secondary .gform_wrapper li.gfield.gfield_error, #secondary .gform_wrapper li.gfield.gfield_error.gfield_contains_required.gfield_creditcard_warning {
  background-color: transparent !important;
  margin-bottom: 0.375em !important;
  padding: 0;
  border-top: none;
  border-bottom: none; }

#secondary .gform_wrapper div.validation_error {
  border-top: none !important;
  border-bottom: none !important;
  font-size: 1em; }

.pin {
  display: inline-block;
  vertical-align: middle; }
  .pin:before {
    content: "";
    background: url("./img/pin.png") top center no-repeat;
    background-size: 10px 16px;
    display: block;
    width: 10px;
    height: 16px;
    display: inline-block;
    vertical-align: middle;
    margin-right: 5px; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiX25vcm1hbGl6ZS5zY3NzIiwic3R5bGUuY3NzIiwiX2hlbHBlcnMuc2NzcyIsIl9saWJyYXJ5LnNjc3MiLCJfZ2VuZXJhbC5zY3NzIiwiX2NvbmZpZy5zY3NzIiwiX2xheW91dC5zY3NzIiwiX21lbnVzLnNjc3MiLCJfbmF2aWdhdGlvbi5zY3NzIiwiX3NpZGViYXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0VBWUU7QUNaRjs7Ozs7RUFLRTtBQ0xGLDRFQUE0RTtBQUU1RTs7OztHQUlHO0FBRUg7RUFDRSx3QkFBd0I7RUFBRSxPQUFPO0VBQ2pDLDJCQUEyQjtFQUFFLE9BQU87RUFDcEMsK0JBQStCO0VBQUUsT0FBTyxFQUhwQzs7QUFNTjs7R0FFRztBQUVIO0VBQ0UsVUFBVSxFQUROOztBQUlOO2dGQUNnRjtBQUVoRjs7Ozs7R0FLRztBQWNIOzs7Ozs7Ozs7Ozs7O0VBQ0UsZUFBZSxFQURSOztBQUlUOzs7R0FHRztBQUtIOzs7O0VBQ0Usc0JBQXNCO0VBQUUsT0FBTztFQUMvQix5QkFBeUI7RUFBRSxPQUFPLEVBRjdCOztBQUtQOzs7R0FHRztBQUVpQjtFQUNsQixjQUFjO0VBQ2QsVUFBVSxFQUZXOztBQUt2Qjs7O0dBR0c7QUNhSDs7RURURSxjQUFjLEVBRE47O0FBSVY7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUg7RUFDRSw4QkFBOEIsRUFEN0I7O0FBSUg7OztHQUdHO0FBR0Y7O0VBQ0MsV0FBVyxFQURKOztBQUlUO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVPO0VBQ1IsMEJBQTBCLEVBRGY7O0FBSWI7O0dBRUc7QUFHSDs7RUFDRSxrQkFBa0IsRUFEWjs7QUFJUjs7R0FFRztBQUVIO0VBQ0UsbUJBQW1CLEVBRGhCOztBQUlMOzs7R0FHRztBQUVIO0VBQ0UsZUFBZTtFQUNmLGlCQUFpQixFQUZmOztBQUtKOztHQUVHO0FBRUg7RUFDRSxpQkFBaUI7RUFDakIsWUFBWSxFQUZSOztBQUtOOztHQUVHO0FBRUg7RUFDRSxlQUFlLEVBRFY7O0FBSVA7O0dBRUc7QUFHSDs7RUFDRSxlQUFlO0VBQ2YsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQix5QkFBeUIsRUFKdEI7O0FBT0w7RUFDRSxZQUFZLEVBRFQ7O0FBSUw7RUFDRSxnQkFBZ0IsRUFEYjs7QUFJTDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSDtFQUNFLFVBQVUsRUFEUDs7QUFJTDs7R0FFRztBQUVVO0VBQ1gsaUJBQWlCLEVBREg7O0FBSWhCO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVIO0VBQ0UsaUJBQWdCLEVBRFY7O0FBSVI7O0dBRUc7QUFFSDtFQUNFLHdCQUF3QjtFQUN4QixVQUFVLEVBRlI7O0FBS0o7O0dBRUc7QUFFSDtFQUNFLGVBQWUsRUFEWjs7QUFJTDs7R0FFRztBQUtIOzs7O0VBQ0Usa0NBQWtDO0VBQ2xDLGVBQWUsRUFGWDs7QUFLTjtnRkFDZ0Y7QUFFaEY7OztHQUdHO0FBRUg7Ozs7O0dBS0c7QUFNSDs7Ozs7RUFDRSxlQUFlO0VBQUUsT0FBTztFQUN4QixjQUFjO0VBQUUsT0FBTztFQUN2QixVQUFVO0VBQUUsT0FBTyxFQUhYOztBQU1WOztHQUVHO0FBRUg7RUFDRSxrQkFBa0IsRUFEWjs7QUFJUjs7Ozs7R0FLRztBQUdIOztFQUNFLHFCQUFxQixFQURmOztBQUlSOzs7Ozs7R0FNRztBQUtnQjs7O0VBQ2pCLDJCQUEyQjtFQUFFLE9BQU87RUFDcEMsZ0JBQWdCO0VBQUUsT0FBTyxFQUZMOztBQUt0Qjs7R0FFRztBQUdnQjs7RUFDakIsZ0JBQWdCLEVBREk7O0FBSXRCOztHQUVHO0FBR0U7O0VBQ0gsVUFBVTtFQUNWLFdBQVcsRUFGWTs7QUFLekI7OztHQUdHO0FBRUg7RUFDRSxvQkFBb0IsRUFEZjs7QUFJUDs7Ozs7O0dBTUc7QUFHZTs7RUFDaEIsdUJBQXVCO0VBQUUsT0FBTztFQUNoQyxXQUFXO0VBQUUsT0FBTyxFQUZEOztBQUtyQjs7OztHQUlHO0FBR2lCOztFQUNsQixhQUFhLEVBRGtDOztBQUlqRDs7O0dBR0c7QUFFZ0I7RUFDakIsOEJBQThCO0VBQUUsT0FBTztFQUN2Qyx3QkFBd0I7RUFBRSxPQUFPLEVBRmI7O0FBS3RCOzs7O0dBSUc7QUFHaUI7O0VBQ2xCLHlCQUF5QixFQURzQjs7QUFJakQ7O0dBRUc7QUFFSDtFQUNFLDBCQUEwQjtFQUMxQixjQUFhO0VBQ2IsK0JBQThCLEVBSHRCOztBQU1WOzs7R0FHRztBQUVIO0VBQ0UsVUFBVTtFQUFFLE9BQU87RUFDbkIsV0FBVztFQUFFLE9BQU8sRUFGZDs7QUFLUjs7R0FFRztBQUVIO0VBQ0UsZUFBZSxFQURQOztBQUlWOzs7R0FHRztBQUVIO0VBQ0Usa0JBQWtCLEVBRFY7O0FBSVY7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUg7RUFDRSwwQkFBMEI7RUFDMUIsa0JBQWtCLEVBRmI7O0FBTVA7O0VBQ0UsV0FBVyxFQURUOztBRDVaZ0I7RUFDaEIsWUFBWTtFQUNaLGVBQWU7RUFDZixZQUFZLEVBSEw7O0FHV0k7RUFDYixvQkNtQmUsRURwQkY7O0FBR0U7RUFDZixvQkNnQmUsRURqQkE7O0FBR0E7RUFDZixvQkNhZSxFRGRBOztBQUlqQjtFQUNFLFlBQVksRUFETjs7QUU1QlI7RUFDRSxnQkFBZ0IsRUFEWjs7QUFHTjtFQUNFLGtCQ2dCc0I7RURmdEIsWUNZVTtFRFhWLGdDQUFnQztFQUNoQyxpQkFBaUI7RUFDakIscUJBQXFCO0VBQ3BCLG9DQUFvQztFQUNwQyxtQ0FBbUMsRUFQaEM7O0FBY047Ozs7OztFQUNFLG9CQUFvQjtFQUNwQixxQkFBcUI7RUFDckIsMEJBQTBCLEVBSHhCOztBQUtKO0VBQ0UsZUFBZTtFQUNmLGlCQUFpQixFQUZmOztBQUlKO0VBQ0UsaUJBQWlCO0VBQ2pCLGlCQUFpQixFQUZmOztBQU9KO0VBQ0UsY0FBYyxFQURiOztBQUlIO0VBQ0UsVUFBVTtFQUNWLGVDZHdCO0VEZXhCLHNCQUFzQjtFQUN0Qix3Q0FBOEI7VUFBOUIsZ0NBQThCLEVBSjdCO0VBTVk7O0lBQ1gsaUJDMUJhLEVEeUJDO0VBR0Y7SUFDWixpQkM1Qm1CLEVEMkJKOztBQUluQjtFQUNFLFVBQVUsRUFESjs7QUFHUjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFGYjs7QUVqREU7RUFDTCx1QkFBdUI7RUFDdkIsdUJIZ0NlLEVHbENWOztBQUlQO0VBR0UscUJIMkJlO0VHMUJmLGtCSDBCZSxFRzlCSDtFSEVWO0lHRko7TUFNSSxtQkh3QmE7TUd2QmIsb0JIdUJhLEVHOUJILEVBQUE7O0FBVWQ7RUFDRSxZQUFZLEVBREY7RUhSUjtJR1FKO01QNGxCRSxrQkFBa0I7TUFDbEIsbUJBQW1CO01BRWpCLGtCTTltQmtCO01Db0JsQix1QkhlYSxFR3BCTCxFQUFBOztBQVFaO0VBRUUsY0hVZSxFR1pGO0VIaEJYO0lHZ0JKO01BSUksWUFBWTtNQUNaLGdCQUFnQjtNQUNoQixvQkhNYTtNR0xiLFdBQWlCLEVBUE4sRUFBQTs7QUFVZjtFQUVFLGNIQWUsRUdGRjtFSDFCWDtJRzBCSjtNQUlJLGFBQWE7TUFDYixtQkhIYTtNR0liLGlCQUFpQjtNQUNqQixXQUFpQixFQVBOLEVBQUE7O0FBVWY7RUFHRSxxQkhYZTtFR1lmLGtCSFplLEVHUUg7RUhwQ1Y7SUdvQ0o7TUFNSSxtQkhkYTtNR2ViLG9CSGZhLEVHUUgsRUFBQTs7QUFXZDs7RVBxakJFLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFFakIsa0JNOW1Ca0IsRUNzRFI7O0FBR2Q7RUFDRSxjQUFjLEVBREg7O0FBVWI7RUFDRSxhQUFhLEVBREY7O0FBR2I7RUFDRSxZQUFZLEVBREY7O0FDdkVaO0VBRUUsaUJBQWdCO0VBQ2hCLFlBQVk7RUFDWiwwQ0FBMkIsRUFINUI7O0FBTXlCO0VBRXhCLGlCQUFnQjtFQUNoQixtQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLFVBQVM7RUFDVCxXQUFVO0VBQ1YsYUFBYSxFQU5kOztBQVM0QjtFQUUzQixlQUFjO0VBQ2QsWUFBVztFQUNYLHNCQUFxQjtFQUNyQixpQkFBZ0I7RUFDaEIsZ0JBQWU7RUFDZixrQkFBaUI7RUFDakIsZ0JBQWM7RUFDZCxZQUFZO0VBQ1osMEJBQTBCLEVBVDNCOztBQWM0QjtFQUUzQixtQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLFVBQVM7RUFDVCxXQUFVO0VBQ1YsbUJBQW1CLEVBTHBCOztBQVE4QjtFQUU3QixvQkZwQndCO0VFcUJ4QixtQkFBbUIsRUFGcEI7RUFJRTtJQUNDLFlBQVk7SUFDWixTQUFTO0lBQ1QsVUFBVTtJQUNWLG9CQUFvQjtJQUNwQixrQ0FBaUM7SUFDakMsdURBQXVEO0lBQ3ZELG1CQUFtQjtJQUNuQixTQUFTO0lBQ1QsVUFBVTtJQUNWLHFCQUFxQjtJQUNyQiw4QkFBcUIsRUFYYjs7QUFrQlY7RUFDRSxvQkYxQ3NCLEVFeUNyQjs7QUFJRjtFQUNDLGNBQWEsRUFETDs7QUFNbUI7RUFFN0Isb0JGckR3QixFRW9EekI7O0FBSTRCO0VBRTNCLGNBQWE7RUFDYixtQkFBa0I7RUFDbEIsVUFBUztFQUNULFFBQU87RUFDUCxpQkFBZ0I7RUFDaEIsV0FBVTtFQUNWLGdCQUFnQixFQVBqQjs7QUFVK0I7RUFFOUIsWUFBVztFQUNYLGFBQ0QsRUFIQTs7QUFLK0I7RUFHOUIsb0JBQW9CO0VBQ2xCLGdCQUFlO0VBQ2pCLGtCQUFpQjtFQUNqQixnQkFBYyxFQUxmO0VBT0U7SUFDQyxvQkZsRnNCLEVFaUZmOztBQUtxQjtFQUU5QixPQUFNO0VBQ04sV0FDRCxFQUhBOztBQUt1QztFQUV0QyxlQUNELEVBRkE7O0FBSXlCO0VBQ3pCLCtCQUErQixFQURtQjtFQUdoRDtJQUNLLFlBQVk7SUFDaEIsU0FBUztJQUNULFVBQVU7SUFDVixvQkFBb0I7SUFDcEIsNEJBQTJCO0lBQzNCLHVEQUF1RDtJQUN2RCxtQkFBbUI7SUFDbkIsU0FBUztJQUNULGlCQUFpQjtJQUNqQixZQUFZO0lBQ1oscUJBQXFCLEVBWGQ7O0FBZ0JYO0VBQ0E7SUFDSSxtQkFBbUI7SUFDbkIsb0JBQW9CLEVBRlQsRUFBQTs7QUFNZjtFQUNBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGlCQUFpQixFQUZOLEVBQUE7O0FBTWY7RUFDQTtJQUNJLGtCQUFrQjtJQUNsQixtQkFBbUIsRUFGRCxFQUFBOztBQVVwQjtFQUNFLFVBQVU7RUFDVixXQUFXLEVBRlQ7O0FBS0Q7RUFDRCxnQkFBZ0IsRUFEWDs7QUFJQTtFQUNILGFBQWE7RUFDYixnQkFBZSxFQUZKOztBQUtHO0VBQ2QsY0FBYyxFQURROztBQU95SztFQUNqTSwrQkFBeUMsRUFEMEs7O0FBSzFCO0VBQ3pMLCtCQUF5QyxFQURrSzs7QUFLMUw7RUFDbkIsV0FBVztFQUNYLGFBQWEsRUFGMEM7O0FBSy9DO0VBQ1IsOEJBQTZCLEVBRFE7O0FDdE12QztFQUNFLHVCQUF1QjtFQUN2QixZQUFZO0VBQ1osb0JMK0JlO0VLOUJmLFdBQVcsRUFKRTs7QUFNZjtFQUNFLHVCQUF1QjtFQUN2QixhQUFhO0VBQ2IsbUJMeUJlO0VLeEJmLGtCQUFrQjtFQUNsQixXQUFXLEVBTEY7O0FDVkg7RUFDTixzQkFBc0I7RUFDdEIsVUFBVTtFQUNWLFdBQVcsRUFIRDs7QVh1Qlo7RUFDRSx1QkFBdUI7RUFDdkIsa0NBQWU7RUFDZixhQUFhO0VBQ2IsYUFBYTtFQUNiLFlBQVksRUFMRDtFQU9YO0lBUEY7TUFRSSxtQkFBbUI7TUFDbkIsVUFBVTtNQUNWLDRCQUEyQjtNQUMzQixhQUFhO01BQ2IsYUFBYTtNQUNiLFVBQVU7TUFDVixvQkFBb0IsRUFkWCxFQUFBOztBQWtCYjtFQUNFLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLCtCQUErQjtFQUMvQixpQkFBaUIsRUFMSjtFQVFiO0lBUkY7TUFTSSxjQUFjLEVBVEgsRUFBQTs7QUFhZjtFQUNFLGlCQUFpQjtFQUNqQiwwQkFBMEI7RUFDMUIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixnQkFBZSxFQUxFOztBQVFuQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUIsRUFGQTs7QUFLbkI7RUFDRSxZQUFZO0VBQ1osZUFDRCxFQUhJOztBQUtMO0VBQ0UsWUFBWTtFQUNaLG9CT2xEd0I7RVBtRHhCLGVBQWU7RUFDZixZQUFZO0VBQ1osaUJBQWlCLEVBTFI7O0FBUVg7RUFDRSxhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLGlCQUFpQixFQUhIO0VBTVo7SUFOSjtNQU9NLGNBQWMsRUFQSixFQUFBO0VBVWQ7SUFDSSxlT25Fb0IsRVBrRXJCO0lBR0E7TUFDQyxlT3JFb0IsRVBvRWI7RUFLWDtJQUNJLHNCQUFzQjtJQUd4QixvQkFBb0I7SUFDcEIsb0JPOUVzQjtJUCtFdEIsWUFBWTtJQUNaLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQiwwQ0FBMkIsRUFYMUI7RUFjSDtJQUNFLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osaUJBQWlCLEVBSFI7O0FBU2I7RUFDSSxhQUFhLEVBREQ7RUFHRTtJQUNkLGtCQUFrQjtJQUNsQiw0QkFBNEI7SUFDNUIsbUJBQW1CLEVBSE07O0FBVWI7RUFDZCxrQkFBa0IsRUFEVTs7QUFPMUI7RUFGSTtJQUdGLGlCQUFpQixFQUhILEVBQUE7O0FBU3BCO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQix1QkFBdUI7RUFDdkIsd0JBQXdCO0VBQ3hCLDRCQUE0QjtFQUM1QixtQkFBbUIsRUFOTjtFQVFYO0lBUko7TUFTTyxrQkFBa0I7TUFDbEIsaUJBQWlCLEVBVlQsRUFBQTtFQWNmO0lBQ0ksbUJBQW1CLEVBRFg7SUFHUjtNQUhKO1FBSU0seUJBQXlCLEVBSm5CLEVBQUE7O0FBU0U7RUFDVixzQ0FBc0I7RUFDdEIsWUFBWTtFQUNaLGFBQWEsRUFIa0I7RUFNL0I7SUFDRSxVQUFVO0lBQ1YsaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUhmO0VBTUo7SUFDRSxpQkFBaUI7SUFDakIsaUJBQWlCLEVBRmhCOztBQU1PO0VBQ1YsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTLEVBTmU7RUFTMUI7SUFUWTtNQVVWLGNBQ0QsRUFYeUIsRUFBQTs7QUFjNUI7RUFDRSxjQUFjLEVBREs7RUFHbkI7SUFIRjtNQUlJLGVBQWU7TUFDZix1QkFBdUIsRUFMTixFQUFBOztBQVlyQjtFQUNJLDZEQUE0RDtFQUM1RCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLGNBQWMsRUFKTDs7QUFPYjtFQUNFLG9CQUFvQjtFQUNwQixZQUFZO0VBRVosZUFBZTtFQUNmLFlBQVksRUFMUDs7QUFRUDtFQUNJLDZEQUE0RDtFQUM1RCxZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLGNBQWMsRUFKTDtFQU1UO0lBTko7TUFPTSxrQkFBa0IsRUFQWCxFQUFBOztBQWNiO0VBQ0UsV0FBVztFQUNYLFlBQVk7RUFDWixtQkFBbUI7RUFDbkIscUJBQW9CO0VBQ3BCLHVCQUF1QixFQUxUO0VBT1o7SUFQSjtNQVFNLFlBQVk7TUFDWixtQkFBa0IsRUFUUixFQUFBO0VBWWQ7SUFDRSxpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLDBCQUEwQjtJQUMxQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLFlBQVksRUFOVjtFQVNKO0lBQ0UsMkJBQTBCO0lBQzFCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsWUFBWSxFQUpYO0VBT0g7SUFDSSxvQk94UG9CO0lQeVBwQixZQUFZO0lBQ1osa0JBQWtCO0lBR2xCLGtDQUF3QztJQUN2QyxpQkFBaUI7SUFDbEIsZUFBZTtJQUNmLDJDQUEwQztJQUcxQyxtQ0FBa0MsRUFadkI7SUFjVjtNQUNDLG9CQUFvQixFQURiO0VBS2I7SUFDRSx1QkFBc0I7SUFDdEIsV0FBVyxFQUZSOztBQVNMO0VBQ0UsbUJBQW1CO0VBQ25CLG1CQUFtQixFQUZqQjs7QUFLSjtFQUNFLGlCQUFpQixFQURIO0VBR2Q7SUFIRjtNQUlJLHdCQUF3QjtNQUFFLDJCQUEyQjtNQUNyRCxxQkFBcUI7TUFBRSxhQUFhO01BQ3BDLGdCQUFnQjtNQUNoQix5QkFBeUI7TUFBRSwyQkFBMkI7TUFDdEQsc0JBQXNCO01BQUUsYUFBYTtNQUNyQyxpQkFBaUIsRUFUTCxFQUFBOztBQWtCbEI7RUFDRSxtQkFBbUI7RUFDbkIsbUJBQW1CLEVBRmI7RUFJUjtJQUNFLHVCQUF1QjtJQUN2Qix5Q0FBZTtJQUNmLGFBQWE7SUFDYixhQUFhO0lBQ2IsNEJBQTJCO0lBQzNCLFlBQVk7SUFDWixxQkFBb0IsRUFQVDtJQVNYO01BVEY7UUFVSSxtQkFBbUI7UUFDbkIsT0FBTztRQUNQLFFBQVE7UUFDUixxQkFBb0IsRUFiWCxFQUFBO0VBa0JYO0lBQ0UsWUFBWTtJQUNaLDBCQUEwQjtJQUMxQixpQkFBaUI7SUFDakIsaUJBQWlCLEVBSmhCO0lBTUE7TUFDQyxlT3ZVb0IsRVBzVWI7RUFPWDtJQUNFLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFGTDtFQU1mO0lBQ0UsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFISjtJQUlkO01BQ0UsWUFBWSxFQURYO0VBS0w7SUFDRSxXQUFXO0lBQ1gsWUFBWSxFQUZGO0lBS1Y7TUFMRjtRQU1JLFlBQVksRUFOSixFQUFBO0VBVVo7SUFDRSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFKSDtJQU1mO01BTkY7UUFPSSxjQUFjLEVBUEQsRUFBQTtFQVdqQjtJQUNFLFlBQVk7SUFDWixvQk9uWHNCO0lQb1h0QixjQUFjO0lBQ2QsZUFBZTtJQUNmLGtCQUFrQjtJQUdsQixrQ0FBd0M7SUFDeEMsMENBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osU0FBUyxFQVpFO0lBY1g7TUFkRjtRQWVJLFlBQVksRUFmSCxFQUFBOztBQTBCYjtFQUZVO0lBR1IsY0FBYyxFQUhTLEVBQUE7O0FBUzNCO0VBQ29DO0lBQ2hDLGVBQWUsRUFEZ0MsRUFBQTs7QUFLbkQ7RUFDRSxpQkFBaUIsRUFESjs7QUFJZjtFQUNFLGtCQUFpQixFQURKOztBQUlRO0VBQ3JCLGtCQUFrQixFQURnQjs7QUFhbEM7RUFDRSxvQkFBb0I7RUFDcEIsZUFBZTtFQUdmLCtDQUF3QyxFQUx6QjtFQU9mO0lBQ0UsbUJBQW1CLEVBRGpCO0VBSUU7SUFDSixZQUFZO0lBQ1osYUFBYTtJQUNiLGFBQWE7SUFDYix1QkFBdUIsRUFKVDtFQU9HO0lBQ2pCLFdBQVc7SUFDWCxvQk9qY29CO0lQa2NwQixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGVBQWUsRUFMSzs7QUFVNkU7RUFDbkcseUNBQXlDO0VBQ3pDLGtDQUErQjtFQUMvQixXQUFXO0VBQ1gsaUJBQWlCO0VBQ2pCLG9CQUFvQixFQUwyRzs7QUFRL0c7RUFDaEIsNEJBQTRCO0VBQzVCLCtCQUErQjtFQUMvQixlQUFlLEVBSG9COztBQVd2QztFQUNBLHNCQUFzQjtFQUN0Qix1QkFBdUIsRUFGakI7RUFHSDtJQUNDLFlBQVk7SUFDWixzREFBcUQ7SUFDckQsMkJBQTBCO0lBQzFCLGVBQWU7SUFDZixZQUFZO0lBQ1osYUFBYTtJQUNiLHNCQUFzQjtJQUN0Qix1QkFBdUI7SUFDdkIsa0JBQWtCLEVBVFYiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG5UaGVtZSBOYW1lOiBWb2lkeFxuVGhlbWUgVVJJOiBodHRwczovL2dpdGh1Yi5jb20vc3luYXB0aWNpc20vd29yZHByZXNzLWd1bHAtYm93ZXItc2Fzc1xuQXV0aG9yOiBBbGV4YW5kZXIgU3luYXB0aWNcbkF1dGhvciBVUkk6IGh0dHA6Ly9zeW5hcHRpY2lzbS5jb21cbkRlc2NyaXB0aW9uOlxuVmVyc2lvbjogMC4wLjRcbkxpY2Vuc2U6IEdQTHYzXG5MaWNlbnNlIFVSSTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC50eHRcblRhZ3M6IGxpZ2h0LCByZXNwb25zaXZlLWxheW91dCwgcmlnaHQtc2lkZWJhciwgc3RhcnRlci10aGVtZSwgdHdvLWNvbHVtbiwgdHJhbnNsYXRpb24tcmVhZHksIHdoaXRlXG5UZXh0IERvbWFpbjpcbkRvbWFpbiBQYXRoOiAvbGFuZ3VhZ2VzL1xuKi9cblxuQGltcG9ydCBcImxvYWRlclwiO1xuQGltcG9ydCBcImdlbmVyYWxcIjtcbkBpbXBvcnQgXCJsYXlvdXRcIjtcbkBpbXBvcnQgXCJtZW51c1wiO1xuQGltcG9ydCBcIm5hdmlnYXRpb25cIjtcbkBpbXBvcnQgXCJzaWRlYmFyXCI7XG5cblxuXG4vLyBIRUFERVJcblxuLnNpdGUtdGl0bGUge1xuICB0ZXh0LWluZGVudDogLTk5OTk5OXB4O1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuL2ltZy9sb2dvLnBuZ1wiKTtcbiAgd2lkdGg6IDI5N3B4O1xuICBoZWlnaHQ6IDczcHg7XG4gIGZsb2F0OiBsZWZ0O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTVweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDI1MHB4IDYxcHg7XG4gICAgd2lkdGg6IDI1MHB4O1xuICAgIGhlaWdodDogNjFweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMjVweDtcbiAgfVxufVxuXG4udGFnbGluZS13cmFwIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NjY2NjYztcbiAgbWFyZ2luLXRvcDogMTVweDtcblxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uc2l0ZS1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMC45ZW07XG4gIGxpbmUtaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDAgMCA1cHg7XG59XG5cbi5kZXNjcmlwdGlvbi10YWdzIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAwLjdlbTtcbn1cblxubmF2IHtcbiAgY2xlYXI6IGJvdGg7XG4gIGRpc3BsYXk6IGJsb2NrXG59XG5cbi5uYXYtd3JhcCB7XG4gIGNsZWFyOiBib3RoO1xuICBiYWNrZ3JvdW5kOiAkY29sb3ItdGhlbWUtZ3JleTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMHB4O1xufVxuXG4ucXVpY2stY29udGFjdCB7XG4gIGZsb2F0OiByaWdodDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAwLjhlbTtcblxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTQwcHgpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gIGEge1xuICAgICAgY29sb3I6ICRjb2xvci10aGVtZS1ncmV5O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJGNvbG9yLXRoZW1lLWJsdWU7XG4gICAgfVxuICB9XG5cbiAgaSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiA2MHB4O1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNjBweDtcbiAgICBib3JkZXItcmFkaXVzOiA2MHB4O1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci10aGVtZS1ibHVlO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDZweDtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgfVxuXG4gIC5mYS1waG9uZSB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xuICAgIHdpZHRoOiAxMnB4O1xuICAgIHRleHQtaW5kZW50OiAxcHg7XG4gIH1cblxufVxuXG5cbi5zaGlmdC1jb250YWN0IHtcbiAgICBmbG9hdDogcmlnaHQ7XG5cbiAgLmZhLWVudmVsb3BlLW8sIC5mYS1waG9uZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZmZmO1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgfVxufVxuXG5cbi8vIFBBR0VcblxuLmVudHJ5LWNvbnRlbnQsIC53aWRnZXQtYXJlYSB7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG5cbiAgLnBhZ2UgLndyYXAtbWFpbiB7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgICAgbWFyZ2luLXRvcDogNTBweDtcbiAgICB9XG4gIH1cblxuLy9IT01FUEFHRSBTUEFMU0ggQ09OVEVOVFxuXG4uc3BsYXNoLWltYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDYwMHB4O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm9uZTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICAgICAgIG1hcmdpbi10b3A6IDcwcHg7XG4gICAgfVxuXG5cbi53cmFwLW1haW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi5zcGxhc2gtd3JhcCwgLnNwbGFzaC13cmFwLW1vYmlsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYyKTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiAyZW07XG5cblxuICAgIGgxIHtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBmb250LXNpemU6IDEuNmVtO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgfVxufVxuXG4uc3BsYXNoLWltYWdlIC5zcGxhc2gtd3JhcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTYwMHB4O1xuICAgIG1hcmdpbi1yaWdodDogNjBweDtcbiAgICBtYXJnaW4tbGVmdDogNjBweDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICBkaXNwbGF5OiBub25lXG4gIH1cbn1cblxuLnNwbGFzaC13cmFwLW1vYmlsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuICB9XG59XG5cblxuLy9UUklBTkdMRVNcblxuLmdyZXkyd2hpdGUge1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1nL2dyZXkyd2hpdGUucG5nXCIpIHRvcCBjZW50ZXIgbm8tcmVwZWF0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IC0xMHB4O1xuICAgIGhlaWdodDogMjQwcHg7XG59XG5cbi5ncmV5IHtcbiAgYmFja2dyb3VuZDogIzM1MzMzMztcbiAgd2lkdGg6IDEwMCU7XG4gIC8vIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29sb3I6ICNmZmY7XG59XG5cbi53aGl0ZTJncmV5IHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuL2ltZy93aGl0ZTJncmV5LnBuZ1wiKSB0b3AgY2VudGVyIG5vLXJlcGVhdDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiAtMTBweDtcbiAgICBoZWlnaHQ6IDI0MHB4O1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICAgIG1hcmdpbi10b3A6IC04MHB4O1xuICAgIH1cbn1cblxuXG4vL1NFQ1RJT04gQkxPQ0tTXG5cbi5zZWN0aW9uLWJsb2NrIHtcbiAgd2lkdGg6IDMzJTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMmVtIDFlbSAxZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nOiAxZW0gMWVtIDA7XG4gICAgfVxuXG4gIGgyIHtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBwYWRkaW5nLXRvcDogMS41ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgcCB7XG4gICAgcGFkZGluZzogMCAxLjVlbSAyZW0gMS41ZW07XG4gICAgZm9udC1zaXplOiAwLjdlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG5cbiAgLnNlY3Rpb24taXRlbSB7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGhlbWUtYmx1ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogMjkwcHg7XG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDdweCA3cHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDEpO1xuICAgICAgLW1vei1ib3gtc2hhZG93OiAgICA3cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAxKTtcbiAgICAgIGJveC1zaGFkb3c6ICAgICAgICAgN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMSk7XG4gICAgICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIDtcbiAgICAgIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyMDBtcyA7XG4gICAgICAtby10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIDtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjAwbXMgO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzAxM0I2NTtcbiAgICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgcGFkZGluZzogMWVtIDJlbSAwLjVlbTtcbiAgICB3aWR0aDogMzAlO1xuICB9XG59XG5cbi8vIEhPTVBBR0UgQUJPVVRcblxuLmFib3V0LWV4Y2VycHQge1xuICBoMiB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgfVxuXG4gIC5hYm91dC1jb250ZW50IHtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogODgwcHgpIHtcbiAgICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAyOyAvKiBDaHJvbWUsIFNhZmFyaSwgT3BlcmEgKi9cbiAgICAgIC1tb3otY29sdW1uLWNvdW50OiAyOyAvKiBGaXJlZm94ICovXG4gICAgICBjb2x1bW4tY291bnQ6IDI7XG4gICAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDQwcHg7IC8qIENocm9tZSwgU2FmYXJpLCBPcGVyYSAqL1xuICAgICAgLW1vei1jb2x1bW4tZ2FwOiA0MHB4OyAvKiBGaXJlZm94ICovXG4gICAgICBjb2x1bW4tZ2FwOiA0MHB4O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vRk9PVEVSXG5cblxuZm9vdGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbi5zaXRlLXRpdGxlIHtcbiAgdGV4dC1pbmRlbnQ6IC05OTk5OTlweDtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi9pbWcvbG9nby1mb290ZXIucG5nXCIpO1xuICB3aWR0aDogMjAwcHg7XG4gIGhlaWdodDogNDlweDtcbiAgYmFja2dyb3VuZC1zaXplOiAyMDBweCA0OXB4O1xuICBmbG9hdDogbm9uZTtcbiAgbWFyZ2luOiAwIGF1dG8gMC41ZW07XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwIGF1dG8gMC41ZW07XG4gIH1cbn1cblxuI21lbnUtZm9vdGVyIHtcbiAgYSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItdGhlbWUtYmx1ZTtcbiAgICB9XG4gIH1cbn1cblxuXG4gIC5zaXRlLWNyZWRpdHMge1xuICAgIGZvbnQtc2l6ZTogMC42ZW07XG4gICAgbWFyZ2luLXRvcDogMC41ZW07XG4gIH1cblxuXG4gIC5xdWljay1jb250YWN0IHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1hcmdpbi10b3A6IDMuOGVtO1xuICAgIGEge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuICB9XG5cbiAgLmZvb3RlcjN1cCB7XG4gICAgd2lkdGg6IDMzJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBAZXh0ZW5kICVjbGVhcmZpeDtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuZm9vdGVyLWFkZHJlc3Mge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIG1hcmdpbi10b3A6IDIuM2VtO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLnNjcm9sbC10b3Age1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci10aGVtZS1ibHVlO1xuICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgZm9udC1zaXplOiAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEwMCU7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiA1cHggNXB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAxKTtcbiAgICAtbW96LWJveC1zaGFkb3c6ICAgIDVweCA1cHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDEpO1xuICAgIGJveC1zaGFkb3c6ICAgICAgICAgNXB4IDVweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMSk7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTIyMHB4O1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICAgIHRvcDogLTE3MHB4O1xuICAgIH1cbiAgfVxuXG59XG5cblxuLy9MQVlPVVRcblxuI3NlY29uZGFyeSwgI3dyYXAtc2lkZWJhciB7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cblxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkge1xuLnBhZ2UtaWQtMzQgI3NlY29uZGFyeSwgLnBhZ2UtaWQtMzQgI3dyYXAtc2lkZWJhciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG59XG5cbi5zaXRlLWNvbnRlbnQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4ud3JhcC1jb250ZW50IHtcbiAgcGFkZGluZy1ib3R0b206MDtcbn1cblxuI3NlcnZpY2VzLCAjc3VjY2Vzc2VzLCAjcHJpbmNpcGFscyB7XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xufVxuXG5cbi8vVFlQRU9HUkFQSFlcblxuXG5cblxuLy9GT1JNU1xuXG4jc2Vjb25kYXJ5IHtcbiAgI2dmb3JtX3dpZGdldC0yIHtcbiAgICBiYWNrZ3JvdW5kOiAjZTllOGU4O1xuICAgIHBhZGRpbmc6IDEuNWVtO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAtbW96LWJveC1zaGFkb3c6ICAgIDdweCA3cHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgYm94LXNoYWRvdzogICAgICAgICA3cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjUpO1xuXG4gICAgbGkge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIH1cblxuICAgIGlucHV0LHRleHRhcmVhIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGhlbWUtYmx1ZTtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIHBhZGRpbmc6IDFlbSAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLmdmb3JtX3dyYXBwZXIgbGkuZ2ZpZWxkLmdmaWVsZF9lcnJvciwgLmdmb3JtX3dyYXBwZXIgbGkuZ2ZpZWxkLmdmaWVsZF9lcnJvci5nZmllbGRfY29udGFpbnNfcmVxdWlyZWQuZ2ZpZWxkX2NyZWRpdGNhcmRfd2FybmluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiAuMzc1ZW0haW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xuICB9XG5cbiAgLmdmb3JtX3dyYXBwZXIgZGl2LnZhbGlkYXRpb25fZXJyb3Ige1xuICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxZW07XG5cbn1cbn1cblxuXG4vL1BJTlxuXG4ucGluIHtcbmRpc3BsYXk6IGlubGluZS1ibG9jaztcbnZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1nL3Bpbi5wbmdcIikgdG9wIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMHB4IDE2cHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICB9XG59XG5cblxuXG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS4yLjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXG4gIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0sXG4gIGlucHV0W3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLFxuICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICovXG5cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCBtYXJnaW4uXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogSFRNTDUgZGlzcGxheSBkZWZpbml0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTFcbiAqIGFuZCBGaXJlZm94LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cbiAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1haW4sXG5tZW51LFxubmF2LFxuc2VjdGlvbixcbnN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICogMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxucHJvZ3Jlc3MsXG52aWRlbyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogMSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5cbltoaWRkZW5dLFxudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBjb2xvciBmcm9tIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICogSW1wcm92ZSByZWFkYWJpbGl0eSBvZiBmb2N1c2VkIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgYWxzbyBpbiBhblxuICogYWN0aXZlL2hvdmVyIHN0YXRlLlxuICovXG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgdmFyaWFibGUgYGgxYCBmb250LXNpemUgYW5kIG1hcmdpbiB3aXRoaW4gYHNlY3Rpb25gIGFuZCBgYXJ0aWNsZWBcbiAqIGNvbnRleHRzIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkuXG4gKi9cblxubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4vKipcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgbm90IGhpZGRlbiBpbiBJRSA5LzEwLzExLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIG1hcmdpbiBub3QgcHJlc2VudCBpbiBJRSA4LzkgYW5kIFNhZmFyaS5cbiAqL1xuXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4O1xufVxuXG4vKipcbiAqIEFkZHJlc3MgZGlmZmVyZW5jZXMgYmV0d2VlbiBGaXJlZm94IGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQ29udGFpbiBvdmVyZmxvdyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogQWRkcmVzcyBvZGQgYGVtYC11bml0IGZvbnQgc2l6ZSByZW5kZXJpbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgY29sb3Igbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqICAgIEtub3duIGlzc3VlOiBhZmZlY3RzIGNvbG9yIG9mIGRpc2FibGVkIGVsZW1lbnRzLlxuICogMi4gQ29ycmVjdCBmb250IHByb3BlcnRpZXMgbm90IGJlaW5nIGluaGVyaXRlZC5cbiAqIDMuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXG4gIGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbiAgbWFyZ2luOiAwOyAvKiAzICovXG59XG5cbi8qKlxuICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKipcbiAqIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgYXR0ZW1wdCB0byBzdHlsZSB0aGVzZSBlbGVtZW50cy5cbiAqIEZpcmVmb3gncyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHJlc3BlY3QgYm94LXNpemluZywgcGFkZGluZywgb3Igd2lkdGguXG4gKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgIGluIElFIDgvOS8xMC5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkvMTAuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKi9cblxubGVnZW5kIHtcbiAgYm9yZGVyOiAwOyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogRG9uJ3QgaW5oZXJpdCB0aGUgYGZvbnQtd2VpZ2h0YCAoYXBwbGllZCBieSBhIHJ1bGUgYWJvdmUpLlxuICogTk9URTogdGhlIGRlZmF1bHQgY2Fubm90IHNhZmVseSBiZSBjaGFuZ2VkIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFguXG4gKi9cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDtcbn1cbiIsIi8qIVxuVGhlbWUgTmFtZTogVm9pZHhcblRoZW1lIFVSSTogaHR0cHM6Ly9naXRodWIuY29tL3N5bmFwdGljaXNtL3dvcmRwcmVzcy1ndWxwLWJvd2VyLXNhc3NcbkF1dGhvcjogQWxleGFuZGVyIFN5bmFwdGljXG5BdXRob3IgVVJJOiBodHRwOi8vc3luYXB0aWNpc20uY29tXG5EZXNjcmlwdGlvbjpcblZlcnNpb246IDAuMC40XG5MaWNlbnNlOiBHUEx2M1xuTGljZW5zZSBVUkk6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwudHh0XG5UYWdzOiBsaWdodCwgcmVzcG9uc2l2ZS1sYXlvdXQsIHJpZ2h0LXNpZGViYXIsIHN0YXJ0ZXItdGhlbWUsIHR3by1jb2x1bW4sIHRyYW5zbGF0aW9uLXJlYWR5LCB3aGl0ZVxuVGV4dCBEb21haW46XG5Eb21haW4gUGF0aDogL2xhbmd1YWdlcy9cbiovXG4vKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS4yLjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cbi8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4gKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4gKi9cbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTFcbiAqIGFuZCBGaXJlZm94LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cbiAqL1xuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICogMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7IH1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IH1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5pbWcge1xuICBib3JkZXI6IDA7IH1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4OyB9XG5cbi8qKlxuICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7IH1cblxuLyoqXG4gKiBDb250YWluIG92ZXJmbG93IGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4gKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKi9cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLyogMyAqLyB9XG5cbi8qKlxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbiAqL1xuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG4vKipcbiAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuLyoqXG4gKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXG4gKiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICpcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4gKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxuICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuICovXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4vKipcbiAqIDEuIEFkZHJlc3MgYGFwcGVhcmFuY2VgIHNldCB0byBgc2VhcmNoZmllbGRgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAvKiAxICovXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAqL1xuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5sZWdlbmQge1xuICBib3JkZXI6IDA7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bzsgfVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbnRkLFxudGgge1xuICBwYWRkaW5nOiAwOyB9XG5cbi53cmFwLW1haW46YWZ0ZXIsIC5uYXYtcG9zdHM6YWZ0ZXIsIGZvb3RlciAuZm9vdGVyM3VwOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogdGFibGU7XG4gIGNsZWFyOiBib3RoOyB9XG5cbi5zaXRlLWNvbnRlbnQge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4OyB9XG5cbi5zaXRlLWNvbnRlbnQgYXJ0aWNsZSB7XG4gIG1hcmdpbi1ib3R0b206IDYwcHg7IH1cblxuLm5hdi1wb3N0cyB7XG4gIG1hcmdpbi1ib3R0b206IDkwcHg7IH1cblxuLmNsZWFyIHtcbiAgY2xlYXI6IGJvdGg7IH1cblxuaHRtbCB7XG4gIGZvbnQtc2l6ZTogMThweDsgfVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiAjMzMzO1xuICBmb250LWZhbWlseTogJ0xhdG8nLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS40NDQ0NDtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IH1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDEuMjIyMjI7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5oMiB7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxucCB7XG4gIG1hcmdpbi10b3A6IDA7IH1cblxuYSB7XG4gIGJvcmRlcjogMDtcbiAgY29sb3I6ICMwMDY3YjE7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLW91dDsgfVxuICAud3JhcC1jb250ZW50IGEsXG4gIC5tZW51LWlubGluZSBhIHtcbiAgICBjb2xvcjogc3RlZWxibHVlOyB9XG4gIC53cmFwLXNpZGViYXIgYSB7XG4gICAgY29sb3I6IHN0ZWVsYmx1ZTsgfVxuXG5maWd1cmUge1xuICBtYXJnaW46IDA7IH1cblxuaW1nIHtcbiAgaGVpZ2h0OiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7IH1cblxuLndyYXAtaGVhZGVyLCAud3JhcC1jb250ZW50LCAud3JhcC1zaWRlYmFyLCAud3JhcC1mb290ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwIDMwcHggMCAzMHB4OyB9XG5cbi53cmFwLWhlYWRlciB7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICBwYWRkaW5nLXRvcDogMTVweDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4MDBweCkge1xuICAgIC53cmFwLWhlYWRlciB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4OyB9IH1cblxuLndyYXAtbWFpbiB7XG4gIGNsZWFyOiBib3RoOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDgwMHB4KSB7XG4gICAgLndyYXAtbWFpbiB7XG4gICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgIG1heC13aWR0aDogMTAwMHB4O1xuICAgICAgcGFkZGluZzogMCA2MHB4IDAgNjBweDsgfSB9XG5cbi53cmFwLWNvbnRlbnQge1xuICBwYWRkaW5nOiAzMHB4OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDgwMHB4KSB7XG4gICAgLndyYXAtY29udGVudCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gICAgICB3aWR0aDogNjMlOyB9IH1cblxuLndyYXAtc2lkZWJhciB7XG4gIHBhZGRpbmc6IDMwcHg7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogODAwcHgpIHtcbiAgICAud3JhcC1zaWRlYmFyIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICB3aWR0aDogMzclOyB9IH1cblxuLndyYXAtZm9vdGVyIHtcbiAgcGFkZGluZy1ib3R0b206IDYwcHg7XG4gIHBhZGRpbmctdG9wOiAxNXB4OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDgwMHB4KSB7XG4gICAgLndyYXAtZm9vdGVyIHtcbiAgICAgIHBhZGRpbmctbGVmdDogNjBweDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7IH0gfVxuXG4uc2l0ZS1oZWFkZXIsXG4uc2l0ZS1mb290ZXIge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMDBweDsgfVxuXG4uc2l0ZS10aXRsZSB7XG4gIG1hcmdpbi10b3A6IDA7IH1cblxuLmFsaWducmlnaHQge1xuICBmbG9hdDogcmlnaHQ7IH1cblxuLmFsaWdubGVmdCB7XG4gIGZsb2F0OiBsZWZ0OyB9XG5cbi5tZW51LW1haW4tbWVudS1jb250YWluZXIge1xuICBtYXJnaW4tdG9wOiAxNXB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cblxuLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciB1bCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMDsgfVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIGEge1xuICBkaXNwbGF5OiBibG9jaztcbiAgY29sb3I6ICMzMzM7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogODBweDtcbiAgcGFkZGluZzogMCAyMHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIGxpIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luLXJpZ2h0OiAtM3B4OyB9XG5cbi5tZW51LW1haW4tbWVudS1jb250YWluZXIgdWwgbGkuY3VycmVudC1tZW51LWl0ZW0ge1xuICBiYWNrZ3JvdW5kOiAjMDA2N2IxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciB1bCBsaS5jdXJyZW50LW1lbnUtaXRlbTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiA4cHggMTIuNXB4IDAgMTIuNXB4O1xuICAgIGJvcmRlci1jb2xvcjogI2ZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwcHg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAtMTIuMnB4O1xuICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjk5OTkpOyB9XG5cbi5zdWItbWVudSBsaS5jdXJyZW50LW1lbnUtaXRlbSBhIHtcbiAgYmFja2dyb3VuZDogIzAwNjdiMTsgfVxuXG4uc3ViLW1lbnUgbGkuY3VycmVudC1tZW51LWl0ZW06YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIGxpOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzAwNjdiMTsgfVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIHVsIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHBhZGRpbmc6IDA7XG4gIHotaW5kZXg6IDk5OTk5OTsgfVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIHVsIGxpIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIHdpZHRoOiAyMDBweDsgfVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIHVsIGEge1xuICBiYWNrZ3JvdW5kOiAjNkI2QjZCO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiA4MHB4O1xuICBwYWRkaW5nOiAwIDIwcHg7IH1cbiAgLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciB1bCB1bCBhOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDA2N2IxOyB9XG5cbi5tZW51LW1haW4tbWVudS1jb250YWluZXIgdWwgdWwgdWwge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDEwMCU7IH1cblxuLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciB1bCBsaTpob3ZlciA+IHVsIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gIHBhZGRpbmctcmlnaHQ6IDQwcHggIWltcG9ydGFudDsgfVxuICAubWVudS1tYWluLW1lbnUtY29udGFpbmVyIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogNnB4IDVweCAwIDVweDtcbiAgICBib3JkZXItY29sb3I6ICNmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMi4ycHg7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogODgwcHgpIHtcbiAgLndyYXAtcGFkZGluZyB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAud3JhcC1wYWRkaW5nIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDsgfSB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gIC53cmFwLXBhZGRpbmctbW9iaWxlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxZW07IH0gfVxuXG4ubWVudS1mb290ZXItbWVudS1jb250YWluZXIgdWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLm1lbnUtZm9vdGVyLW1lbnUtY29udGFpbmVyIHVsIGxpIHtcbiAgZGlzcGxheTogaW5saW5lOyB9XG5cbi5tZW51LWZvb3Rlci1tZW51LWNvbnRhaW5lciB1bCBsaTphZnRlciB7XG4gIGNvbnRlbnQ6IFwifFwiO1xuICBwYWRkaW5nOiAwIDE1cHg7IH1cblxuLm1lbnUtZm9vdGVyLW1lbnUtY29udGFpbmVyIHVsIGxpOmxhc3QtY2hpbGQ6YWZ0ZXIge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5zaGlmdG5hdi5zaGlmdG5hdi1za2luLWRhcmstYmx1ZSB1bC5zaGlmdG5hdi1tZW51IGxpLm1lbnUtaXRlbS5jdXJyZW50LW1lbnUtaXRlbSA+IC5zaGlmdG5hdi10YXJnZXQsIC5zaGlmdG5hdi5zaGlmdG5hdi1za2luLWRhcmstYmx1ZSB1bC5zaGlmdG5hdi1tZW51IGxpLm1lbnUtaXRlbSB1bC5zdWItbWVudSAuY3VycmVudC1tZW51LWl0ZW0gLnNoaWZ0bmF2LXRhcmdldCB7XG4gIGJhY2tncm91bmQ6ICMwMDY3YjEgIWltcG9ydGFudDsgfVxuXG4uc2hpZnRuYXYuc2hpZnRuYXYtc2tpbi1kYXJrLWJsdWUgdWwuc2hpZnRuYXYtbWVudSBsaS5tZW51LWl0ZW0uc2hpZnRuYXYtYWN0aXZlID4gLnNoaWZ0bmF2LXRhcmdldCwgLnNoaWZ0bmF2LnNoaWZ0bmF2LXNraW4tZGFyay1ibHVlIHVsLnNoaWZ0bmF2LW1lbnUgbGkubWVudS1pdGVtLnNoaWZ0bmF2LWluLXRyYW5zaXRpb24gPiAuc2hpZnRuYXYtdGFyZ2V0IHtcbiAgYmFja2dyb3VuZDogIzAwNjdiMSAhaW1wb3J0YW50OyB9XG5cbiNzaGlmdG5hdi10b2dnbGUtbWFpbi5zaGlmdG5hdi10b2dnbGUtcG9zaXRpb24tYWJzb2x1dGUge1xuICB0b3A6IDEwMHB4O1xuICB6LWluZGV4OiA5OTk7IH1cblxuLnNoaWZ0bmF2IC5zaGlmdG5hdi1tZW51LWltYWdlLXBhZGRlZCB7XG4gIHBhZGRpbmc6IDIwcHggNTBweCAhaW1wb3J0YW50OyB9XG5cbi5uYXYtcHJldmlvdXMge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmbG9hdDogbGVmdDtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgd2lkdGg6IDUwJTsgfVxuXG4ubmF2LW5leHQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmbG9hdDogcmlnaHQ7XG4gIHBhZGRpbmctbGVmdDogMTVweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHdpZHRoOiA1MCU7IH1cblxuLndpZGdldCB1bCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi5zaXRlLXRpdGxlIHtcbiAgdGV4dC1pbmRlbnQ6IC05OTk5OTlweDtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi9pbWcvbG9nby5wbmdcIik7XG4gIHdpZHRoOiAyOTdweDtcbiAgaGVpZ2h0OiA3M3B4O1xuICBmbG9hdDogbGVmdDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgIC5zaXRlLXRpdGxlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMTVweDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMjUwcHggNjFweDtcbiAgICAgIHdpZHRoOiAyNTBweDtcbiAgICAgIGhlaWdodDogNjFweDtcbiAgICAgIGxlZnQ6IDUwJTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMTI1cHg7IH0gfVxuXG4udGFnbGluZS13cmFwIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2NjY2NjYztcbiAgbWFyZ2luLXRvcDogMTVweDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgIC50YWdsaW5lLXdyYXAge1xuICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG5cbi5zaXRlLWRlc2NyaXB0aW9uIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAwLjllbTtcbiAgbGluZS1oZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMCAwIDVweDsgfVxuXG4uZGVzY3JpcHRpb24tdGFncyB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMC43ZW07IH1cblxubmF2IHtcbiAgY2xlYXI6IGJvdGg7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi5uYXYtd3JhcCB7XG4gIGNsZWFyOiBib3RoO1xuICBiYWNrZ3JvdW5kOiAjMzUzMzMzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwcHg7IH1cblxuLnF1aWNrLWNvbnRhY3Qge1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMC44ZW07IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTQwcHgpIHtcbiAgICAucXVpY2stY29udGFjdCB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cbiAgLnF1aWNrLWNvbnRhY3QgYSB7XG4gICAgY29sb3I6ICMzNTMzMzM7IH1cbiAgICAucXVpY2stY29udGFjdCBhOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjMDA2N2IxOyB9XG4gIC5xdWljay1jb250YWN0IGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAtbW96LWJvcmRlci1yYWRpdXM6IDYwcHg7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDYwcHg7XG4gICAgYmFja2dyb3VuZDogIzAwNjdiMTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiA2cHg7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnF1aWNrLWNvbnRhY3QgLmZhLXBob25lIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgdGV4dC1pbmRlbnQ6IDFweDsgfVxuXG4uc2hpZnQtY29udGFjdCB7XG4gIGZsb2F0OiByaWdodDsgfVxuICAuc2hpZnQtY29udGFjdCAuZmEtZW52ZWxvcGUtbywgLnNoaWZ0LWNvbnRhY3QgLmZhLXBob25lIHtcbiAgICBtYXJnaW4tbGVmdDogMjBweDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmZmY7XG4gICAgcGFkZGluZy1sZWZ0OiAyMHB4OyB9XG5cbi5lbnRyeS1jb250ZW50LCAud2lkZ2V0LWFyZWEge1xuICBmb250LXNpemU6IDAuOHJlbTsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAucGFnZSAud3JhcC1tYWluIHtcbiAgICBtYXJnaW4tdG9wOiA1MHB4OyB9IH1cblxuLnNwbGFzaC1pbWFnZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA2MDBweDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vbmU7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgLnNwbGFzaC1pbWFnZSB7XG4gICAgICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgICAgIG1hcmdpbi10b3A6IDcwcHg7IH0gfVxuICAuc3BsYXNoLWltYWdlIC53cmFwLW1haW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgICAuc3BsYXNoLWltYWdlIC53cmFwLW1haW4ge1xuICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH0gfVxuXG4uc3BsYXNoLXdyYXAsIC5zcGxhc2gtd3JhcC1tb2JpbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNjIpO1xuICBjb2xvcjogI2ZmZjtcbiAgcGFkZGluZzogMmVtOyB9XG4gIC5zcGxhc2gtd3JhcCBoMSwgLnNwbGFzaC13cmFwLW1vYmlsZSBoMSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxLjZlbTsgfVxuICAuc3BsYXNoLXdyYXAgcCwgLnNwbGFzaC13cmFwLW1vYmlsZSBwIHtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIG1heC13aWR0aDogNjAwcHg7IH1cblxuLnNwbGFzaC1pbWFnZSAuc3BsYXNoLXdyYXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTYwMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDYwcHg7XG4gIG1hcmdpbi1sZWZ0OiA2MHB4O1xuICBsZWZ0OiAwO1xuICByaWdodDogMDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgIC5zcGxhc2gtaW1hZ2UgLnNwbGFzaC13cmFwIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4uc3BsYXNoLXdyYXAtbW9iaWxlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgIC5zcGxhc2gtd3JhcC1tb2JpbGUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyB9IH1cblxuLmdyZXkyd2hpdGUge1xuICBiYWNrZ3JvdW5kOiB1cmwoXCIuL2ltZy9ncmV5MndoaXRlLnBuZ1wiKSB0b3AgY2VudGVyIG5vLXJlcGVhdDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IC0xMHB4O1xuICBoZWlnaHQ6IDI0MHB4OyB9XG5cbi5ncmV5IHtcbiAgYmFja2dyb3VuZDogIzM1MzMzMztcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogI2ZmZjsgfVxuXG4ud2hpdGUyZ3JleSB7XG4gIGJhY2tncm91bmQ6IHVybChcIi4vaW1nL3doaXRlMmdyZXkucG5nXCIpIHRvcCBjZW50ZXIgbm8tcmVwZWF0O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogLTEwcHg7XG4gIGhlaWdodDogMjQwcHg7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICAud2hpdGUyZ3JleSB7XG4gICAgICBtYXJnaW4tdG9wOiAtODBweDsgfSB9XG5cbi5zZWN0aW9uLWJsb2NrIHtcbiAgd2lkdGg6IDMzJTtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMmVtIDFlbSAxZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICAuc2VjdGlvbi1ibG9jayB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6IDFlbSAxZW0gMDsgfSB9XG4gIC5zZWN0aW9uLWJsb2NrIGgyIHtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBwYWRkaW5nLXRvcDogMS41ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIGNvbG9yOiAjZmZmOyB9XG4gIC5zZWN0aW9uLWJsb2NrIHAge1xuICAgIHBhZGRpbmc6IDAgMS41ZW0gMmVtIDEuNWVtO1xuICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogI2ZmZjsgfVxuICAuc2VjdGlvbi1ibG9jayAuc2VjdGlvbi1pdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiAjMDA2N2IxO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi1oZWlnaHQ6IDI5MHB4O1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogN3B4IDdweCAwcHggMHB4IGJsYWNrO1xuICAgIC1tb3otYm94LXNoYWRvdzogN3B4IDdweCAwcHggMHB4IGJsYWNrO1xuICAgIGJveC1zaGFkb3c6IDdweCA3cHggMHB4IDBweCBibGFjaztcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyMDBtcztcbiAgICAtbW96LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjAwbXM7XG4gICAgLW8tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyMDBtcztcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zOyB9XG4gICAgLnNlY3Rpb24tYmxvY2sgLnNlY3Rpb24taXRlbTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMDEzQjY1OyB9XG4gIC5zZWN0aW9uLWJsb2NrIGltZyB7XG4gICAgcGFkZGluZzogMWVtIDJlbSAwLjVlbTtcbiAgICB3aWR0aDogMzAlOyB9XG5cbi5hYm91dC1leGNlcnB0IGgyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAyZW07IH1cblxuLmFib3V0LWV4Y2VycHQgLmFib3V0LWNvbnRlbnQge1xuICBmb250LXNpemU6IDAuOGVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDg4MHB4KSB7XG4gICAgLmFib3V0LWV4Y2VycHQgLmFib3V0LWNvbnRlbnQge1xuICAgICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDI7XG4gICAgICAvKiBDaHJvbWUsIFNhZmFyaSwgT3BlcmEgKi9cbiAgICAgIC1tb3otY29sdW1uLWNvdW50OiAyO1xuICAgICAgLyogRmlyZWZveCAqL1xuICAgICAgY29sdW1uLWNvdW50OiAyO1xuICAgICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiA0MHB4O1xuICAgICAgLyogQ2hyb21lLCBTYWZhcmksIE9wZXJhICovXG4gICAgICAtbW96LWNvbHVtbi1nYXA6IDQwcHg7XG4gICAgICAvKiBGaXJlZm94ICovXG4gICAgICBjb2x1bW4tZ2FwOiA0MHB4OyB9IH1cblxuZm9vdGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgZm9vdGVyIC5zaXRlLXRpdGxlIHtcbiAgICB0ZXh0LWluZGVudDogLTk5OTk5OXB4O1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1nL2xvZ28tZm9vdGVyLnBuZ1wiKTtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiA0OXB4O1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjAwcHggNDlweDtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBtYXJnaW46IDAgYXV0byAwLjVlbTsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgICBmb290ZXIgLnNpdGUtdGl0bGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMC41ZW07IH0gfVxuICBmb290ZXIgI21lbnUtZm9vdGVyIGEge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBmb250LXdlaWdodDogNzAwOyB9XG4gICAgZm9vdGVyICNtZW51LWZvb3RlciBhOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAjMDA2N2IxOyB9XG4gIGZvb3RlciAuc2l0ZS1jcmVkaXRzIHtcbiAgICBmb250LXNpemU6IDAuNmVtO1xuICAgIG1hcmdpbi10b3A6IDAuNWVtOyB9XG4gIGZvb3RlciAucXVpY2stY29udGFjdCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tdG9wOiAzLjhlbTsgfVxuICAgIGZvb3RlciAucXVpY2stY29udGFjdCBhIHtcbiAgICAgIGNvbG9yOiAjZmZmOyB9XG4gIGZvb3RlciAuZm9vdGVyM3VwIHtcbiAgICB3aWR0aDogMzMlO1xuICAgIGZsb2F0OiBsZWZ0OyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbiAgICAgIGZvb3RlciAuZm9vdGVyM3VwIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7IH0gfVxuICBmb290ZXIgLmZvb3Rlci1hZGRyZXNzIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBtYXJnaW4tdG9wOiAyLjNlbTsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4gICAgICBmb290ZXIgLmZvb3Rlci1hZGRyZXNzIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfSB9XG4gIGZvb3RlciAuc2Nyb2xsLXRvcCB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYmFja2dyb3VuZDogIzAwNjdiMTtcbiAgICBwYWRkaW5nOiAxNXB4O1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxMDAlO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCAwcHggMHB4IGJsYWNrO1xuICAgIC1tb3otYm94LXNoYWRvdzogNXB4IDVweCAwcHggMHB4IGJsYWNrO1xuICAgIGJveC1zaGFkb3c6IDVweCA1cHggMHB4IDBweCBibGFjaztcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMjIwcHg7XG4gICAgcmlnaHQ6IDA7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4ODBweCkge1xuICAgICAgZm9vdGVyIC5zY3JvbGwtdG9wIHtcbiAgICAgICAgdG9wOiAtMTcwcHg7IH0gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkge1xuICAjc2Vjb25kYXJ5LCAjd3JhcC1zaWRlYmFyIHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIHtcbiAgLnBhZ2UtaWQtMzQgI3NlY29uZGFyeSwgLnBhZ2UtaWQtMzQgI3dyYXAtc2lkZWJhciB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4uc2l0ZS1jb250ZW50IHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4ud3JhcC1jb250ZW50IHtcbiAgcGFkZGluZy1ib3R0b206IDA7IH1cblxuI3NlcnZpY2VzLCAjc3VjY2Vzc2VzLCAjcHJpbmNpcGFscyB7XG4gIHBhZGRpbmctdG9wOiA0MHB4OyB9XG5cbiNzZWNvbmRhcnkgI2dmb3JtX3dpZGdldC0yIHtcbiAgYmFja2dyb3VuZDogI2U5ZThlODtcbiAgcGFkZGluZzogMS41ZW07XG4gIC13ZWJraXQtYm94LXNoYWRvdzogN3B4IDdweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgLW1vei1ib3gtc2hhZG93OiA3cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjUpO1xuICBib3gtc2hhZG93OiA3cHggN3B4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjUpOyB9XG4gICNzZWNvbmRhcnkgI2dmb3JtX3dpZGdldC0yIGxpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07IH1cbiAgI3NlY29uZGFyeSAjZ2Zvcm1fd2lkZ2V0LTIgaW5wdXQsICNzZWNvbmRhcnkgI2dmb3JtX3dpZGdldC0yIHRleHRhcmVhIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgcGFkZGluZzogMWVtO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgI3NlY29uZGFyeSAjZ2Zvcm1fd2lkZ2V0LTIgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiAjMDA2N2IxO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgcGFkZGluZzogMWVtIDA7IH1cblxuI3NlY29uZGFyeSAuZ2Zvcm1fd3JhcHBlciBsaS5nZmllbGQuZ2ZpZWxkX2Vycm9yLCAjc2Vjb25kYXJ5IC5nZm9ybV93cmFwcGVyIGxpLmdmaWVsZC5nZmllbGRfZXJyb3IuZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkLmdmaWVsZF9jcmVkaXRjYXJkX3dhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiAwLjM3NWVtICFpbXBvcnRhbnQ7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlci10b3A6IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IH1cblxuI3NlY29uZGFyeSAuZ2Zvcm1fd3JhcHBlciBkaXYudmFsaWRhdGlvbl9lcnJvciB7XG4gIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4ucGluIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG4gIC5waW46YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4vaW1nL3Bpbi5wbmdcIikgdG9wIGNlbnRlciBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiAxMHB4IDE2cHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIG1hcmdpbi1yaWdodDogNXB4OyB9XG4iLCIvLyA9PT09IEhFTFBFUlMgPT09PSAvL1xuXG4lY2VudGVyIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG4lY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuJWhpZGUge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG4lc3BhY2VyLWFib3ZlIHtcbiAgbWFyZ2luLXRvcDogc3BhY2VyKCk7XG59XG4lc3BhY2VyLWFib3ZlLTIge1xuICBtYXJnaW4tdG9wOiBzcGFjZXIoMik7XG59XG4lc3BhY2VyLWFib3ZlLTMge1xuICBtYXJnaW4tdG9wOiBzcGFjZXIoMyk7XG59XG4lc3BhY2VyLWJlbG93IHtcbiAgbWFyZ2luLWJvdHRvbTogc3BhY2VyKCk7XG59XG4lc3BhY2VyLWJlbG93LTIge1xuICBtYXJnaW4tYm90dG9tOiBzcGFjZXIoMik7XG59XG4lc3BhY2VyLWJlbG93LTMge1xuICBtYXJnaW4tYm90dG9tOiBzcGFjZXIoMyk7XG59XG5cbi5jbGVhciB7XG4gIGNsZWFyOiBib3RoO1xufVxuIiwiLy8gPT09PSBMSUJSQVJZID09PT0gLy9cblxuLy8gTWl4aW5zLCBmdW5jdGlvbnMsIGFuZCBvdGhlciBub24tZGVjbGFyYXRpdmUgdGhpbmdzXG5cbi8vID09IE1FRElBIFFVRVJJRVMgPT0gLy9cblxuLy8gTWFzdGVyIG1lZGlhIHF1ZXJ5IG1peGluOyBvbmx5IGZvciB1c2Ugd2l0aCBzY3JlZW5zLCBvZiBjb3Vyc2U7IHNob3VsZCB3b3JrIHdpdGggcmF3IGludGVnZXJzIG9yIHBpeGVsIHZhbHVlczsgYWRhcHRlZCBmcm9tIEtpcHBsZTogaHR0cHM6Ly9naXRodWIuY29tL3N5bmFwdGljaXNtL2tpcHBsZVxuQG1peGluIG1lZGlhKCRtaW4tcXVlcnk6IG51bGwsICRtYXgtcXVlcnk6IG51bGwpIHtcbiAgQGlmICRtaW4tcXVlcnkgPT0gbnVsbCBhbmQgJG1heC1xdWVyeSA9PSBudWxsIHtcbiAgICBAd2FybiBcIk1peGluIGstbWVkaWEoKSByZWNlaXZlZCB0d28gbnVsbCB2YWx1ZXM7IG5vIG91dHB1dC5cIlxuICB9XG4gIEBlbHNlIGlmICRtYXgtcXVlcnkgPT0gbnVsbCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbi1xdWVyeSswcHgpIHsgQGNvbnRlbnQ7IH1cbiAgfVxuICBAZWxzZSBpZiAkbWluLXF1ZXJ5ID09IG51bGwge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgtcXVlcnkrMHB4KSB7IEBjb250ZW50OyB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4tcXVlcnkrMHB4KSBhbmQgKG1heC13aWR0aDogJG1heC1xdWVyeSswcHgpIHsgQGNvbnRlbnQ7IH1cbiAgfVxufVxuQG1peGluIG1lZGlhLWFib3ZlKCRtaW4tcXVlcnkpIHtcbiAgQGluY2x1ZGUgbWVkaWEoJG1pbi1xdWVyeSwgbnVsbCkgeyBAY29udGVudDsgfVxufVxuQG1peGluIG1lZGlhLWJlbG93KCRtYXgtcXVlcnkpIHtcbiAgQGluY2x1ZGUgbWVkaWEobnVsbCwgJG1heC1xdWVyeSAtIDEpIHsgQGNvbnRlbnQ7IH1cbn1cbkBtaXhpbiBtZWRpYS1iZXR3ZWVuKCRtaW4tcXVlcnk6IG51bGwsICRtYXgtcXVlcnk6IG51bGwpIHtcbiAgQGlmICRtaW4tcXVlcnkgPT0gbnVsbCBvciAkbWF4LXF1ZXJ5ID09IG51bGwge1xuICAgIEB3YXJuIFwiTWl4aW4gbWVkaWEtYmV0d2VlbigpIHJlY2VpdmVkIGEgbnVsbCB2YWx1ZS5cIlxuICB9XG4gIEBpbmNsdWRlIG1lZGlhKCRtaW4tcXVlcnksICRtYXgtcXVlcnkgLSAxKSB7IEBjb250ZW50OyB9XG59XG5cblxuXG4vLyA9PSBMQVlPVVQgPT0gLy9cblxuLy8gTWFyZ2lucyBhbmQgcG9zaXRpb25pbmcgaGVscGVyIGZ1bmN0aW9uXG5AZnVuY3Rpb24gc3BhY2VyKCR2YWw6IDEpIHtcbiAgQHJldHVybiAkc3BhY2VyICogJHZhbCArIDBweDtcbn1cblxuXG5cbi8vID09IFBBTEVUVEUgPT0gLy9cblxuLy8gQSBzaW1wbGUgZnVuY3Rpb24gdG8gcmV0cmlldmUgYSBjb2xvciBmcm9tIHRoZSBhcnJheTsgYWRhcHRlZCBmcm9tIGh0dHA6Ly9lcnNraW5lZGVzaWduLmNvbS9ibG9nL2ZyaWVuZGxpZXItY29sb3VyLW5hbWVzLXNhc3MtbWFwcy9cbkBmdW5jdGlvbiBjb2xvcigkcmVxdWVzdCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJGNvbG9yLCAkcmVxdWVzdCk7XG59XG4iLCIvLyA9PT09IEdFTkVSQUwgPT09PSAvL1xuXG5odG1sIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuYm9keSB7XG4gIGJhY2tncm91bmQ6IGNvbG9yKGJvZHktYmFja2dyb3VuZCk7XG4gIGNvbG9yOiBjb2xvcih0ZXh0KTtcbiAgZm9udC1mYW1pbHk6ICdMYXRvJywgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDQ0NDQ7XG4gICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS4yMjIyMjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5oMiB7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cblxuXG5wIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuYSB7XG4gIGJvcmRlcjogMDtcbiAgY29sb3I6ICRjb2xvci10aGVtZS1ibHVlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIC4ycyBlYXNlLW91dDtcbiAgLndyYXAtY29udGVudCAmLFxuICAubWVudS1pbmxpbmUgJiB7XG4gICAgY29sb3I6IGNvbG9yKGxpbmspO1xuICB9XG4gIC53cmFwLXNpZGViYXIgJiB7XG4gICAgY29sb3I6IGNvbG9yKGxpbmstbXV0ZWQpO1xuICB9XG59XG5maWd1cmUge1xuICBtYXJnaW46IDA7XG59XG5pbWcge1xuICBoZWlnaHQ6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbiIsIi8vID09PT0gQ09ORklHVVJBVElPTiA9PT09IC8vXG5cbi8vIFNldCBhbGwgeW91ciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBoZXJlIVxuXG4vLyBXaWR0aCBvZiB0aGUgb3ZlcmFsbCBzaXRlIGFzIHdlbGwgYXMgdGhlIGxlZnQgYW5kIHJpZ2h0IGNvbnRlbnQgY29sdW1uc1xuJHdpZHRoLXNpdGU6ICAgIDEwMDBweDtcbiR3aWR0aC1sZWZ0OiAgICA2MDBweDtcbiR3aWR0aC1yaWdodDogICA0MDBweDtcblxuLy8gQnJlYWtwb2ludHNcbiRicmVhay1zbWFsbDogICA0ODBweDtcbiRicmVhay1tZWRpdW06ICA2MjBweDtcbiRicmVhay1sYXJnZTogICA4MDBweDtcblxuLy8gQSBzdGFuZGFyZCBtYXJnaW5cbiRzcGFjZXI6ICAgICAgICAzMHB4O1xuXG4vLyBBIG1vZGVzdCBwYWxldHRlOyBzZWUgYF9saWJyYXJ5LnNjc3NgIGZvciB0aGUgY29sb3IoKSBmdW5jdGlvblxuJGNvbG9yOiAoXG4gIHRleHQ6ICMzMzMsXG4gIGxpbms6IHN0ZWVsYmx1ZSxcbiAgbGluay1tdXRlZDogc3RlZWxibHVlLFxuICBib2R5LWJhY2tncm91bmQ6IHdoaXRlXG4pO1xuXG5cbiRjb2xvci10aGVtZS1ncmV5OiAjMzUzMzMzO1xuJGNvbG9yLXRoZW1lLWJsdWU6ICMwMDY3YjE7XG4iLCIvLyA9PT09IExBWU9VVCA9PT09IC8vXG5cbi8vIFRoZXNlIHdyYXBwZXJzIGFsbG93IGZvciBiYWNrZ3JvdW5kcyBhbmQgbGF5b3V0IG9wdGlvbnMgdG8gYmUgZGVmaW5lZCBmb3IgZWFjaCBvZiB0aGUgZm91ciBzZWN0aW9ucyAoaGVhZGVyLCBjb250ZW50LCBzaWRlYmFyLCBhbmQgZm9vdGVyKVxuLy8gVGhlcmUgaXMgYWxzbyBhIGZpZnRoIG1ldGEtd3JhcHBlciB0byBiaW5kIGNvbnRlbnQgYW5kIHNpZGViYXIgb24gbGFyZ2Ugc2NyZWVuc1xuXG4vLyBBIGdlbmVyYWwgd3JhcHBlciBmb3IgdmFyaW91cyBzaXRlIGVsZW1lbnRzXG4ld3JhcCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIE1ha2VzIGxpZmUgYSBsaXR0bGUgZWFzaWVyXG4gIHBhZGRpbmc6IDAgc3BhY2VyKCkgMCBzcGFjZXIoKTtcbn1cbi53cmFwLWhlYWRlciB7XG4gIEBleHRlbmQgJXdyYXA7XG4gIGJhY2tncm91bmQ6IGNvbG9yKGhlYWRlci1iYWNrZ3JvdW5kKTtcbiAgcGFkZGluZy1ib3R0b206IHNwYWNlcigxLzIpO1xuICBwYWRkaW5nLXRvcDogc3BhY2VyKDEvMik7XG4gIEBpbmNsdWRlIG1lZGlhLWFib3ZlKCRicmVhay1sYXJnZSkge1xuICAgIHBhZGRpbmctbGVmdDogc3BhY2VyKDIpO1xuICAgIHBhZGRpbmctcmlnaHQ6IHNwYWNlcigyKTtcbiAgfVxufVxuLndyYXAtbWFpbiB7IC8vIFdyYXBwZXIgYXJvdW5kIGNvbnRlbnQgYW5kIHNpZGViYXJcbiAgY2xlYXI6IGJvdGg7XG4gIEBleHRlbmQgJWNsZWFyZml4O1xuICBAaW5jbHVkZSBtZWRpYS1hYm92ZSgkYnJlYWstbGFyZ2UpIHtcbiAgICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaygkd2lkdGgtc2l0ZSk7XG4gICAgcGFkZGluZzogMCBzcGFjZXIoMikgMCBzcGFjZXIoMik7XG4gIH1cbn1cbi53cmFwLWNvbnRlbnQge1xuICBAZXh0ZW5kICV3cmFwO1xuICBwYWRkaW5nOiBzcGFjZXIoKTtcbiAgQGluY2x1ZGUgbWVkaWEtYWJvdmUoJGJyZWFrLWxhcmdlKSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IHNwYWNlcigpO1xuICAgIHdpZHRoOiBwZXJjZW50YWdlKCAoICR3aWR0aC1sZWZ0ICsgc3BhY2VyKCkgKSAvICR3aWR0aC1zaXRlICk7XG4gIH1cbn1cbi53cmFwLXNpZGViYXIge1xuICBAZXh0ZW5kICV3cmFwO1xuICBwYWRkaW5nOiBzcGFjZXIoKTtcbiAgQGluY2x1ZGUgbWVkaWEtYWJvdmUoJGJyZWFrLWxhcmdlKSB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHBhZGRpbmctbGVmdDogc3BhY2VyKCk7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSggMSAtICggKCAkd2lkdGgtbGVmdCArIHNwYWNlcigpICkgLyAkd2lkdGgtc2l0ZSApICk7XG4gIH1cbn1cbi53cmFwLWZvb3RlciB7XG4gIEBleHRlbmQgJXdyYXA7XG4gIGJhY2tncm91bmQ6IGNvbG9yKGhlYWRlci1iYWNrZ3JvdW5kKTtcbiAgcGFkZGluZy1ib3R0b206IHNwYWNlcigyKTtcbiAgcGFkZGluZy10b3A6IHNwYWNlcigxLzIpO1xuICBAaW5jbHVkZSBtZWRpYS1hYm92ZSgkYnJlYWstbGFyZ2UpIHtcbiAgICBwYWRkaW5nLWxlZnQ6IHNwYWNlcigyKTtcbiAgICBwYWRkaW5nLXJpZ2h0OiBzcGFjZXIoMik7XG4gIH1cbn1cbi5zaXRlLWhlYWRlcixcbi5zaXRlLWZvb3RlciB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrKCR3aWR0aC1zaXRlKTtcbn1cbi5zaXRlLXRpdGxlIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuLnNpdGUtY29udGVudCB7XG4gIEBleHRlbmQgJXNwYWNlci1iZWxvdztcbiAgYXJ0aWNsZSB7XG4gICAgQGV4dGVuZCAlc3BhY2VyLWJlbG93LTI7XG4gIH1cbn1cbi5hbGlnbnJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLmFsaWdubGVmdCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuIiwiXG4vLyBERVNLVE9QIE1FTlUgLSBNQUlOIE1FTlVcblxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyXG57XG4gIG1hcmdpbi10b3A6MTVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsXG57XG4gIGxpc3Qtc3R5bGU6bm9uZTtcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOjA7XG4gIHBhZGRpbmc6MDtcbiAgZm9udC1zaXplOiAwO1xufVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIGFcbntcbiAgZGlzcGxheTpibG9jaztcbiAgY29sb3I6IzMzMztcbiAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7XG4gIGZvbnQtd2VpZ2h0OjcwMDtcbiAgZm9udC1zaXplOjE0cHg7XG4gIGxpbmUtaGVpZ2h0OjgwcHg7XG4gIHBhZGRpbmc6MCAyMHB4O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxufVxuXG5cbi5tZW51LW1haW4tbWVudS1jb250YWluZXIgdWwgbGlcbntcbiAgcG9zaXRpb246cmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOjA7XG4gIHBhZGRpbmc6MDtcbiAgbWFyZ2luLXJpZ2h0OiAtM3B4O1xufVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIGxpLmN1cnJlbnQtbWVudS1pdGVtXG57XG4gIGJhY2tncm91bmQ6ICRjb2xvci10aGVtZS1ibHVlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiA4cHggMTIuNXB4IDAgMTIuNXB4O1xuICAgIGJvcmRlci1jb2xvcjogI2ZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwcHg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAtMTIuMnB4O1xuICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSguOTk5OSk7XG4gIH1cbn1cblxuXG4uc3ViLW1lbnUgbGkuY3VycmVudC1tZW51LWl0ZW0ge1xuXG4gIGEge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci10aGVtZS1ibHVlO1xuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIGRpc3BsYXk6bm9uZTtcbiAgfVxuXG59XG5cbi5tZW51LW1haW4tbWVudS1jb250YWluZXIgdWwgbGk6aG92ZXJcbntcbiAgYmFja2dyb3VuZDogJGNvbG9yLXRoZW1lLWJsdWU7XG59XG5cbi5tZW51LW1haW4tbWVudS1jb250YWluZXIgdWwgdWxcbntcbiAgZGlzcGxheTpub25lO1xuICBwb3NpdGlvbjphYnNvbHV0ZTtcbiAgdG9wOjEwMCU7XG4gIGxlZnQ6MDtcbiAgYmFja2dyb3VuZDojZmZmO1xuICBwYWRkaW5nOjA7XG4gIHotaW5kZXg6IDk5OTk5OTtcbn1cblxuLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciB1bCB1bCBsaVxue1xuICBmbG9hdDpub25lO1xuICB3aWR0aDoyMDBweFxufVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIHVsIGFcbntcblxuICBiYWNrZ3JvdW5kOiAjNkI2QjZCO1xuICAgIGZvbnQtc2l6ZToxNHB4O1xuICBsaW5lLWhlaWdodDo4MHB4O1xuICBwYWRkaW5nOjAgMjBweDtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItdGhlbWUtYmx1ZTtcbiAgfVxufVxuXG4ubWVudS1tYWluLW1lbnUtY29udGFpbmVyIHVsIHVsIHVsXG57XG4gIHRvcDowO1xuICBsZWZ0OjEwMCVcbn1cblxuLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciB1bCBsaTpob3ZlciA+IHVsXG57XG4gIGRpc3BsYXk6YmxvY2tcbn1cblxuLm1lbnUtbWFpbi1tZW51LWNvbnRhaW5lciAubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG4gcGFkZGluZy1yaWdodDogNDBweCAhaW1wb3J0YW50O1xuXG4gICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci13aWR0aDogNnB4IDVweCAwIDVweDtcbiAgICBib3JkZXItY29sb3I6ICNmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICAgcmlnaHQ6IDIwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMi4ycHg7XG4gIH1cbn1cblxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4ODBweCkge1xuLndyYXAtcGFkZGluZyB7XG4gICAgcGFkZGluZy1sZWZ0OiA2MHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDYwcHg7XG59XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XG4ud3JhcC1wYWRkaW5nIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbn1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODgwcHgpIHtcbi53cmFwLXBhZGRpbmctbW9iaWxlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxZW07XG59XG59XG5cbi8vIEZPT1RFUiBNRU5VXG5cbi5tZW51LWZvb3Rlci1tZW51LWNvbnRhaW5lciB7XG5cbiAgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgdWwgbGkge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxuXG4gICAgdWwgbGk6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJ8XCI7XG4gICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgfVxuXG4gICAgdWwgbGk6bGFzdC1jaGlsZDphZnRlciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy9NT0JJTEUgLSBTSElGVE5BViBPVkVSSURFU1xuXG4uc2hpZnRuYXYuc2hpZnRuYXYtc2tpbi1kYXJrLWJsdWUgdWwuc2hpZnRuYXYtbWVudSBsaS5tZW51LWl0ZW0uY3VycmVudC1tZW51LWl0ZW0gPiAuc2hpZnRuYXYtdGFyZ2V0LCAuc2hpZnRuYXYuc2hpZnRuYXYtc2tpbi1kYXJrLWJsdWUgdWwuc2hpZnRuYXYtbWVudSBsaS5tZW51LWl0ZW0gdWwuc3ViLW1lbnUgLmN1cnJlbnQtbWVudS1pdGVtIC5zaGlmdG5hdi10YXJnZXQge1xuICAgIGJhY2tncm91bmQ6ICAkY29sb3ItdGhlbWUtYmx1ZSAhaW1wb3J0YW50O1xufVxuXG5cbi5zaGlmdG5hdi5zaGlmdG5hdi1za2luLWRhcmstYmx1ZSB1bC5zaGlmdG5hdi1tZW51IGxpLm1lbnUtaXRlbS5zaGlmdG5hdi1hY3RpdmUgPiAuc2hpZnRuYXYtdGFyZ2V0LCAuc2hpZnRuYXYuc2hpZnRuYXYtc2tpbi1kYXJrLWJsdWUgdWwuc2hpZnRuYXYtbWVudSBsaS5tZW51LWl0ZW0uc2hpZnRuYXYtaW4tdHJhbnNpdGlvbiA+IC5zaGlmdG5hdi10YXJnZXQge1xuICAgIGJhY2tncm91bmQ6ICAkY29sb3ItdGhlbWUtYmx1ZSAhaW1wb3J0YW50O1xufVxuXG5cbiNzaGlmdG5hdi10b2dnbGUtbWFpbi5zaGlmdG5hdi10b2dnbGUtcG9zaXRpb24tYWJzb2x1dGUge1xuICB0b3A6IDEwMHB4O1xuICB6LWluZGV4OiA5OTk7XG59XG5cbi5zaGlmdG5hdiAuc2hpZnRuYXYtbWVudS1pbWFnZS1wYWRkZWQge1xuICBwYWRkaW5nOiAyMHB4IDUwcHggIWltcG9ydGFudDtcbn1cbiIsIi8vID09PT0gTkFWSUdBVElPTiA9PT09IC8vXG5cbi5uYXYtcG9zdHMge1xuICBAZXh0ZW5kICVjbGVhcmZpeDtcbiAgQGV4dGVuZCAlc3BhY2VyLWJlbG93LTM7XG59XG4ubmF2LXByZXZpb3VzIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHBhZGRpbmctcmlnaHQ6IHNwYWNlcigxLzIpO1xuICB3aWR0aDogNTAlO1xufVxuLm5hdi1uZXh0IHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBwYWRkaW5nLWxlZnQ6IHNwYWNlcigxLzIpO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgd2lkdGg6IDUwJTtcbn1cbiIsIi8vID09PT0gU0lERUJBUiA9PT09IC8vXG5cbi53aWRnZXQgdWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ== */
